diff --git a/var/spack/repos/builtin/packages/abi-dumper/package.py b/var/spack/repos/builtin/packages/abi-dumper/package.py index 764ea51f57..17a82bc84f 100644 --- a/var/spack/repos/builtin/packages/abi-dumper/package.py +++ b/var/spack/repos/builtin/packages/abi-dumper/package.py @@ -6,12 +6,12 @@ from spack import * -class AbiDumper(MakefilePackage): +class AbiDumper(Package): """ABI Dumper is a tool to dump ABI of an ELF object containing DWARF debug info.""" homepage = "https://github.com/lvc/abi-dumper" - url = "https://github.com/lvc/abi-dumper/archive/1.2.tar.gz" + url = "https://github.com/lvc/abi-dumper/archive/1.2.tar.gz" version('1.2', sha256='8a9858c91b4e9222c89b676d59422053ad560fa005a39443053568049bd4d27e') version('1.1', sha256='ef63201368e0d76a29d2f7aed98c488f6fb71898126762d65baed1e762988083') @@ -24,7 +24,5 @@ class AbiDumper(MakefilePackage): depends_on('universal-ctags') depends_on('vtable-dumper@1.1:') - phases = ['install'] - def install(self, spec, prefix): make('prefix={0}'.format(prefix), 'install') diff --git a/var/spack/repos/builtin/packages/apktool/package.py b/var/spack/repos/builtin/packages/apktool/package.py index f05c542900..8d1f20b2ea 100644 --- a/var/spack/repos/builtin/packages/apktool/package.py +++ b/var/spack/repos/builtin/packages/apktool/package.py @@ -13,20 +13,17 @@ class Apktool(Package): homepage = "https://ibotpeaches.github.io/Apktool/" url = "https://github.com/iBotPeaches/Apktool/archive/refs/tags/v2.6.0.tar.gz" + version('2.6.1', sha256='8932e77d963b9e0e07227422d82ed4a355e8aa268bad1361e5cfaffa8e4d52ee') version('2.6.0', sha256='74739cdb1434ca35ec34e51ca7272ad3f378ae3ed0a2d5805d9a2fab5016037f') depends_on('java@8:', type=('build', 'run')) - phases = ['build', 'install'] - def setup_build_environment(self, env): env.set('LC_ALL', 'en_US.UTF-8') - def build(self, spec, prefix): + def install(self, spec, prefix): gradlew = Executable('./gradlew') gradlew('--info', '--debug', 'build', 'shadowJar') - - def install(self, spec, prefix): ln = which('ln') mkdir(join_path(prefix, 'bin')) install( diff --git a/var/spack/repos/builtin/packages/aragorn/package.py b/var/spack/repos/builtin/packages/aragorn/package.py index c4bd3aec5f..1d012f1387 100644 --- a/var/spack/repos/builtin/packages/aragorn/package.py +++ b/var/spack/repos/builtin/packages/aragorn/package.py @@ -16,13 +16,9 @@ class Aragorn(Package): version('1.2.38', sha256='4b84e3397755fb22cc931c0e7b9d50eaba2a680df854d7a35db46a13cecb2126') version('1.2.36', sha256='ab06032589e45aa002f8616333568e9ab11034b3a675f922421e5f1c3e95e7b5') - phases = ['build', 'install'] - - def build(self, spec, prefix): + def install(self, spec, prefix): cc = Executable(spack_cc) cc('-O3', '-ffast-math', '-finline-functions', '-oaragorn', 'aragorn' + format(spec.version.dotted) + '.c') - - def install(self, spec, prefix): mkdirp(prefix.bin) install('aragorn', prefix.bin) diff --git a/var/spack/repos/builtin/packages/ascent/package.py b/var/spack/repos/builtin/packages/ascent/package.py index c2fb928f31..38d09da8b0 100644 --- a/var/spack/repos/builtin/packages/ascent/package.py +++ b/var/spack/repos/builtin/packages/ascent/package.py @@ -187,11 +187,6 @@ class Ascent(CMakePackage, CudaPackage): conflicts("+shared", when="+cuda", msg="Ascent needs to be built with ~shared for CUDA builds.") - ################################### - # build phases used by this package - ################################### - phases = ['hostconfig', 'cmake', 'build', 'install'] - def setup_build_environment(self, env): env.set('CTEST_OUTPUT_ON_FAILURE', '1') @@ -260,7 +255,8 @@ def _get_host_config_path(self, spec): host_config_path)) return host_config_path - def hostconfig(self, spec, prefix): + @run_before('cmake') + def hostconfig(self): """ This method creates a 'host-config' file that specifies all of the options used to configure and build ascent. @@ -269,6 +265,7 @@ def hostconfig(self, spec, prefix): https://ascent.readthedocs.io/en/latest/BuildingAscent.html """ + spec = self.spec if not os.path.isdir(spec.prefix): os.mkdir(spec.prefix) diff --git a/var/spack/repos/builtin/packages/astral/package.py b/var/spack/repos/builtin/packages/astral/package.py index 7c65b6f4e5..001167cec7 100644 --- a/var/spack/repos/builtin/packages/astral/package.py +++ b/var/spack/repos/builtin/packages/astral/package.py @@ -15,6 +15,7 @@ class Astral(Package): homepage = "https://github.com/smirarab/ASTRAL" url = "https://github.com/smirarab/ASTRAL/archive/v4.10.7.tar.gz" + version('5.7.1', sha256='8aa6fd4324efca325d3dde432517090fac314bea95f407b1dd59977181fec77e') version('5.6.1', sha256='b49a67c9fe19c0c92a89dc2f1a3928840e698a53054a595c61546ca98448a076', url='https://github.com/smirarab/ASTRAL/archive/untagged-697f19dbce69929ece09.tar.gz') version('4.10.7', sha256='314b49e0129ec06a7c78a1b60d590259ede6a5e75253407031e108d8048fcc79') @@ -22,13 +23,9 @@ class Astral(Package): depends_on('java', type=('build', 'run')) depends_on('zip', type='build') - phases = ['build', 'install'] - - def build(self, spec, prefix): + def install(self, spec, prefix): make = Executable('./make.sh') make() - - def install(self, spec, prefix): mkdirp(prefix.bin) install_tree('lib', prefix.tools.lib) jar_file = 'astral.{v}.jar'.format(v=self.version) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index 619243204d..6f7da9b451 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -157,8 +157,6 @@ class Bazel(Package): patch('disabledepcheck.patch', when='@0.3.2:+nodepfail') patch('disabledepcheck_old.patch', when='@0.3.0:0.3.1+nodepfail') - phases = ['bootstrap', 'install'] - executables = ['^bazel$'] @classmethod @@ -195,7 +193,8 @@ def setup_build_environment(self, env): ' --subcommands=pretty_print' ' --jobs={0}'.format(make_jobs)) - def bootstrap(self, spec, prefix): + @run_before('install') + def bootstrap(self): bash = which('bash') bash('./compile.sh') diff --git a/var/spack/repos/builtin/packages/bigdft-atlab/package.py b/var/spack/repos/builtin/packages/bigdft-atlab/package.py index 5fc6f832b8..fce0127283 100644 --- a/var/spack/repos/builtin/packages/bigdft-atlab/package.py +++ b/var/spack/repos/builtin/packages/bigdft-atlab/package.py @@ -29,8 +29,6 @@ class BigdftAtlab(AutotoolsPackage): for vers in ['1.8.1', '1.8.2', '1.8.3', '1.9.0', '1.9.1', '1.9.2', 'develop']: depends_on('bigdft-futile@{0}'.format(vers), when='@{0}'.format(vers)) - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "atlab" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-chess/package.py b/var/spack/repos/builtin/packages/bigdft-chess/package.py index d975c822af..38428bb182 100644 --- a/var/spack/repos/builtin/packages/bigdft-chess/package.py +++ b/var/spack/repos/builtin/packages/bigdft-chess/package.py @@ -45,8 +45,6 @@ class BigdftChess(AutotoolsPackage, CudaPackage): for vers in ['1.8.3', '1.9.0', '1.9.1', '1.9.2', 'develop']: depends_on('bigdft-atlab@{0}'.format(vers), when='@{0}'.format(vers)) - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "chess" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-core/package.py b/var/spack/repos/builtin/packages/bigdft-core/package.py index 6d5df88413..6221a47882 100644 --- a/var/spack/repos/builtin/packages/bigdft-core/package.py +++ b/var/spack/repos/builtin/packages/bigdft-core/package.py @@ -48,8 +48,6 @@ class BigdftCore(AutotoolsPackage, CudaPackage): depends_on('bigdft-psolver@{0}'.format(vers), when='@{0}'.format(vers)) depends_on('bigdft-libabinit@{0}'.format(vers), when='@{0}'.format(vers)) - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "bigdft" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-futile/package.py b/var/spack/repos/builtin/packages/bigdft-futile/package.py index 936b9f301a..1abaf48306 100644 --- a/var/spack/repos/builtin/packages/bigdft-futile/package.py +++ b/var/spack/repos/builtin/packages/bigdft-futile/package.py @@ -38,8 +38,6 @@ class BigdftFutile(AutotoolsPackage, CudaPackage): depends_on('py-pyyaml') depends_on('mpi', when='+mpi') - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "futile" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-libabinit/package.py b/var/spack/repos/builtin/packages/bigdft-libabinit/package.py index ff61338334..e6a0dcad62 100644 --- a/var/spack/repos/builtin/packages/bigdft-libabinit/package.py +++ b/var/spack/repos/builtin/packages/bigdft-libabinit/package.py @@ -40,8 +40,6 @@ class BigdftLibabinit(AutotoolsPackage): patch('m_libpaw_mpi.F90.patch', when='@:1.8.2') - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "libABINIT" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-psolver/package.py b/var/spack/repos/builtin/packages/bigdft-psolver/package.py index 1ae24f617b..23ab79e679 100644 --- a/var/spack/repos/builtin/packages/bigdft-psolver/package.py +++ b/var/spack/repos/builtin/packages/bigdft-psolver/package.py @@ -42,8 +42,6 @@ class BigdftPsolver(AutotoolsPackage, CudaPackage): for vers in ['1.8.3', '1.9.0', '1.9.1', '1.9.2', 'develop']: depends_on('bigdft-atlab@{0}'.format(vers), when='@{0}'.format(vers)) - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "psolver" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/bigdft-spred/package.py b/var/spack/repos/builtin/packages/bigdft-spred/package.py index 10a4cbac9c..98697a0150 100644 --- a/var/spack/repos/builtin/packages/bigdft-spred/package.py +++ b/var/spack/repos/builtin/packages/bigdft-spred/package.py @@ -41,8 +41,6 @@ class BigdftSpred(AutotoolsPackage): depends_on('bigdft-psolver@{0}'.format(vers), when='@{0}'.format(vers)) depends_on('bigdft-core@{0}'.format(vers), when='@{0}'.format(vers)) - phases = ['autoreconf', 'configure', 'build', 'install'] - build_directory = "spred" def autoreconf(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/blasr-libcpp/package.py b/var/spack/repos/builtin/packages/blasr-libcpp/package.py index 50e40f5d33..0db23f62b7 100644 --- a/var/spack/repos/builtin/packages/blasr-libcpp/package.py +++ b/var/spack/repos/builtin/packages/blasr-libcpp/package.py @@ -28,8 +28,7 @@ class BlasrLibcpp(Package): depends_on('python@2.7:2.8', type='build') - phases = ['configure', 'build', 'install'] - + @run_before('install') def configure(self, spec, prefix): configure_args = [ 'PBBAM_INC={0}'.format(self.spec['pbbam'].prefix.include), @@ -39,6 +38,7 @@ def configure(self, spec, prefix): ] python('configure.py', *configure_args) + @run_before('install') def build(self, spec, prefix): os.environ['CPLUS_INCLUDE_PATH'] = self.stage.source_path make() diff --git a/var/spack/repos/builtin/packages/blasr/package.py b/var/spack/repos/builtin/packages/blasr/package.py index 647d84112d..25ad0d014d 100644 --- a/var/spack/repos/builtin/packages/blasr/package.py +++ b/var/spack/repos/builtin/packages/blasr/package.py @@ -30,8 +30,6 @@ class Blasr(Package): depends_on('blasr-libcpp') depends_on('python', type='build') - phases = ['configure', 'build', 'install'] - def setup_build_environment(self, env): env.prepend_path('CPATH', self.spec['blasr-libcpp'].prefix) env.prepend_path('CPATH', self.spec['blasr-libcpp'].prefix.pbdata) @@ -46,6 +44,7 @@ def setup_build_environment(self, env): def setup_run_environment(self, env): env.prepend_path('PATH', self.spec.prefix.utils) + @run_before('install') def configure(self, spec, prefix): configure_args = [ 'LIBPBDATA_INC={0}'.format( @@ -64,6 +63,7 @@ def configure(self, spec, prefix): ] python('configure.py', *configure_args) + @run_before('install') def build(self, spec, prefix): os.environ['CPLUS_INCLUDE_PATH'] = join_path( self.stage.source_path, 'include') diff --git a/var/spack/repos/builtin/packages/bmake/package.py b/var/spack/repos/builtin/packages/bmake/package.py index ffd5df8103..f220697be9 100644 --- a/var/spack/repos/builtin/packages/bmake/package.py +++ b/var/spack/repos/builtin/packages/bmake/package.py @@ -10,14 +10,13 @@ class Bmake(Package): """Portable version of NetBSD make(1).""" homepage = "https://www.crufty.net/help/sjg/bmake.htm" - url = "https://www.crufty.net/ftp/pub/sjg/bmake-20180512.tar.gz" + url = "https://www.crufty.net/ftp/pub/sjg/bmake-20180512.tar.gz" + version('20220330', sha256='4b46d95b6ae4b3311ba805ff7d5a19b9e37ac0e86880e296e2111f565b545092') version('20200710', sha256='6538fc4319ef79d178dca76d3b869f7aa93a9bb7b510df08a7d872c01a56b76c') version('20180512', sha256='ac3cd262065fcc20c1dec7c95f06306c8138b3e17025b949343a06a8980a5508') version('20171207', sha256='1703667e53a0498c0903b20612ebcbb41b886a94b238624cfeadd91a4111d39a') - phases = ['configure', 'build', 'install'] - def patch(self): # Do not pre-roff cat pages filter_file('MANTARGET?', 'MANTARGET', 'mk/man.mk', string=True) @@ -25,14 +24,8 @@ def patch(self): filter_file('GetDir /bmake', 'GetDir ' + self.stage.source_path, 'boot-strap', string=True) - def configure(self, spec, prefix): - sh = which('sh') - sh('boot-strap', 'op=configure') - - def build(self, spec, prefix): - sh = which('sh') - sh('boot-strap', 'op=build') - def install(self, spec, prefix): sh = which('sh') + sh('boot-strap', 'op=configure') + sh('boot-strap', 'op=build') sh('boot-strap', '--prefix={0}'.format(prefix), 'op=install') diff --git a/var/spack/repos/builtin/packages/botan/package.py b/var/spack/repos/builtin/packages/botan/package.py index b82c7c00e9..f067e31350 100644 --- a/var/spack/repos/builtin/packages/botan/package.py +++ b/var/spack/repos/builtin/packages/botan/package.py @@ -6,7 +6,7 @@ from spack import * -class Botan(Package): +class Botan(MakefilePackage): """Crypto and TLS for Modern C++""" homepage = "https://botan.randombit.net/" @@ -36,24 +36,15 @@ class Botan(Package): depends_on('python', type='build') depends_on('py-sphinx@1.2:', type='build', when='+doc') - phases = ['configure', 'build', 'install'] - - def configure(self, spec, prefix): + def edit(self, spec, prefix): configure = Executable('./configure.py') configure(*self.configure_args()) def configure_args(self): spec = self.spec - args = [] - args.append('--prefix=' + prefix) + args = ['--prefix={0}'.format(self.prefix)] if '+doc' in spec: args.append('--with-documentation') else: args.append('--without-documentation') return args - - def build(self, spec, prefix): - make() - - def install(self, spec, prefix): - make('install') diff --git a/var/spack/repos/builtin/packages/breakdancer/package.py b/var/spack/repos/builtin/packages/breakdancer/package.py index f689d549e9..7d03a05899 100644 --- a/var/spack/repos/builtin/packages/breakdancer/package.py +++ b/var/spack/repos/builtin/packages/breakdancer/package.py @@ -24,8 +24,6 @@ class Breakdancer(CMakePackage): version('master', submodules='true', git='https://github.com/genome/breakdancer.git', preferred=True) - phases = ['edit', 'cmake', 'build', 'install'] - depends_on('zlib') depends_on('ncurses', type='link') @@ -45,7 +43,8 @@ def setup_run_environment(self, env): # get the perl tools in the path env.prepend_path('PATH', self.prefix.lib) - def edit(self, spec, prefix): + @run_before('cmake') + def edit(self): # perl tools end up in a silly lib subdirectory, fixing that filter_file(r'set\(SUPPORT_LIBDIR lib\/breakdancer-max\$ \ \{EXE_VERSION_SUFFIX\}\)', diff --git a/var/spack/repos/builtin/packages/conduit/package.py b/var/spack/repos/builtin/packages/conduit/package.py index 42d97be84e..7fc5def687 100644 --- a/var/spack/repos/builtin/packages/conduit/package.py +++ b/var/spack/repos/builtin/packages/conduit/package.py @@ -176,11 +176,6 @@ class Conduit(CMakePackage): patch('https://github.com/LLNL/conduit/pull/773.patch?full_index=1', when='@:0.7.2', sha256='784d74942a63acf698c31b39848b46b4b755bf06faa6aa6fb81be61783ec0c30') - ################################### - # build phases used by this package - ################################### - phases = ['hostconfig', 'cmake', 'build', 'install'] - def setup_build_environment(self, env): env.set('CTEST_OUTPUT_ON_FAILURE', '1') # conduit uses a <=1.10 api version before 0.8 @@ -274,7 +269,8 @@ def _get_host_config_path(self, spec): host_config_path)) return host_config_path - def hostconfig(self, spec, prefix): + @run_before('cmake') + def hostconfig(self): """ This method creates a 'host-config' file that specifies all of the options used to configure and build conduit. @@ -282,6 +278,7 @@ def hostconfig(self, spec, prefix): For more details about 'host-config' files see: http://software.llnl.gov/conduit/building.html """ + spec = self.spec if not os.path.isdir(spec.prefix): os.mkdir(spec.prefix) diff --git a/var/spack/repos/builtin/packages/dnstracer/package.py b/var/spack/repos/builtin/packages/dnstracer/package.py index ef9990d4c9..5943c868e5 100644 --- a/var/spack/repos/builtin/packages/dnstracer/package.py +++ b/var/spack/repos/builtin/packages/dnstracer/package.py @@ -6,24 +6,17 @@ from spack import * -class Dnstracer(Package): +class Dnstracer(MakefilePackage): """Dnstracer determines where a given Domain Name Server gets its information from, and follows the chain of DNS servers back to - the servers which know the data.""" + the servers which know the data. + """ homepage = "https://github.com/Orc/dnstracer" - git = "https://github.com/Orc/dnstracer.git" + git = "https://github.com/Orc/dnstracer.git" version('master', branch='master') - phases = ['configure', 'build', 'install'] - - def configure(self, spec, prefix): + def edit(self, spec, prefix): configure = Executable('./configure.sh') configure('--prefix={0}'.format(prefix)) - - def build(self, spec, prefix): - make() - - def install(self, spec, prefix): - make('install') diff --git a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py index 1b75adfabc..82e4bfd2a5 100644 --- a/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py +++ b/var/spack/repos/builtin/packages/eclipse-gcj-parser/package.py @@ -25,8 +25,6 @@ class EclipseGcjParser(Package): version('4.8', sha256='98fd128f1d374d9e42fd9d4836bdd249c6d511ebc6c0df17fbc1b9df96c3d781', expand=False) - phases = ('build', 'install') - @property def gcj(self): """Obtain Executable for the gcj included with this GCC, @@ -40,12 +38,9 @@ def gcj(self): return Executable(join_path(dir, gcc.replace('gcc', 'gcj'))) - def build(self, spec, prefix): - self.gcj( - '-o', 'ecj1', - '--main=org.eclipse.jdt.internal.compiler.batch.GCCMain', - 'ecj-4.8.jar') - def install(self, spec, prefix): + self.gcj('-o', 'ecj1', + '--main=org.eclipse.jdt.internal.compiler.batch.GCCMain', + 'ecj-4.8.jar') mkdirp(spec.prefix.bin) install('ecj1', spec.prefix.bin) diff --git a/var/spack/repos/builtin/packages/eem/package.py b/var/spack/repos/builtin/packages/eem/package.py index 9b6e9c1bb3..16d16ebc13 100644 --- a/var/spack/repos/builtin/packages/eem/package.py +++ b/var/spack/repos/builtin/packages/eem/package.py @@ -17,8 +17,6 @@ class Eem(MakefilePackage): variant('K', default=False, description='Build for K computer') - phases = ['edit', 'install'] - depends_on('mpi') build_directory = 'src' diff --git a/var/spack/repos/builtin/packages/fasttree/package.py b/var/spack/repos/builtin/packages/fasttree/package.py index 419ad9da9c..75ff08847a 100644 --- a/var/spack/repos/builtin/packages/fasttree/package.py +++ b/var/spack/repos/builtin/packages/fasttree/package.py @@ -8,24 +8,19 @@ class Fasttree(Package): """FastTree infers approximately-maximum-likelihood phylogenetic - trees from alignments of nucleotide or protein sequences. - FastTree can handle alignments with up to a million of sequences - in a reasonable amount of time and memory.""" + trees from alignments of nucleotide or protein sequences. + """ homepage = "http://www.microbesonline.org/fasttree" - url = "http://www.microbesonline.org/fasttree/FastTree-2.1.10.c" + url = "http://www.microbesonline.org/fasttree/FastTree-2.1.10.c" version('2.1.10', sha256='54cb89fc1728a974a59eae7a7ee6309cdd3cddda9a4c55b700a71219fc6e926d', expand=False, url='http://www.microbesonline.org/fasttree/FastTree-2.1.10.c') - phases = ['build', 'install'] - - def build(self, spec, prefix): + def install(self, spec, prefix): cc = Executable(spack_cc) cc('-O3', self.compiler.openmp_flag, '-DOPENMP', '-finline-functions', '-funroll-loops', '-Wall', '-oFastTreeMP', 'FastTree-' + format(spec.version.dotted) + '.c', '-lm') - - def install(self, spec, prefix): mkdir(prefix.bin) install('FastTreeMP', prefix.bin) diff --git a/var/spack/repos/builtin/packages/fleur/package.py b/var/spack/repos/builtin/packages/fleur/package.py index fca4aaf664..5e0e78cbc9 100644 --- a/var/spack/repos/builtin/packages/fleur/package.py +++ b/var/spack/repos/builtin/packages/fleur/package.py @@ -53,8 +53,6 @@ class Fleur(Package): depends_on('elpa~openmp', when='+elpa~openmp') depends_on('elpa+openmp', when='+elpa+openmp') - phases = ['configure', 'build', 'install'] - conflicts('%intel@:16.0.4', msg='ifort version <16.0 will most probably not work correctly') conflicts('%gcc@:6.3.0', @@ -81,7 +79,8 @@ def setup_build_environment(self, env): env.set('FC', spec['mpi'].mpifc, force=True) env.set('CXX', spec['mpi'].mpicxx, force=True) - def configure(self, spec, prefix): + @run_before('install') + def configure(self): spec = self.spec sh = which('bash') @@ -162,18 +161,12 @@ def configure(self, spec, prefix): args.append(" ".join(options["-libdir"])) args.append("-includedir") args.append(" ".join(options["-includedir"])) - # args.append("-flags") - # args.append(" ".join(options["-flags"])) sh('configure.sh', *args) - def build(self, spec, prefix): - with working_dir('build'): - make() - def install(self, spec, prefix): with working_dir('build'): - # copy bin + make() mkdirp(prefix.bin) if '+mpi' in spec: install('fleur_MPI', prefix.bin) diff --git a/var/spack/repos/builtin/packages/fpm/package.py b/var/spack/repos/builtin/packages/fpm/package.py index 649eb5ad8d..e0ea1c5403 100644 --- a/var/spack/repos/builtin/packages/fpm/package.py +++ b/var/spack/repos/builtin/packages/fpm/package.py @@ -19,7 +19,6 @@ class Fpm(Package): url = "https://github.com/fortran-lang/fpm/releases/download/v0.4.0/fpm-0.4.0.zip" maintainers = ["awvwgk"] - phases = ["install"] version("0.5.0", "e4a06956d2300f9aa1d06bd3323670480e946549617582e32684ded6921a921e") version("0.4.0", "cd9b80b7f40d9cf357ca8d5d4fe289fd32dfccb729bad7d2a68f245e4cdd0045") diff --git a/var/spack/repos/builtin/packages/genie/package.py b/var/spack/repos/builtin/packages/genie/package.py index f249726c84..af660362f1 100644 --- a/var/spack/repos/builtin/packages/genie/package.py +++ b/var/spack/repos/builtin/packages/genie/package.py @@ -12,7 +12,7 @@ from spack.version import Version -class Genie(Package): # Genie doesn"t use Autotools +class Genie(Package): """Genie is a neutrino Monte Carlo Generator.""" homepage = "https://www.genie-mc.org" @@ -22,7 +22,7 @@ class Genie(Package): # Genie doesn"t use Autotools tags = ["neutrino", "hep"] maintainers = [ - # maintainer of this recipe, not affliated with the GENIE collaboration + # maintainer of this recipe, not affiliated with the GENIE collaboration "davehadley", ] @@ -77,8 +77,6 @@ class Genie(Package): # Genie doesn"t use Autotools variant("vleextension", default=False, description="Enable GENIE very low energy (1 MeV - 100 MeV) extension") - phases = ["configure", "build", "install"] - def url_for_version(self, version): url = "https://github.com/GENIE-MC/Generator/archive/R-{0}.tar.gz" if version >= Version(3): @@ -94,16 +92,11 @@ def setup_run_environment(self, env): env.set("GENIE", self.prefix) return super(Genie, self).setup_run_environment(env) - def configure(self, spec, prefix): + def install(self, spec, prefix): configure = Executable("./configure") args = self._configure_args(spec, prefix) configure(*args) - - def build(self, spec, prefix): - # parallel build is not supported on GENIE 2 self._make(parallel=spec.satisfies("@3:")) - - def install(self, spec, prefix): # GENIE make install does not support parallel jobs self._make("install", parallel=False) # GENIE requires these files to be present at runtime, but doesn"t install them diff --git a/var/spack/repos/builtin/packages/gluegen/package.py b/var/spack/repos/builtin/packages/gluegen/package.py index b4dcf8cf74..d6f1eeb942 100644 --- a/var/spack/repos/builtin/packages/gluegen/package.py +++ b/var/spack/repos/builtin/packages/gluegen/package.py @@ -34,11 +34,9 @@ class Gluegen(Package): # patch for build with Fujitsu Compiler patch('cpptasks.fj.patch', working_dir='ant-cpptasks', when='%fj') - phases = ['build', 'install'] - compiler_mapping = {'gcc': 'gcc', 'clang': 'clang', 'fj': 'fcc'} - def build(self, spec, prefix): + def install(self, spec, prefix): ant = spec['ant'].command cname = spec.compiler.name compiler = self.compiler_mapping.get(cname, 'gcc') @@ -53,7 +51,6 @@ def build(self, spec, prefix): with working_dir('make'): ant(*antarg) - def install(self, spec, prefix): install_tree('build', prefix.build) install(join_path('ant-optional', 'optional-1.5.4.jar'), prefix.build) install_tree('make', prefix.make) diff --git a/var/spack/repos/builtin/packages/gnat/package.py b/var/spack/repos/builtin/packages/gnat/package.py index c677ab5ef7..72fb2a2be7 100644 --- a/var/spack/repos/builtin/packages/gnat/package.py +++ b/var/spack/repos/builtin/packages/gnat/package.py @@ -6,7 +6,7 @@ from spack import * -class Gnat(MakefilePackage): +class Gnat(Package): """The GNAT Ada compiler. Ada is a modern programming language designed for large, long-lived applications - and embedded systems in particular - where reliability and efficiency are essential.""" @@ -26,7 +26,5 @@ class Gnat(MakefilePackage): version('2016', sha256='d083c01e054d0aeda7c67967306cfa5a8df12268664f9098a2d9b331aa24dfe7', extension='tar.gz', url="http://mirrors.cdn.adacore.com/art/5739cefdc7a447658e0b016b") - phases = ['install'] - def install(self, spec, prefix): make('ins-all', 'prefix={0}'.format(prefix)) diff --git a/var/spack/repos/builtin/packages/hpgmg/package.py b/var/spack/repos/builtin/packages/hpgmg/package.py index 25452d9c42..043b4c47e9 100644 --- a/var/spack/repos/builtin/packages/hpgmg/package.py +++ b/var/spack/repos/builtin/packages/hpgmg/package.py @@ -6,14 +6,15 @@ from spack import * -class Hpgmg(Package): +class Hpgmg(MakefilePackage): """HPGMG implements full multigrid (FMG) algorithms using finite-volume and - finite-element methods. Different algorithmic variants adjust the - arithmetic intensity and architectural properties that are tested. These - FMG methods converge up to discretization error in one F-cycle, thus may - be considered direct solvers. An F-cycle visits the finest level a total - of two times, the first coarsening (8x smaller) 4 times, the second - coarsening 6 times, etc. + finite-element methods. + + Different algorithmic variants adjust the arithmetic intensity and architectural + properties that are tested. These FMG methods converge up to discretization + error in one F-cycle, thus may be considered direct solvers. An F-cycle visits + the finest level a total of two times, the first coarsening (8x smaller) 4 times, + the second coarsening 6 times, etc. """ homepage = "https://bitbucket.org/hpgmg/hpgmg" @@ -27,11 +28,9 @@ class Hpgmg(Package): version('a0a5510df23b', sha256='b9c50f25e541428d4735fb07344d1d0ed9fc821bdde918d8e0defa78c0d9b4f9') version('0.3', sha256='12a65da216fec91daea78594ae4b5a069c8f1a700f1ba21eed9f45a79a68c793') - variant( - 'fe', default=False, description='Build finite element solver') - variant( - 'fv', default='mpi', values=('serial', 'mpi', 'none'), - description='Build finite volume solver with or without MPI support') + variant('fe', default=False, description='Build finite element solver') + variant('fv', default='mpi', values=('serial', 'mpi', 'none'), + description='Build finite volume solver with or without MPI support') variant('cuda', default=False, description='Build with CUDA') variant('debug', default=False, description='Build in debug mode') @@ -41,8 +40,6 @@ class Hpgmg(Package): depends_on('cuda', when='+cuda') depends_on('python', type='build') - phases = ['configure', 'build', 'install'] - def configure_args(self): args = [] if '+fe' in self.spec and not ('@0.3' in self.spec): @@ -75,7 +72,7 @@ def configure_args(self): return args - def configure(self, spec, prefix): + def edit(self, spec, prefix): python('configure', *self.configure_args()) def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/karma/package.py b/var/spack/repos/builtin/packages/karma/package.py index c0669424ee..d655090ffd 100644 --- a/var/spack/repos/builtin/packages/karma/package.py +++ b/var/spack/repos/builtin/packages/karma/package.py @@ -21,8 +21,6 @@ class Karma(Package): depends_on('libx11', type=('build', 'run')) depends_on('libxaw', type=('build', 'run')) - phases = ['install'] - resource( name='karma-linux', url='ftp://ftp.atnf.csiro.au/pub/software/karma/karma-1.7.25-amd64_Linux_libc6.3.tar.bz2', diff --git a/var/spack/repos/builtin/packages/libc/package.py b/var/spack/repos/builtin/packages/libc/package.py index 3e976a3f7a..7fb511d5b2 100644 --- a/var/spack/repos/builtin/packages/libc/package.py +++ b/var/spack/repos/builtin/packages/libc/package.py @@ -6,12 +6,10 @@ from llnl.util.filesystem import LibraryList -class Libc(Package): +class Libc(BundlePackage): """Dummy package to provide interfaces available in libc.""" homepage = "https://en.wikipedia.org/wiki/C_standard_library" - has_code = False - phases = [] version('1.0') # Dummy