Opened 14 months ago
Last modified 7 days ago
#59786 assigned defect
perl5.28, perl5.30: forces modules to build with clang-3.4, though they don't declare a dependency on it
Reported by: | ryandesign (Ryan Schmidt) | Owned by: | mojca (Mojca Miklavec) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.6.2 |
Keywords: | Cc: | jmroot (Joshua Root), grumpybozo (Bill Cole) | |
Port: | perl5.28, perl5.30 |
Description
See summary.
---> Configuring p5.30-perlmagick DEBUG: Preferred compilers: macports-clang-9.0 macports-clang-8.0 macports-clang-7.0 macports-clang-6.0 macports-clang-5.0 macports-clang-3.7 macports-clang-3.4 DEBUG: Using compiler 'MacPorts Clang 9.0'
/opt/local/bin/clang-mp-3.4 -c -I../ -I.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I"/usr/include/ImageMagick" -I../../ -I../.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I"/usr/include/ImageMagick" -fno-common -DPERL_DARWIN -mmacosx-version-min=10.6 -pipe -Os -fno-strict-aliasing -fstack-protector -I/opt/local/include -DPERL_USE_SAFE_PUTENV -I/opt/local/include/libxml2 -I/opt/local/include -I/opt/local/include -I/opt/local/include/libraw -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -D_THREAD_SAFE -I/opt/local/include/OpenEXR -I/opt/local/include -I/opt/local/include/openjpeg-2.3 -I/opt/local/include -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include -I/opt/local/include -g -O2 -Wall -fexceptions -D_FORTIFY_SOURCE=0 -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -arch x86_64 -isysroot/ -O3 -DVERSION=\"6.9.10\" -DXS_VERSION=\"6.9.10\" "-I/opt/local/lib/perl5/5.30/darwin-thread-multi-2level/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H -D_LARGE_FILES=1 -DHAVE_CONFIG_H Q16.c /bin/sh: /opt/local/bin/clang-mp-3.4: No such file or directory make[1]: *** [Q16.o] Error 127
Change History (9)
comment:1 Changed 14 months ago by jmroot (Joshua Root)
comment:2 Changed 14 months ago by ryandesign (Ryan Schmidt)
Are you sure this happens with perl modules in general?
No, I am not sure.
You'll notice the configure phase is correctly showing /opt/local/bin/clang-mp-9.0 in use.
That's my point: the configure phase shows that the correct compiler is selected, yet by the build phase, the compiler that had been used to compile perl5.30 got used instead. Certainly the p5-perlmagick port does not specify clang-3.4, neither does the perlmagick build system, so the clang-3.4 compiler choice has to be coming from perl5.30's config files, and it seems to me that the bug is either perl5.30 doing that, or the perl5 portgroup not sufficiently overriding that.
Note that the problem does not occur with perl5.28:
$ sudo port -nd build subport=p5.28-perlmagick configure.compiler=macports-clang-8.0 ... DEBUG: Using compiler 'MacPorts Clang 8.0' ... checking for gcc... /opt/local/bin/clang-mp-8.0 ... /opt/local/bin/clang-mp-8.0 -c -I../ -I.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/opt/local/include -I../../ -I../.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/opt/local/include -fno-common -DPERL_DARWIN -mmacosx-version-min=10.13 -pipe -Os -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -I/opt/local/include/libxml2 -I/opt/local/include -I/opt/local/include -I/opt/local/include/libraw -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/fribidi -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -D_THREAD_SAFE -I/opt/local/include/OpenEXR -I/opt/local/include -I/opt/local/include/openjpeg-2.3 -I/opt/local/include -I/opt/local/include/graphviz -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include -I/opt/local/include -g -O2 -Wall -fexceptions -D_FORTIFY_SOURCE=0 -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -arch x86_64 -arch i386 -isysroot/ -O3 -DVERSION=\"6.9.10\" -DXS_VERSION=\"6.9.10\" "-I/opt/local/lib/perl5/5.28/darwin-thread-multi-2level/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H -D_LARGE_FILES=1 -DHAVE_CONFIG_H Q16.c
But it does happen with perl5.30:
$ sudo port -nd build subport=p5.30-perlmagick configure.compiler=macports-clang-8.0 ... DEBUG: Using compiler 'MacPorts Clang 8.0' ... checking for gcc... /opt/local/bin/clang-mp-8.0 ... /usr/bin/clang -c -I../ -I.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/opt/local/include -I../../ -I../.. -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/opt/local/include -fno-common -DPERL_DARWIN -mmacosx-version-min=10.13 -pipe -Os -fno-strict-aliasing -fstack-protector-strong -I/opt/local/include -DPERL_USE_SAFE_PUTENV -I/opt/local/include/libxml2 -I/opt/local/include -I/opt/local/include -I/opt/local/include/libraw -I/opt/local/include -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/harfbuzz -I/opt/local/include -I/opt/local/include/pango-1.0 -I/opt/local/include/fribidi -I/opt/local/include/cairo -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -I/opt/local/include/pixman-1 -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -D_THREAD_SAFE -I/opt/local/include/OpenEXR -I/opt/local/include -I/opt/local/include/openjpeg-2.3 -I/opt/local/include -I/opt/local/include/graphviz -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/freetype2 -I/opt/local/include/libpng16 -I/opt/local/include -I/opt/local/include -I/opt/local/include -I/opt/local/include -g -O2 -Wall -fexceptions -D_FORTIFY_SOURCE=0 -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -arch x86_64 -arch i386 -isysroot/ -O3 -DVERSION=\"6.9.10\" -DXS_VERSION=\"6.9.10\" "-I/opt/local/lib/perl5/5.30/darwin-thread-multi-2level/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H -D_LARGE_FILES=1 -DHAVE_CONFIG_H Q16.c
This suggests to me that the bug is in perl5.30, not the perl5 portgroup.
comment:3 Changed 13 months ago by ryandesign (Ryan Schmidt)
Here's the same problem affecting p5.30-term-gnuplot, so it's not just a p5.30-perlmagick problem.
comment:4 Changed 12 months ago by ryandesign (Ryan Schmidt)
Cc: | jmroot added |
---|
Looks like [7080039472288d673d7b7cbd261095768bdc458f/macports-ports] fixed this for p5-perlmagick and p5-term-gnuplot.
But some other ports are still affected like p5.30-moose. Do we need to handle those on a case by case basis?
comment:5 Changed 12 months ago by jmroot (Joshua Root)
I wonder if it might be worth replacing the build-time ${configure.cc} in Config_heavy.pl with something that will always exist, like /usr/bin/cc. Ports that aren't using the right compiler would still need to be fixed individually, but it would get past sanity checks like p5-moose uses and would allow end users to compile XS out of the box even if they don't have the exact clang port that was used to build perl.
comment:6 Changed 12 months ago by ryandesign (Ryan Schmidt)
Another remaining example: p5.28-io-tty:
Now let's see what we can find out about your system (logfiles of failing tests are available in the conf/ dir)... ERROR: cannot run the configured compiler '/opt/local/bin/clang-mp-3.4' (see conf/compilerok.log). Suggestions: 1) The compiler '/opt/local/bin/clang-mp-3.4' is not in your PATH. Add it to the PATH and try again. OR 2) The compiler isn't installed on your system. Install it. OR 3) You only have a different compiler installed (e.g. 'gcc'). Either fix the compiler config in the perl Config.pm or install a perl that was built with the right compiler (you could build perl yourself with the available compiler). Note: this is a system-administration issue, please ask your local admin for help. Thank you.
It is so dumb that perl uses the compiler that was used to build itself to build other modules. What an idiotic design decision. Yes, let's replace it with /usr/bin/cc I guess.
comment:7 Changed 8 months ago by ryandesign (Ryan Schmidt)
#60516 is another instance of this, with p5-sereal-decoder.
comment:8 Changed 8 months ago by kencu (Ken)
This one bit me yet again.
$ sudo port -v destroot p5.28-xml-parser ---> Computing dependencies for p5.28-xml-parser. ---> Fetching distfiles for p5.28-xml-parser ---> Verifying checksums for p5.28-xml-parser ---> Checksumming XML-Parser-2.46.tar.gz ---> Extracting p5.28-xml-parser ---> Extracting XML-Parser-2.46.tar.gz Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_perl_p5-xml-parser/p5.28-xml-parser/work" && /usr/bin/gzip -dc '/opt/local/var/macports/distfiles/perl5/XML-Parser-2.46.tar.gz' | /usr/bin/gnutar --no-same-owner -xf - ---> Configuring p5.28-xml-parser Executing: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_perl_p5-xml-parser/p5.28-xml-parser/work/XML-Parser-2.46" && /opt/local/bin/perl5.28 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-9.0" LD="/opt/local/bin/clang-mp-9.0" Couldn't find your C compiler Compilation failed in require at Makefile.PL line 4. BEGIN failed--compilation aborted at Makefile.PL line 4. Command failed: cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_perl_p5-xml-parser/p5.28-xml-parser/work/XML-Parser-2.46" && /opt/local/bin/perl5.28 Makefile.PL INSTALLDIRS=vendor CC="/opt/local/bin/clang-mp-9.0" LD="/opt/local/bin/clang-mp-9.0" Exit code: 2 Error: Failed to configure p5.28-xml-parser: configure failure: command execution failed Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_perl_p5-xml-parser/p5.28-xml-parser/main.log for details.
perl5 is hard-coded to build everything with clang-3.4. All is working again after reactivating clang-3.4:
$ perl5.28 -V Summary of my perl5 (revision 5 version 28 subversion 2) configuration: Platform: osname=darwin osvers=10.8.0 archname=darwin-thread-multi-2level uname='darwin kensmacbookpro.local 10.8.0 darwin kernel version 10.8.0: tue jun 7 16:33:36 pdt 2011; root:xnu-1504.15.3~1release_i386 i386 ' config_args='-des -Dprefix=/opt/local -Dscriptdir=/opt/local/bin -Dvendorprefix=/opt/local -Dusemultiplicity=y -Dusethreads -Duseshrplib -Dcc=/opt/local/bin/clang-mp-3.4 -Dman1ext=1pm -Dman3ext=3pm -Dinstallstyle=lib/perl5 -Dman1dir=/opt/local/share/man/man1p -Dman3dir=/opt/local/share/man/man3p -Dsitebin=/opt/local/libexec/perl5.28/sitebin -Dsiteman1dir=/opt/local/share/perl5.28/siteman/man1 -Dsiteman3dir=/opt/local/share/perl5.28/siteman/man3 -Dvendorbin=/opt/local/libexec/perl5.28 -Dvendorman1dir=/opt/local/share/perl5.28/man/man1 -Dvendorman3dir=/opt/local/share/perl5.28/man/man3 -Dpager=/usr/bin/less -sR -Dperlpath=/opt/local/bin/perl5.28 -Dstartperl=#!/opt/local/bin/perl5.28 -Acppflags=-I/opt/local/include -Accflags=-pipe -Os -Alddlflags=-L/opt/local/lib -Wl,-headerpad_max_install_names -Aldflags=-L/opt/local/lib -Wl,-headerpad_max_install_names ' hint=recommended useposix=true d_sigaction=define useithreads=define usemultiplicity=define use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='/opt/local/bin/clang-mp-3.4'
comment:9 Changed 7 days ago by ryandesign (Ryan Schmidt)
Cc: | grumpybozo added |
---|---|
Port: | perl5.28 added |
Summary: | perl5.30 forces modules to build with clang-3.4, though they don't declare a dependency on it → perl5.28, perl5.30: forces modules to build with clang-3.4, though they don't declare a dependency on it |
Has duplicate #62096.
Are you sure this happens with perl modules in general? You'll notice the configure phase is correctly showing /opt/local/bin/clang-mp-9.0 in use.