# ModelingToolkit fails to pre-compile

**URL:** <https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361>\
**Category:** General Usage\
**Tags:** package, modelingtoolkit\
**Created:** [August 19, 2024, 8:04am UTC](https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361 "2024-08-19T08:04:37Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [August 19, 2024, 8:04am UTC](https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361/1 "2024-08-19T08:04:37Z")

</div>

Since this morning I cannot freshly install ModellingToolkit any longer, neither the latest nor older versions. I get this error:

```julia
The following 1 direct dependency failed to precompile:

ModelingToolkit [961ee093-0014-501f-94e3-6117800e7a78]

Failed to precompile ModelingToolkit [961ee093-0014-501f-94e3-6117800e7a78] to "/tmp/testdepot/compiled/v1.10/ModelingToolkit/jl_TkA4eb".
ERROR: LoadError: MethodError: setproperties_object(::SymbolicUtils.BasicSymbolic{Real}, ::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}}) is ambiguous.

Candidates:
  setproperties_object(obj::SymbolicUtils.BasicSymbolic{T}, patch) where T
    @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:92
  setproperties_object(obj, patch::NamedTuple)
    @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:205

Possible fix, define
  setproperties_object(::SymbolicUtils.BasicSymbolic{T}, ::NamedTuple) where T

Stacktrace:
 [1] setproperties(obj::SymbolicUtils.BasicSymbolic{Real}, patch::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}})
   @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:136
 [2] set
   @ /tmp/testdepot/packages/Setfield/PdKfV/src/sugar.jl:197 [inlined]
 [4] setmetadata(s::SymbolicUtils.BasicSymbolic{Real}, ctx::DataType, val::Tuple{Symbol, Symbol})
   @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:657
 [5] top-level scope
   @ /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:189
 [6] include
   @ ./Base.jl:495 [inlined]
 [7] 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:2222
 [8] top-level scope
   @ stdin:3
in expression starting at /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:1

```

Any idea?

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [August 19, 2024, 8:45am UTC](https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361/2 "2024-08-19T08:45:52Z")

</div>

I could solve the issue by downgrading `ConstructionBase.jl` to version 1.5.6.

I added:

```julia
[compat]
ConstructionBase = "=1.5.6"

```

to my Project.toml file. I also created an issue:

> <https://github.com/JuliaObjects/ConstructionBase.jl/issues/92>
>
> Since this morning I could not install ModelingToolkit any longer. I got the err…or:
> \`\`\`
> The following 1 direct dependency failed to precompile:
> 
> ModelingToolkit \[961ee093-0014-501f-94e3-6117800e7a78\]
> 
> Failed to precompile ModelingToolkit \[961ee093-0014-501f-94e3-6117800e7a78\] to "/tmp/testdepot/compiled/v1.10/ModelingToolkit/jl\_TkA4eb".
> ERROR: LoadError: MethodError: setproperties\_object(::SymbolicUtils.BasicSymbolic{Real}, ::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}}) is ambiguous.
> 
> Candidates:
> setproperties\_object(obj::SymbolicUtils.BasicSymbolic{T}, patch) where T
> @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:92
> setproperties\_object(obj, patch::NamedTuple)
> @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:205
> 
> Possible fix, define
> setproperties\_object(::SymbolicUtils.BasicSymbolic{T}, ::NamedTuple) where T
> 
> Stacktrace:
> \[1\] setproperties(obj::SymbolicUtils.BasicSymbolic{Real}, patch::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}})
> @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:136
> \[2\] set
> @ /tmp/testdepot/packages/Setfield/PdKfV/src/sugar.jl:197 \[inlined\]
> \[4\] setmetadata(s::SymbolicUtils.BasicSymbolic{Real}, ctx::DataType, val::Tuple{Symbol, Symbol})
> @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:657
> \[5\] top-level scope
> @ /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:189
> \[6\] include
> @ ./Base.jl:495 \[inlined\]
> \[7\] 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:2222
> \[8\] top-level scope
> @ stdin:3
> in expression starting at /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:1
> \`\`\`
> Downgrading ConstructionsBase to version 1.5.6 fixed the issue.

@ChrisRackauckas But I do not know in which package this issue should be fixed.

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [August 19, 2024, 8:55am UTC](https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361/3 "2024-08-19T08:55:30Z")

</div>

From github:

> <https://github.com/JuliaObjects/ConstructionBase.jl/issues/92#issuecomment-2296006345>
>
> Since this morning I could not install ModelingToolkit any longer. I got the err…or:
> \`\`\`
> The following 1 direct dependency failed to precompile:
> 
> ModelingToolkit \[961ee093-0014-501f-94e3-6117800e7a78\]
> 
> Failed to precompile ModelingToolkit \[961ee093-0014-501f-94e3-6117800e7a78\] to "/tmp/testdepot/compiled/v1.10/ModelingToolkit/jl\_TkA4eb".
> ERROR: LoadError: MethodError: setproperties\_object(::SymbolicUtils.BasicSymbolic{Real}, ::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}}) is ambiguous.
> 
> Candidates:
> setproperties\_object(obj::SymbolicUtils.BasicSymbolic{T}, patch) where T
> @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:92
> setproperties\_object(obj, patch::NamedTuple)
> @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:205
> 
> Possible fix, define
> setproperties\_object(::SymbolicUtils.BasicSymbolic{T}, ::NamedTuple) where T
> 
> Stacktrace:
> \[1\] setproperties(obj::SymbolicUtils.BasicSymbolic{Real}, patch::@NamedTuple{metadata::Base.ImmutableDict{DataType, Any}})
> @ ConstructionBase /tmp/testdepot/packages/ConstructionBase/c2lWA/src/ConstructionBase.jl:136
> \[2\] set
> @ /tmp/testdepot/packages/Setfield/PdKfV/src/sugar.jl:197 \[inlined\]
> \[4\] setmetadata(s::SymbolicUtils.BasicSymbolic{Real}, ctx::DataType, val::Tuple{Symbol, Symbol})
> @ SymbolicUtils /tmp/testdepot/packages/SymbolicUtils/EGhOJ/src/types.jl:657
> \[5\] top-level scope
> @ /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:189
> \[6\] include
> @ ./Base.jl:495 \[inlined\]
> \[7\] 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:2222
> \[8\] top-level scope
> @ stdin:3
> in expression starting at /tmp/testdepot/packages/ModelingToolkit/GJiqn/src/ModelingToolkit.jl:1
> \`\`\`
> Downgrading ConstructionsBase to version 1.5.6 fixed the issue.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/3/637c387da2356cf88b0cc4774b35eebf3f2d79c9.png)

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [August 19, 2024, 11:10am UTC](https://discourse.julialang.org/t/modelingtoolkit-fails-to-pre-compile/118361/4 "2024-08-19T11:10:36Z")

</div>

I just did the release process on a patch

> <https://github.com/JuliaSymbolics/SymbolicUtils.jl/pull/634>
>
> Fixes \[this\](https://github.com/SciML/ModelingToolkit.jl/actions/runs/1044761730…9/job/28926807757?pr=2945#step:6:627) ambiguity. The \[\`ConstructionBase\` docs\](https://juliaobjects.github.io/ConstructionBase.jl/stable/#ConstructionBase.setproperties) explicitly recommend adding a method to \`setproperties\` (\`setproperties\_object\` is undocumented internals) and type-annotating \`patch::NamedTuple\`.
