diff options
author | Seth R. Johnson <johnsonsr@ornl.gov> | 2021-12-21 16:22:35 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-21 22:22:35 +0100 |
commit | 38196894db9975f701faefbb8d91b85f558c9298 (patch) | |
tree | 3a6467b7dc8ca0298049cf56a3a41b2d225236bc | |
parent | db69a291d4937c230517a6f049010737c98ac1d8 (diff) | |
download | spack-38196894db9975f701faefbb8d91b85f558c9298.tar.gz spack-38196894db9975f701faefbb8d91b85f558c9298.tar.bz2 spack-38196894db9975f701faefbb8d91b85f558c9298.tar.xz spack-38196894db9975f701faefbb8d91b85f558c9298.zip |
perl: fix macOS build (#26290)
* perl: fix macOS build
With both 5.34.0 and 5.32.1 the build fails on macos-bigsur-skylake
%clang@12.0.5 and %clang13.0.0 :
```
2 errors found in build log:
579013 /private/var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/s3j/spack-stage/spack-stage-perl-5.34.0-tpha2u52qfwaraidpzzbf6u4dbqg7dk5/spack-src/cpan/
Math-BigInt-FastCalc/../../miniperl "-I../../lib" -MExtUtils::Command::MM -e 'cp_nonempty' -- FastCalc.bs ../../lib/auto/Math/BigInt/FastCalc/Fas
tCalc.bs 644
579014
579015 Everything is up to date. Type '/Applications/Xcode.app/Contents/Developer/usr/bin/make test' to run test suite.
579016 DYLD_LIBRARY_PATH=/private/var/folders/fy/x2xtwh1n7fn0_0q2kk29xkv9vvmbqb/T/s3j/spack-stage/spack-stage-perl-5.34.0-tpha2u52qfwaraidpzzbf6u4dbqg7d
k5/spack-src ./perl -Ilib -I. installperl --destdir=
579017 WARNING: You've never run 'make test' or some tests failed! (Installing anyway.)
579018 /rnsdhpc/code/spack/opt/spack/apple-clang/perl/tpha2u5/bin/perl5.34.0
>> 579019 install_name_tool: error: sh -c '/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode.app/Contents/Developer/Pl
atforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find install_name_tool 2> /dev/null' failed with exit code 256: (null) (errno=Invalid argument
)
579020 xcode-select: Failed to locate 'install_name_tool', requesting installation of command line developer tools.
579021 Cannot update /rnsdhpc/code/spack/opt/spack/apple-clang/perl/tpha2u5/bin/perl5.34.0 dependency paths
>> 579022 make: *** [install-all] Error 72
```
This is due to SYSTEM_VERSION_COMPAT being set.
* perl: conditionally set SYSTEM_VERSION_COMPAT based on CLT
The version of command line tools is the only difference between
@alalazo and my builds: his (v11) works only when SYSTEM_VERSION_COMPAT
is set to 1, and mine (v12.5 and v13) only work when it is unset.
-rw-r--r-- | var/spack/repos/builtin/packages/perl/package.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py index ddd732c5dd..72c6c375e3 100644 --- a/var/spack/repos/builtin/packages/perl/package.py +++ b/var/spack/repos/builtin/packages/perl/package.py @@ -15,6 +15,7 @@ import os import re from contextlib import contextmanager +from llnl.util import tty from llnl.util.lang import match_predicate from spack import * @@ -299,8 +300,21 @@ class Perl(Package): # Perl doesn't use Autotools, it should subclass Package # This is to avoid failures when using -mmacosx-version-min=11.1 # since not all Apple Clang compilers support that version range # See https://eclecticlight.co/2020/07/21/big-sur-is-both-10-16-and-11-0-its-official/ + # It seems that this is only necessary for older versions of the + # command line tools rather than the xcode/clang version. if spec.satisfies('os=bigsur'): - env.set('SYSTEM_VERSION_COMPAT', 1) + pkgutil = Executable('pkgutil') + output = pkgutil('--pkg-info=com.apple.pkg.CLTools_Executables', + output=str, error=str, fail_on_error=False) + match = re.search(r'version:\s*([0-9.]+)', output) + if not match: + tty.warn('Failed to detect macOS command line tools version: ' + + output) + else: + if Version(match.group(1)) < Version('12'): + tty.warn("Setting SYSTEM_VERSION_COMPAT=1 due to older " + "command line tools version") + env.set('SYSTEM_VERSION_COMPAT', 1) # This is how we tell perl the locations of bzip and zlib. env.set('BUILD_BZIP2', 0) |