
* fix remaining flake8 errors * imports: sort imports everywhere in Spack We enabled import order checking in #23947, but fixing things manually drives people crazy. This used `spack style --fix --all` from #24071 to automatically sort everything in Spack so PR submitters won't have to deal with it. This should go in after #24071, as it assumes we're using `isort`, not `flake8-import-order` to order things. `isort` seems to be more flexible and allows `llnl` mports to be in their own group before `spack` ones, so this seems like a good switch.
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
import spack.compilers
|
|
from spack.pkg.builtin.clingo import Clingo
|
|
|
|
|
|
class ClingoBootstrap(Clingo):
|
|
"""Clingo with some options used for bootstrapping"""
|
|
|
|
maintainers = ['alalazo']
|
|
|
|
variant('build_type', default='Release', values=('Release',),
|
|
description='CMake build type')
|
|
|
|
# CMake at version 3.16.0 or higher has the possibility to force the
|
|
# Python interpreter, which is crucial to build against external Python
|
|
# in environment where more than one interpreter is in the same prefix
|
|
depends_on('cmake@3.16.0:', type='build')
|
|
|
|
# On Linux we bootstrap with GCC
|
|
for compiler_spec in [
|
|
c for c in spack.compilers.supported_compilers()
|
|
if c != 'gcc'
|
|
]:
|
|
conflicts('%{0}'.format(compiler_spec), when='platform=linux',
|
|
msg='GCC is required to bootstrap clingo on Linux')
|
|
conflicts('%{0}'.format(compiler_spec), when='platform=cray',
|
|
msg='GCC is required to bootstrap clingo on Cray')
|
|
conflicts(
|
|
'%gcc@:5.99.99', msg='C++14 support is required to bootstrap clingo'
|
|
)
|
|
|
|
# On Darwin we bootstrap with Apple Clang
|
|
for compiler_spec in [
|
|
c for c in spack.compilers.supported_compilers()
|
|
if c != 'apple-clang'
|
|
]:
|
|
conflicts('%{0}'.format(compiler_spec), when='platform=darwin',
|
|
msg='Apple-clang is required to bootstrap clingo on MacOS')
|
|
|
|
# Clingo needs the Python module to be usable by Spack
|
|
conflicts('~python', msg='Python support is required to bootstrap Spack')
|
|
|
|
@property
|
|
def cmake_py_shared(self):
|
|
return self.define('CLINGO_BUILD_PY_SHARED', 'OFF')
|
|
|
|
def cmake_args(self):
|
|
args = super(ClingoBootstrap, self).cmake_args()
|
|
args.extend([
|
|
# Avoid building the clingo executable
|
|
self.define('CLINGO_BUILD_APPS', 'OFF'),
|
|
])
|
|
return args
|
|
|
|
def setup_build_environment(self, env):
|
|
if '%apple-clang platform=darwin' in self.spec:
|
|
opts = '-mmacosx-version-min=10.13'
|
|
elif '%gcc' in self.spec:
|
|
# This is either linux or cray
|
|
opts = '-static-libstdc++ -static-libgcc -Wl,--exclude-libs,ALL'
|
|
else:
|
|
msg = 'unexpected compiler for spec "{0}"'.format(self.spec)
|
|
raise RuntimeError(msg)
|
|
|
|
env.set('CXXFLAGS', opts)
|
|
env.set('LDFLAGS', opts)
|