summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2017-01-17 19:42:45 -0600
committerbecker33 <becker33@llnl.gov>2017-01-17 17:42:45 -0800
commitf0f230d480004161c8f052d2ccf334a4f5ce25f8 (patch)
tree855509ca8cd9666bbe07ee2c65b10abb7c7a1514
parenta040c8c743872329eceb9b7a0550e0c4d8a35331 (diff)
downloadspack-f0f230d480004161c8f052d2ccf334a4f5ce25f8.tar.gz
spack-f0f230d480004161c8f052d2ccf334a4f5ce25f8.tar.bz2
spack-f0f230d480004161c8f052d2ccf334a4f5ce25f8.tar.xz
spack-f0f230d480004161c8f052d2ccf334a4f5ce25f8.zip
Allow spack create to detect packages that need to run autoreconf (#2848)
-rw-r--r--lib/spack/spack/cmd/create.py62
1 files changed, 47 insertions, 15 deletions
diff --git a/lib/spack/spack/cmd/create.py b/lib/spack/spack/cmd/create.py
index 2575229581..19128e3513 100644
--- a/lib/spack/spack/cmd/create.py
+++ b/lib/spack/spack/cmd/create.py
@@ -136,7 +136,8 @@ class PackageTemplate(object):
class AutotoolsPackageTemplate(PackageTemplate):
- """Provides appropriate overrides for Autotools-based packages"""
+ """Provides appropriate overrides for Autotools-based packages
+ that *do* come with a ``configure`` script"""
base_class_name = 'AutotoolsPackage'
@@ -152,6 +153,33 @@ class AutotoolsPackageTemplate(PackageTemplate):
return args"""
+class AutoreconfPackageTemplate(PackageTemplate):
+ """Provides appropriate overrides for Autotools-based packages
+ that *do not* come with a ``configure`` script"""
+
+ base_class_name = 'AutotoolsPackage'
+
+ dependencies = """\
+ depends_on('autoconf', type='build')
+ depends_on('automake', type='build')
+ depends_on('libtool', type='build')
+ depends_on('m4', type='build')
+
+ # FIXME: Add additional dependencies if required.
+ # depends_on('foo')"""
+
+ body = """\
+ def autoreconf(self, spec, prefix):
+ # FIXME: Modify the autoreconf method as necessary
+ autoreconf('--install', '--verbose', '--force')
+
+ def configure_args(self):
+ # FIXME: Add arguments other than --prefix
+ # FIXME: If not needed delete this function
+ args = []
+ return args"""
+
+
class CMakePackageTemplate(PackageTemplate):
"""Provides appropriate overrides for CMake-based packages"""
@@ -269,14 +297,15 @@ class OctavePackageTemplate(PackageTemplate):
templates = {
- 'autotools': AutotoolsPackageTemplate,
- 'cmake': CMakePackageTemplate,
- 'scons': SconsPackageTemplate,
- 'bazel': BazelPackageTemplate,
- 'python': PythonPackageTemplate,
- 'r': RPackageTemplate,
- 'octave': OctavePackageTemplate,
- 'generic': PackageTemplate
+ 'autotools': AutotoolsPackageTemplate,
+ 'autoreconf': AutoreconfPackageTemplate,
+ 'cmake': CMakePackageTemplate,
+ 'scons': SconsPackageTemplate,
+ 'bazel': BazelPackageTemplate,
+ 'python': PythonPackageTemplate,
+ 'r': RPackageTemplate,
+ 'octave': OctavePackageTemplate,
+ 'generic': PackageTemplate
}
@@ -326,12 +355,14 @@ class BuildSystemGuesser:
# uses. If the regular expression matches a file contained in the
# archive, the corresponding build system is assumed.
clues = [
- (r'/configure$', 'autotools'),
- (r'/CMakeLists.txt$', 'cmake'),
- (r'/SConstruct$', 'scons'),
- (r'/setup.py$', 'python'),
- (r'/NAMESPACE$', 'r'),
- (r'/WORKSPACE$', 'bazel')
+ (r'/configure$', 'autotools'),
+ (r'/configure.(in|ac)$', 'autoreconf'),
+ (r'/Makefile.am$', 'autoreconf'),
+ (r'/CMakeLists.txt$', 'cmake'),
+ (r'/SConstruct$', 'scons'),
+ (r'/setup.py$', 'python'),
+ (r'/NAMESPACE$', 'r'),
+ (r'/WORKSPACE$', 'bazel')
]
# Peek inside the compressed file.
@@ -356,6 +387,7 @@ class BuildSystemGuesser:
for pattern, bs in clues:
if any(re.search(pattern, l) for l in lines):
build_system = bs
+ break
self.build_system = build_system