#2654 closed defect (fixed)
Mac openmodelica-devel with modelica3d fails to build
| Reported by: | Owned by: | Martin Sjölund | |
|---|---|---|---|
| Priority: | high | Milestone: | 1.9.1 |
| Component: | Build Environment | Version: | trunk |
| Keywords: | Cc: |
Description
I wanted to try to view some simulations. I am building on a Mac. I tried to build with:
sudo port install openmodelica-devel +modelica3d
But it gives a build error. I have attached the log file. It looks like the problem is that it is attempted to copy libproc3d.so and libm3d-osg-gtk.so but these are built with the common Mac name suffix of .dylib.
Attachments (1)
Change History (15)
by , 12 years ago
comment:1 by , 12 years ago
I also tried to run this simple example, without building with +modelica3d variant:
https://build.openmodelica.org/Documentation/OpenModelica.Scripting.loadModelica3D.html
I just did the default install.
I didn't really expect it to work, but the error that I get is not a link error, so I'm not sure if it some part of modelica3d is already being built, or what exactly is happening with it:
>> simulate(DoublePendulum)
record SimulationResult
resultFile = "",
simulationOptions = "startTime = 0.0, stopTime = 1.0, numberOfIntervals = 500, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'DoublePendulum', options = '', outputFormat = 'mat', variableFilter = '.*', measureTime = false, cflags = '', simflags = ''",
messages = "Failed to build model: DoublePendulum",
timeFrontend = 0.0,
timeBackend = 0.0,
timeSimCode = 0.0,
timeTemplates = 0.0,
timeCompile = 0.0,
timeSimulation = 0.0,
timeTotal = 0.0
end SimulationResult;
Warning: The initial conditions are not fully specified. Use +d=initialization for more information.
Error: Error building simulator. Build log: /usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum.o DoublePendulum.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_functions.o DoublePendulum_functions.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_records.o DoublePendulum_records.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_01exo.o DoublePendulum_01exo.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_02nls.o DoublePendulum_02nls.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_03lsy.o DoublePendulum_03lsy.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_04set.o DoublePendulum_04set.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_05evt.o DoublePendulum_05evt.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_06inz.o DoublePendulum_06inz.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_07dly.o DoublePendulum_07dly.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_08bnd.o DoublePendulum_08bnd.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_09alg.o DoublePendulum_09alg.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_10asr.o DoublePendulum_10asr.c
DoublePendulum_functions.c:20:3: warning: implicit declaration of function 'modbus_release_bus' is invalid in C99 [-Wimplicit-function-declaration]
modbus_release_bus(_conn_ext);
^
DoublePendulum_functions.c:48:12: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
if((tmp2 == (modelica_integer)_n))
~~~~~^~~~~~~~~~~~~~~~~~~~~~~
DoublePendulum_functions.c:48:12: note: remove extraneous parentheses around the comparison to silence this warning
if((tmp2 == (modelica_integer)_n))
~ ^ ~
DoublePendulum_05evt.c:106:24: warning: assigning to 'int *' from 'const int *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
*out_EquationIndexes = occurEqs[i];
^ ~~~~~~~~~~~
DoublePendulum_05evt.c:114:3: warning: implicit declaration of function 'DoublePendulum_eqFunction_1478' is invalid in C99 [-Wimplicit-function-declaration]
DoublePendulum_eqFunction_1478(data);
^
DoublePendulum_functions.c:48:12: note: use '=' to turn this equality comparison into an assignment
if((tmp2 == (modelica_integer)_n))
^~
=
DoublePendulum_functions.c:835:15: warning: implicit declaration of function 'modbus_acquire_session_bus' is invalid in C99 [-Wimplicit-function-declaration]
_conn_ext = modbus_acquire_session_bus(_clientName);
^
DoublePendulum_functions.c:835:13: warning: incompatible integer to pointer conversion assigning to 'void *' from 'int' [-Wint-conversion]
_conn_ext = modbus_acquire_session_bus(_clientName);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DoublePendulum_functions.c:876:3: warning: implicit declaration of function 'modbus_msg_release' is invalid in C99 [-Wimplicit-function-declaration]
modbus_msg_release(_msg_ext);
^
DoublePendulum_functions.c:884:14: warning: implicit declaration of function 'modbus_msg_alloc' is invalid in C99 [-Wimplicit-function-declaration]
_msg_ext = modbus_msg_alloc(_target, _object, _interface, _method);
^
DoublePendulum_functions.c:884:12: warning: incompatible integer to pointer conversion assigning to 'void *' from 'int' [-Wint-conversion]
_msg_ext = modbus_msg_alloc(_target, _object, _interface, _method);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DoublePendulum_functions.c:1094:16: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
if((tmp4 == (modelica_integer) 0))
~~~~~^~~~~~~~~~~~~~~~~~~~~~~
DoublePendulum_functions.c:1094:16: note: remove extraneous parentheses around the comparison to silence this warning
if((tmp4 == (modelica_integer) 0))
~ ^ ~
DoublePendulum_functions.c:1094:16: note: use '=' to turn this equality comparison into an assignment
if((tmp4 == (modelica_integer) 0))
^~
=
8 warnings generated.
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_11mix.o DoublePendulum_11mix.c
2 warnings generated.
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_12jac.o DoublePendulum_12jac.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_13opt.o DoublePendulum_13opt.c
/usr/bin/clang "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -c -o DoublePendulum_14lnz.o DoublePendulum_14lnz.c
/usr/bin/clang -I. -o DoublePendulum DoublePendulum.o DoublePendulum_functions.o DoublePendulum_records.o DoublePendulum_01exo.o DoublePendulum_02nls.o DoublePendulum_03lsy.o DoublePendulum_04set.o DoublePendulum_05evt.o DoublePendulum_06inz.o DoublePendulum_07dly.o DoublePendulum_08bnd.o DoublePendulum_09alg.o DoublePendulum_10asr.o DoublePendulum_11mix.o DoublePendulum_12jac.o DoublePendulum_13opt.o DoublePendulum_14lnz.o "-I/opt/local/lib/omlibrary/ModelicaServices 3.2.1 modelica3d/Resources/Include" -I"/opt/local/include/omc/c" -I. -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME -lModelicaExternalC -lmodcount -lmodbus -ldbus-1 -L"/opt/local/lib/omc" -L"/opt/local/lib" -Wl,-rpath,"/opt/local/lib/omc" -Wl,-rpath,"/opt/local/lib" -L/opt/local/lib -Wl,-headerpad_max_install_names -arch x86_64 -lSimulationRuntimeC -llapack -lblas -lm -lgc
ld: library not found for -lmodcount
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [omc_main_target] Error 1
comment:2 by , 11 years ago
I also have been building with the +libraries variant. So that means that I have omlib-modelicaservices-3.2.1-modelica3d installed. So, it is not clear if I do need to use the +modelica3d variant to not.
Are these two separate?
If I look at the list file->system libraries I don't see anything related to 3d.
comment:3 by , 11 years ago
The libraries required for modelica3d are built by the openmodelica package (libmodcount, libmodbus, libproc3d) and is enabled by the +modelica3d flag.
comment:5 by , 11 years ago
| Component: | Backend → Build Environment |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
OK, that should work now. Close this if so.
comment:6 by , 11 years ago
No. Not working. Now it seems to build, but won't install.
It looks like this:
---> Attempting to fetch openmodelica_21114.orig.tar.gz from http://build.openmodelica.org/apt/pool/contrib/
---> Verifying checksums for openmodelica-devel
---> Extracting openmodelica-devel
---> Configuring openmodelica-devel
---> Building openmodelica-devel
---> Staging openmodelica-devel into destroot
---> Installing openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Activating openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Updating database of binaries
---> Scanning binaries for linking errors
---> Found 1 broken file(s), matching files to ports
---> Found 1 broken port(s), determining rebuild order
---> Rebuilding in order
openmodelica-devel @21114 +gfortran48+libraries+modelica3d+qt+sundials
---> Computing dependencies for openmodelica-devel
---> Cleaning openmodelica-devel
---> Scanning binaries for linking errors
---> Found 1 broken file(s), matching files to ports
---> Found 1 broken port(s), determining rebuild order
---> Rebuilding in order
openmodelica-devel @21114 +gfortran48+libraries+modelica3d+qt+sundials
---> Computing dependencies for openmodelica-devel
---> Fetching distfiles for openmodelica-devel
---> Verifying checksums for openmodelica-devel
---> Extracting openmodelica-devel
---> Configuring openmodelica-devel
---> Building openmodelica-devel
---> Staging openmodelica-devel into destroot
---> Deactivating openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Uninstalling openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Computing dependencies for openmodelica-devel
---> Installing openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Activating openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Updating database of binaries
---> Scanning binaries for linking errors
---> Found 1 broken file(s), matching files to ports
---> Found 1 broken port(s), determining rebuild order
---> Rebuilding in order
openmodelica-devel @21114 +gfortran48+libraries+modelica3d+qt+sundials
---> Computing dependencies for openmodelica-devel
---> Fetching distfiles for openmodelica-devel
---> Verifying checksums for openmodelica-devel
---> Extracting openmodelica-devel
---> Configuring openmodelica-devel
---> Building openmodelica-devel
---> Staging openmodelica-devel into destroot
---> Deactivating openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Uninstalling openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Computing dependencies for openmodelica-devel
---> Installing openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Activating openmodelica-devel @21114_0+gfortran48+libraries+modelica3d+qt+sundials
---> Cleaning openmodelica-devel
---> Updating database of binaries
---> Scanning binaries for linking errors
---> Found 1 broken file(s), matching files to ports
Error: Port openmodelica-devel is still broken after rebuilding it more than 3 times.
Error: Please run port -d -y rev-upgrade and use the output to report a bug.
Port openmodelica-devel still broken after rebuilding 3 time(s)
while executing
"error "Port $portname still broken after rebuilding [expr {$broken_port_counts($portname) - 1}] time(s)""
(procedure "revupgrade_scanandrebuild" line 280)
invoked from within
"revupgrade_scanandrebuild broken_port_counts $opts"
(procedure "macports::revupgrade" line 5)
invoked from within
"macports::revupgrade $opts"
(procedure "action_revupgrade" line 2)
invoked from within
"action_revupgrade $action $portlist $opts"
(procedure "action_target" line 96)
invoked from within
"$action_proc $action $portlist [array get global_options]"
(procedure "process_cmd" line 93)
invoked from within
"process_cmd $remaining_args"
invoked from within
"if { [llength $remaining_args] > 0 } {
# If there are remaining arguments, process those as a command
set exit_status [process_cmd $remaining..."
(file "/opt/local/bin/port" line 5254)
This gives some more info: sudo port -d -y rev-upgrade
Could not open /opt/local/var/macports/build/_opt_local_var_macports_sources_build.openmodelica.org_macports_lang_openmodelica-devel/openmodelica-devel/work/openmodelica_21114/3rdParty/modelica3d/build/lib/proc3d/libproc3d.dylib: Error opening or reading file (referenced from /opt/local/lib/libm3d-osg-gtk.dylib) DEBUG: Marking /opt/local/lib/libm3d-osg-gtk.dylib as broken
This looks a lot like this bug that showed up while trying to fix this, but then you were able to fix:
https://trac.openmodelica.org/OpenModelica/ticket/2701
comment:7 by , 11 years ago
Similar, but different. In this case, the .dylib has already been linked against.
comment:8 by , 11 years ago
I hope r21115 works because I should go prepare for a business trip early Sunday morning.
comment:9 by , 11 years ago
I was out, and could not try it until now. But, it doesn't work. Upgrade, or install, both report:
Error: openmodelica-devel: Error executing modelica3d: can't set "depends_lib": invalid depspec: configure.args-delete
Error: Unable to open port: Error evaluating variants
To report a bug, follow the instructions in the guide:
http://guide.macports.org/#project.tickets
Have a good business trip.
comment:10 by , 11 years ago
Looks like it was just a typo. There was an extra end of line. This is in the Portfile:
port:OpenSceneGraph \ configure.args-delete --disable-modelica3d
I changed deleted that line extension and now it builds:
port:OpenSceneGraph configure.args-delete --disable-modelica3d
comment:11 by , 11 years ago
It does seem to build fine, but I can't seem to get it to run. I'm not sure if this ticket is the best place for this, but here goes:
In order to get dbus-server.py to run I had to install the py27-gobject3 port (so this should probably be a dependent port). dbus-server.py as included, just checked for Mac and exited with a message about it being untested. So, I changed it to this:
elif (platform.system() == 'Darwin'):
viewer = CDLL("/opt/local/lib/libm3d-osg-gtk.dylib") # GTK/OSG backend
proc3d = CDLL("/opt/local/lib/libproc3d.dylib") # procedural 3d
Now, I can run it, and I get a message. "Running dbus-server..."
Next, I ran OMEdit, I unloaded ModelicaServices and then loaded "ModelicaServices 3.2.1 modelica3d". I then try to run Modelica.Mechanics.MultiBody.Examples.Elementary.Pendulum and it builds and starts to simulate. But there is no progress in the simulation window. It just hangs like that until I hit cancel.
So, I think that the above steps are correct. I am not sure if I have made a mistake in my running process, or if there is a bug in the Mac build.
comment:12 by , 11 years ago
Am I correct that ModelicaServices modelica3d should use dbus to connect to dbus-server.py. And, when run this way, the simulation will wait until it can successfully "talk". So, I think that the simulation is just not connecting, so it is just waiting to try before it can make any progress?
comment:13 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
This was fixed at some point... I think.

Build fail log file