diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/racket/package.py')
-rw-r--r-- | var/spack/repos/builtin/packages/racket/package.py | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/var/spack/repos/builtin/packages/racket/package.py b/var/spack/repos/builtin/packages/racket/package.py index cc9e1ba25b..7031e234ea 100644 --- a/var/spack/repos/builtin/packages/racket/package.py +++ b/var/spack/repos/builtin/packages/racket/package.py @@ -2,13 +2,11 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - -import sys - +import spack.build_systems.makefile from spack.package import * -class Racket(Package): +class Racket(MakefilePackage): """The Racket programming language.""" homepage = "https://www.racket-lang.org" @@ -21,13 +19,6 @@ class Racket(Package): depends_on("patchutils") depends_on("libtool", type=("build")) - phases = ["configure", "build", "install"] - - def url_for_version(self, version): - return "https://mirror.racket-lang.org/installers/{0}/racket-minimal-{0}-src-builtpkgs.tgz".format( - version - ) - variant("cs", default=True, description="Build Racket CS (new ChezScheme VM)") variant("bc", default=False, description="Build Racket BC (old MZScheme VM)") variant("shared", default=True, description="Enable shared") @@ -36,12 +27,22 @@ class Racket(Package): parallel = False extendable = True + def url_for_version(self, version): + return "https://mirror.racket-lang.org/installers/{0}/racket-minimal-{0}-src-builtpkgs.tgz".format( + version + ) + + +class MakefileBuilder(spack.build_systems.makefile.MakefileBuilder): + + build_directory = "src" + def toggle(self, spec, variant): toggle_text = "enable" if spec.variants[variant].value else "disable" return "--{0}-{1}".format(toggle_text, variant) - def configure(self, spec, prefix): - with working_dir("src"): + def edit(self, pkg, spec, prefix): + with working_dir(self.build_directory): configure = Executable("./configure") configure_args = [ self.toggle(spec, "cs"), @@ -49,7 +50,7 @@ class Racket(Package): self.toggle(spec, "jit"), ] toggle_shared = self.toggle(spec, "shared") - if sys.platform == "darwin": + if spec.satisfies("platform=darwin"): configure_args += ["--enable-macprefix"] if "+xonx" in spec: configure_args += ["--enable-xonx", toggle_shared] @@ -58,16 +59,20 @@ class Racket(Package): configure_args += ["--prefix={0}".format(prefix)] configure(*configure_args) - def build(self, spec, prefix): - with working_dir("src"): - if spec.variants["bc"].value: - make("bc") - if spec.variants["cs"].value: - make("cs") - - def install(self, spec, prefix): - with working_dir("src"): - if spec.variants["bc"].value: - make("install-bc") - if spec.variants["cs"].value: - make("install-cs") + @property + def build_targets(self): + result = [] + if "+bc" in self.spec: + result.append("bc") + if "+cs" in self.spec: + result.append("cs") + return result + + @property + def install_targets(self): + result = [] + if "+bc" in self.spec: + result.append("install-bc") + if "+cs" in self.spec: + result.append("install-cs") + return result |