Rework support for downloading the stage0 rustc

Rust does something fairly different than in 1.7.  Instead of just
expecting the tarball to exist, it either expects an already extracted
and ready toolchain, or else it does everything itself.

To work with that, we'll always pass --use-local-rust to ./configure so
that bootstrap.py doesn't try to download anything.  We'll either
download and setup a snapshot ourselves, or use the system rust, based
on PACKAGECONFIG[local-rust] as before
This commit is contained in:
Steven Walter
2016-08-27 13:31:55 -04:00
parent b708837c7c
commit 3d0fab8860
3 changed files with 24 additions and 26 deletions
@@ -1,14 +0,0 @@
## snapshot info taken from rust/src/snapshots.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_DATE = "2015-12-18"
RS_SRCHASH = "3391630"
# linux-x86_64
RS_ARCH = "linux-x86_64"
RS_HASH = "97e2a5eb8904962df8596e95d6e5d9b574d73bf4"
RUST_SNAPSHOT = "rust-stage0-${RS_DATE}-${RS_SRCHASH}-${RS_ARCH}-${RS_HASH}.tar.bz2"
SRC_URI[rust-snapshot.md5sum] = "5c29eb06c8b6ce6ff52f544f31efabe1"
SRC_URI[rust-snapshot.sha256sum] = "a8dc5203673ce43f47316beb02ee0c427edb7bbde2ab5fc662a06b52db2950e7"
@@ -0,0 +1,13 @@
## snapshot info taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_DATE = "2016-05-24"
RS_VERSION = "1.9.0"
RS_ARCH = "x86_64-unknown-linux-gnu"
RUST_SNAPSHOT = "rustc-${RS_VERSION}-${RS_ARCH}.tar.gz"
RUST_SNAPSHOT_URI = "https://static.rust-lang.org/dist/${RS_DATE}/${RUST_SNAPSHOT}"
SRC_URI[rust-snapshot.md5sum] = "f1cf6d2fe15e4be18a08259f1540a4ae"
SRC_URI[rust-snapshot.sha256sum] = "d0704d10237c66c3efafa6f7e5570c59a1d3fe5c6d99487540f90ebb37cd84c4"
+11 -12
View File
@@ -2,7 +2,7 @@
inherit rust
inherit rust-installer
require rust-shared-source.inc
require rust-snapshot-2015-12-18.inc
require rust-snapshot-2016-05-24.inc
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
@@ -25,7 +25,9 @@ PACKAGECONFIG ??= ""
# 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)}"
FETCH_STAGE0 = "${@bb.utils.contains('PACKAGECONFIG', 'local-rust', 'false', 'true', d)}"
SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'local-rust', '', '${RUST_SNAPSHOT_URI};unpack=0;name=rust-snapshot', d)}"
# We generate local targets, and need to be able to locate them
export RUST_TARGET_PATH="${WORKDIR}/targets/"
@@ -389,15 +391,16 @@ do_configure () {
# 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
if ${FETCH_STAGE0}; then
mkdir -p dl
tar -xf ${WORKDIR}/${RUST_SNAPSHOT} -C dl
./dl/rustc-${RS_VERSION}-${RS_ARCH}/install.sh --prefix=$PWD/dl
local_rust_root="$PWD/dl"
elif 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
@@ -426,7 +429,7 @@ do_configure () {
"--libdir=${libdir}" \
"--bindir=${bindir}" \
"--platform-cfg=${WORKDIR}/mk-cfg/" \
${@bb.utils.contains('PACKAGECONFIG', 'local-rust', '--$local_maybe_enable-local-rust --local-rust-root=$local_rust_root', '--local-rust-root=/not/a/dir', d)} \
"--enable-local-rust --local-rust-root=$local_rust_root" \
${EXTRA_OECONF}
}
@@ -446,10 +449,6 @@ rust_runmake () {
}
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
}