Skip to content

Precompilation is failing #195

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1-Bart-1 opened this issue Apr 24, 2025 · 2 comments
Closed

Precompilation is failing #195

1-Bart-1 opened this issue Apr 24, 2025 · 2 comments

Comments

@1-Bart-1
Copy link

The precompilation of the package is throwing an error. The problem disappears when using Ipopt = "=1.9.0" in Project.toml

Precompiling ModelPredictiveControl...
Info Given ModelPredictiveControl was explicitly requested, output will be shown live 
┌ Error: Error during loading of extension IpoptMathOptInterfaceExt of Ipopt, use `Base.retry_load_extensions()` to retry.
│   exception =1-element ExceptionStack:
│    InitError: Evaluation into the closed module `Ipopt` breaks incremental compilation because the side effects will not be permanent. This is likely due to some other module mutating `Ipopt` with `eval` during precompilation - don't do this.
│    Stacktrace:
│      [1] eval
│        @ ./boot.jl:430 [inlined]
│      [2] __init__()
│        @ IpoptMathOptInterfaceExt ~/.julia/packages/Ipopt/RutaY/ext/IpoptMathOptInterfaceExt/IpoptMathOptInterfaceExt.jl:13
│      [3] run_module_init(mod::Module, i::Int64)
│        @ Base ./loading.jl:1378
│      [4] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
│        @ Base ./loading.jl:1366
│      [5] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
│        @ Base ./loading.jl:1254
│      [6] _include_from_serialized (repeats 2 times)
│        @ ./loading.jl:1210 [inlined]
│      [7] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
│        @ Base ./loading.jl:2057
│      [8] _require(pkg::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2527
│      [9] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2388
│     [10] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [11] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [12] _require_prelocked
│        @ ./loading.jl:2375 [inlined]
│     [13] _require_prelocked
│        @ ./loading.jl:2374 [inlined]
│     [14] run_extension_callbacks(extid::Base.ExtensionId)
│        @ Base ./loading.jl:1544
│     [15] run_extension_callbacks(pkgid::Base.PkgId)
│        @ Base ./loading.jl:1576
│     [16] run_package_callbacks(modkey::Base.PkgId)
│        @ Base ./loading.jl:1396
│     [17] __require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:2399
│     [18] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [19] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [20] _require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:2375
│     [21] macro expansion
│        @ ./loading.jl:2314 [inlined]
│     [22] macro expansion
│        @ ./lock.jl:273 [inlined]
│     [23] __require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:2271
│     [24] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [25] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [26] require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:2260
│     [27] include
│        @ ./Base.jl:557 [inlined]
│     [28] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
│        @ Base ./loading.jl:2881
│     [29] top-level scope
│        @ stdin:6
│     [30] eval
│        @ ./boot.jl:430 [inlined]
│     [31] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
│        @ Base ./loading.jl:2734
│     [32] include_string
│        @ ./loading.jl:2744 [inlined]
│     [33] exec_options(opts::Base.JLOptions)
│        @ Base ./client.jl:321
│     [34] _start()
│        @ Base ./client.jl:531
│    during initialization of module IpoptMathOptInterfaceExt
└ @ Base loading.jl:1550
ERROR: LoadError: UndefVarError: `Optimizer` not defined in `Ipopt`
Stacktrace:
  [1] getproperty(x::Module, f::Symbol)
    @ Base ./Base.jl:42
  [2] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe/construct.jl:2
  [3] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
  [4] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
  [5] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe.jl:1
  [6] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
  [7] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
  [8] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/state_estim.jl:27
  [9] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
 [10] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
 [11] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:45
 [12] include
    @ ./Base.jl:557 [inlined]
 [13] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2881
 [14] top-level scope
    @ stdin:6
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe/construct.jl:2
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe.jl:1
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/state_estim.jl:27
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
in expression starting at stdin:6
  ✗ ModelPredictiveControl
  0 dependencies successfully precompiled in 5 seconds. 106 already precompiled.

ERROR: LoadError: The following 1 direct dependency failed to precompile:

ModelPredictiveControl 

Failed to precompile ModelPredictiveControl [61f9bdb8-6ae4-484a-811f-bbf86720c31c] to "/home/bart/.julia/compiled/v1.11/ModelPredictiveControl/jl_Yk5ose".
┌ Error: Error during loading of extension IpoptMathOptInterfaceExt of Ipopt, use `Base.retry_load_extensions()` to retry.
│   exception =1-element ExceptionStack:
│    InitError: Evaluation into the closed module `Ipopt` breaks incremental compilation because the side effects will not be permanent. This is likely due to some other module mutating `Ipopt` with `eval` during precompilation - don't do this.
│    Stacktrace:
│      [1] eval
│        @ ./boot.jl:430 [inlined]
│      [2] __init__()
│        @ IpoptMathOptInterfaceExt ~/.julia/packages/Ipopt/RutaY/ext/IpoptMathOptInterfaceExt/IpoptMathOptInterfaceExt.jl:13
│      [3] run_module_init(mod::Module, i::Int64)
│        @ Base ./loading.jl:1378
│      [4] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
│        @ Base ./loading.jl:1366
│      [5] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
│        @ Base ./loading.jl:1254
│      [6] _include_from_serialized (repeats 2 times)
│        @ ./loading.jl:1210 [inlined]
│      [7] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
│        @ Base ./loading.jl:2057
│      [8] _require(pkg::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2527
│      [9] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:2388
│     [10] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [11] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [12] _require_prelocked
│        @ ./loading.jl:2375 [inlined]
│     [13] _require_prelocked
│        @ ./loading.jl:2374 [inlined]
│     [14] run_extension_callbacks(extid::Base.ExtensionId)
│        @ Base ./loading.jl:1544
│     [15] run_extension_callbacks(pkgid::Base.PkgId)
│        @ Base ./loading.jl:1576
│     [16] run_package_callbacks(modkey::Base.PkgId)
│        @ Base ./loading.jl:1396
│     [17] __require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:2399
│     [18] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [19] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [20] _require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:2375
│     [21] macro expansion
│        @ ./loading.jl:2314 [inlined]
│     [22] macro expansion
│        @ ./lock.jl:273 [inlined]
│     [23] __require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:2271
│     [24] #invoke_in_world#3
│        @ ./essentials.jl:1089 [inlined]
│     [25] invoke_in_world
│        @ ./essentials.jl:1086 [inlined]
│     [26] require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:2260
│     [27] include
│        @ ./Base.jl:557 [inlined]
│     [28] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
│        @ Base ./loading.jl:2881
│     [29] top-level scope
│        @ stdin:6
│     [30] eval
│        @ ./boot.jl:430 [inlined]
│     [31] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
│        @ Base ./loading.jl:2734
│     [32] include_string
│        @ ./loading.jl:2744 [inlined]
│     [33] exec_options(opts::Base.JLOptions)
│        @ Base ./client.jl:321
│     [34] _start()
│        @ Base ./client.jl:531
│    during initialization of module IpoptMathOptInterfaceExt
└ @ Base loading.jl:1550
ERROR: LoadError: UndefVarError: `Optimizer` not defined in `Ipopt`
Stacktrace:
  [1] getproperty(x::Module, f::Symbol)
    @ Base ./Base.jl:42
  [2] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe/construct.jl:2
  [3] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
  [4] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
  [5] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe.jl:1
  [6] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
  [7] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
  [8] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/state_estim.jl:27
  [9] include(mod::Module, _path::String)
    @ Base ./Base.jl:557
 [10] include(x::String)
    @ ModelPredictiveControl ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
 [11] top-level scope
    @ ~/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:45
 [12] include
    @ ./Base.jl:557 [inlined]
 [13] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2881
 [14] top-level scope
    @ stdin:6
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe/construct.jl:2
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/estimator/mhe.jl:1
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/state_estim.jl:27
in expression starting at /home/bart/.julia/packages/ModelPredictiveControl/23aOU/src/ModelPredictiveControl.jl:1
in expression starting at stdin:
in expression starting at /home/bart/Code/KitePredictiveControl.jl/mwe/online_lin_simple_kite.jl:6

Version info:

  [61f9bdb8] ModelPredictiveControl v1.5.3
  [b6b21f68] Ipopt v1.10.0
@franckgaga
Copy link
Member

franckgaga commented Apr 24, 2025

I think this is caused by jump-dev/Ipopt.jl#478. Will try to reproduce on my side.

@franckgaga
Copy link
Member

Should be solved by jump-dev/Ipopt.jl#483

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants