diff options
author | sknigh <sknigh@sandia.gov> | 2018-12-05 11:15:45 -0800 |
---|---|---|
committer | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2018-12-05 20:15:45 +0100 |
commit | 060d1944d4d2611191fbdbabbeacde48bb47c0f8 (patch) | |
tree | 781193b11d989686add38a542860de9a2f99f273 | |
parent | 5434a2507692bb34d89b677905e98482dcfd645b (diff) | |
download | spack-060d1944d4d2611191fbdbabbeacde48bb47c0f8.tar.gz spack-060d1944d4d2611191fbdbabbeacde48bb47c0f8.tar.bz2 spack-060d1944d4d2611191fbdbabbeacde48bb47c0f8.tar.xz spack-060d1944d4d2611191fbdbabbeacde48bb47c0f8.zip |
Rewrite Rust package (#9998)
-rw-r--r-- | var/spack/repos/builtin/packages/rust/package.py | 66 |
1 files changed, 26 insertions, 40 deletions
diff --git a/var/spack/repos/builtin/packages/rust/package.py b/var/spack/repos/builtin/packages/rust/package.py index 8c86ae4696..aa9f103400 100644 --- a/var/spack/repos/builtin/packages/rust/package.py +++ b/var/spack/repos/builtin/packages/rust/package.py @@ -4,12 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack import * -import os - - -def get_submodules(): - git = which('git') - git('submodule', 'update', '--init', '--recursive') class Rust(Package): @@ -18,12 +12,7 @@ class Rust(Package): homepage = "http://www.rust-lang.org" git = "https://github.com/rust-lang/rust.git" - version('1.8.0', tag='1.8.0') - - resource(name='cargo', - git="https://github.com/rust-lang/cargo.git", - tag='0.10.0', - destination='cargo') + version('1.30.1', tag='1.30.1') extendable = True @@ -32,39 +21,36 @@ class Rust(Package): depends_on("curl") depends_on("git") depends_on("cmake") + depends_on("binutils") depends_on("python@:2.8") # Cargo depends_on("openssl") - def install(self, spec, prefix): - configure('--prefix=%s' % prefix, - '--llvm-root=' + spec['llvm'].prefix) + phases = ['configure', 'install'] + + def configure(self, spec, prefix): + configure_args = [ + '--prefix=%s' % prefix, + '--llvm-root=' + spec['llvm'].prefix, + # Workaround for "FileCheck does not exist" error + '--disable-codegen-tests', + # Includes Cargo in the build + # https://github.com/rust-lang/cargo/issues/3772#issuecomment-283109482 + '--enable-extended', + # Prevent build from writing bash completion into system path + '--sysconfdir=%s' % join_path(prefix, 'etc/') + ] + + configure(*configure_args) + + # Build system defaults to searching in the same path as Spack's + # compiler wrappers which causes the build to fail + filter_file( + '#ar = "ar"', + 'ar = "%s"' % join_path(spec['binutils'].prefix.bin, 'ar'), + 'config.toml') + def install(self, spec, prefix): make() make("install") - - # Install cargo, rust package manager - with working_dir(os.path.join('cargo', 'cargo')): - get_submodules() - configure('--prefix=' + prefix, - '--local-rust-root=' + prefix) - - make() - make("install") - - def setup_dependent_package(self, module, dependent_spec): - """ - Called before python modules' install() methods. - - In most cases, extensions will only need to have one or two lines:: - - cargo('build') - cargo('install', '--root', prefix) - - or - - cargo('install', '--root', prefix) - """ - # Rust extension builds can have a global cargo executable function - module.cargo = Executable(join_path(self.spec.prefix.bin, 'cargo')) |