install libraries with rustc

- remove now unneeded MAKE_ENV option to pass --sysroot argument to bootstrapper
- backport the latest changes for building rustc under openbsd
- switch the install from installing a stage3 rustc binary to installing a stage2 rustc binary (and all required libraries)

ok juanfra@
This commit is contained in:
semarie 2016-01-13 07:39:07 +00:00
parent d026dd690d
commit a7ac139c37
9 changed files with 120 additions and 104 deletions

View File

@ -1,4 +1,4 @@
# $OpenBSD: Makefile,v 1.12 2015/12/10 17:53:57 semarie Exp $
# $OpenBSD: Makefile,v 1.13 2016/01/13 07:39:07 semarie Exp $
# snapshots are only available for amd64, for now
ONLY_FOR_ARCHS = amd64
@ -10,6 +10,7 @@ COMMENT-doc = html documentation for rustc
V = 1.5.0
RUST_HASH = 35c36e89
DISTNAME = rustc-${V}-src
REVISION = 0
SUBST_VARS += RUST_HASH
@ -68,12 +69,9 @@ LIBESTDC_VERSION = 17.0
# RUSTFLAGS extra flags passed to rust
# -L modgcc-libs : disambiguate libestdc++.so
# -Z print-link-args : unhide link call
# RUSTFLAGS_STAGE0 extra flags passed to stage0
# --sysroot force sysroot (due to limitation of us bootstrapper)
# RUST_LOG helper
MAKE_ENV = VERBOSE=1 \
RUSTFLAGS="-L ${WRKDIR}/modgcc-libs -Z print-link-args" \
RUSTFLAGS_STAGE0="--sysroot ${WRKBUILD}/${TRIPLE_ARCH}/stage0" \
RUST_LOG="${RUST_LOG}"
@ -97,9 +95,7 @@ USE_LIBTOOL = gnu
CONFIGURE_ARGS += --llvm-root="${LOCAL_LLVM_FOR_RUST}"
.endif
ALL_TARGET += rustc-stage3 \
${TRIPLE_ARCH}/stage3/bin/rustdoc \
docs
ALL_TARGET += rustc-stage2 docs
TEST_TARGET = check
TEST_ENV += ALLOW_NONZERO_RLIMIT_CORE=1
TEST_DEPENDS += devel/git
@ -129,34 +125,14 @@ post-configure:
cp ${WRKDIR}/rust-stage0/lib/lib*.so* \
${WRKBUILD}/${TRIPLE_ARCH}/stage0/lib
# do-install: don't use the default install target
do-install:
# host binary
${INSTALL_PROGRAM_DIR} ${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/bin
${INSTALL_PROGRAM} ${WRKBUILD}/${TRIPLE_ARCH}/stage3/bin/rustc \
post-install:
# cleanup
rm ${PREFIX}/lib/rustlib/{install.log,uninstall.sh,rust-installer-version}
# host binary wrapper
${INSTALL_PROGRAM_DIR} \
${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/bin
mv ${PREFIX}/bin/rustc ${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/bin
${SUBST_PROGRAM} -c \
files/rustc ${PREFIX}/bin/rustc
${INSTALL_PROGRAM} ${WRKBUILD}/${TRIPLE_ARCH}/stage3/bin/rustdoc \
${PREFIX}/bin/rustdoc
# data
${INSTALL_DATA} \
${WRKSRC}/man/{rustc,rustdoc}.1 \
${PREFIX}/man/man1
${INSTALL_DATA_DIR} ${PREFIX}/share/doc/rust
${INSTALL_DATA} ${WRKSRC}/{COPYRIGHT,LICENSE-APACHE,LICENSE-MIT,README.md} \
${PREFIX}/share/doc/rust
# target libraries
${INSTALL_DATA_DIR} ${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/lib
${INSTALL_DATA} \
${WRKBUILD}/${TRIPLE_ARCH}/stage3/lib/rustlib/${TRIPLE_ARCH}/lib/lib* \
${PREFIX}/lib/rustlib/${TRIPLE_ARCH}/lib
# html documentation
cp -R ${WRKBUILD}/doc ${PREFIX}/share/doc/rust/html
chmod -R a+rX ${PREFIX}/share/doc/rust/html
.include <bsd.port.mk>

View File

@ -1,9 +1,9 @@
$OpenBSD: patch-configure,v 1.4 2015/09/22 08:11:24 semarie Exp $
$OpenBSD: patch-configure,v 1.5 2016/01/13 07:39:08 semarie Exp $
Remove requirement for curl or wget.
The snapshot isn't downloaded but copied by post-configure.
--- configure.orig Tue Aug 4 21:28:47 2015
+++ configure Fri Aug 7 06:37:54 2015
@@ -696,7 +696,7 @@ putvar CFG_BOOTSTRAP_KEY
--- configure.orig Fri Dec 4 21:18:59 2015
+++ configure Tue Dec 15 06:46:14 2015
@@ -721,7 +721,7 @@ putvar CFG_BOOTSTRAP_KEY
step_msg "looking for build programs"

View File

@ -0,0 +1,9 @@
$OpenBSD: patch-mk_cfg_x86_64-unknown-openbsd_mk,v 1.1 2016/01/13 07:39:08 semarie Exp $
https://github.com/rust-lang/rust/pull/29794
--- mk/cfg/x86_64-unknown-openbsd.mk.orig Sat Jan 9 08:59:36 2016
+++ mk/cfg/x86_64-unknown-openbsd.mk Sat Jan 9 09:00:04 2016
@@ -20,3 +20,4 @@ CFG_LDPATH_x86_64-unknown-openbsd :=
CFG_RUN_x86_64-unknown-openbsd=$(2)
CFG_RUN_TARG_x86_64-unknown-openbsd=$(call CFG_RUN_x86_64-unknown-openbsd,,$(2))
CFG_GNU_TRIPLE_x86_64-unknown-openbsd := x86_64-unknown-openbsd
+RUSTC_FLAGS_x86_64-unknown-openbsd=-C linker=$(call FIND_COMPILER,$(CC))

View File

@ -1,20 +1,19 @@
$OpenBSD: patch-mk_platform_mk,v 1.1 2015/12/10 17:53:57 semarie Exp $
Remove possible conflict between system-llvm and rustc-llvm
$OpenBSD: patch-mk_platform_mk,v 1.2 2016/01/13 07:39:08 semarie Exp $
https://github.com/rust-lang/rust/pull/29794
--- mk/platform.mk.orig Fri Dec 4 21:18:59 2015
+++ mk/platform.mk Wed Dec 9 10:06:55 2015
@@ -211,9 +211,11 @@ define CFG_MAKE_TOOLCHAIN
# On OpenBSD, we need to pass the path of libstdc++.so to the linker
# (use path of libstdc++.a which is a known name for the same path)
ifeq ($(OSTYPE_$(1)),unknown-openbsd)
--- mk/platform.mk.orig Sat Jan 9 09:59:06 2016
+++ mk/platform.mk Sat Jan 9 09:59:13 2016
@@ -208,14 +208,6 @@ define CFG_MAKE_TOOLCHAIN
ifeq ($$(findstring $(HOST_$(1)),arm aarch64 mips mipsel powerpc),)
- # On OpenBSD, we need to pass the path of libstdc++.so to the linker
- # (use path of libstdc++.a which is a known name for the same path)
- ifeq ($(OSTYPE_$(1)),unknown-openbsd)
- RUSTC_FLAGS_$(1)=-L "$$(dir $$(shell $$(CC_$(1)) $$(CFG_GCCISH_CFLAGS_$(1)) \
- -print-file-name=lib$(CFG_STDCPP_NAME).a))" \
- $(RUSTC_FLAGS_$(1))
+ STDCPP_LIBDIR_RUSTFLAGS_$(1)= \
+ -L "$$(dir $$(shell $$(CC_$(1)) $$(CFG_GCCISH_CFLAGS_$(1)) \
+ -print-file-name=lib$(CFG_STDCPP_NAME).a))"
+ else
+ STDCPP_LIBDIR_RUSTFLAGS_$(1)=
endif
- endif
-
# On Bitrig, we need the relocation model to be PIC for everything
ifeq (,$(filter $(OSTYPE_$(1)),bitrig))
LLVM_MC_RELOCATION_MODEL="pic"

View File

@ -1,24 +0,0 @@
$OpenBSD: patch-mk_target_mk,v 1.1 2015/12/10 17:53:57 semarie Exp $
Remove possible conflict between system-llvm and rustc-llvm
https://github.com/rust-lang/rust/pull/29794
--- mk/target.mk.orig Fri Dec 4 21:18:59 2015
+++ mk/target.mk Wed Dec 9 10:06:55 2015
@@ -95,6 +95,7 @@ $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$(4): \
$$(RUSTFLAGS_$(4)) \
$$(RUSTFLAGS$(1)_$(4)) \
$$(RUSTFLAGS$(1)_$(4)_T_$(2)) \
+ $$(STDCPP_LIBDIR_RUSTFLAGS_$(2)) \
--out-dir $$(@D) \
-C extra-filename=-$$(CFG_FILENAME_EXTRA) \
$$<
@@ -128,7 +129,9 @@ $$(TBIN$(1)_T_$(2)_H_$(3))/$(4)$$(X_$(2)): \
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
| $$(TBIN$(1)_T_$(2)_H_$(3))/
@$$(call E, rustc: $$@)
- $$(STAGE$(1)_T_$(2)_H_$(3)) -o $$@ $$< --cfg $(4)
+ $$(STAGE$(1)_T_$(2)_H_$(3)) \
+ $$(STDCPP_LIBDIR_RUSTFLAGS_$(2)) \
+ -o $$@ $$< --cfg $(4)
endef

View File

@ -1,27 +0,0 @@
$OpenBSD: patch-mk_tests_mk,v 1.1 2015/12/10 17:53:57 semarie Exp $
Remove possible conflict between system-llvm and rustc-llvm
https://github.com/rust-lang/rust/pull/29794
--- mk/tests.mk.orig Fri Dec 4 21:18:59 2015
+++ mk/tests.mk Wed Dec 9 10:06:55 2015
@@ -391,7 +391,8 @@ $(3)/stage$(1)/test/$(4)test-$(2)$$(X_$(2)): \
$$(subst @,,$$(STAGE$(1)_T_$(2)_H_$(3))) -o $$@ $$< --test \
-L "$$(RT_OUTPUT_DIR_$(2))" \
$$(LLVM_LIBDIR_RUSTFLAGS_$(2)) \
- $$(RUSTFLAGS_$(4))
+ $$(RUSTFLAGS_$(4)) \
+ $$(STDCPP_LIBDIR_RUSTFLAGS_$(2))
endef
@@ -661,9 +662,9 @@ CTEST_COMMON_ARGS$(1)-T-$(2)-H-$(3) := \
--android-cross-path=$(CFG_ANDROID_CROSS_PATH) \
--adb-path=$(CFG_ADB) \
--adb-test-dir=$(CFG_ADB_TEST_DIR) \
- --host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3))" \
+ --host-rustcflags "$(RUSTC_FLAGS_$(3)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(3)) $$(STDCPP_LIBDIR_RUSTFLAGS_$(3))" \
--lldb-python-dir=$(CFG_LLDB_PYTHON_DIR) \
- --target-rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(2))" \
+ --target-rustcflags "$(RUSTC_FLAGS_$(2)) $$(CTEST_RUSTC_FLAGS) -L $$(RT_OUTPUT_DIR_$(2)) $$(STDCPP_LIBDIR_RUSTFLAGS_$(2))" \
$$(CTEST_TESTARGS)
ifdef CFG_VALGRIND_RPASS

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-src_etc_rust-gdb,v 1.1 2016/01/13 07:39:08 semarie Exp $
only compatible with egdb (gdb from ports)
--- src/etc/rust-gdb.orig Sat Dec 12 07:12:56 2015
+++ src/etc/rust-gdb Sat Dec 12 07:13:44 2015
@@ -17,7 +17,7 @@ RUSTC_SYSROOT=`rustc --print=sysroot`
GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
# Run GDB with the additional arguments that load the pretty printers
-PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" gdb \
+PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" egdb \
-d "$GDB_PYTHON_MODULE_DIRECTORY" \
-iex "add-auto-load-safe-path $GDB_PYTHON_MODULE_DIRECTORY" \
"$@"

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-src_test_run-make_tools_mk,v 1.1 2016/01/13 07:39:08 semarie Exp $
https://github.com/rust-lang/rust/pull/29794
--- src/test/run-make/tools.mk.orig Sat Jan 9 09:02:08 2016
+++ src/test/run-make/tools.mk Sat Jan 9 09:02:26 2016
@@ -85,11 +85,7 @@ ifeq ($(UNAME),Bitrig)
else
ifeq ($(UNAME),OpenBSD)
EXTRACFLAGS := -lm -lpthread
- # extend search lib for found estdc++ if build using gcc from
- # ports under OpenBSD. This is needed for:
- # - run-make/execution-engine
- # - run-make/issue-19371
- RUSTC := $(RUSTC) -L/usr/local/lib
+ RUSTC := $(RUSTC) -C linker="$(word 1,$(CC:ccache=))"
else
EXTRACFLAGS := -lm -lrt -ldl -lpthread
EXTRACXXFLAGS := -lstdc++

View File

@ -1,7 +1,43 @@
@comment $OpenBSD: PLIST-main,v 1.3 2015/11/02 12:44:24 semarie Exp $
@comment $OpenBSD: PLIST-main,v 1.4 2016/01/13 07:39:08 semarie Exp $
bin/rust-gdb
bin/rustc
@bin bin/rustdoc
lib/libarena-${RUST_HASH}.so
lib/libflate-${RUST_HASH}.so
lib/libfmt_macros-${RUST_HASH}.so
lib/libgetopts-${RUST_HASH}.so
lib/libgraphviz-${RUST_HASH}.so
lib/liblog-${RUST_HASH}.so
lib/librbml-${RUST_HASH}.so
lib/librustc-${RUST_HASH}.so
lib/librustc_back-${RUST_HASH}.so
lib/librustc_borrowck-${RUST_HASH}.so
lib/librustc_data_structures-${RUST_HASH}.so
lib/librustc_driver-${RUST_HASH}.so
lib/librustc_front-${RUST_HASH}.so
lib/librustc_lint-${RUST_HASH}.so
lib/librustc_llvm-${RUST_HASH}.so
lib/librustc_mir-${RUST_HASH}.so
lib/librustc_platform_intrinsics-${RUST_HASH}.so
lib/librustc_privacy-${RUST_HASH}.so
lib/librustc_resolve-${RUST_HASH}.so
lib/librustc_trans-${RUST_HASH}.so
lib/librustc_typeck-${RUST_HASH}.so
lib/librustdoc-${RUST_HASH}.so
lib/libserialize-${RUST_HASH}.so
lib/libstd-${RUST_HASH}.so
lib/libsyntax-${RUST_HASH}.so
lib/libterm-${RUST_HASH}.so
lib/libtest-${RUST_HASH}.so
lib/rustlib/
lib/rustlib/components
lib/rustlib/etc/
lib/rustlib/etc/debugger_pretty_printers_common.py
lib/rustlib/etc/gdb_load_rust_pretty_printers.py
lib/rustlib/etc/gdb_rust_pretty_printing.py
lib/rustlib/manifest-rust-docs
lib/rustlib/manifest-rust-std-${TRIPLE_ARCH}
lib/rustlib/manifest-rustc
lib/rustlib/${TRIPLE_ARCH}/
lib/rustlib/${TRIPLE_ARCH}/bin/
@bin lib/rustlib/${TRIPLE_ARCH}/bin/rustc
@ -15,6 +51,7 @@ lib/rustlib/${TRIPLE_ARCH}/lib/libcompiler-rt.a
lib/rustlib/${TRIPLE_ARCH}/lib/libcore-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libflate-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libflate-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libfmt_macros-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libgetopts-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libgetopts-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libgraphviz-${RUST_HASH}.rlib
@ -25,12 +62,28 @@ lib/rustlib/${TRIPLE_ARCH}/lib/liblog-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librand-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/librbml-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/librbml-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_back-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_bitflags-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_borrowck-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_data_structures-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_driver-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_front-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_lint-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_llvm-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_mir-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_platform_intrinsics-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_privacy-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_resolve-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_trans-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_typeck-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/librustc_unicode-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/librustdoc-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libserialize-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libserialize-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libstd-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libstd-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libsyntax-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libterm-${RUST_HASH}.rlib
lib/rustlib/${TRIPLE_ARCH}/lib/libterm-${RUST_HASH}.so
lib/rustlib/${TRIPLE_ARCH}/lib/libtest-${RUST_HASH}.rlib