fix code-signing on macOS (#15592)
* rebase * move if statement location * remove whitespace * spec to self.spec * switch statements as per review * fix erronous indent * add missing cmake arg * minor placement fix for cmake args * edit comment * fix erronous return * clarify conflicts with messages * remove duplicate comment * simplify logic * macos wasn't a variant, fix that * remove extra blank line * address reviewer comments on spaces
This commit is contained in:
parent
2a5592f419
commit
5f285fdd05
@ -119,6 +119,8 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
default=False,
|
default=False,
|
||||||
description="Build with OpenMP capable thread sanitizer",
|
description="Build with OpenMP capable thread sanitizer",
|
||||||
)
|
)
|
||||||
|
variant('code_signing', default=False,
|
||||||
|
description="Enable code-signing on macOS")
|
||||||
variant("python", default=False, description="Install python bindings")
|
variant("python", default=False, description="Install python bindings")
|
||||||
|
|
||||||
extends("python", when="+python")
|
extends("python", when="+python")
|
||||||
@ -176,6 +178,20 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
# MLIR exists in > 10.x
|
# MLIR exists in > 10.x
|
||||||
conflicts("+mlir", when="@:9")
|
conflicts("+mlir", when="@:9")
|
||||||
|
|
||||||
|
# code signing is only necessary on macOS",
|
||||||
|
conflicts('+code_signing', when='platform=linux')
|
||||||
|
conflicts('+code_signing', when='platform=bgq')
|
||||||
|
conflicts('+code_signing', when='platform=cray')
|
||||||
|
|
||||||
|
conflicts(
|
||||||
|
'+code_signing',
|
||||||
|
when='~lldb platform=darwin',
|
||||||
|
msg="code signing is only necessary for building the "
|
||||||
|
"in-tree debug server on macOS. Turning this variant "
|
||||||
|
"off enables a build of llvm with lldb that uses the "
|
||||||
|
"system debug server",
|
||||||
|
)
|
||||||
|
|
||||||
# Github issue #4986
|
# Github issue #4986
|
||||||
patch("llvm_gcc7.patch", when="@4.0.0:4.0.1+lldb %gcc@7.0:")
|
patch("llvm_gcc7.patch", when="@4.0.0:4.0.1+lldb %gcc@7.0:")
|
||||||
# Backport from llvm master + additional fix
|
# Backport from llvm master + additional fix
|
||||||
@ -192,31 +208,31 @@ class Llvm(CMakePackage, CudaPackage):
|
|||||||
# https://bugs.llvm.org/show_bug.cgi?id=39696
|
# https://bugs.llvm.org/show_bug.cgi?id=39696
|
||||||
patch("thread-p9.patch", when="@develop+libcxx")
|
patch("thread-p9.patch", when="@develop+libcxx")
|
||||||
|
|
||||||
@run_before("cmake")
|
@run_before('cmake')
|
||||||
def check_darwin_lldb_codesign_requirement(self):
|
def codesign_check(self):
|
||||||
if not self.spec.satisfies("+lldb platform=darwin"):
|
if self.spec.satisfies("+code_signing"):
|
||||||
return
|
codesign = which('codesign')
|
||||||
codesign = which("codesign")
|
mkdir('tmp')
|
||||||
mkdir("tmp")
|
llvm_check_file = join_path('tmp', 'llvm_check')
|
||||||
llvm_check_file = join_path("tmp", "llvm_check")
|
copy('/usr/bin/false', llvm_check_file)
|
||||||
copy("/usr/bin/false", llvm_check_file)
|
|
||||||
|
|
||||||
try:
|
|
||||||
codesign("-f", "-s", "lldb_codesign", "--dryrun", llvm_check_file)
|
|
||||||
|
|
||||||
except ProcessError:
|
|
||||||
# Newer LLVM versions have a simple script that sets up
|
|
||||||
# automatically
|
|
||||||
setup = Executable("./lldb/scripts/macos-setup-codesign.sh")
|
|
||||||
try:
|
try:
|
||||||
setup()
|
codesign('-f', '-s', 'lldb_codesign', '--dryrun',
|
||||||
except Exception:
|
llvm_check_file)
|
||||||
raise RuntimeError(
|
|
||||||
'The "lldb_codesign" identity must be available to build '
|
except ProcessError:
|
||||||
"LLVM with LLDB. See https://lldb.llvm.org/resources/"
|
# Newer LLVM versions have a simple script that sets up
|
||||||
"build.html#code-signing-on-macos for details on how to "
|
# automatically when run with sudo priviliges
|
||||||
"create this identity."
|
setup = Executable("./lldb/scripts/macos-setup-codesign.sh")
|
||||||
)
|
try:
|
||||||
|
setup()
|
||||||
|
except Exception:
|
||||||
|
raise RuntimeError(
|
||||||
|
'spack was unable to either find or set up'
|
||||||
|
'code-signing on your system. Please refer to'
|
||||||
|
'https://lldb.llvm.org/resources/build.html#'
|
||||||
|
'code-signing-on-macos for details on how to'
|
||||||
|
'create this identity.'
|
||||||
|
)
|
||||||
|
|
||||||
def setup_build_environment(self, env):
|
def setup_build_environment(self, env):
|
||||||
env.append_flags("CXXFLAGS", self.compiler.cxx11_flag)
|
env.append_flags("CXXFLAGS", self.compiler.cxx11_flag)
|
||||||
@ -355,6 +371,9 @@ def cmake_args(self):
|
|||||||
):
|
):
|
||||||
cmake_args.append("-DCMAKE_BUILD_WITH_INSTALL_RPATH=1")
|
cmake_args.append("-DCMAKE_BUILD_WITH_INSTALL_RPATH=1")
|
||||||
|
|
||||||
|
if self.spec.satisfies("~code_signing platform=darwin"):
|
||||||
|
cmake_args.append('-DLLDB_USE_SYSTEM_DEBUGSERVER=ON')
|
||||||
|
|
||||||
# Semicolon seperated list of projects to enable
|
# Semicolon seperated list of projects to enable
|
||||||
cmake_args.append(
|
cmake_args.append(
|
||||||
"-DLLVM_ENABLE_PROJECTS:STRING={0}".format(";".join(projects))
|
"-DLLVM_ENABLE_PROJECTS:STRING={0}".format(";".join(projects))
|
||||||
|
Loading…
Reference in New Issue
Block a user