move recipes/{rust,cargo} to recipes-devtools
This better matches where upstream puts compilers and development utilities.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
SUMMARY = "Cargo downloads your Rust project's dependencies and builds your project"
|
||||
HOMEPAGE = "http://crates.io"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
PR = "r2"
|
||||
|
||||
DEPENDS += "rust-native"
|
||||
|
||||
LIC_FILES_CHKSUM ="\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
file://LICENSE-THIRD-PARTY;md5=afbb7ae0aa70c8e437a007314eae5f3b \
|
||||
"
|
||||
|
||||
SRC_URI = " \
|
||||
https://static.rust-lang.org/cargo-dist/2015-04-02/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "3d62194d02a9088cd8aae379e9498134"
|
||||
SRC_URI[sha256sum] = "16b6338ba2942989693984ba4dbd057c2801e8805e6da8fa7b781b00e722d117"
|
||||
|
||||
S = "${WORKDIR}/cargo-nightly-x86_64-unknown-linux-gnu/"
|
||||
|
||||
inherit native
|
||||
|
||||
do_install() {
|
||||
install -d ${D}
|
||||
sh ${S}/install.sh --destdir=${D}${STAGING_DIR_NATIVE} --prefix=
|
||||
|
||||
# Remove files provided by rust
|
||||
rm -f ${D}${STAGING_DIR_NATIVE}/lib/rustlib/uninstall.sh
|
||||
rm -f ${D}${STAGING_DIR_NATIVE}/lib/rustlib/install.log
|
||||
rm -f ${D}${STAGING_DIR_NATIVE}/lib/rustlib/components
|
||||
rm -f ${D}${STAGING_DIR_NATIVE}/lib/rustlib/rust-installer-version
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
INHIBIT_CARGO_DEP = "1"
|
||||
|
||||
inherit cargo
|
||||
inherit patch
|
||||
inherit rust-installer
|
||||
|
||||
SUMMARY = "Cargo downloads your Rust project's dependencies and builds your project"
|
||||
HOMEPAGE = "http://crates.io"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
|
||||
|
||||
SRC_URI = "\
|
||||
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
|
||||
git://github.com/rust-lang/rust-installer.git;protocol=https;name=rust-installer;destsuffix=git/src/rust-installer \
|
||||
http://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${CARGO_SNAPSHOT} \
|
||||
"
|
||||
|
||||
LIC_FILES_CHKSUM ="\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
file://LICENSE-THIRD-PARTY;md5=afbb7ae0aa70c8e437a007314eae5f3b \
|
||||
"
|
||||
SRCREV_FORMAT = "cargo_rust-installer"
|
||||
PV .= "+git${SRCPV}"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${S}"
|
||||
|
||||
PACKAGECONFIG ??= ""
|
||||
|
||||
# Note: this does not appear to work very well due to our use of bitbake triples
|
||||
# & rust's use of cooked triples
|
||||
PACKAGECONFIG[rust-snapshot] = "--local-rust-root=${B}/rustc"
|
||||
|
||||
do_configure () {
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'rust-snapshot', '${S}/.travis.install.deps.sh', ':', d)}
|
||||
|
||||
"${S}/configure" \
|
||||
"--prefix=${prefix}" \
|
||||
"--build=${BUILD_SYS}" \
|
||||
"--host=${HOST_SYS}" \
|
||||
"--target=${TARGET_SYS}" \
|
||||
"--localstatedir=${localstatedir}" \
|
||||
"--sysconfdir=${sysconfdir}" \
|
||||
"--datadir=${datadir}" \
|
||||
"--infodir=${infodir}" \
|
||||
"--mandir=${mandir}" \
|
||||
"--libdir=${libdir}" \
|
||||
"--disable-verify-install" \
|
||||
${EXTRA_OECONF} \
|
||||
|| die "Could not configure cargo"
|
||||
|
||||
# cargo downloads a cargo snapshot to build itself using cargo, we need
|
||||
# to override it's arch info.
|
||||
cargo_do_configure
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
oe_cargo_fix_env
|
||||
|
||||
rm -rf target/snapshot
|
||||
mkdir -p target
|
||||
cp -R ${WORKDIR}/$(basename ${CARGO_SNAPSHOT} .tar.gz) target/snapshot
|
||||
|
||||
oe_runmake ARGS="--verbose"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake DESTDIR="${D}" install
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
# 2015-06-29
|
||||
SRCREV_cargo = "339a103fa71701541229316a568fca12cf07fc8d"
|
||||
SRCREV_rust-installer = "8e4f8ea581502a2edc8177a040300e05ff7f91e3"
|
||||
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += " \
|
||||
git://github.com/carllerche/curl-rust.git;protocol=https;destsuffix=curl-rust;name=curl-rust \
|
||||
file://curl-rust/0001-curl-sys-avoid-explicitly-linking-in-openssl.-If-it-.patch;patchdir=../curl-rust \
|
||||
file://curl-rust/0002-remove-per-triple-deps-on-openssl-sys.patch;patchdir=../curl-rust \
|
||||
\
|
||||
git://github.com/alexcrichton/ssh2-rs.git;protocol=https;name=ssh2-rs;destsuffix=ssh2-rs \
|
||||
file://ssh2-rs/0001-Unconditionally-depend-on-openssl-sys.patch;patchdir=../ssh2-rs \
|
||||
\
|
||||
git://github.com/alexcrichton/git2-rs.git;protocol=https;name=git2-rs;destsuffix=git2-rs \
|
||||
file://git2-rs/0001-Add-generic-openssl-sys-dep.patch;patchdir=../git2-rs \
|
||||
"
|
||||
|
||||
# 0.2.10 / -sys 0.1.24
|
||||
SRCREV_curl-rust = "9fbf39fa8765e777d110ad18a2a2a3ea42dcb717"
|
||||
|
||||
# 0.2.8 / -sys 0.1.25
|
||||
SRCREV_ssh2-rs = "afc39c6e7236b87d7ebde21ee4d4743d9437b85f"
|
||||
|
||||
# 0.2.11 / -sys 0.2.14
|
||||
SRCREV_git2-rs = "3a7a990607a766fa65a40b920d70c8289691d2f8"
|
||||
|
||||
SRCREV_FORMAT .= "_curl-rust_curl_ssh2-rs_git2-rs"
|
||||
EXTRA_OECARGO_PATHS = "\
|
||||
${WORKDIR}/curl-rust \
|
||||
${WORKDIR}/ssh2-rs \
|
||||
${WORKDIR}/git2-rs \
|
||||
"
|
||||
|
||||
CARGO_SNAPSHOT = "2015-04-02/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz"
|
||||
SRC_URI[md5sum] = "3d62194d02a9088cd8aae379e9498134"
|
||||
SRC_URI[sha256sum] = "16b6338ba2942989693984ba4dbd057c2801e8805e6da8fa7b781b00e722d117"
|
||||
|
||||
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
|
||||
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
# FIXME: we don't actually use these, and shouldn't need to fetch it, but not having it results in:
|
||||
## target/snapshot/bin/cargo build --target x86_64-linux --verbose
|
||||
## Failed to resolve path '/home/cody/obj/y/tmp/work/x86_64-linux/cargo-native/git+gitAUTOINC+0b84923203_9181ea8f4e_8baa8ccb39-r0/curl-rust/curl-sys/curl/.git': No such file or directory
|
||||
|
||||
SRC_URI += "\
|
||||
git://github.com/alexcrichton/curl.git;protocol=https;destsuffix=curl-rust/curl-sys/curl;name=curl;branch=configure \
|
||||
git://github.com/libgit2/libgit2.git;protocol=https;destsuffix=git2-rs/libgit2-sys/libgit2;name=libgit2 \
|
||||
"
|
||||
SRCREV_curl = "9a300aa13e5035a795396e429aa861229424c9dc"
|
||||
SRCREV_libgit2 = "47f37400253210f483d84fb9c2ecf44fb5986849"
|
||||
@@ -0,0 +1,906 @@
|
||||
From d122d57536df9fbfcdfda08b2918dc6e0c6209c0 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Paseltiner <apaseltiner@gmail.com>
|
||||
Date: Thu, 12 Feb 2015 23:10:07 -0500
|
||||
Subject: [PATCH] update Rust
|
||||
|
||||
---
|
||||
Cargo.lock | 32 ++++++++++++------------
|
||||
src/bin/build.rs | 4 +--
|
||||
src/bin/cargo.rs | 2 +-
|
||||
src/bin/clean.rs | 4 +--
|
||||
src/bin/generate_lockfile.rs | 4 +--
|
||||
src/bin/new.rs | 4 +--
|
||||
src/bin/update.rs | 4 +--
|
||||
src/bin/verify_project.rs | 4 +--
|
||||
src/bin/version.rs | 4 +--
|
||||
src/cargo/lib.rs | 2 +-
|
||||
src/cargo/ops/cargo_new.rs | 4 +--
|
||||
src/cargo/ops/cargo_rustc/engine.rs | 2 +-
|
||||
src/cargo/ops/registry.rs | 4 +--
|
||||
src/cargo/sources/git/utils.rs | 3 ++-
|
||||
src/cargo/util/config.rs | 2 +-
|
||||
src/cargo/util/hex.rs | 5 ++--
|
||||
src/cargo/util/profile.rs | 2 +-
|
||||
src/rustversion.txt | 2 +-
|
||||
tests/support/mod.rs | 2 +-
|
||||
tests/test_cargo.rs | 2 +-
|
||||
tests/test_cargo_compile.rs | 10 ++++----
|
||||
tests/test_cargo_compile_custom_build.rs | 42 ++++++++++++++++----------------
|
||||
tests/test_cargo_compile_git_deps.rs | 24 +++++++++---------
|
||||
tests/test_cargo_compile_plugins.rs | 6 ++---
|
||||
tests/test_cargo_cross_compile.rs | 28 ++++++++++-----------
|
||||
tests/test_cargo_profiles.rs | 6 ++---
|
||||
26 files changed, 103 insertions(+), 105 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 14dd876..629585c 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"advapi32-sys 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"curl 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "docopt 0.6.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "docopt 0.6.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"git2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -18,8 +18,8 @@ dependencies = [
|
||||
"semver 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tar 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "time 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "toml 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "time 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "toml 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@@ -44,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"curl-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -55,13 +55,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
-version = "0.6.36"
|
||||
+version = "0.6.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -97,7 +97,7 @@ version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "libgit2-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "libgit2-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -136,13 +136,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libgit2-sys"
|
||||
-version = "0.1.12"
|
||||
+version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libssh2-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -159,7 +159,7 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -192,12 +192,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
-version = "0.3.3"
|
||||
+version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -207,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
-version = "0.2.0"
|
||||
+version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
@@ -255,7 +255,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -264,7 +264,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
diff --git a/src/bin/build.rs b/src/bin/build.rs
|
||||
index a617f64..0784c04 100644
|
||||
--- a/src/bin/build.rs
|
||||
+++ b/src/bin/build.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops::CompileOptions;
|
||||
use cargo::ops;
|
||||
@@ -47,7 +47,7 @@ the --release flag will use the `release` profile instead.
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-build; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-build; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
diff --git a/src/bin/cargo.rs b/src/bin/cargo.rs
|
||||
index 7bf0a11..53c904d 100644
|
||||
--- a/src/bin/cargo.rs
|
||||
+++ b/src/bin/cargo.rs
|
||||
@@ -245,7 +245,7 @@ fn list_command_directory() -> Vec<Path> {
|
||||
dirs.push(path.join("../lib/cargo"));
|
||||
dirs.push(path);
|
||||
}
|
||||
- if let Some(val) = env::var("PATH") {
|
||||
+ if let Some(val) = env::var_os("PATH") {
|
||||
dirs.extend(env::split_paths(&val));
|
||||
}
|
||||
dirs
|
||||
diff --git a/src/bin/clean.rs b/src/bin/clean.rs
|
||||
index dcc013e..a530b9b 100644
|
||||
--- a/src/bin/clean.rs
|
||||
+++ b/src/bin/clean.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -33,7 +33,7 @@ and its format, see the `cargo help pkgid` command.
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
- debug!("executing; cmd=cargo-clean; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-clean; args={:?}", env::args().collect::<Vec<_>>());
|
||||
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
let opts = ops::CleanOptions {
|
||||
diff --git a/src/bin/generate_lockfile.rs b/src/bin/generate_lockfile.rs
|
||||
index a350ab6..d9777ef 100644
|
||||
--- a/src/bin/generate_lockfile.rs
|
||||
+++ b/src/bin/generate_lockfile.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -23,7 +23,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-generate-lockfile; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-generate-lockfile; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
|
||||
diff --git a/src/bin/new.rs b/src/bin/new.rs
|
||||
index 4126e38..0abff6a 100644
|
||||
--- a/src/bin/new.rs
|
||||
+++ b/src/bin/new.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -28,7 +28,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-new; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-new; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
|
||||
let Options { flag_bin, arg_path, flag_vcs, .. } = options;
|
||||
diff --git a/src/bin/update.rs b/src/bin/update.rs
|
||||
index fa75506..4fdeebf 100644
|
||||
--- a/src/bin/update.rs
|
||||
+++ b/src/bin/update.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -49,7 +49,7 @@ For more information about package id specifications, see `cargo help pkgid`.
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-update; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-update; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
|
||||
diff --git a/src/bin/verify_project.rs b/src/bin/verify_project.rs
|
||||
index 54f8d6e..816c5e9 100644
|
||||
--- a/src/bin/verify_project.rs
|
||||
+++ b/src/bin/verify_project.rs
|
||||
@@ -1,8 +1,8 @@
|
||||
extern crate toml;
|
||||
|
||||
use std::collections::HashMap;
|
||||
+use std::env;
|
||||
use std::old_io::File;
|
||||
-use std::os;
|
||||
|
||||
use cargo::util::{CliResult, Config};
|
||||
|
||||
@@ -47,6 +47,6 @@ pub fn execute(args: Flags, config: &Config) -> CliResult<Option<Error>> {
|
||||
fn fail(reason: &str, value: &str) -> CliResult<Option<Error>>{
|
||||
let mut h = HashMap::new();
|
||||
h.insert(reason.to_string(), value.to_string());
|
||||
- os::set_exit_status(1);
|
||||
+ env::set_exit_status(1);
|
||||
Ok(Some(h))
|
||||
}
|
||||
diff --git a/src/bin/version.rs b/src/bin/version.rs
|
||||
index e1bc011..b5622f2 100644
|
||||
--- a/src/bin/version.rs
|
||||
+++ b/src/bin/version.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo;
|
||||
use cargo::util::{CliResult, Config};
|
||||
@@ -16,7 +16,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(_: Options, _: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-version; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-version; args={:?}", env::args().collect::<Vec<_>>());
|
||||
|
||||
println!("{}", cargo::version());
|
||||
|
||||
diff --git a/src/cargo/lib.rs b/src/cargo/lib.rs
|
||||
index 609e1bd..d5737ef 100644
|
||||
--- a/src/cargo/lib.rs
|
||||
+++ b/src/cargo/lib.rs
|
||||
@@ -95,7 +95,7 @@ fn process<V, F>(mut callback: F)
|
||||
let mut shell = shell(true);
|
||||
process_executed((|| {
|
||||
let config = try!(Config::new(&mut shell));
|
||||
- let args: Vec<_> = try!(env::args().map(|s| {
|
||||
+ let args: Vec<_> = try!(env::args_os().map(|s| {
|
||||
s.into_string().map_err(|s| {
|
||||
human(format!("invalid unicode in argument: {:?}", s))
|
||||
})
|
||||
diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs
|
||||
index 09d8318..ae9d5e5 100644
|
||||
--- a/src/cargo/ops/cargo_new.rs
|
||||
+++ b/src/cargo/ops/cargo_new.rs
|
||||
@@ -134,8 +134,8 @@ fn discover_author() -> CargoResult<(String, Option<String>)> {
|
||||
let git_config = git_config.as_ref();
|
||||
let name = git_config.and_then(|g| g.get_str("user.name").ok())
|
||||
.map(|s| s.to_string())
|
||||
- .or_else(|| env::var_string("USER").ok()) // unix
|
||||
- .or_else(|| env::var_string("USERNAME").ok()); // windows
|
||||
+ .or_else(|| env::var("USER").ok()) // unix
|
||||
+ .or_else(|| env::var("USERNAME").ok()); // windows
|
||||
let name = match name {
|
||||
Some(name) => name,
|
||||
None => {
|
||||
diff --git a/src/cargo/ops/cargo_rustc/engine.rs b/src/cargo/ops/cargo_rustc/engine.rs
|
||||
index 5c6a0ef..9d234f8 100644
|
||||
--- a/src/cargo/ops/cargo_rustc/engine.rs
|
||||
+++ b/src/cargo/ops/cargo_rustc/engine.rs
|
||||
@@ -85,7 +85,7 @@ impl CommandPrototype {
|
||||
|
||||
pub fn get_env(&self, var: &str) -> Option<CString> {
|
||||
self.env.get(var).cloned().or_else(|| {
|
||||
- Some(env::var_string(var).ok().map(|s| CString::from_vec(s.into_bytes())))
|
||||
+ Some(env::var(var).ok().map(|s| CString::from_vec(s.into_bytes())))
|
||||
}).and_then(|val| val)
|
||||
}
|
||||
|
||||
diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs
|
||||
index 2461981..59754f2 100644
|
||||
--- a/src/cargo/ops/registry.rs
|
||||
+++ b/src/cargo/ops/registry.rs
|
||||
@@ -191,7 +191,7 @@ pub fn http_proxy(config: &Config) -> CargoResult<Option<String>> {
|
||||
}
|
||||
Err(..) => {}
|
||||
}
|
||||
- Ok(env::var_string("HTTP_PROXY").ok())
|
||||
+ Ok(env::var("HTTP_PROXY").ok())
|
||||
}
|
||||
|
||||
pub fn http_timeout(config: &Config) -> CargoResult<Option<i64>> {
|
||||
@@ -199,7 +199,7 @@ pub fn http_timeout(config: &Config) -> CargoResult<Option<i64>> {
|
||||
Some((s, _)) => return Ok(Some(s)),
|
||||
None => {}
|
||||
}
|
||||
- Ok(env::var_string("HTTP_TIMEOUT").ok().and_then(|s| s.parse().ok()))
|
||||
+ Ok(env::var("HTTP_TIMEOUT").ok().and_then(|s| s.parse().ok()))
|
||||
}
|
||||
|
||||
pub fn registry_login(config: &Config, token: String) -> CargoResult<()> {
|
||||
diff --git a/src/cargo/sources/git/utils.rs b/src/cargo/sources/git/utils.rs
|
||||
index 898f082..9861ed6 100644
|
||||
--- a/src/cargo/sources/git/utils.rs
|
||||
+++ b/src/cargo/sources/git/utils.rs
|
||||
@@ -308,7 +308,8 @@ impl<'a> GitCheckout<'a> {
|
||||
// as the submodule's head, then we can bail out and go to the
|
||||
// next submodule.
|
||||
let head_and_repo = child.open().and_then(|repo| {
|
||||
- Ok((try!(repo.head()).target(), repo))
|
||||
+ let target = try!(repo.head()).target();
|
||||
+ Ok((target, repo))
|
||||
});
|
||||
let repo = match head_and_repo {
|
||||
Ok((head, repo)) => {
|
||||
diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs
|
||||
index 217d028..076e68d 100644
|
||||
--- a/src/cargo/util/config.rs
|
||||
+++ b/src/cargo/util/config.rs
|
||||
@@ -380,7 +380,7 @@ impl ConfigValue {
|
||||
}
|
||||
|
||||
fn homedir() -> Option<Path> {
|
||||
- let cargo_home = env::var_string("CARGO_HOME").map(|p| Path::new(p)).ok();
|
||||
+ let cargo_home = env::var("CARGO_HOME").map(|p| Path::new(p)).ok();
|
||||
let user_home = env::home_dir().map(|p| p.join(".cargo"));
|
||||
return cargo_home.or(user_home);
|
||||
}
|
||||
diff --git a/src/cargo/util/hex.rs b/src/cargo/util/hex.rs
|
||||
index 2bce7ea..3e8d962 100644
|
||||
--- a/src/cargo/util/hex.rs
|
||||
+++ b/src/cargo/util/hex.rs
|
||||
@@ -1,12 +1,11 @@
|
||||
-use std::old_io::MemWriter;
|
||||
use std::hash::{Hasher, Hash, SipHasher};
|
||||
|
||||
use rustc_serialize::hex::ToHex;
|
||||
|
||||
pub fn to_hex(num: u64) -> String {
|
||||
- let mut writer = MemWriter::with_capacity(8);
|
||||
+ let mut writer = Vec::with_capacity(8);
|
||||
writer.write_le_u64(num).unwrap(); // this should never fail
|
||||
- writer.get_ref().to_hex()
|
||||
+ writer.to_hex()
|
||||
}
|
||||
|
||||
pub fn short_hash<H: Hash<SipHasher>>(hashable: &H) -> String {
|
||||
diff --git a/src/cargo/util/profile.rs b/src/cargo/util/profile.rs
|
||||
index 9d19c36..100fd2c 100644
|
||||
--- a/src/cargo/util/profile.rs
|
||||
+++ b/src/cargo/util/profile.rs
|
||||
@@ -14,7 +14,7 @@ pub struct Profiler {
|
||||
desc: String,
|
||||
}
|
||||
|
||||
-fn enabled() -> bool { env::var("CARGO_PROFILE").is_some() }
|
||||
+fn enabled() -> bool { env::var_os("CARGO_PROFILE").is_some() }
|
||||
|
||||
pub fn start<T: fmt::Display>(desc: T) -> Profiler {
|
||||
if !enabled() { return Profiler { desc: String::new() } }
|
||||
diff --git a/src/rustversion.txt b/src/rustversion.txt
|
||||
index e2a057d..17cae77 100644
|
||||
--- a/src/rustversion.txt
|
||||
+++ b/src/rustversion.txt
|
||||
@@ -1 +1 @@
|
||||
-2015-02-09
|
||||
+2015-02-12
|
||||
diff --git a/tests/support/mod.rs b/tests/support/mod.rs
|
||||
index 83be295..7c10756 100644
|
||||
--- a/tests/support/mod.rs
|
||||
+++ b/tests/support/mod.rs
|
||||
@@ -227,7 +227,7 @@ impl<T, E: fmt::Display> ErrMsg<T> for Result<T, E> {
|
||||
|
||||
// Path to cargo executables
|
||||
pub fn cargo_dir() -> Path {
|
||||
- env::var_string("CARGO_BIN_PATH").map(Path::new).ok()
|
||||
+ env::var("CARGO_BIN_PATH").map(Path::new).ok()
|
||||
.or_else(|| env::current_exe().ok().map(|s| s.dir_path()))
|
||||
.unwrap_or_else(|| {
|
||||
panic!("CARGO_BIN_PATH wasn't set. Cannot continue running test")
|
||||
diff --git a/tests/test_cargo.rs b/tests/test_cargo.rs
|
||||
index b4b1abd..64e4c75 100644
|
||||
--- a/tests/test_cargo.rs
|
||||
+++ b/tests/test_cargo.rs
|
||||
@@ -25,7 +25,7 @@ fn fake_executable(proj: ProjectBuilder, dir: &Path, name: &str) -> ProjectBuild
|
||||
}
|
||||
|
||||
fn path() -> Vec<Path> {
|
||||
- env::split_paths(&env::var("PATH").unwrap_or(OsString::new())).collect()
|
||||
+ env::split_paths(&env::var_os("PATH").unwrap_or(OsString::new())).collect()
|
||||
}
|
||||
|
||||
test!(list_commands_looks_at_path {
|
||||
diff --git a/tests/test_cargo_compile.rs b/tests/test_cargo_compile.rs
|
||||
index 20fcab8..9c5b934 100644
|
||||
--- a/tests/test_cargo_compile.rs
|
||||
+++ b/tests/test_cargo_compile.rs
|
||||
@@ -1259,7 +1259,7 @@ test!(freshness_ignores_excluded {
|
||||
exclude = ["src/b*.rs"]
|
||||
"#)
|
||||
.file("build.rs", "fn main() {}")
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }");
|
||||
foo.build();
|
||||
foo.root().move_into_the_past().unwrap();
|
||||
|
||||
@@ -1297,15 +1297,15 @@ test!(rebuild_preserves_out_dir {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let path = Path::new(env::var_string("OUT_DIR").unwrap()).join("foo");
|
||||
- if env::var("FIRST").is_some() {
|
||||
+ let path = Path::new(env::var("OUT_DIR").unwrap()).join("foo");
|
||||
+ if env::var_os("FIRST").is_some() {
|
||||
File::create(&path).unwrap();
|
||||
} else {
|
||||
File::create(&path).unwrap();
|
||||
}
|
||||
}
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }");
|
||||
foo.build();
|
||||
foo.root().move_into_the_past().unwrap();
|
||||
|
||||
@@ -1335,7 +1335,7 @@ test!(dep_no_libs {
|
||||
[dependencies.bar]
|
||||
path = "bar"
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
.file("bar/Cargo.toml", r#"
|
||||
[package]
|
||||
name = "bar"
|
||||
diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs
|
||||
index b110b86..4ef727b 100644
|
||||
--- a/tests/test_cargo_compile_custom_build.rs
|
||||
+++ b/tests/test_cargo_compile_custom_build.rs
|
||||
@@ -79,32 +79,32 @@ test!(custom_build_env_vars {
|
||||
use std::env;
|
||||
use std::old_io::fs::PathExtensions;
|
||||
fn main() {{
|
||||
- let _target = env::var_string("TARGET").unwrap();
|
||||
+ let _target = env::var("TARGET").unwrap();
|
||||
|
||||
- let _ncpus = env::var_string("NUM_JOBS").unwrap();
|
||||
+ let _ncpus = env::var("NUM_JOBS").unwrap();
|
||||
|
||||
- let out = env::var_string("CARGO_MANIFEST_DIR").unwrap();
|
||||
+ let out = env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let p1 = Path::new(out);
|
||||
let cwd = env::current_dir().unwrap();
|
||||
let p2 = cwd.join(Path::new(file!()).dir_path().dir_path());
|
||||
assert!(p1 == p2, "{{}} != {{}}", p1.display(), p2.display());
|
||||
|
||||
- let opt = env::var_string("OPT_LEVEL").unwrap();
|
||||
+ let opt = env::var("OPT_LEVEL").unwrap();
|
||||
assert_eq!(opt.as_slice(), "0");
|
||||
|
||||
- let opt = env::var_string("PROFILE").unwrap();
|
||||
+ let opt = env::var("PROFILE").unwrap();
|
||||
assert_eq!(opt.as_slice(), "compile");
|
||||
|
||||
- let debug = env::var_string("DEBUG").unwrap();
|
||||
+ let debug = env::var("DEBUG").unwrap();
|
||||
assert_eq!(debug.as_slice(), "true");
|
||||
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
assert!(out.as_slice().starts_with(r"{0}"));
|
||||
assert!(Path::new(out).is_dir());
|
||||
|
||||
- let _host = env::var_string("HOST").unwrap();
|
||||
+ let _host = env::var("HOST").unwrap();
|
||||
|
||||
- let _feat = env::var_string("CARGO_FEATURE_FOO").unwrap();
|
||||
+ let _feat = env::var("CARGO_FEATURE_FOO").unwrap();
|
||||
}}
|
||||
"#,
|
||||
p.root().join("target").join("build").display());
|
||||
@@ -269,8 +269,8 @@ test!(overrides_and_links {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#)
|
||||
.file(".cargo/config", format!(r#"
|
||||
@@ -342,8 +342,8 @@ test!(links_passes_env_vars {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#)
|
||||
.file("a/Cargo.toml", r#"
|
||||
@@ -441,8 +441,8 @@ test!(rebuild_continues_to_pass_env_vars {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#);
|
||||
|
||||
@@ -727,7 +727,7 @@ test!(out_dir_is_preserved {
|
||||
use std::env;
|
||||
use std::old_io::File;
|
||||
fn main() {
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
File::create(&Path::new(out).join("foo")).unwrap();
|
||||
}
|
||||
"#);
|
||||
@@ -742,7 +742,7 @@ test!(out_dir_is_preserved {
|
||||
use std::env;
|
||||
use std::old_io::File;
|
||||
fn main() {
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
File::open(&Path::new(out).join("foo")).unwrap();
|
||||
}
|
||||
"#).unwrap();
|
||||
@@ -808,7 +808,7 @@ test!(code_generation {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let dst = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ let dst = Path::new(env::var("OUT_DIR").unwrap());
|
||||
let mut f = File::create(&dst.join("hello.rs")).unwrap();
|
||||
f.write_str("
|
||||
pub fn message() -> &'static str {
|
||||
@@ -972,9 +972,9 @@ test!(test_a_lib_with_a_build_command {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let out = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ let out = Path::new(env::var("OUT_DIR").unwrap());
|
||||
File::create(&out.join("foo.rs")).write_str("
|
||||
- fn foo() -> int { 1 }
|
||||
+ fn foo() -> i32 { 1 }
|
||||
").unwrap();
|
||||
}
|
||||
"#);
|
||||
@@ -1062,7 +1062,7 @@ test!(build_script_with_dynamic_native_dependency {
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
- let src = Path::new(env::var_string("SRC").unwrap());
|
||||
+ let src = Path::new(env::var("SRC").unwrap());
|
||||
println!("cargo:rustc-flags=-L {}", src.dir_path().display());
|
||||
}
|
||||
"#)
|
||||
diff --git a/tests/test_cargo_compile_git_deps.rs b/tests/test_cargo_compile_git_deps.rs
|
||||
index 5777e1a..11a152f 100644
|
||||
--- a/tests/test_cargo_compile_git_deps.rs
|
||||
+++ b/tests/test_cargo_compile_git_deps.rs
|
||||
@@ -461,7 +461,7 @@ test!(two_revs_same_deps {
|
||||
version = "0.0.0"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
@@ -469,7 +469,7 @@ test!(two_revs_same_deps {
|
||||
|
||||
// Commit the changes and make sure we trigger a recompile
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
add(&repo);
|
||||
let rev2 = commit(&repo);
|
||||
@@ -511,7 +511,7 @@ test!(two_revs_same_deps {
|
||||
"#, bar.url(), rev2).as_slice())
|
||||
.file("src/lib.rs", r#"
|
||||
extern crate bar;
|
||||
- pub fn baz() -> int { bar::bar() }
|
||||
+ pub fn baz() -> i32 { bar::bar() }
|
||||
"#);
|
||||
|
||||
baz.build();
|
||||
@@ -860,7 +860,7 @@ test!(stale_cached_version {
|
||||
version = "0.0.0"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
// Update the git database in the cache with the current state of the git
|
||||
@@ -887,7 +887,7 @@ test!(stale_cached_version {
|
||||
// Update the repo, and simulate someone else updating the lockfile and then
|
||||
// us pulling it down.
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 1 + 0 }
|
||||
+ pub fn bar() -> i32 { 1 + 0 }
|
||||
"#).unwrap();
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
add(&repo);
|
||||
@@ -1090,7 +1090,7 @@ test!(git_build_cmd_freshness {
|
||||
build = "build.rs"
|
||||
"#)
|
||||
.file("build.rs", "fn main() {}")
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
.file(".gitignore", "
|
||||
src/bar.rs
|
||||
")
|
||||
@@ -1166,7 +1166,7 @@ test!(git_repo_changing_no_rebuild {
|
||||
version = "0.5.0"
|
||||
authors = ["wycats@example.com"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
// Lock p1 to the first rev in the git repo
|
||||
@@ -1193,7 +1193,7 @@ test!(git_repo_changing_no_rebuild {
|
||||
|
||||
// Make a commit to lock p2 to a different rev
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
add(&repo);
|
||||
@@ -1256,7 +1256,7 @@ test!(git_dep_build_cmd {
|
||||
name = "bar"
|
||||
"#)
|
||||
.file("bar/src/bar.rs.in", r#"
|
||||
- pub fn gimme() -> int { 0 }
|
||||
+ pub fn gimme() -> i32 { 0 }
|
||||
"#)
|
||||
.file("bar/build.rs", r#"
|
||||
use std::old_io::fs;
|
||||
@@ -1278,7 +1278,7 @@ test!(git_dep_build_cmd {
|
||||
|
||||
// Touching bar.rs.in should cause the `build` command to run again.
|
||||
let mut file = fs::File::create(&p.root().join("bar/src/bar.rs.in")).unwrap();
|
||||
- file.write_str(r#"pub fn gimme() -> int { 1 }"#).unwrap();
|
||||
+ file.write_str(r#"pub fn gimme() -> i32 { 1 }"#).unwrap();
|
||||
drop(file);
|
||||
|
||||
assert_that(p.process(cargo_dir().join("cargo")).arg("build"),
|
||||
@@ -1297,7 +1297,7 @@ test!(fetch_downloads {
|
||||
version = "0.5.0"
|
||||
authors = ["wycats@example.com"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
let p = project("p1")
|
||||
@@ -1569,7 +1569,7 @@ test!(update_one_source_updates_all_packages_in_that_git_source {
|
||||
|
||||
// Just be sure to change a file
|
||||
File::create(&dep.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
add(&repo);
|
||||
commit(&repo);
|
||||
diff --git a/tests/test_cargo_compile_plugins.rs b/tests/test_cargo_compile_plugins.rs
|
||||
index 853038f..ca44a4d 100644
|
||||
--- a/tests/test_cargo_compile_plugins.rs
|
||||
+++ b/tests/test_cargo_compile_plugins.rs
|
||||
@@ -23,14 +23,14 @@ test!(plugin_to_the_max {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate foo_lib;
|
||||
|
||||
fn main() { foo_lib::foo(); }
|
||||
"#)
|
||||
.file("src/foo_lib.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
pub fn foo() {}
|
||||
"#);
|
||||
@@ -122,7 +122,7 @@ test!(plugin_with_dynamic_native_dependency {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
fn main() {}
|
||||
"#)
|
||||
diff --git a/tests/test_cargo_cross_compile.rs b/tests/test_cargo_cross_compile.rs
|
||||
index a2d53e0..cf6b9a5 100644
|
||||
--- a/tests/test_cargo_cross_compile.rs
|
||||
+++ b/tests/test_cargo_cross_compile.rs
|
||||
@@ -12,7 +12,7 @@ fn setup() {
|
||||
|
||||
fn disabled() -> bool {
|
||||
// First, disable if ./configure requested so
|
||||
- match env::var_string("CFG_DISABLE_CROSS_TESTS") {
|
||||
+ match env::var("CFG_DISABLE_CROSS_TESTS") {
|
||||
Ok(ref s) if s.as_slice() == "1" => return true,
|
||||
_ => {}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ test!(simple_cross {
|
||||
"#)
|
||||
.file("build.rs", format!(r#"
|
||||
fn main() {{
|
||||
- assert_eq!(std::env::var_string("TARGET").unwrap().as_slice(), "{}");
|
||||
+ assert_eq!(std::env::var("TARGET").unwrap().as_slice(), "{}");
|
||||
}}
|
||||
"#, alternate()).as_slice())
|
||||
.file("src/main.rs", r#"
|
||||
@@ -119,8 +119,7 @@ test!(plugin_deps {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link]
|
||||
- extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate baz;
|
||||
fn main() {
|
||||
assert_eq!(bar!(), baz::baz());
|
||||
@@ -155,7 +154,7 @@ test!(plugin_deps {
|
||||
|
||||
fn expand_bar(cx: &mut ExtCtxt, sp: Span, tts: &[TokenTree])
|
||||
-> Box<MacResult + 'static> {
|
||||
- MacExpr::new(quote_expr!(cx, 1i))
|
||||
+ MacExpr::new(quote_expr!(cx, 1))
|
||||
}
|
||||
"#);
|
||||
let baz = project("baz")
|
||||
@@ -165,7 +164,7 @@ test!(plugin_deps {
|
||||
version = "0.0.1"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn baz() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn baz() -> i32 { 1 }");
|
||||
bar.build();
|
||||
baz.build();
|
||||
|
||||
@@ -197,8 +196,7 @@ test!(plugin_to_the_max {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link]
|
||||
- extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate baz;
|
||||
fn main() {
|
||||
assert_eq!(bar!(), baz::baz());
|
||||
@@ -320,7 +318,7 @@ test!(plugin_with_extra_dylib_dep {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
fn main() {}
|
||||
"#);
|
||||
@@ -362,7 +360,7 @@ test!(plugin_with_extra_dylib_dep {
|
||||
name = "baz"
|
||||
crate_type = ["dylib"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn baz() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn baz() -> i32 { 1 }");
|
||||
bar.build();
|
||||
baz.build();
|
||||
|
||||
@@ -464,8 +462,8 @@ test!(cross_with_a_build_script {
|
||||
.file("build.rs", format!(r#"
|
||||
use std::env;
|
||||
fn main() {{
|
||||
- assert_eq!(env::var_string("TARGET").unwrap().as_slice(), "{0}");
|
||||
- let mut path = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ assert_eq!(env::var("TARGET").unwrap().as_slice(), "{0}");
|
||||
+ let mut path = Path::new(env::var("OUT_DIR").unwrap());
|
||||
assert_eq!(path.filename().unwrap(), b"out");
|
||||
path.pop();
|
||||
assert!(path.filename().unwrap().starts_with(b"foo-"));
|
||||
@@ -530,7 +528,7 @@ test!(build_script_needed_for_host_and_target {
|
||||
.file("d1/build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- let target = env::var_string("TARGET").unwrap();
|
||||
+ let target = env::var("TARGET").unwrap();
|
||||
println!("cargo:rustc-flags=-L /path/to/{}", target);
|
||||
}
|
||||
"#)
|
||||
@@ -643,9 +641,9 @@ test!(build_script_only_host {
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
- assert!(env::var_string("OUT_DIR").unwrap()
|
||||
+ assert!(env::var("OUT_DIR").unwrap()
|
||||
.contains("target/build/d1-"),
|
||||
- "bad: {:?}", env::var_string("OUT_DIR"));
|
||||
+ "bad: {:?}", env::var("OUT_DIR"));
|
||||
}
|
||||
"#);
|
||||
|
||||
diff --git a/tests/test_cargo_profiles.rs b/tests/test_cargo_profiles.rs
|
||||
index b71eadb..827393f 100644
|
||||
--- a/tests/test_cargo_profiles.rs
|
||||
+++ b/tests/test_cargo_profiles.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
use std::old_path;
|
||||
|
||||
use support::{project, execs};
|
||||
@@ -110,6 +110,6 @@ test!(top_level_overrides_deps {
|
||||
dir = p.root().display(),
|
||||
url = p.url(),
|
||||
sep = old_path::SEP,
|
||||
- prefix = os::consts::DLL_PREFIX,
|
||||
- suffix = os::consts::DLL_SUFFIX).as_slice()));
|
||||
+ prefix = env::consts::DLL_PREFIX,
|
||||
+ suffix = env::consts::DLL_SUFFIX).as_slice()));
|
||||
});
|
||||
--
|
||||
2.3.0
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From f32fa685610399739a2584ae02653753a372d6ed Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Fri, 13 Feb 2015 15:24:16 -0500
|
||||
Subject: [PATCH] update pkg versions
|
||||
|
||||
---
|
||||
Cargo.lock | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 14dd876..629585c 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"advapi32-sys 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"curl 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "docopt 0.6.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "docopt 0.6.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"git2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -18,8 +18,8 @@ dependencies = [
|
||||
"semver 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tar 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "time 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "toml 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "time 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "toml 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@@ -44,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"curl-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -55,13 +55,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
-version = "0.6.36"
|
||||
+version = "0.6.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -97,7 +97,7 @@ version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "libgit2-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "libgit2-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -136,13 +136,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libgit2-sys"
|
||||
-version = "0.1.12"
|
||||
+version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libssh2-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -159,7 +159,7 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -192,12 +192,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
-version = "0.3.3"
|
||||
+version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -207,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
-version = "0.2.0"
|
||||
+version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
@@ -255,7 +255,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -264,7 +264,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
--
|
||||
2.3.0
|
||||
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
From 797df37f3a9b377db475f3d2eae09fcbb90d2e4f Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 25 Nov 2014 11:50:28 -0500
|
||||
Subject: [PATCH 1/2] curl-sys: avoid explicitly linking in openssl. If it is
|
||||
needed, pkgconfig will pull it in
|
||||
|
||||
---
|
||||
curl-sys/Cargo.toml | 19 -------------------
|
||||
curl-sys/lib.rs | 2 --
|
||||
2 files changed, 21 deletions(-)
|
||||
|
||||
diff --git a/curl-sys/Cargo.toml b/curl-sys/Cargo.toml
|
||||
index 6e99e16..50d1101 100644
|
||||
--- a/curl-sys/Cargo.toml
|
||||
+++ b/curl-sys/Cargo.toml
|
||||
@@ -18,23 +18,4 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
-
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
openssl-sys = "0.6.0"
|
||||
diff --git a/curl-sys/lib.rs b/curl-sys/lib.rs
|
||||
index 7cae355..a2d58ea 100644
|
||||
--- a/curl-sys/lib.rs
|
||||
+++ b/curl-sys/lib.rs
|
||||
@@ -1,8 +1,6 @@
|
||||
#![allow(non_camel_case_types, raw_pointer_derive)]
|
||||
|
||||
extern crate libc;
|
||||
-#[cfg(not(target_env = "msvc"))] extern crate libz_sys;
|
||||
-#[cfg(unix)] extern crate openssl_sys;
|
||||
|
||||
use libc::{c_void, c_int, c_char, c_uint, c_long};
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
From 625b2491eca17e78fdec374f8e83ec00fcca5fc8 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 25 Nov 2014 12:26:48 -0500
|
||||
Subject: [PATCH 2/2] remove per-triple deps on openssl-sys
|
||||
|
||||
---
|
||||
Cargo.toml | 21 +--------------------
|
||||
1 file changed, 1 insertion(+), 20 deletions(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 16b72c3..68235ae 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -12,30 +12,11 @@ url = "0.2.0"
|
||||
log = "0.3.0"
|
||||
libc = "0.1"
|
||||
curl-sys = { path = "curl-sys", version = "0.1.0" }
|
||||
+openssl-sys = "0.6.0"
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.3.0"
|
||||
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-
|
||||
[[test]]
|
||||
|
||||
name = "test"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
From aa1bea8387b6108ca2cd60ad71e8d354d8790d62 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 10 Nov 2014 15:06:29 -0500
|
||||
Subject: [PATCH] Add generic openssl-sys dep
|
||||
|
||||
---
|
||||
libgit2-sys/Cargo.toml | 36 ++----------------------------------
|
||||
1 file changed, 2 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index 9c0aa6c..d95d07e 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -16,40 +16,8 @@ description = "Native bindings to the libgit2 library"
|
||||
[dependencies]
|
||||
libssh2-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
+openssl-sys = "0.6.0"
|
||||
+libz-sys = "0.1.0"
|
||||
|
||||
[build-dependencies]
|
||||
pkg-config = "0.3"
|
||||
-
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
From a1ba6ce6f54e3b2b0c3e05043a015bc845d24025 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 22:10:18 -0400
|
||||
Subject: [PATCH 2/3] libgit2-sys: avoid the build script, it is a disaster
|
||||
|
||||
---
|
||||
libgit2-sys/build.rs | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/libgit2-sys/build.rs b/libgit2-sys/build.rs
|
||||
index d624a63..9b8b98c 100644
|
||||
--- a/libgit2-sys/build.rs
|
||||
+++ b/libgit2-sys/build.rs
|
||||
@@ -15,6 +15,9 @@ macro_rules! t {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
+ pkg_config::find_library("libgit2").unwrap();
|
||||
+ return;
|
||||
+
|
||||
register_dep("SSH2");
|
||||
register_dep("OPENSSL");
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
From ce3e8e83be261ed7cf0a62dc8e66361588329ba2 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 22:06:57 -0400
|
||||
Subject: [PATCH 3/3] bump libssh2 to fix build with nightly
|
||||
|
||||
---
|
||||
libgit2-sys/Cargo.toml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index d95d07e..992ea7a 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -14,7 +14,7 @@ description = "Native bindings to the libgit2 library"
|
||||
path = "lib.rs"
|
||||
|
||||
[dependencies]
|
||||
-libssh2-sys = "0.1.0"
|
||||
+libssh2-sys = "0.1.23"
|
||||
libc = "0.1"
|
||||
openssl-sys = "0.6.0"
|
||||
libz-sys = "0.1.0"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
From b45c6ed5524690603a1888dff21556b7f42db474 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 1 Dec 2014 10:51:31 -0500
|
||||
Subject: [PATCH] Unconditionally depend on openssl-sys
|
||||
|
||||
---
|
||||
libssh2-sys/Cargo.toml | 22 ----------------------
|
||||
1 file changed, 22 deletions(-)
|
||||
|
||||
diff --git a/libssh2-sys/Cargo.toml b/libssh2-sys/Cargo.toml
|
||||
index 501bba5..db8d21a 100644
|
||||
--- a/libssh2-sys/Cargo.toml
|
||||
+++ b/libssh2-sys/Cargo.toml
|
||||
@@ -15,28 +15,6 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
-
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
openssl-sys = "0.6.0"
|
||||
|
||||
[build-dependencies]
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
From 3d850e1b1651a79085b994c12cdb78faa8271622 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ho=C3=A0ng=20=C4=90=E1=BB=A9c=20Hi=E1=BA=BFu?=
|
||||
<hdhoang@zahe.me>
|
||||
Date: Mon, 1 Dec 2014 11:48:14 +0700
|
||||
Subject: [PATCH] update to new io::FileType enum
|
||||
|
||||
---
|
||||
src/lib.rs | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/lib.rs b/src/lib.rs
|
||||
index 5e13b84..3e24ff2 100644
|
||||
--- a/src/lib.rs
|
||||
+++ b/src/lib.rs
|
||||
@@ -283,12 +283,12 @@ impl<W: Writer> Archive<W> {
|
||||
octal(&mut header.dev_major, 0i);
|
||||
|
||||
header.link[0] = match stat.kind {
|
||||
- io::TypeFile => b'0',
|
||||
- io::TypeDirectory => b'5',
|
||||
- io::TypeNamedPipe => b'6',
|
||||
- io::TypeBlockSpecial => b'4',
|
||||
- io::TypeSymlink => b'2',
|
||||
- io::TypeUnknown => b' ',
|
||||
+ io::FileType::RegularFile => b'0',
|
||||
+ io::FileType::Directory => b'5',
|
||||
+ io::FileType::NamedPipe => b'6',
|
||||
+ io::FileType::BlockSpecial => b'4',
|
||||
+ io::FileType::Symlink => b'2',
|
||||
+ io::FileType::Unknown => b' ',
|
||||
};
|
||||
|
||||
// Final step, calculate the checksum
|
||||
@@ -411,16 +411,16 @@ impl<'a, R> File<'a, R> {
|
||||
/// Classify the type of file that this entry represents
|
||||
pub fn classify(&self) -> io::FileType {
|
||||
match (self.header.is_ustar(), self.header.link[0]) {
|
||||
- (_, b'0') => io::TypeFile,
|
||||
- (_, b'1') => io::TypeUnknown, // need a hard link enum?
|
||||
- (_, b'2') => io::TypeSymlink,
|
||||
- (false, _) => io::TypeUnknown, // not technically valid...
|
||||
-
|
||||
- (_, b'3') => io::TypeUnknown, // character special...
|
||||
- (_, b'4') => io::TypeBlockSpecial,
|
||||
- (_, b'5') => io::TypeDirectory,
|
||||
- (_, b'6') => io::TypeNamedPipe,
|
||||
- (_, _) => io::TypeUnknown, // not technically valid...
|
||||
+ (_, b'0') => io::FileType::RegularFile,
|
||||
+ (_, b'1') => io::FileType::Unknown, // need a hard link enum?
|
||||
+ (_, b'2') => io::FileType::Symlink,
|
||||
+ (false, _) => io::FileType::Unknown, // not technically valid...
|
||||
+
|
||||
+ (_, b'3') => io::FileType::Unknown, // character special...
|
||||
+ (_, b'4') => io::FileType::BlockSpecial,
|
||||
+ (_, b'5') => io::FileType::Directory,
|
||||
+ (_, b'6') => io::FileType::NamedPipe,
|
||||
+ (_, _) => io::FileType::Unknown, // not technically valid...
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.0.4
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 6d0905573f38d0fbdde74848c0cd7cdbb603c238 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 01/10] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 60fe22c..9c57656 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
From e9d46f8cb10eec1f8ee19ed2aab385d17ec85757 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 01:40:21 -0500
|
||||
Subject: [PATCH 02/10] Target: add default target.json path:
|
||||
$libdir/rust/targets
|
||||
|
||||
---
|
||||
src/librustc/session/config.rs | 6 +++---
|
||||
src/librustc/session/mod.rs | 8 ++++++--
|
||||
src/librustc_back/target/mod.rs | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index c5db7cd..2b9069f 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -38,7 +38,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -655,8 +655,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 99a58f0..d25e476 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -385,14 +385,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> Session {
|
||||
- let host = match Target::search(config::host_triple()) {
|
||||
+ let sysroot = match sopts.maybe_sysroot {
|
||||
+ Some(ref x) => PathBuf::from(x),
|
||||
+ None => filesearch::get_or_default_sysroot()
|
||||
+ };
|
||||
+ let host = match Target::search(&sysroot, config::host_triple()) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
span_diagnostic.handler()
|
||||
.fatal(&format!("Error loading host specification: {}", e));
|
||||
}
|
||||
};
|
||||
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
|
||||
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
|
||||
let p_s = parse::ParseSess::with_span_handler(span_diagnostic);
|
||||
let default_sysroot = match sopts.maybe_sysroot {
|
||||
Some(_) => None,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index ce05a88..1d1ff70 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -320,12 +322,13 @@ impl Target {
|
||||
///
|
||||
/// The error string could come from any of the APIs called, including
|
||||
/// filesystem access and JSON decoding.
|
||||
- pub fn search(target: &str) -> Result<Target, String> {
|
||||
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use serialize::json;
|
||||
+ use std::iter::IntoIterator;
|
||||
|
||||
fn load_file(path: &Path) -> Result<Target, String> {
|
||||
let mut f = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -417,9 +420,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.unwrap_or(OsString::new());
|
||||
|
||||
- // FIXME 16351: add a sane default search path?
|
||||
+ let mut default_path = sysroot.to_owned();
|
||||
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
|
||||
+ default_path.push("rustlib");
|
||||
|
||||
- for dir in env::split_paths(&target_path) {
|
||||
+ let paths = env::split_paths(&target_path)
|
||||
+ .chain(Some(default_path).into_iter());
|
||||
+
|
||||
+ for dir in paths {
|
||||
let p = dir.join(&path);
|
||||
if p.is_file() {
|
||||
return load_file(&p);
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
From e468926e5e331dc6a68be5d0731a331940bd0199 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 14:52:56 -0500
|
||||
Subject: [PATCH 03/10] mk: for stage0, use RUSTFLAGS to override target libs
|
||||
dir
|
||||
|
||||
Setting HLIB specially for stage0 (and even more specially for windows)
|
||||
also affects the location we place TLIB. To keep the TLIBs we build in
|
||||
the place requested by configure, use '-L' and '--sysroot' to point
|
||||
stage0-rustc at the appropriate location.
|
||||
---
|
||||
mk/main.mk | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 99b0797..d907628 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -369,21 +369,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
|
||||
+# Don't trust stage0, be explicit about libraries
|
||||
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
|
||||
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
|
||||
+# passing the '-L' options.
|
||||
+ifeq ($(1),0)
|
||||
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
|
||||
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
|
||||
+endif
|
||||
+
|
||||
# Preqrequisites for using the stageN compiler
|
||||
ifeq ($(1),0)
|
||||
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
|
||||
@@ -495,6 +496,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -503,6 +505,7 @@ PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
endef
|
||||
--
|
||||
2.5.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 977954fbe5a3c9d0b89652f852b174aa9ac0e0a4 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 13:48:14 -0500
|
||||
Subject: [PATCH 04/10] mk: add missing CFG_LIBDIR_RELATIVE
|
||||
|
||||
---
|
||||
mk/grammar.mk | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mk/grammar.mk b/mk/grammar.mk
|
||||
index d9c66e2..585206d 100644
|
||||
--- a/mk/grammar.mk
|
||||
+++ b/mk/grammar.mk
|
||||
@@ -11,8 +11,8 @@
|
||||
BG = $(CFG_BUILD_DIR)/grammar/
|
||||
SG = $(S)src/grammar/
|
||||
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
|
||||
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
|
||||
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
|
||||
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
|
||||
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
|
||||
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
|
||||
ifeq ($(CFG_OSTYPE),apple-darwin)
|
||||
FLEX_LDFLAGS=-ll
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+362
@@ -0,0 +1,362 @@
|
||||
From 08aecf1062fd85207e9b5c688b84def523eb05a0 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 24 Nov 2014 13:10:15 -0500
|
||||
Subject: [PATCH 05/10] configure: support --bindir, and extend libdir to
|
||||
non-blessed dirs
|
||||
|
||||
Adds --bindir, and:
|
||||
|
||||
Allows --bindir and --libdir to have multiple elements in their paths
|
||||
relative to sysroot, and allows libdir to end in an arbitrary directory
|
||||
(previously it was limited to lib, lib32, and lib64).
|
||||
|
||||
Note that this assumes absolute paths start with '/', which may break
|
||||
windows platforms
|
||||
---
|
||||
configure | 49 ++++++++++++++++------
|
||||
mk/host.mk | 6 ++-
|
||||
mk/main.mk | 11 +++++
|
||||
mk/perf.mk | 4 +-
|
||||
mk/prepare.mk | 4 +-
|
||||
src/librustc/metadata/filesearch.rs | 84 ++++++++++++++-----------------------
|
||||
src/librustc_trans/back/link.rs | 3 +-
|
||||
7 files changed, 90 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 2c8d785..d214382 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -334,6 +334,31 @@ enable_if_not_disabled() {
|
||||
fi
|
||||
}
|
||||
|
||||
+abspath () {
|
||||
+ case "$1" in
|
||||
+ /*) echo "$1" ;;
|
||||
+ *) echo "$PWD/$1" ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+relpath () {
|
||||
+ local src=$(abspath "$1")
|
||||
+ local dst=$(abspath "$2")
|
||||
+ local common=$src
|
||||
+ local result=
|
||||
+
|
||||
+ # Start by checking if the whole src is common, then strip off pack
|
||||
+ # components until we find the common element.
|
||||
+ while [ "${dst#"$common"}" = "$dst" ]; do
|
||||
+ common=$(dirname "$common")
|
||||
+ result="../$result"
|
||||
+ done
|
||||
+
|
||||
+ local down="${dst#"$common"}"
|
||||
+ result="${result}${down#/}"
|
||||
+ echo "$result"
|
||||
+}
|
||||
+
|
||||
to_llvm_triple() {
|
||||
case $1 in
|
||||
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
|
||||
@@ -626,6 +651,8 @@ putvar CFG_BUILD # Yes, this creates a duplicate entry, but the last one wins.
|
||||
CFG_HOST=$(to_llvm_triple $CFG_HOST)
|
||||
CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
|
||||
+CFG_LIBDIR_RELATIVE=lib
|
||||
+
|
||||
# On windows we just store the libraries in the bin directory because
|
||||
# there's no rpath. This is where the build system itself puts libraries;
|
||||
# --libdir is used to configure the installation directory.
|
||||
@@ -633,24 +660,21 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
|
||||
then
|
||||
CFG_LIBDIR_RELATIVE=bin
|
||||
-else
|
||||
- CFG_LIBDIR_RELATIVE=lib
|
||||
fi
|
||||
|
||||
-valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
|
||||
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
|
||||
|
||||
-case "$CFG_LIBDIR" in
|
||||
- "$CFG_PREFIX"/*) CAT_INC=2;;
|
||||
- "$CFG_PREFIX"*) CAT_INC=1;;
|
||||
- *)
|
||||
- err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
|
||||
-esac
|
||||
+CFG_BINDIR_RELATIVE=bin
|
||||
+valopt bindir "${CFG_PREFIX}/${CFG_BINDIR_RELATIVE}" "install binaries"
|
||||
|
||||
-CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
|
||||
+# Determine libdir and bindir relative to prefix
|
||||
+step_msg "calculating relative paths to prefix = ${CFG_PREFIX}"
|
||||
+CFG_BINDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_BINDIR}")
|
||||
+CFG_LIBDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_LIBDIR}")
|
||||
|
||||
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
|
||||
- && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
|
||||
- err "libdir on windows should be set to 'bin'"
|
||||
+ && [ "$CFG_LIBDIR_RELATIVE" != "$CFG_BINDIR_RELATIVE" ]; then
|
||||
+ err "Windows builds currently require that LIBDIR == BINDIR (we have libdir{$CFG_LIBDIR_RELATIVE} != bindir{$CFG_BINDIR_RELATIVE} )"
|
||||
fi
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
@@ -1685,6 +1709,7 @@ putvar CFG_PREFIX
|
||||
putvar CFG_HOST
|
||||
putvar CFG_TARGET
|
||||
putvar CFG_LIBDIR_RELATIVE
|
||||
+putvar CFG_BINDIR_RELATIVE
|
||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||
putvar CFG_AARCH64_LINUX_ANDROID_NDK
|
||||
putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
|
||||
diff --git a/mk/host.mk b/mk/host.mk
|
||||
index 59a0095..b8e8345 100644
|
||||
--- a/mk/host.mk
|
||||
+++ b/mk/host.mk
|
||||
@@ -59,9 +59,13 @@ endef
|
||||
# $(4) - the host triple (same as $(3))
|
||||
define CP_HOST_STAGE_N
|
||||
|
||||
-ifneq ($(CFG_LIBDIR_RELATIVE),bin)
|
||||
$$(HLIB$(2)_H_$(4))/:
|
||||
@mkdir -p $$@
|
||||
+
|
||||
+# Avoid redefinition warnings if libdir==bindir
|
||||
+ifneq ($(HBIN$(2)_H_$(4)),$(HLIB$(2)_H_$(4)))
|
||||
+$$(HBIN$(2)_H_$(4))/:
|
||||
+ @mkdir -p $$@
|
||||
endif
|
||||
|
||||
endef
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index d907628..6782bed 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -338,7 +338,9 @@ export CFG_RELEASE_CHANNEL
|
||||
export CFG_LLVM_ROOT
|
||||
export CFG_PREFIX
|
||||
export CFG_LIBDIR
|
||||
+export CFG_BINDIR
|
||||
export CFG_LIBDIR_RELATIVE
|
||||
+export CFG_BINDIR_RELATIVE
|
||||
export CFG_DISABLE_INJECT_STD_VERSION
|
||||
ifdef CFG_DISABLE_UNSTABLE_FEATURES
|
||||
CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES))
|
||||
@@ -368,7 +370,16 @@ define SREQ
|
||||
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
+
|
||||
+ifeq ($(1)-$(3),0-$$(CFG_BUILD))
|
||||
+# stage0 relative paths are fixed so we can bootstrap from snapshots
|
||||
+# (downloaded snapshots drop their rustc in HROOT/bin)
|
||||
+# libdir discrepancy is worked around with RUSTFLAGS below.
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
+else
|
||||
+HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_BINDIR_RELATIVE)
|
||||
+endif
|
||||
+
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
diff --git a/mk/perf.mk b/mk/perf.mk
|
||||
index 16cbaab..f8a354c 100644
|
||||
--- a/mk/perf.mk
|
||||
+++ b/mk/perf.mk
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
|
||||
ifdef CFG_PERF_TOOL
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
@$(call E, perf compile: $@)
|
||||
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
|
||||
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
|
||||
$(Q)rm -f $(LIBRUSTC_GLOB)
|
||||
else
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
$(Q)touch $@
|
||||
endif
|
||||
|
||||
diff --git a/mk/prepare.mk b/mk/prepare.mk
|
||||
index fe619cc..b8aa0cb 100644
|
||||
--- a/mk/prepare.mk
|
||||
+++ b/mk/prepare.mk
|
||||
@@ -186,10 +186,10 @@ INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\
|
||||
define DEF_PREPARE
|
||||
|
||||
prepare-base-$(1): PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE)
|
||||
-prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_MAN_DIR=$$(S)/man
|
||||
-prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
|
||||
prepare-base-$(1): prepare-everything-$(1)
|
||||
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
|
||||
index 311ab1c..1b03b1a 100644
|
||||
--- a/src/librustc/metadata/filesearch.rs
|
||||
+++ b/src/librustc/metadata/filesearch.rs
|
||||
@@ -68,8 +68,7 @@ impl<'a> FileSearch<'a> {
|
||||
if !found {
|
||||
let rustpath = rust_path();
|
||||
for path in &rustpath {
|
||||
- let tlib_path = make_rustpkg_lib_path(
|
||||
- self.sysroot, path, self.triple);
|
||||
+ let tlib_path = make_rustpkg_lib_path(path, self.triple);
|
||||
debug!("is {} in visited_dirs? {}", tlib_path.display(),
|
||||
visited_dirs.contains(&tlib_path));
|
||||
|
||||
@@ -96,7 +95,7 @@ impl<'a> FileSearch<'a> {
|
||||
where F: FnMut(&Path, PathKind) -> FileMatch
|
||||
{
|
||||
self.for_each_lib_search_path(|lib_search_path, kind| {
|
||||
- debug!("searching {}", lib_search_path.display());
|
||||
+ info!("searching {}", lib_search_path.display());
|
||||
match fs::read_dir(lib_search_path) {
|
||||
Ok(files) => {
|
||||
let files = files.filter_map(|p| p.ok().map(|s| s.path()))
|
||||
@@ -157,7 +156,7 @@ impl<'a> FileSearch<'a> {
|
||||
// Returns a list of directories where target-specific tool binaries are located.
|
||||
pub fn get_tools_search_paths(&self) -> Vec<PathBuf> {
|
||||
let mut p = PathBuf::from(self.sysroot);
|
||||
- p.push(&find_libdir(self.sysroot));
|
||||
+ p.push(libdir_str());
|
||||
p.push(&rustlibdir());
|
||||
p.push(&self.triple);
|
||||
p.push("bin");
|
||||
@@ -165,8 +164,8 @@ impl<'a> FileSearch<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf {
|
||||
- let mut p = PathBuf::from(&find_libdir(sysroot));
|
||||
+pub fn relative_target_lib_path(target_triple: &str) -> PathBuf {
|
||||
+ let mut p = PathBuf::from(&libdir_str());
|
||||
assert!(p.is_relative());
|
||||
p.push(&rustlibdir());
|
||||
p.push(target_triple);
|
||||
@@ -176,17 +175,28 @@ pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf
|
||||
|
||||
fn make_target_lib_path(sysroot: &Path,
|
||||
target_triple: &str) -> PathBuf {
|
||||
- sysroot.join(&relative_target_lib_path(sysroot, target_triple))
|
||||
+ sysroot.join(&relative_target_lib_path(target_triple))
|
||||
}
|
||||
|
||||
-fn make_rustpkg_lib_path(sysroot: &Path,
|
||||
- dir: &Path,
|
||||
+fn make_rustpkg_lib_path(dir: &Path,
|
||||
triple: &str) -> PathBuf {
|
||||
- let mut p = dir.join(&find_libdir(sysroot));
|
||||
+ let mut p = dir.join(libdir_str());
|
||||
p.push(triple);
|
||||
p
|
||||
}
|
||||
|
||||
+pub fn bindir_relative_str() -> &'static str {
|
||||
+ env!("CFG_BINDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
+pub fn bindir_relative_path() -> PathBuf {
|
||||
+ PathBuf::from(bindir_relative_str())
|
||||
+}
|
||||
+
|
||||
+pub fn libdir_str() -> &'static str {
|
||||
+ env!("CFG_LIBDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
pub fn get_or_default_sysroot() -> PathBuf {
|
||||
// Follow symlinks. If the resolved path is relative, make it absolute.
|
||||
fn canonicalize(path: Option<PathBuf>) -> Option<PathBuf> {
|
||||
@@ -202,7 +212,18 @@ pub fn get_or_default_sysroot() -> PathBuf {
|
||||
}
|
||||
|
||||
match canonicalize(env::current_exe().ok()) {
|
||||
- Some(mut p) => { p.pop(); p.pop(); p }
|
||||
+ Some(mut p) => {
|
||||
+ // Remove the exe name
|
||||
+ p.pop();
|
||||
+ let mut rel = bindir_relative_path();
|
||||
+
|
||||
+ // Remove a number of elements equal to the number of elements in the bindir relative
|
||||
+ // path
|
||||
+ while rel.pop() {
|
||||
+ p.pop();
|
||||
+ }
|
||||
+ p
|
||||
+ }
|
||||
None => panic!("can't determine value for sysroot")
|
||||
}
|
||||
}
|
||||
@@ -257,47 +278,6 @@ pub fn rust_path() -> Vec<PathBuf> {
|
||||
env_rust_path
|
||||
}
|
||||
|
||||
-// The name of the directory rustc expects libraries to be located.
|
||||
-// On Unix should be "lib", on windows "bin"
|
||||
-#[cfg(unix)]
|
||||
-fn find_libdir(sysroot: &Path) -> String {
|
||||
- // FIXME: This is a quick hack to make the rustc binary able to locate
|
||||
- // Rust libraries in Linux environments where libraries might be installed
|
||||
- // to lib64/lib32. This would be more foolproof by basing the sysroot off
|
||||
- // of the directory where librustc is located, rather than where the rustc
|
||||
- // binary is.
|
||||
- //If --libdir is set during configuration to the value other than
|
||||
- // "lib" (i.e. non-default), this value is used (see issue #16552).
|
||||
-
|
||||
- match option_env!("CFG_LIBDIR_RELATIVE") {
|
||||
- Some(libdir) if libdir != "lib" => return libdir.to_string(),
|
||||
- _ => if sysroot.join(&primary_libdir_name()).join(&rustlibdir()).exists() {
|
||||
- return primary_libdir_name();
|
||||
- } else {
|
||||
- return secondary_libdir_name();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "64")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib64".to_string()
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "32")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib32".to_string()
|
||||
- }
|
||||
-
|
||||
- fn secondary_libdir_name() -> String {
|
||||
- "lib".to_string()
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-#[cfg(windows)]
|
||||
-fn find_libdir(_sysroot: &Path) -> String {
|
||||
- "bin".to_string()
|
||||
-}
|
||||
-
|
||||
// The name of rustc's own place to organize libraries.
|
||||
// Used to be "rustc", now the default is "rustlib"
|
||||
pub fn rustlibdir() -> String {
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 5bdc76b..25dd2e6 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -1011,11 +1011,10 @@ fn link_args(cmd: &mut Linker,
|
||||
// where extern libraries might live, based on the
|
||||
// addl_lib_search_paths
|
||||
if sess.opts.cg.rpath {
|
||||
- let sysroot = sess.sysroot();
|
||||
let target_triple = &sess.opts.target_triple;
|
||||
let mut get_install_prefix_lib_path = || {
|
||||
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
|
||||
- let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
|
||||
+ let tlib = filesearch::relative_target_lib_path(target_triple);
|
||||
let mut path = PathBuf::from(install_prefix);
|
||||
path.push(&tlib);
|
||||
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
From 1aebe22b98f797765293bafc1f5e8990a742b291 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Dec 2014 19:15:19 -0500
|
||||
Subject: [PATCH 06/10] std/thread_local: workaround for NULL __dso_handle
|
||||
|
||||
---
|
||||
src/libstd/thread/local.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
|
||||
index 9a6d68a..37a0ea0 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -337,7 +337,7 @@ mod imp {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const libc::c_void;
|
||||
}
|
||||
- if !__cxa_thread_atexit_impl.is_null() {
|
||||
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
|
||||
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
|
||||
arg: *mut u8,
|
||||
dso_handle: *mut u8) -> libc::c_int;
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
From 564742fb9c94f9b8e7f6ad4ec34fd2254c337a09 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:34:59 -0500
|
||||
Subject: [PATCH 07/10] mk/install: use disable-rewrite-paths
|
||||
|
||||
This stops the install scripts from doing work we've already handled.
|
||||
|
||||
Path rewriting is only useful for prepackaged binary installers.
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index cabc97a..273bb0e 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.5.1
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From 24fc19c57309b0c23c34f22b87796bb8aee4efa7 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 12:09:36 -0400
|
||||
Subject: [PATCH 08/10] install: disable ldconfig
|
||||
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index 273bb0e..58cfc99 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
From ffacbea82a7e03fadc05d31313e2bbd3e10388fb Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Tue, 7 Jul 2015 14:57:42 -0400
|
||||
Subject: [PATCH 09/10] Remove crate metadata from symbol hashing
|
||||
|
||||
---
|
||||
src/librustc_trans/back/link.rs | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 25dd2e6..d203d07 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -206,11 +206,6 @@ fn symbol_hash<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||
symbol_hasher.reset();
|
||||
symbol_hasher.input_str(&link_meta.crate_name);
|
||||
symbol_hasher.input_str("-");
|
||||
- symbol_hasher.input_str(link_meta.crate_hash.as_str());
|
||||
- for meta in tcx.sess.crate_metadata.borrow().iter() {
|
||||
- symbol_hasher.input_str(&meta[..]);
|
||||
- }
|
||||
- symbol_hasher.input_str("-");
|
||||
symbol_hasher.input_str(&encoder::encoded_ty(tcx, t));
|
||||
// Prefix with 'h' so that it never blends into adjacent digits
|
||||
let mut hash = String::from("h");
|
||||
--
|
||||
2.5.1
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
From 053afad02e46b0cb62569018f07f7430ebf9afc5 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 26 Aug 2015 11:21:36 -0400
|
||||
Subject: [PATCH 10/10] mk: tell rustc that we're only looking for native libs
|
||||
in the LLVM_LIBDIR
|
||||
|
||||
This fixes the case where we try to re-build & re-install rust to the
|
||||
same prefix (without uninstalling) while using an llvm-root that is the
|
||||
same as the prefix.
|
||||
|
||||
Without this, builds like that fail with:
|
||||
'error: multiple dylib candidates for `std` found'
|
||||
|
||||
See https://github.com/jmesmon/meta-rust/issues/6 for some details.
|
||||
|
||||
May also be related to #20342.
|
||||
---
|
||||
mk/main.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 6782bed..63b4fef 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -294,7 +294,7 @@ LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version)
|
||||
LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir)
|
||||
LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir)
|
||||
LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir)
|
||||
-LLVM_LIBDIR_RUSTFLAGS_$(1)=-L "$$(LLVM_LIBDIR_$(1))"
|
||||
+LLVM_LIBDIR_RUSTFLAGS_$(1)=-L native="$$(LLVM_LIBDIR_$(1))"
|
||||
LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
|
||||
ifeq ($$(findstring freebsd,$(1)),freebsd)
|
||||
# On FreeBSD, it may search wrong headers (that are for pre-installed LLVM),
|
||||
--
|
||||
2.5.1
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From 237f665afaf7ec35f067ede4c09a013e86ad12c4 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 1/8] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 8a5e58c..e2c3d8f 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
From 221ff5acf7b3b176882908d2f7010784614005e8 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 01:40:21 -0500
|
||||
Subject: [PATCH 2/8] Target: add default target.json path:
|
||||
$libdir/rust/targets
|
||||
|
||||
---
|
||||
src/librustc/session/config.rs | 6 +++---
|
||||
src/librustc/session/mod.rs | 8 ++++++--
|
||||
src/librustc_back/target/mod.rs | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index c6ce3a2..51152c7 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -38,7 +38,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -651,8 +651,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 6b5f587..4432440 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -381,14 +381,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> Session {
|
||||
- let host = match Target::search(config::host_triple()) {
|
||||
+ let sysroot = match sopts.maybe_sysroot {
|
||||
+ Some(ref x) => PathBuf::from(x),
|
||||
+ None => filesearch::get_or_default_sysroot()
|
||||
+ };
|
||||
+ let host = match Target::search(&sysroot, config::host_triple()) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
span_diagnostic.handler()
|
||||
.fatal(&format!("Error loading host specification: {}", e));
|
||||
}
|
||||
};
|
||||
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
|
||||
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
|
||||
let p_s = parse::ParseSess::with_span_handler(span_diagnostic);
|
||||
let default_sysroot = match sopts.maybe_sysroot {
|
||||
Some(_) => None,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index 402fbcd..a211b84 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -306,12 +308,13 @@ impl Target {
|
||||
///
|
||||
/// The error string could come from any of the APIs called, including
|
||||
/// filesystem access and JSON decoding.
|
||||
- pub fn search(target: &str) -> Result<Target, String> {
|
||||
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use serialize::json;
|
||||
+ use std::iter::IntoIterator;
|
||||
|
||||
fn load_file(path: &Path) -> Result<Target, String> {
|
||||
let mut f = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -400,9 +403,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.unwrap_or(OsString::new());
|
||||
|
||||
- // FIXME 16351: add a sane default search path?
|
||||
+ let mut default_path = sysroot.to_owned();
|
||||
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
|
||||
+ default_path.push("rustlib");
|
||||
|
||||
- for dir in env::split_paths(&target_path) {
|
||||
+ let paths = env::split_paths(&target_path)
|
||||
+ .chain(Some(default_path).into_iter());
|
||||
+
|
||||
+ for dir in paths {
|
||||
let p = dir.join(&path);
|
||||
if p.is_file() {
|
||||
return load_file(&p);
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
From 057d6be30ff1437a53132175720c96fa93826a08 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 14:52:56 -0500
|
||||
Subject: [PATCH 3/8] mk: for stage0, use RUSTFLAGS to override target libs dir
|
||||
|
||||
Setting HLIB specially for stage0 (and even more specially for windows)
|
||||
also affects the location we place TLIB. To keep the TLIBs we build in
|
||||
the place requested by configure, use '-L' and '--sysroot' to point
|
||||
stage0-rustc at the appropriate location.
|
||||
---
|
||||
mk/main.mk | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 3926119..165afc3 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -370,21 +370,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
|
||||
+# Don't trust stage0, be explicit about libraries
|
||||
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
|
||||
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
|
||||
+# passing the '-L' options.
|
||||
+ifeq ($(1),0)
|
||||
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
|
||||
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
|
||||
+endif
|
||||
+
|
||||
# Preqrequisites for using the stageN compiler
|
||||
ifeq ($(1),0)
|
||||
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
|
||||
@@ -496,6 +497,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -504,6 +506,7 @@ PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
endef
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
From af95f47a39a91a3e4a58b1df6c48bc4e010520c6 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 13:48:14 -0500
|
||||
Subject: [PATCH 4/8] mk: add missing CFG_LIBDIR_RELATIVE
|
||||
|
||||
---
|
||||
mk/grammar.mk | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mk/grammar.mk b/mk/grammar.mk
|
||||
index d9c66e2..585206d 100644
|
||||
--- a/mk/grammar.mk
|
||||
+++ b/mk/grammar.mk
|
||||
@@ -11,8 +11,8 @@
|
||||
BG = $(CFG_BUILD_DIR)/grammar/
|
||||
SG = $(S)src/grammar/
|
||||
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
|
||||
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
|
||||
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
|
||||
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
|
||||
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
|
||||
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
|
||||
ifeq ($(CFG_OSTYPE),apple-darwin)
|
||||
FLEX_LDFLAGS=-ll
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+362
@@ -0,0 +1,362 @@
|
||||
From 64dcf50a8a0f3aaf37ec6e4fe6143d0832592c05 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 24 Nov 2014 13:10:15 -0500
|
||||
Subject: [PATCH 5/8] configure: support --bindir, and extend libdir to
|
||||
non-blessed dirs
|
||||
|
||||
Adds --bindir, and:
|
||||
|
||||
Allows --bindir and --libdir to have multiple elements in their paths
|
||||
relative to sysroot, and allows libdir to end in an arbitrary directory
|
||||
(previously it was limited to lib, lib32, and lib64).
|
||||
|
||||
Note that this assumes absolute paths start with '/', which may break
|
||||
windows platforms
|
||||
---
|
||||
configure | 49 ++++++++++++++++------
|
||||
mk/host.mk | 6 ++-
|
||||
mk/main.mk | 11 +++++
|
||||
mk/perf.mk | 4 +-
|
||||
mk/prepare.mk | 4 +-
|
||||
src/librustc/metadata/filesearch.rs | 84 ++++++++++++++-----------------------
|
||||
src/librustc_trans/back/link.rs | 3 +-
|
||||
7 files changed, 90 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 891f524..441793c 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -323,6 +323,31 @@ envopt() {
|
||||
fi
|
||||
}
|
||||
|
||||
+abspath () {
|
||||
+ case "$1" in
|
||||
+ /*) echo "$1" ;;
|
||||
+ *) echo "$PWD/$1" ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+relpath () {
|
||||
+ local src=$(abspath "$1")
|
||||
+ local dst=$(abspath "$2")
|
||||
+ local common=$src
|
||||
+ local result=
|
||||
+
|
||||
+ # Start by checking if the whole src is common, then strip off pack
|
||||
+ # components until we find the common element.
|
||||
+ while [ "${dst#"$common"}" = "$dst" ]; do
|
||||
+ common=$(dirname "$common")
|
||||
+ result="../$result"
|
||||
+ done
|
||||
+
|
||||
+ local down="${dst#"$common"}"
|
||||
+ result="${result}${down#/}"
|
||||
+ echo "$result"
|
||||
+}
|
||||
+
|
||||
to_llvm_triple() {
|
||||
case $1 in
|
||||
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
|
||||
@@ -609,6 +634,8 @@ putvar CFG_BUILD # Yes, this creates a duplicate entry, but the last one wins.
|
||||
CFG_HOST=$(to_llvm_triple $CFG_HOST)
|
||||
CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
|
||||
+CFG_LIBDIR_RELATIVE=lib
|
||||
+
|
||||
# On windows we just store the libraries in the bin directory because
|
||||
# there's no rpath. This is where the build system itself puts libraries;
|
||||
# --libdir is used to configure the installation directory.
|
||||
@@ -616,24 +643,21 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
|
||||
then
|
||||
CFG_LIBDIR_RELATIVE=bin
|
||||
-else
|
||||
- CFG_LIBDIR_RELATIVE=lib
|
||||
fi
|
||||
|
||||
-valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
|
||||
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
|
||||
|
||||
-case "$CFG_LIBDIR" in
|
||||
- "$CFG_PREFIX"/*) CAT_INC=2;;
|
||||
- "$CFG_PREFIX"*) CAT_INC=1;;
|
||||
- *)
|
||||
- err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
|
||||
-esac
|
||||
+CFG_BINDIR_RELATIVE=bin
|
||||
+valopt bindir "${CFG_PREFIX}/${CFG_BINDIR_RELATIVE}" "install binaries"
|
||||
|
||||
-CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
|
||||
+# Determine libdir and bindir relative to prefix
|
||||
+step_msg "calculating relative paths to prefix = ${CFG_PREFIX}"
|
||||
+CFG_BINDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_BINDIR}")
|
||||
+CFG_LIBDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_LIBDIR}")
|
||||
|
||||
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
|
||||
- && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
|
||||
- err "libdir on windows should be set to 'bin'"
|
||||
+ && [ "$CFG_LIBDIR_RELATIVE" != "$CFG_BINDIR_RELATIVE" ]; then
|
||||
+ err "Windows builds currently require that LIBDIR == BINDIR (we have libdir{$CFG_LIBDIR_RELATIVE} != bindir{$CFG_BINDIR_RELATIVE} )"
|
||||
fi
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
@@ -1588,6 +1612,7 @@ putvar CFG_PREFIX
|
||||
putvar CFG_HOST
|
||||
putvar CFG_TARGET
|
||||
putvar CFG_LIBDIR_RELATIVE
|
||||
+putvar CFG_BINDIR_RELATIVE
|
||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||
putvar CFG_ANDROID_CROSS_PATH
|
||||
putvar CFG_MANDIR
|
||||
diff --git a/mk/host.mk b/mk/host.mk
|
||||
index 59a0095..b8e8345 100644
|
||||
--- a/mk/host.mk
|
||||
+++ b/mk/host.mk
|
||||
@@ -59,9 +59,13 @@ endef
|
||||
# $(4) - the host triple (same as $(3))
|
||||
define CP_HOST_STAGE_N
|
||||
|
||||
-ifneq ($(CFG_LIBDIR_RELATIVE),bin)
|
||||
$$(HLIB$(2)_H_$(4))/:
|
||||
@mkdir -p $$@
|
||||
+
|
||||
+# Avoid redefinition warnings if libdir==bindir
|
||||
+ifneq ($(HBIN$(2)_H_$(4)),$(HLIB$(2)_H_$(4)))
|
||||
+$$(HBIN$(2)_H_$(4))/:
|
||||
+ @mkdir -p $$@
|
||||
endif
|
||||
|
||||
endef
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 165afc3..33f9545 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -339,7 +339,9 @@ export CFG_RELEASE_CHANNEL
|
||||
export CFG_LLVM_ROOT
|
||||
export CFG_PREFIX
|
||||
export CFG_LIBDIR
|
||||
+export CFG_BINDIR
|
||||
export CFG_LIBDIR_RELATIVE
|
||||
+export CFG_BINDIR_RELATIVE
|
||||
export CFG_DISABLE_INJECT_STD_VERSION
|
||||
ifdef CFG_DISABLE_UNSTABLE_FEATURES
|
||||
CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES))
|
||||
@@ -369,7 +371,16 @@ define SREQ
|
||||
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
+
|
||||
+ifeq ($(1)-$(3),0-$$(CFG_BUILD))
|
||||
+# stage0 relative paths are fixed so we can bootstrap from snapshots
|
||||
+# (downloaded snapshots drop their rustc in HROOT/bin)
|
||||
+# libdir discrepancy is worked around with RUSTFLAGS below.
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
+else
|
||||
+HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_BINDIR_RELATIVE)
|
||||
+endif
|
||||
+
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
diff --git a/mk/perf.mk b/mk/perf.mk
|
||||
index 16cbaab..f8a354c 100644
|
||||
--- a/mk/perf.mk
|
||||
+++ b/mk/perf.mk
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
|
||||
ifdef CFG_PERF_TOOL
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
@$(call E, perf compile: $@)
|
||||
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
|
||||
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
|
||||
$(Q)rm -f $(LIBRUSTC_GLOB)
|
||||
else
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
$(Q)touch $@
|
||||
endif
|
||||
|
||||
diff --git a/mk/prepare.mk b/mk/prepare.mk
|
||||
index fe619cc..b8aa0cb 100644
|
||||
--- a/mk/prepare.mk
|
||||
+++ b/mk/prepare.mk
|
||||
@@ -186,10 +186,10 @@ INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\
|
||||
define DEF_PREPARE
|
||||
|
||||
prepare-base-$(1): PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE)
|
||||
-prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_MAN_DIR=$$(S)/man
|
||||
-prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
|
||||
prepare-base-$(1): prepare-everything-$(1)
|
||||
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
|
||||
index 311ab1c..1b03b1a 100644
|
||||
--- a/src/librustc/metadata/filesearch.rs
|
||||
+++ b/src/librustc/metadata/filesearch.rs
|
||||
@@ -68,8 +68,7 @@ impl<'a> FileSearch<'a> {
|
||||
if !found {
|
||||
let rustpath = rust_path();
|
||||
for path in &rustpath {
|
||||
- let tlib_path = make_rustpkg_lib_path(
|
||||
- self.sysroot, path, self.triple);
|
||||
+ let tlib_path = make_rustpkg_lib_path(path, self.triple);
|
||||
debug!("is {} in visited_dirs? {}", tlib_path.display(),
|
||||
visited_dirs.contains(&tlib_path));
|
||||
|
||||
@@ -96,7 +95,7 @@ impl<'a> FileSearch<'a> {
|
||||
where F: FnMut(&Path, PathKind) -> FileMatch
|
||||
{
|
||||
self.for_each_lib_search_path(|lib_search_path, kind| {
|
||||
- debug!("searching {}", lib_search_path.display());
|
||||
+ info!("searching {}", lib_search_path.display());
|
||||
match fs::read_dir(lib_search_path) {
|
||||
Ok(files) => {
|
||||
let files = files.filter_map(|p| p.ok().map(|s| s.path()))
|
||||
@@ -157,7 +156,7 @@ impl<'a> FileSearch<'a> {
|
||||
// Returns a list of directories where target-specific tool binaries are located.
|
||||
pub fn get_tools_search_paths(&self) -> Vec<PathBuf> {
|
||||
let mut p = PathBuf::from(self.sysroot);
|
||||
- p.push(&find_libdir(self.sysroot));
|
||||
+ p.push(libdir_str());
|
||||
p.push(&rustlibdir());
|
||||
p.push(&self.triple);
|
||||
p.push("bin");
|
||||
@@ -165,8 +164,8 @@ impl<'a> FileSearch<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf {
|
||||
- let mut p = PathBuf::from(&find_libdir(sysroot));
|
||||
+pub fn relative_target_lib_path(target_triple: &str) -> PathBuf {
|
||||
+ let mut p = PathBuf::from(&libdir_str());
|
||||
assert!(p.is_relative());
|
||||
p.push(&rustlibdir());
|
||||
p.push(target_triple);
|
||||
@@ -176,17 +175,28 @@ pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf
|
||||
|
||||
fn make_target_lib_path(sysroot: &Path,
|
||||
target_triple: &str) -> PathBuf {
|
||||
- sysroot.join(&relative_target_lib_path(sysroot, target_triple))
|
||||
+ sysroot.join(&relative_target_lib_path(target_triple))
|
||||
}
|
||||
|
||||
-fn make_rustpkg_lib_path(sysroot: &Path,
|
||||
- dir: &Path,
|
||||
+fn make_rustpkg_lib_path(dir: &Path,
|
||||
triple: &str) -> PathBuf {
|
||||
- let mut p = dir.join(&find_libdir(sysroot));
|
||||
+ let mut p = dir.join(libdir_str());
|
||||
p.push(triple);
|
||||
p
|
||||
}
|
||||
|
||||
+pub fn bindir_relative_str() -> &'static str {
|
||||
+ env!("CFG_BINDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
+pub fn bindir_relative_path() -> PathBuf {
|
||||
+ PathBuf::from(bindir_relative_str())
|
||||
+}
|
||||
+
|
||||
+pub fn libdir_str() -> &'static str {
|
||||
+ env!("CFG_LIBDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
pub fn get_or_default_sysroot() -> PathBuf {
|
||||
// Follow symlinks. If the resolved path is relative, make it absolute.
|
||||
fn canonicalize(path: Option<PathBuf>) -> Option<PathBuf> {
|
||||
@@ -202,7 +212,18 @@ pub fn get_or_default_sysroot() -> PathBuf {
|
||||
}
|
||||
|
||||
match canonicalize(env::current_exe().ok()) {
|
||||
- Some(mut p) => { p.pop(); p.pop(); p }
|
||||
+ Some(mut p) => {
|
||||
+ // Remove the exe name
|
||||
+ p.pop();
|
||||
+ let mut rel = bindir_relative_path();
|
||||
+
|
||||
+ // Remove a number of elements equal to the number of elements in the bindir relative
|
||||
+ // path
|
||||
+ while rel.pop() {
|
||||
+ p.pop();
|
||||
+ }
|
||||
+ p
|
||||
+ }
|
||||
None => panic!("can't determine value for sysroot")
|
||||
}
|
||||
}
|
||||
@@ -257,47 +278,6 @@ pub fn rust_path() -> Vec<PathBuf> {
|
||||
env_rust_path
|
||||
}
|
||||
|
||||
-// The name of the directory rustc expects libraries to be located.
|
||||
-// On Unix should be "lib", on windows "bin"
|
||||
-#[cfg(unix)]
|
||||
-fn find_libdir(sysroot: &Path) -> String {
|
||||
- // FIXME: This is a quick hack to make the rustc binary able to locate
|
||||
- // Rust libraries in Linux environments where libraries might be installed
|
||||
- // to lib64/lib32. This would be more foolproof by basing the sysroot off
|
||||
- // of the directory where librustc is located, rather than where the rustc
|
||||
- // binary is.
|
||||
- //If --libdir is set during configuration to the value other than
|
||||
- // "lib" (i.e. non-default), this value is used (see issue #16552).
|
||||
-
|
||||
- match option_env!("CFG_LIBDIR_RELATIVE") {
|
||||
- Some(libdir) if libdir != "lib" => return libdir.to_string(),
|
||||
- _ => if sysroot.join(&primary_libdir_name()).join(&rustlibdir()).exists() {
|
||||
- return primary_libdir_name();
|
||||
- } else {
|
||||
- return secondary_libdir_name();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "64")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib64".to_string()
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "32")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib32".to_string()
|
||||
- }
|
||||
-
|
||||
- fn secondary_libdir_name() -> String {
|
||||
- "lib".to_string()
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-#[cfg(windows)]
|
||||
-fn find_libdir(_sysroot: &Path) -> String {
|
||||
- "bin".to_string()
|
||||
-}
|
||||
-
|
||||
// The name of rustc's own place to organize libraries.
|
||||
// Used to be "rustc", now the default is "rustlib"
|
||||
pub fn rustlibdir() -> String {
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 6b8b59d..6e03f3c 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -997,11 +997,10 @@ fn link_args(cmd: &mut Linker,
|
||||
// where extern libraries might live, based on the
|
||||
// addl_lib_search_paths
|
||||
if sess.opts.cg.rpath {
|
||||
- let sysroot = sess.sysroot();
|
||||
let target_triple = &sess.opts.target_triple;
|
||||
let mut get_install_prefix_lib_path = || {
|
||||
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
|
||||
- let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
|
||||
+ let tlib = filesearch::relative_target_lib_path(target_triple);
|
||||
let mut path = PathBuf::from(install_prefix);
|
||||
path.push(&tlib);
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
From fb56f1fa6d0bdc62f7fd0c480446255698dc1635 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Dec 2014 19:15:19 -0500
|
||||
Subject: [PATCH 6/8] std/thread_local: workaround for NULL __dso_handle
|
||||
|
||||
---
|
||||
src/libstd/thread/local.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
|
||||
index 6056334..e79bd8b 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -337,7 +337,7 @@ mod imp {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const ();
|
||||
}
|
||||
- if !__cxa_thread_atexit_impl.is_null() {
|
||||
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
|
||||
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
|
||||
arg: *mut u8,
|
||||
dso_handle: *mut u8) -> libc::c_int;
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
From de01acf6395a4c7f7d5c9d7ba251d9f2af570127 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:34:59 -0500
|
||||
Subject: [PATCH 7/8] mk/install: use disable-rewrite-paths
|
||||
|
||||
This stops the install scripts from doing work we've already handled.
|
||||
|
||||
Path rewriting is only useful for prepackaged binary installers.
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index cabc97a..273bb0e 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
From 8b87c3e5a7181f828dee1c8c0598b1bafa9dd4cc Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 12:09:36 -0400
|
||||
Subject: [PATCH 8/8] install: disable ldconfig
|
||||
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index 273bb0e..58cfc99 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:27:49 -0500
|
||||
Subject: [PATCH] add option to disable rewriting of install paths
|
||||
|
||||
This is intended for use by rust & cargo's `make install`, as in that
|
||||
case:
|
||||
|
||||
- these paths are typically built into the pre-install layout already
|
||||
- attempting to do the replacement will be incorrect subdirectory
|
||||
cases (ie: libdir=lib/foo)
|
||||
---
|
||||
install-template.sh | 21 ++++++++++++---------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/install-template.sh b/install-template.sh
|
||||
index 042b955..4ecf430 100644
|
||||
--- a/install-template.sh
|
||||
+++ b/install-template.sh
|
||||
@@ -618,16 +618,18 @@ install_components() {
|
||||
# Decide the destination of the file
|
||||
local _file_install_path="$_dest_prefix/$_file"
|
||||
|
||||
- if echo "$_file" | grep "^lib/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
- _file_install_path="$CFG_LIBDIR/$_f"
|
||||
- fi
|
||||
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
|
||||
+ if echo "$_file" | grep "^lib/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
+ _file_install_path="$CFG_LIBDIR/$_f"
|
||||
+ fi
|
||||
|
||||
- if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
- _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
+ _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ fi
|
||||
fi
|
||||
|
||||
# Make sure there's a directory for it
|
||||
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
|
||||
opt ldconfig 1 "run ldconfig after installation (Linux only)"
|
||||
opt verify 1 "obsolete"
|
||||
flag verbose "run with verbose output"
|
||||
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
then
|
||||
--
|
||||
2.4.1
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
SRC_URI[rust.md5sum] = "ffb3971cc96eccaf2de202f621fd415f"
|
||||
SRC_URI[rust.sha256sum] = "ea02d7bc9e7de5b8be3fe6b37ea9b2bd823f9a532c8e4c47d02f37f24ffa3126"
|
||||
|
||||
## snapshot info taken from rust/src/snapshots.txt
|
||||
## TODO: find a way to add aditional SRC_URIs based on the contents of an
|
||||
## earlier SRC_URI.
|
||||
RS_DATE = "2015-07-26"
|
||||
RS_SRCHASH = "a5c12f4"
|
||||
# linux-x86_64
|
||||
RS_ARCH = "linux-x86_64"
|
||||
RS_HASH = "e451e3bd6e5fcef71e41ae6f3da9fb1cf0e13a0c"
|
||||
RUST_SNAPSHOT = "rust-stage0-${RS_DATE}-${RS_SRCHASH}-${RS_ARCH}-${RS_HASH}.tar.bz2"
|
||||
|
||||
SRC_URI[rust-snapshot.md5sum] = "8f804ec5cebf370c59563a2b35a808cb"
|
||||
SRC_URI[rust-snapshot.sha256sum] = "779943595dd63d6869c747e2a31c13095f9c5354d4530327d6f9310cc580c2ff"
|
||||
@@ -0,0 +1,7 @@
|
||||
SRC_URI = "\
|
||||
gitsm://github.com/rust-lang/rust.git;protocol=https \
|
||||
"
|
||||
S = "${WORKDIR}/git"
|
||||
PV .= "+git${SRCPV}"
|
||||
require rust.inc
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
SUMMARY = "LLVM compiler framework (packaged with rust)"
|
||||
LICENSE = "NCSA"
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}/src/llvm"
|
||||
|
||||
inherit autotools
|
||||
|
||||
EXTRA_OECONF += "--enable-targets=x86,x86_64,arm,aarch64,mips,powerpc"
|
||||
EXTRA_OECONF += "--enable-optimized"
|
||||
EXTRA_OECONF += "--disable-assertions"
|
||||
EXTRA_OECONF += "--disable-docs"
|
||||
EXTRA_OECONF += "--enable-bindings=none"
|
||||
EXTRA_OECONF += "--enable-keep-symbols"
|
||||
|
||||
do_install_append () {
|
||||
cd ${D}${bindir}
|
||||
ln -s *-llc llc
|
||||
for i in *-llvm-*; do
|
||||
link=$(echo $i | sed -e 's/.*-llvm-\(.*\)/\1/')
|
||||
ln -s $i llvm-$link
|
||||
done
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -0,0 +1,5 @@
|
||||
require rust-release.inc
|
||||
require rust-${PV}.inc
|
||||
require rust-llvm.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
|
||||
@@ -0,0 +1,6 @@
|
||||
SRC_URI = "\
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
@@ -0,0 +1,417 @@
|
||||
inherit rust
|
||||
inherit rust-installer
|
||||
|
||||
SUMMARY = "Rust compiler and runtime libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
B = "${WORKDIR}/build"
|
||||
|
||||
DEPENDS += "rust-llvm"
|
||||
|
||||
# Avoid having the default bitbake.conf disable sub-make parallelization
|
||||
EXTRA_OEMAKE = ""
|
||||
|
||||
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=b1ab5514343f97198b323e33779470a3"
|
||||
|
||||
PACKAGECONFIG ??= ""
|
||||
|
||||
# Controls whether we use the local rust to build.
|
||||
# By default, we use the rust-snapshot. In some cases (non-supported host
|
||||
# systems) this may not be possible. In other cases, it might be desirable
|
||||
# to have rust-cross built using rust-native.
|
||||
PACKAGECONFIG[local-rust] = ""
|
||||
|
||||
SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'local-rust', '', 'https://static.rust-lang.org/stage0-snapshots/${RUST_SNAPSHOT};unpack=0;name=rust-snapshot', d)}"
|
||||
|
||||
# We generate local targets, and need to be able to locate them
|
||||
export RUST_TARGET_PATH="${WORKDIR}/targets/"
|
||||
|
||||
## arm-unknown-linux-gnueabihf
|
||||
DATA_LAYOUT[arm] = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32"
|
||||
LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[arm] = "little"
|
||||
TARGET_POINTER_WIDTH[arm] = "32"
|
||||
FEATURES[arm] = "+v6,+vfp2"
|
||||
PRE_LINK_ARGS[arm] = "-Wl,--as-needed"
|
||||
|
||||
## x86_64-unknown-linux-gnu
|
||||
DATA_LAYOUT[x86_64] = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
||||
LLVM_TARGET[x86_64] = "x86_64-unknown-linux-gnu"
|
||||
TARGET_ENDIAN[x86_64] = "little"
|
||||
TARGET_POINTER_WIDTH[x86_64] = "64"
|
||||
PRE_LINK_ARGS[x86_64] = "-Wl,--as-needed -m64"
|
||||
|
||||
## i686-unknown-linux-gnu
|
||||
DATA_LAYOUT[i686] = "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32"
|
||||
LLVM_TARGET[i686] = "i686-unknown-linux-gnu"
|
||||
TARGET_ENDIAN[i686] = "little"
|
||||
TARGET_POINTER_WIDTH[i686] = "32"
|
||||
PRE_LINK_ARGS[i686] = "-Wl,--as-needed -m32"
|
||||
|
||||
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-gnu above
|
||||
DATA_LAYOUT[i586] = "e-p:32:32-f64:32:64-i64:32:64-f80:32:32-n8:16:32"
|
||||
LLVM_TARGET[i586] = "i586-unknown-linux-gnu"
|
||||
TARGET_ENDIAN[i586] = "little"
|
||||
TARGET_POINTER_WIDTH[i586] = "32"
|
||||
PRE_LINK_ARGS[i586] = "-Wl,--as-needed -m32"
|
||||
|
||||
# enable-new-dtags causes rpaths to be inserted as DT_RUNPATH (as well as
|
||||
# DT_RPATH), which lets LD_LIBRARY_PATH override them
|
||||
RPATH_LDFLAGS = "-Wl,--enable-new-dtags"
|
||||
TARGET_PRE_LINK_ARGS = "${RPATH_LDFLAGS} ${TARGET_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
|
||||
BUILD_PRE_LINK_ARGS = "${RPATH_LDFLAGS} ${BUILD_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
|
||||
HOST_PRE_LINK_ARGS = "${RPATH_LDFLAGS} ${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
|
||||
|
||||
# These LDFLAGS have '-L' options in them. We need these to come last so they
|
||||
# don't screw up the link order and pull in the wrong rust build/version.
|
||||
# TODO: may want to strip out all the '-L' flags entirely here
|
||||
TARGET_POST_LINK_ARGS = "${TARGET_LDFLAGS}"
|
||||
BUILD_POST_LINK_ARGS = "${BUILD_LDFLAGS}"
|
||||
HOST_POST_LINK_ARGS = "${HOST_LDFLAGS}"
|
||||
|
||||
def arch_for(d, thing):
|
||||
return d.getVar('{}_ARCH'.format(thing), True)
|
||||
|
||||
def sys_for(d, thing):
|
||||
return d.getVar('{}_SYS'.format(thing), True)
|
||||
|
||||
def prefix_for(d, thing):
|
||||
return d.getVar('{}_PREFIX'.format(thing), True)
|
||||
|
||||
## Note: TOOLCHAIN_OPTIONS is set to "" by native.bbclass and cross.bbclass,
|
||||
## which prevents us from grabbing them when building a cross compiler (native doesn't matter).
|
||||
## We workaround this in internal-rust-cross.bbclass.
|
||||
def cflags_for(d, thing):
|
||||
cc_arch = d.getVar('{}_CC_ARCH'.format(thing), True) or ""
|
||||
flags = d.getVar('{}_CFLAGS'.format(thing), True) or ""
|
||||
tc = d.getVar('TOOLCHAIN_OPTIONS', True) or ""
|
||||
return ' '.join([cc_arch, flags, tc])
|
||||
|
||||
def cxxflags_for(d, thing):
|
||||
cc_arch = d.getVar('{}_CC_ARCH'.format(thing), True) or ""
|
||||
flags = d.getVar('{}_CXXFLAGS'.format(thing), True) or ""
|
||||
tc = d.getVar('TOOLCHAIN_OPTIONS', True) or ""
|
||||
return ' '.join([cc_arch, flags, tc])
|
||||
|
||||
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
|
||||
# rust's internals won't choke on.
|
||||
def arch_to_rust_target_arch(arch):
|
||||
if arch == "i586" or arch == "i686":
|
||||
return "x86"
|
||||
else:
|
||||
return arch
|
||||
|
||||
def as_json(list_):
|
||||
a = '['
|
||||
for e in list_:
|
||||
if type(e) == str:
|
||||
a += '"{}",'.format(e)
|
||||
else:
|
||||
raise Exception
|
||||
if len(list_):
|
||||
a = a[:-1]
|
||||
a += ']'
|
||||
return a
|
||||
|
||||
def post_link_args_for(d, thing, arch):
|
||||
post_link_args = (d.getVar('{}_POST_LINK_ARGS'.format(thing), True) or "").split()
|
||||
post_link_args.extend((d.getVarFlag('POST_LINK_ARGS', arch, True) or "").split())
|
||||
return post_link_args
|
||||
|
||||
def pre_link_args_for(d, thing, arch):
|
||||
ldflags = (d.getVar('{}_PRE_LINK_ARGS'.format(thing), True) or "").split()
|
||||
ldflags.extend((d.getVarFlag('PRE_LINK_ARGS', arch, True) or "").split())
|
||||
return ldflags
|
||||
|
||||
def ldflags_for(d, thing, arch):
|
||||
a = pre_link_args_for(d, thing, arch)
|
||||
a.extend(post_link_args_for(d, thing, arch))
|
||||
return a
|
||||
|
||||
def rust_gen_target(d, thing, wd):
|
||||
arch = arch_for(d, thing)
|
||||
sys = sys_for(d, thing)
|
||||
prefix = prefix_for(d, thing)
|
||||
o = open(wd + sys + '.json', 'w')
|
||||
|
||||
data_layout = d.getVarFlag('DATA_LAYOUT', arch, True)
|
||||
if not data_layout:
|
||||
bb.utils.fatal("DATA_LAYOUT[{}] required but not set for {}".format(arch, thing))
|
||||
llvm_target = d.getVarFlag('LLVM_TARGET', arch, True)
|
||||
target_pointer_width = d.getVarFlag('TARGET_POINTER_WIDTH', arch, True)
|
||||
endian = d.getVarFlag('TARGET_ENDIAN', arch, True)
|
||||
prefix = d.getVar('{}_PREFIX'.format(thing), True)
|
||||
ccache = d.getVar('CCACHE', True)
|
||||
linker = "{}{}gcc".format(ccache, prefix)
|
||||
features = d.getVarFlag('FEATURES', arch, True) or ""
|
||||
|
||||
pre_link_args = pre_link_args_for(d, thing, arch)
|
||||
post_link_args = post_link_args_for(d, thing, arch)
|
||||
|
||||
o.write('''{{
|
||||
"data-layout": "{}",
|
||||
"llvm-target": "{}",
|
||||
"target-endian": "{}",
|
||||
"target-word-size": "{}",
|
||||
"target-pointer-width": "{}",
|
||||
"arch": "{}",
|
||||
"os": "linux",
|
||||
"linker": "{}",
|
||||
"features": "{}",
|
||||
"dynamic-linking": true,
|
||||
"executables": true,
|
||||
"morestack": true,
|
||||
"linker-is-gnu": true,
|
||||
"has-rpath": true,
|
||||
"position-independent-executables": true,
|
||||
"pre-link-args": {},
|
||||
"post-link-args": {}
|
||||
}}'''.format(
|
||||
data_layout,
|
||||
llvm_target,
|
||||
endian,
|
||||
target_pointer_width,
|
||||
target_pointer_width,
|
||||
arch_to_rust_target_arch(arch),
|
||||
linker,
|
||||
features,
|
||||
as_json(pre_link_args),
|
||||
as_json(post_link_args),
|
||||
))
|
||||
o.close()
|
||||
|
||||
python do_rust_gen_targets () {
|
||||
wd = d.getVar('WORKDIR', True) + '/targets/'
|
||||
try:
|
||||
os.makedirs(wd)
|
||||
except OSError as e:
|
||||
if e.errno != 17:
|
||||
raise e
|
||||
for thing in ['BUILD', 'HOST', 'TARGET']:
|
||||
bb.debug(1, "rust_gen_target for " + thing)
|
||||
rust_gen_target(d, thing, wd)
|
||||
}
|
||||
addtask rust_gen_targets after do_patch before do_compile
|
||||
|
||||
def rust_gen_mk_cfg(d, thing):
|
||||
''''
|
||||
Rust's build system adds support for new archs via 2 things:
|
||||
1. a file in mk/cfg which defines how the runtime libraries are built
|
||||
2. and rustc arch definition either built into the compiler or supplied as a .json file
|
||||
|
||||
This generates a new #1 for the given 'thing' (one of HOST, TARGET, BUILD)
|
||||
using a "similar" config that rust already supplies as a template.
|
||||
|
||||
Note that the configure process also depends on the existence of #1, so we
|
||||
have to run this before do_configure
|
||||
'''
|
||||
|
||||
import shutil, subprocess
|
||||
rust_base_sys = rust_base_triple(d, thing)
|
||||
arch = arch_for(d, thing)
|
||||
sys = sys_for(d, thing)
|
||||
prefix = prefix_for(d, thing)
|
||||
llvm_target = d.getVarFlag('LLVM_TARGET', arch, True)
|
||||
ldflags = ' '.join(ldflags_for(d, thing, arch))
|
||||
|
||||
p = d.getVar('S', True) + '/mk/cfg/'
|
||||
|
||||
o = open(p + sys_for(d, thing) + '.mk', 'w')
|
||||
i = open(p + rust_base_sys + '.mk', 'r')
|
||||
|
||||
r = subprocess.call(['sed',
|
||||
# update all triplets to the new one
|
||||
'-e', 's/{}/{}/g'.format(rust_base_sys, sys),
|
||||
|
||||
# Replace tools with our own (CROSS_PREFIX is appended to all tools
|
||||
# by rust's build system). We delete and then insert this because not
|
||||
# all targets define it.
|
||||
'-e', 's/^CROSS_PREFIX_{}.*$//'.format(sys),
|
||||
'-e', '2 a CROSS_PREFIX_{} := {}'.format(sys, prefix),
|
||||
'-e', 's/^CFG_LLVM_TARGET_.*$//',
|
||||
'-e', '2 a CFG_LLVM_TARGET_{} := {}'.format(sys, llvm_target),
|
||||
'-e', 's/^CC_{}=.*$/CC_{} := gcc/'.format(sys, sys),
|
||||
'-e', 's/^CXX_{}.*$/CXX_{} := g++/'.format(sys, sys),
|
||||
'-e', 's/^CPP_{}.*$/CPP_{} := gcc -E/'.format(sys, sys),
|
||||
'-e', 's/^AR_{}.*$/AR_{} := ar/'.format(sys, sys),
|
||||
|
||||
# Some targets don't have LINK even though it is required to build.
|
||||
'-e', 's/^LINK_{}.*$//'.format(sys),
|
||||
'-e', '2 a LINK_{} := gcc'.format(sys),
|
||||
|
||||
# Append our flags to the existing ones
|
||||
'-e', '/^CFG_JEMALLOC_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
|
||||
'-e', '/^CFG_GCCISH_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
|
||||
'-e', '/^CFG_GCCISH_CXXFLAGS/ s;$; {};'.format(cxxflags_for(d, thing)),
|
||||
'-e', '/^CFG_GCCISH_LINK_FLAGS/ s;$; {};'.format(ldflags),
|
||||
|
||||
# May need to add: CFG_LLC_FLAGS_{}
|
||||
], stdout=o, stdin=i)
|
||||
if r:
|
||||
raise Exception
|
||||
|
||||
python do_rust_arch_fixup () {
|
||||
for thing in ['BUILD', 'HOST', 'TARGET']:
|
||||
bb.debug(1, "rust_gen_mk_cfg for " + thing)
|
||||
rust_gen_mk_cfg(d, thing)
|
||||
}
|
||||
addtask rust_arch_fixup before do_configure after do_patch
|
||||
do_rust_arch_fixup[dirs] = "${S}/mk/cfg"
|
||||
|
||||
llvmdir = "${STAGING_DIR_NATIVE}/${prefix_native}"
|
||||
|
||||
do_configure () {
|
||||
# FIXME: target_prefix vs prefix, see cross.bbclass
|
||||
|
||||
# CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
|
||||
# wide range of targets (not just HOST). Yocto's settings for them will
|
||||
# be inappropriate, avoid using.
|
||||
unset CFLAGS
|
||||
unset LDFLAGS
|
||||
unset CXXFLAGS
|
||||
unset CPPFLAGS
|
||||
|
||||
# FIXME: this path to rustc (via `which rustc`) may not be quite right in the case
|
||||
# where we're reinstalling the compiler. May want to try for a real
|
||||
# path based on bitbake vars
|
||||
# Also will be wrong when relative libdir and/or bindir aren't 'bin' and 'lib'.
|
||||
local_maybe_enable=disable
|
||||
local_rust_root=/not/set/do/not/use
|
||||
if which rustc >/dev/null 2>&1; then
|
||||
local_rustc=$(which rustc)
|
||||
if [ -n "$local_rustc" ]; then
|
||||
local_rust_root=$(dirname $(dirname $local_rustc))
|
||||
if [ -e "$local_rust_root/bin/rustc" ]; then
|
||||
local_maybe_enable=enable
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# - rpath is required otherwise rustc fails to resolve symbols
|
||||
# - submodule management is done by bitbake's fetching
|
||||
${S}/configure \
|
||||
"--enable-rpath" \
|
||||
"--disable-docs" \
|
||||
"--disable-manage-submodules" \
|
||||
"--disable-debug" \
|
||||
"--enable-debuginfo" \
|
||||
"--enable-optimize" \
|
||||
"--enable-optimize-cxx" \
|
||||
"--disable-llvm-version-check" \
|
||||
"--llvm-root=${llvmdir}" \
|
||||
"--enable-optimize-tests" \
|
||||
"--prefix=${prefix}" \
|
||||
"--target=${TARGET_SYS}" \
|
||||
"--host=${HOST_SYS}" \
|
||||
"--build=${BUILD_SYS}" \
|
||||
"--localstatedir=${localstatedir}" \
|
||||
"--sysconfdir=${sysconfdir}" \
|
||||
"--datadir=${datadir}" \
|
||||
"--infodir=${infodir}" \
|
||||
"--mandir=${mandir}" \
|
||||
"--libdir=${libdir}" \
|
||||
"--bindir=${bindir}" \
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'local-rust', '--$local_maybe_enable-local-rust --local-rust-root=$local_rust_root', '--local-rust-root=/not/a/dir', d)} \
|
||||
${EXTRA_OECONF}
|
||||
}
|
||||
|
||||
rust_runmake () {
|
||||
echo "COMPILE ${PN}" "$@"
|
||||
env
|
||||
|
||||
# CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
|
||||
# wide range of targets (not just TARGET). Yocto's settings for them will
|
||||
# be inappropriate, avoid using.
|
||||
unset CFLAGS
|
||||
unset LDFLAGS
|
||||
unset CXXFLAGS
|
||||
unset CPPFLAGS
|
||||
|
||||
oe_runmake "VERBOSE=1" "$@"
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
if ${@bb.utils.contains('PACKAGECONFIG', 'local-rust', 'false', 'true', d)}; then
|
||||
mkdir -p dl
|
||||
cp -f ${WORKDIR}/${RUST_SNAPSHOT} dl
|
||||
fi
|
||||
rust_runmake
|
||||
}
|
||||
|
||||
rust_do_install () {
|
||||
rust_runmake DESTDIR="${D}" install
|
||||
|
||||
# Rust's install.sh doesn't mark executables as executable because
|
||||
# we're using a custom bindir, do it ourselves.
|
||||
chmod +x "${D}/${bindir}/rustc"
|
||||
chmod +x "${D}/${bindir}/rustdoc"
|
||||
chmod +x "${D}/${bindir}/rust-gdb"
|
||||
|
||||
# Install our custom target.json files
|
||||
local td="${D}${libdir}/rustlib/"
|
||||
install -d "$td"
|
||||
for tgt in "${WORKDIR}/targets/"* ; do
|
||||
install -m 0644 "$tgt" "$td"
|
||||
done
|
||||
|
||||
## rust will complain about multiple providers of the runtime libs
|
||||
## (libstd, libsync, etc.) without this.
|
||||
(cd "${D}${libdir}" && ln -sf "rustlib/${HOST_SYS}/lib/lib"*.so .)
|
||||
}
|
||||
|
||||
do_install () {
|
||||
rust_do_install
|
||||
}
|
||||
|
||||
## {{{ native bits
|
||||
|
||||
# Otherwise we'll depend on what we provide
|
||||
INHIBIT_DEFAULT_RUST_DEPS_class-native = "1"
|
||||
# We don't need to depend on gcc-native because yocto assumes it exists
|
||||
PROVIDES_class-native = "virtual/${TARGET_PREFIX}rust"
|
||||
|
||||
## }}}
|
||||
|
||||
## {{{ cross bits
|
||||
|
||||
# Otherwise we'll depend on what we provide
|
||||
INHIBIT_DEFAULT_RUST_DEPS_class-cross = "1"
|
||||
|
||||
# Unlike native (which nicely maps it's DEPENDS) cross wipes them out completely.
|
||||
# Generally, we (and cross in general) need the same things that native needs,
|
||||
# so it might make sense to take it's mapping. For now, though, we just mention
|
||||
# the bits we need explicitly.
|
||||
DEPENDS_class-cross += "${@bb.utils.contains('PACKAGECONFIG', 'local-rust', 'rust-native', '', d)}"
|
||||
DEPENDS_class-cross += "rust-llvm-native"
|
||||
DEPENDS_class-cross += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
|
||||
|
||||
PROVIDES_class-cross = "virtual/${TARGET_PREFIX}rust"
|
||||
PN_class-cross = "rust-cross-${TARGET_ARCH}"
|
||||
|
||||
# In the cross compilation case, rustc doesn't seem to get the rpath quite
|
||||
# right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
|
||||
# include the '../../lib' (ie: relative path from cross_bindir to normal
|
||||
# libdir. As a result, we end up not being able to properly reference files in normal ${libdir}.
|
||||
# Most of the time this happens to work fine as the systems libraries are
|
||||
# subsituted, but sometimes a host system will lack a library, or the right
|
||||
# version of a library (libtinfo was how I noticed this).
|
||||
#
|
||||
# FIXME: this should really be fixed in rust itself.
|
||||
# FIXME: using hard-coded relative paths is wrong, we should ask bitbake for
|
||||
# the relative path between 2 of it's vars.
|
||||
HOST_POST_LINK_ARGS_append_class-cross = " -Wl,-rpath=../../lib"
|
||||
BUILD_POST_LINK_ARGS_append_class-cross = " -Wl,-rpath=../../lib"
|
||||
|
||||
# We need the same thing for the calls to the compiler when building the runtime crap
|
||||
TARGET_CC_ARCH_append_class-cross = " --sysroot=${STAGING_DIR_TARGET}"
|
||||
|
||||
# cross.bbclass is "helpful" and overrides our do_install. Tell it not to.
|
||||
do_install_class-cross () {
|
||||
rust_do_install
|
||||
}
|
||||
|
||||
## }}}
|
||||
|
||||
BBCLASSEXTEND = "cross native"
|
||||
@@ -0,0 +1,20 @@
|
||||
require rust-release.inc
|
||||
require rust.inc
|
||||
require rust-${PV}.inc
|
||||
|
||||
# "patch-prefix"
|
||||
PP = "rust-${PV}"
|
||||
SRC_URI_append = "\
|
||||
file://${PP}/0001-platform.mk-avoid-choking-on-i586.patch \
|
||||
file://${PP}/0002-Target-add-default-target.json-path-libdir-rust-targ.patch \
|
||||
file://${PP}/0003-mk-for-stage0-use-RUSTFLAGS-to-override-target-libs-.patch \
|
||||
file://${PP}/0004-mk-add-missing-CFG_LIBDIR_RELATIVE.patch \
|
||||
file://${PP}/0005-configure-support-bindir-and-extend-libdir-to-non-bl.patch \
|
||||
file://${PP}/0006-std-thread_local-workaround-for-NULL-__dso_handle.patch \
|
||||
file://${PP}/0007-mk-install-use-disable-rewrite-paths.patch \
|
||||
file://${PP}/0008-install-disable-ldconfig.patch \
|
||||
file://${PP}/0009-Remove-crate-metadata-from-symbol-hashing.patch \
|
||||
file://${PP}/0010-mk-tell-rustc-that-we-re-only-looking-for-native-lib.patch \
|
||||
\
|
||||
file://rust-installer/0001-add-option-to-disable-rewriting-of-install-paths.patch;patchdir=src/rust-installer \
|
||||
"
|
||||
@@ -0,0 +1,29 @@
|
||||
# 2015-06-26
|
||||
SRCREV = "378a370ff2057afeb1eae86eb6e78c476866a4a6"
|
||||
require rust-git.inc
|
||||
|
||||
RS_DATE = "2015-05-24"
|
||||
RS_SRCHASH = "ba0e1cd"
|
||||
# linux-x86_64
|
||||
RS_HASH = "5fd8698fdfe953e6c4d86cf4fa1d5f3a0053248c"
|
||||
RUST_SNAPSHOT = "rust-stage0-${RS_DATE}-${RS_SRCHASH}-linux-x86_64-${RS_HASH}.tar.bz2"
|
||||
|
||||
SRC_URI[rust-snapshot.md5sum] = "e0d49475a787aaa9481ec0b1a28d1f7a"
|
||||
SRC_URI[rust-snapshot.sha256sum] = "e7858a90c2c6c35299ebe2cb6425f3f84d0ba171dcbce20ff68295a1ff75c7e5"
|
||||
|
||||
# "patch-prefix"
|
||||
PP = "rust-git"
|
||||
SRC_URI_append = "\
|
||||
file://${PP}/0001-platform.mk-avoid-choking-on-i586.patch \
|
||||
file://${PP}/0002-Target-add-default-target.json-path-libdir-rust-targ.patch \
|
||||
file://${PP}/0003-mk-for-stage0-use-RUSTFLAGS-to-override-target-libs-.patch \
|
||||
file://${PP}/0004-mk-add-missing-CFG_LIBDIR_RELATIVE.patch \
|
||||
file://${PP}/0005-configure-support-bindir-and-extend-libdir-to-non-bl.patch \
|
||||
file://${PP}/0006-std-thread_local-workaround-for-NULL-__dso_handle.patch \
|
||||
file://${PP}/0007-mk-install-use-disable-rewrite-paths.patch \
|
||||
file://${PP}/0008-install-disable-ldconfig.patch \
|
||||
\
|
||||
file://rust-installer/0001-add-option-to-disable-rewriting-of-install-paths.patch;patchdir=src/rust-installer \
|
||||
"
|
||||
|
||||
DEFAULT_PREFERENCE = "-1"
|
||||
@@ -0,0 +1,24 @@
|
||||
SUMMARY = "Rust runtime libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
DEPENDS += "virtual/${TARGET_PREFIX}rust"
|
||||
RUSTLIB_DEP = ""
|
||||
|
||||
do_install () {
|
||||
for f in ${STAGING_DIR_NATIVE}/${rustlib}/*.so; do
|
||||
echo Installing $f
|
||||
install -D -m 755 $f ${D}/${rustlib}/$(basename $f)
|
||||
done
|
||||
}
|
||||
|
||||
# This has no license file
|
||||
python do_qa_configure() {
|
||||
return True
|
||||
}
|
||||
|
||||
FILES_${PN} += "${rustlib}/*.so"
|
||||
FILES_${PN}-dbg += "${rustlib}/.debug"
|
||||
Reference in New Issue
Block a user