#68756 closed defect (fixed)
gildas @202311b: duplicate LC_RPATH '/opt/local/lib/libgcc'
Reported by: | pabloriviere (Pablo Rivière) | Owned by: | bardeau |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | Cc: | pabloriviere (Pablo Rivière), jpinedaf (Jaime Pineda) | |
Port: | gildas |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
Hi, I am trying to install Gildas on a Mac with Sonoma 14.1.1. However, I get the following error:
Error: Failed to build gildas: command execution failed Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_gildas/gildas/main.log for details. Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug. Error: Processing of port gildas failed
And the last entries of the log are:
:info:build Command failed: source admin/gildas-env.sh -c /opt/local/bin/gfortran-mp-13 -s /opt/local/include:/opt/local/lib:/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/ && export GAG_SLDFLAGS='-shared -o /opt/local/lib/gildas/x86_64-darwin-gfortran/lib/$(notdir $@) -install_name /opt/local/lib/gildas/x86_64-darwin-gfortran/lib/$(notdir $@)' && export DYLD_LIBRARY_PATH=/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_gildas/gildas/work/gildas-src-nov23b/integ/x86_64-darwin-gfortran/lib && export GAG_ADDONS=yes && make -w install :info:build Exit code: 2 :error:build Failed to build gildas: command execution failed :debug:build Error code: NONE :debug:build Backtrace: command execution failed :debug:build while executing :debug:build "$procedure $targetname" :error:build See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_gildas/gildas/main.log for details.
I am aware that XCode is giving problems. I tried doing
sudo install_name_tool -delete_rpath /opt/local/lib/libgcc /opt/local/lib/libopenblas-r1.dylib
And solved a previous issue.
from ticket #68329, with no success
Attachments (1)
Change History (26)
comment:1 Changed 12 months ago by pabloriviere (Pablo Rivière)
Cc: | pabloriviere added |
---|
comment:2 Changed 12 months ago by jmroot (Joshua Root)
Description: | modified (diff) |
---|---|
Owner: | set to bardeau |
Status: | new → assigned |
comment:3 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)
Description: | modified (diff) |
---|
Changed 12 months ago by pabloriviere (Pablo Rivière)
comment:4 follow-up: 15 Changed 12 months ago by bardeau
The linker fails with no more information
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)
Pablo, we are not able to guess more from the log file. An alternate solution is that you install GILDAS from the sources (see section IV.2 at https://www.iram.fr/~gildas/dist/gildas.README ) and see if the error is still there and if we can have more details. You are probably one of the first to try the installation on Sonoma, I did not try myself.
comment:5 Changed 12 months ago by pabloriviere (Pablo Rivière)
Hi,
I tried also this, but it failed to install gcc9:
sudo port install gcc9 Password: gcc9 is known to fail. Try to install anyway? [y/N]: y ---> Computing dependencies for gcc9libgcc9 is known to fail. Try to install anyway? [y/N]: y libgcc10 is known to fail. Try to install anyway? [y/N]: y libgcc11 is known to fail. Try to install anyway? [y/N]: y The following dependencies will be installed: libgcc10 libgcc11 libgcc9 Continue? [Y/n]: y ---> Fetching archive for libgcc11 ---> Attempting to fetch libgcc11-11.4.0_1+stdlib_flag.darwin_23.x86_64.tbz2 from https://packages.macports.org/libgcc11 ---> Attempting to fetch libgcc11-11.4.0_1+stdlib_flag.darwin_23.x86_64.tbz2 from https://fra.de.packages.macports.org/libgcc11 ---> Attempting to fetch libgcc11-11.4.0_1+stdlib_flag.darwin_23.x86_64.tbz2 from https://mse.uk.packages.macports.org/libgcc11 ---> Building libgcc11 Error: Failed to build libgcc11: command execution failed Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_gcc11/libgcc11/main.log for details. Error: Follow https://guide.macports.org/#project.tickets if you believe there is a bug. Error: Processing of port gcc9 failed
comment:6 Changed 12 months ago by bardeau
You should stick to the latest gcc version available. Currently gcc13 should be used. I will update the README file accordingly.
comment:7 Changed 12 months ago by pabloriviere (Pablo Rivière)
Hi,
I tried
sudo port install gcc13 sudo port select gcc sudo port select gcc mp-gcc13 sudo port install gtk2 sudo port install pkgconfig sudo port variants fftw-3-single sudo port install fftw-3-single +gcc13 sudo port variants cfitsio sudo port install cfitsio +gcc13
unxz gildas-src-nov23b.tar.xz tar -xf gildas-src-nov23b.tar cd gildas-src-nov23b source admin/gildas-env.sh -o openmp make
but I get
Makefile:35: built/x86_64-darwin-gfortran-openmp/Makefile.deps: No such file or directory gcc -c -I../ -I/Users/pabloriviere/Downloads/gildas-src-nov23b/integ/x86_64-darwin-gfortran-openmp/include -pipe -fPIC -w -Ddarwin -DDARWIN -DPNG -O -Dunderscore -DGAG_USE_GTK -DGAG_USE_OPENMP -DGAG_USE_POSIX -DGAG_USE_UNDERSCORE gcomm.c -o built/x86_64-darwin-gfortran-openmp/gcomm.o gcomm.c: In function 'sic_remove_previous_comm_files': gcomm.c:720:23: error: 'PATH_MAX' undeclared (first use in this function) 720 | char last_cwd[PATH_MAX]; | ^~~~~~~~ gcomm.c:720:23: note: each undeclared identifier is reported only once for each function it appears in make[3]: *** [built/x86_64-darwin-gfortran-openmp/gcomm.o] Error 1 make[2]: *** [default] Error 1 make[1]: *** [default] Error 1 make: *** [default] Error 1
And then after make install
:
make[2]: Nothing to be done for `default-install'. Makefile:35: built/x86_64-darwin-gfortran-openmp/Makefile.deps: No such file or directory gcc -c -I../ -I/Users/pabloriviere/Downloads/gildas-src-nov23b/integ/x86_64-darwin-gfortran-openmp/include -pipe -fPIC -w -Ddarwin -DDARWIN -DPNG -O -Dunderscore -DGAG_USE_GTK -DGAG_USE_OPENMP -DGAG_USE_POSIX -DGAG_USE_UNDERSCORE gcomm.c -o built/x86_64-darwin-gfortran-openmp/gcomm.o gcomm.c: In function 'sic_remove_previous_comm_files': gcomm.c:720:23: error: 'PATH_MAX' undeclared (first use in this function) 720 | char last_cwd[PATH_MAX]; | ^~~~~~~~ gcomm.c:720:23: note: each undeclared identifier is reported only once for each function it appears in make[3]: *** [built/x86_64-darwin-gfortran-openmp/gcomm.o] Error 1 make[2]: *** [default-install] Error 1 make[1]: *** [default-install] Error 1 make: *** [default-install] Error 1
comment:8 Changed 12 months ago by pabloriviere (Pablo Rivière)
Just in case it helps: I upgraded my mac to Sonoma so that I can use Imager (the software asked me a more recent version, I went for the last, I think I as in Calatina before). Now Imager works fine, but GILDAS doesn't.
comment:9 follow-up: 20 Changed 12 months ago by bardeau
Sorry, the PATH_MAX bug appears with gcc13 installed with MacPorts. I fixed the GILDAS development version but I did not backport it to the current stable version. The fix will be part of the dec23 release.
In the meantime you can use gcc12 which does not have this problem. You can switch to gcc12 with sudo port select gcc mp-gcc12. You have to restart the GILDAS compilation from scratch.
comment:10 Changed 12 months ago by pabloriviere (Pablo Rivière)
Thank you very much for your answer. Just to clarify, what does restarting from scratch mean in this context?
comment:11 Changed 12 months ago by bardeau
There are means to "clean" the previous compilation attempt, but the simplest for you is the erase the source directory and extract it again from the archive.
comment:12 Changed 12 months ago by pabloriviere (Pablo Rivière)
Thank you very much, it worked. Just in case anyone finds itself in the same situation, this is what worked (as suggested by bardeau, drop gcc13 for gcc12):
sudo port install gcc12 sudo port select gcc sudo port select gcc mp-gcc12 sudo port install gtk2 sudo port install pkgconfig sudo port variants fftw-3-single sudo port install fftw-3-single +gcc12 sudo port variants cfitsio sudo port install cfitsio +gcc12
tar -xf gildas-src-nov23b.tar.xz cd gildas-src-nov23b source admin/gildas-env.sh make make install
comment:13 Changed 12 months ago by bardeau
Thanks for the feedback. This means the compilation runs correctly if compiled "by hand", but not within MacPorts. I have updated my version of MacOS, and I am now performing some tests.
comment:14 Changed 12 months ago by pabloriviere (Pablo Rivière)
Thank you for your help. Very much appreciated.
comment:15 Changed 12 months ago by ryandesign (Ryan Carsten Schmidt)
Summary: | Cannot build gildas, Command failed → gildas @202311b: duplicate LC_RPATH '/opt/local/lib/libgcc' |
---|
Replying to bardeau:
The linker fails with no more information
:info:build clang: error: linker command failed with exit code 1 (use -v to see invocation)Pablo, we are not able to guess more from the log file.
The relevant information in the log was the line immediately preceding the one you quoted:
:info:build ld: duplicate LC_RPATH '/opt/local/lib/libgcc' in '/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_gildas/gildas/work/gildas-src-nov23b/integ/x86_64-darwin-gfortran/lib/libsic.so'
There are many other open tickets about this problem that you can look at to learn more.
comment:16 Changed 12 months ago by jpinedaf (Jaime Pineda)
Cc: | jpinedaf added |
---|
comment:17 Changed 12 months ago by jpinedaf (Jaime Pineda)
I can confirm that the workaround works. I installed gcc12 and then run this
sudo port install gildas +gcc12 +openmp
Many thanks!!
comment:18 Changed 12 months ago by bardeau
Dear @ryandesign,
the problem simplifies as follows.
1) write a fortran-based library and compile it with gfortran-mp-13:
bardeau-mac2 ~> cat hello.f90 subroutine test print *,"Hello, world!" end subroutine test bardeau-mac2 ~> gfortran -c hello.f90 bardeau-mac2 ~> gfortran -dynamiclib hello.o -o libhello.so
Looking a it with otool -l, one can find only one occurrence of /opt/local/lib/libgcc as a LC_RPATH.
But, when compiling gildas with MacPorts, we also add the contents of ${configure.ldflags} when linking the dynamic library. During the install process I see this debug message:
DEBUG: compilers PG: RPATH added to ldflags as GCC version is 13
In practice this translates as:
~> gfortran -dynamiclib -L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-rpath,/opt/local/lib/libgcc hello.o -o libhello.so ld: warning: duplicate -rpath '/opt/local/lib/libgcc' ignored
In this case, /opt/local/lib/libgcc appears twice as a LC_RPATH. Note that the warning "duplicate rpath ignored" does not seem correct.
Now I do not know the right answer to this problem. What has changed with gfortran 12? Is the ${configure.ldflags} misconfigured? I tried to locally remove the ${configure.ldflags} from my link lines: this fixes the compilation, execution runs well, but I need to test if the compilation with e.g. gcc 12 is still working.
Any advice?
comment:19 follow-up: 22 Changed 12 months ago by kencu (Ken)
the compilers PortGroup adds another rpath
It will have to be changed to not do that any more, as gcc/gfortran adds one itself… but then certain builds could break (some builds that use gfortran link with clang)
comment:20 follow-up: 21 Changed 12 months ago by barracuda156
Replying to bardeau:
Sorry, the PATH_MAX bug appears with gcc13 installed with MacPorts.
Do you mean the issue is specific to Macports installation of gcc13 but not gcc13 as such?
comment:21 follow-up: 23 Changed 12 months ago by bardeau
Replying to barracuda156:
Replying to bardeau:
Sorry, the PATH_MAX bug appears with gcc13 installed with MacPorts.
Do you mean the issue is specific to Macports installation of gcc13 but not gcc13 as such?
This piece of code used to compile up to mp-gcc12:
#include <limits.h> void main() { char foo[PATH_MAX]; return; }
Now for mp-gcc13 I need to include syslimits.h instead. As this include also brings PATH_MAX for mp-gcc12, I made the change when compiling with gcc installed with MacPorts. The include file is different for other operating systems, but that's another story.
comment:22 Changed 12 months ago by bardeau
Replying to kencu:
the compilers PortGroup adds another rpath
It will have to be changed to not do that any more, as gcc/gfortran adds one itself… but then certain builds could break (some builds that use gfortran link with clang)
Ok, thanks for the information. I have removed the use of ${configure.ldflags} on my side. It seems to work with the tests I did. I have pushed a pull request. We'll see if the builds are successful on all platforms.
comment:23 Changed 12 months ago by bardeau
Replying to bardeau:
Replying to barracuda156:
Replying to bardeau:
Sorry, the PATH_MAX bug appears with gcc13 installed with MacPorts.
Do you mean the issue is specific to Macports installation of gcc13 but not gcc13 as such?
This piece of code used to compile up to mp-gcc12:
#include <limits.h> void main() { char foo[PATH_MAX]; return; }Now for mp-gcc13 I need to include syslimits.h instead. As this include also brings PATH_MAX for mp-gcc12, I made the change when compiling with gcc installed with MacPorts. The include file is different for other operating systems, but that's another story.
Actually I have a build failure under macos-13 + gcc-13 as the file syslimits.h is not found. Is it the right file to include, or I there a missing dependency I should request?
comment:24 follow-up: 25 Changed 10 months ago by kencu (Ken)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:25 Changed 9 months ago by bardeau
Replying to kencu:
In 9d017dc9465cd72143ae08e7737c5cd64fe2011f/macports-ports (master):
Thank you Kencu for this patch.
Pablo, a new GILDAS release is now available (since today). It should install correctly now.
Please attach the main.log file.