Skip to content

Commit

Permalink
Allow configure to be located in different directory
Browse files Browse the repository at this point in the history
  • Loading branch information
adamjstewart committed Jan 8, 2017
1 parent 9c239ae commit 782d8b9
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 29 deletions.
20 changes: 15 additions & 5 deletions lib/spack/spack/build_systems/autotools.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
from subprocess import check_call

import llnl.util.tty as tty
from llnl.util.filesystem import working_dir
from spack.util.executable import Executable
from llnl.util.filesystem import working_dir, join_path
from spack.package import PackageBase


Expand Down Expand Up @@ -125,6 +126,10 @@ def do_patch_config_guess(self):

return False

def root_configure_dir(self):
"""Directory containing configure script"""
return self.stage.source_path

def build_directory(self):
"""Override to provide another place to build the package"""
return self.stage.source_path
Expand All @@ -145,9 +150,10 @@ def autoreconf(self, spec, prefix):
def is_configure_or_die(self):
"""Checks the presence of a ``configure`` file after the
autoreconf phase"""
if not os.path.exists('configure'):
raise RuntimeError(
'configure script not found in {0}'.format(os.getcwd()))
with working_dir(self.root_configure_dir()):
if not os.path.exists('configure'):
raise RuntimeError(
'configure script not found in {0}'.format(os.getcwd()))

def configure_args(self):
"""Method to be overridden. Should return an iterable containing
Expand All @@ -160,8 +166,12 @@ def configure(self, spec, prefix):
and an appropriately set prefix
"""
options = ['--prefix={0}'.format(prefix)] + self.configure_args()

configure_path = join_path(self.root_configure_dir(), 'configure')
configure = Executable(os.path.abspath(configure_path))

with working_dir(self.build_directory(), create=True):
inspect.getmodule(self).configure(*options)
configure(*options)

def build(self, spec, prefix):
"""Make the build targets"""
Expand Down
17 changes: 10 additions & 7 deletions var/spack/repos/builtin/packages/tcl/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from spack import *


class Tcl(Package):
class Tcl(AutotoolsPackage):
"""Tcl (Tool Command Language) is a very powerful but easy to
learn dynamic programming language, suitable for a very wide
range of uses, including web and desktop applications,
Expand All @@ -52,10 +52,13 @@ def setup_environment(self, spack_env, env):
env.set('TCL_LIBRARY', join_path(self.prefix.lib, 'tcl{0}'.format(
self.spec.version.up_to(2))))

def install(self, spec, prefix):
with working_dir('unix'):
configure("--prefix={0}".format(prefix))
make()
make("install")
with working_dir(prefix.bin):
def root_configure_dir(self):
return 'unix'

def build_directory(self):
return 'unix'

@AutotoolsPackage.sanity_check('install')
def symlink_tclsh(self):
with working_dir(self.prefix.bin):
symlink('tclsh{0}'.format(self.version.up_to(2)), 'tclsh')
21 changes: 12 additions & 9 deletions var/spack/repos/builtin/packages/tk/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from spack import *


class Tk(Package):
class Tk(AutotoolsPackage):
"""Tk is a graphical user interface toolkit that takes developing
desktop applications to a higher level than conventional
approaches. Tk is the standard GUI not only for Tcl, but for
Expand All @@ -46,15 +46,18 @@ def url_for_version(self, version):
base_url = "http://prdownloads.sourceforge.net/tcl"
return "{0}/tk{1}-src.tar.gz".format(base_url, version)

def setup_environment(self, spack_env, env):
def setup_environment(self, spack_env, run_env):
# When using Tkinter from within spack provided python+tk, python
# will not be able to find Tcl/Tk unless TK_LIBRARY is set.
env.set('TK_LIBRARY', join_path(self.prefix.lib, 'tk{0}'.format(
run_env.set('TK_LIBRARY', join_path(self.prefix.lib, 'tk{0}'.format(
self.spec.version.up_to(2))))

def install(self, spec, prefix):
with working_dir('unix'):
configure("--prefix={0}".format(prefix),
"--with-tcl={0}".format(spec['tcl'].prefix.lib))
make()
make("install")
def root_configure_dir(self):
return 'unix'

def build_directory(self):
return 'unix'

def configure_args(self):
spec = self.spec
return ['--with-tcl={0}'.format(spec['tcl'].prefix.lib)]
12 changes: 4 additions & 8 deletions var/spack/repos/builtin/packages/zlib/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,13 @@ class Zlib(AutotoolsPackage):

version('1.2.10', 'd9794246f853d15ce0fcbf79b9a3cf13')
# author had this to say about 1.2.9....
# Due to the bug fixes, any installations of 1.2.9 should be immediately
# Due to the bug fixes, any installations of 1.2.9 should be immediately
# replaced with 1.2.10.
version('1.2.8', '44d667c142d7cda120332623eab69f40')

variant('pic', default=True,
description='Produce position-independent code (for shared libs)')

def configure(self, spec, prefix):

if '+pic' in spec:
environ['CFLAGS'] = self.compiler.pic_flag

config_args = ['--prefix', prefix]
configure(*config_args)
def setup_environment(self, spack_env, run_env):
if '+pic' in self.spec:
spack_env.set('CFLAGS', self.compiler.pic_flag)

0 comments on commit 782d8b9

Please sign in to comment.