]> git.lizzy.rs Git - rust.git/commitdiff
mk: Fix bootstrapping cross-hosts on beta
authorAlex Crichton <alex@alexcrichton.com>
Mon, 23 May 2016 20:45:26 +0000 (13:45 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 24 May 2016 05:21:21 +0000 (22:21 -0700)
The beta builds are currently failing, unfortunately, due to what is presumably
some odd behavior with our makefiles. The wrong bootstrap key is being used to
generate the stage1 cross-compiled libraries, which fails the build.
Interestingly enough if the targets are directly specified as part of the build
then it works just fine! Just a bare `make` fails...

Instead of trying to understand what's happening in the makefiles instead just
tweak how we configure the bootstrap key in a way that's more likely to work.

mk/target.mk

index 37181b05438ffe4c00022a784edd0ef7cc27c7cb..2a08b7b0465343e39ed0dd753bdbc7a1cde02b07 100644 (file)
@@ -42,6 +42,23 @@ $(foreach host,$(CFG_HOST), \
    $(foreach crate,$(CRATES), \
     $(eval $(call RUST_CRATE_FULLDEPS,$(stage),$(target),$(host),$(crate)))))))
 
+# $(1) stage
+# $(2) target
+# $(3) host
+define DEFINE_BOOTSTRAP_KEY
+BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3) := $$(CFG_BOOTSTRAP_KEY)
+ifeq ($(1),0)
+ifeq ($(3),$$(CFG_BUILD))
+BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3) := $$(CFG_BOOTSTRAP_KEY_STAGE0)
+endif
+endif
+endef
+
+$(foreach host,$(CFG_TARGET), \
+ $(foreach target,$(CFG_TARGET), \
+  $(foreach stage,$(STAGES), \
+   $(eval $(call DEFINE_BOOTSTRAP_KEY,$(stage),$(target),$(host))))))
+
 # RUST_TARGET_STAGE_N template: This defines how target artifacts are built
 # for all stage/target architecture combinations. This is one giant rule which
 # works as follows:
@@ -65,12 +82,9 @@ $(foreach host,$(CFG_HOST), \
 # $(4) is the crate name
 define RUST_TARGET_STAGE_N
 
-ifeq ($(1),0)
-$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \
-       export RUSTC_BOOTSTRAP_KEY := $$(CFG_BOOTSTRAP_KEY_STAGE0)
-endif
-
 $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): CFG_COMPILER_HOST_TRIPLE = $(2)
+$$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \
+       export RUSTC_BOOTSTRAP_KEY := $$(BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3))
 $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \
                $$(CRATEFILE_$(4)) \
                $$(CRATE_FULLDEPS_$(1)_T_$(2)_H_$(3)_$(4)) \
@@ -118,11 +132,8 @@ endef
 # $(4) - name of the tool being built
 define TARGET_TOOL
 
-ifeq ($(1),0)
 $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \
-       export RUSTC_BOOTSTRAP_KEY := $$(CFG_BOOTSTRAP_KEY_STAGE0)
-endif
-
+       export RUSTC_BOOTSTRAP_KEY := $$(BOOTSTRAP_KEY$(1)_T_$(2)_H_$(3))
 $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \
                $$(TOOL_SOURCE_$(4)) \
                $$(TOOL_INPUTS_$(4)) \