[arch-commits] Commit in rust/trunk (3 files)

Johannes Löthberg demize at archlinux.org
Fri Jul 21 11:40:23 UTC 2017


    Date: Friday, July 21, 2017 @ 11:40:22
  Author: demize
Revision: 245924

upgpkg: rust 1:1.19.0-1

Added:
  rust/trunk/0001-librustc_llvm-build-Force-link-against-libffi.patch
  rust/trunk/bootstrap-config.toml
Modified:
  rust/trunk/PKGBUILD

----------------------------------------------------------+
 0001-librustc_llvm-build-Force-link-against-libffi.patch |   32 +++
 PKGBUILD                                                 |   30 +--
 bootstrap-config.toml                                    |  115 +++++++++++++
 3 files changed, 162 insertions(+), 15 deletions(-)

Added: 0001-librustc_llvm-build-Force-link-against-libffi.patch
===================================================================
--- 0001-librustc_llvm-build-Force-link-against-libffi.patch	                        (rev 0)
+++ 0001-librustc_llvm-build-Force-link-against-libffi.patch	2017-07-21 11:40:22 UTC (rev 245924)
@@ -0,0 +1,32 @@
+From 5dbc650a60ddb230f59e5a18ffd298b033566945 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Johannes=20L=C3=B6thberg?= <johannes at kyriasis.com>
+Date: Thu, 20 Jul 2017 23:07:01 +0200
+Subject: [PATCH] librustc_llvm/build: Force link against libffi
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+`llvm-config --libs` doesn't output libffi in many cases.  Fixing it
+turned out to take quite a bit of effort, so force libffi linking in
+here for now.
+
+Signed-off-by: Johannes Löthberg <johannes at kyriasis.com>
+---
+ src/librustc_llvm/build.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/librustc_llvm/build.rs b/src/librustc_llvm/build.rs
+index 3f0f536960..7dc0c40c9d 100644
+--- a/src/librustc_llvm/build.rs
++++ b/src/librustc_llvm/build.rs
+@@ -220,6 +220,7 @@ fn main() {
+         };
+         println!("cargo:rustc-link-lib={}={}", kind, name);
+     }
++    println!("cargo:rustc-link-lib=dylib=ffi");
+ 
+     // LLVM ldflags
+     //
+-- 
+2.13.3
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-07-21 11:38:22 UTC (rev 245923)
+++ PKGBUILD	2017-07-21 11:40:22 UTC (rev 245924)
@@ -6,7 +6,7 @@
 
 pkgname=('rust' 'rust-docs')
 epoch=1
-pkgver=1.18.0
+pkgver=1.19.0
 pkgrel=1
 
 pkgdesc='Systems programming language focused on safety, speed and concurrency'
@@ -18,25 +18,25 @@
 
 options=('!emptydirs')
 
-source=("https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.gz"{,.asc})
+source=("https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.gz"{,.asc}
+        0001-librustc_llvm-build-Force-link-against-libffi.patch
+        bootstrap-config.toml)
 
-sha256sums=('d2dc36e99b9e2269488b2bcddde43c234e6bde03edf70cba82a027ff49c36111'
-            'SKIP')
+sha256sums=('15231f5053fb72ad82be91f5abfd6aa60cb7898c5089e4f1ac5910a731090c51'
+            'SKIP'
+            '563529da8e02f575ddde7247d5fc5350d74031daa54743b86d075f3c45ae2713'
+            '8b25eaee73ad3f349300b6d2b752df5e54abaad0555953db1b294294c5a1a6c9')
 validpgpkeys=('108F66205EAEB0AAA8DD5E1C85AB96E6FA1BE5FE') # Rust Language (Tag and Release Signing Key) <rust-key at rust-lang.org>
 
-build() {
+prepare() {
   cd "rustc-$pkgver-src"
 
-  ./configure \
-    --prefix=/usr \
-    --release-channel=stable \
-    --llvm-root=/usr \
-    --enable-llvm-link-shared \
-    --disable-codegen-tests \
-    --jemalloc-root=/usr/lib \
-    --enable-local-rust
+  patch -p1 <"$srcdir"/0001-librustc_llvm-build-Force-link-against-libffi.patch
+  cp "$srcdir"/bootstrap-config.toml config.toml
+}
 
-  export RUSTFLAGS="$RUSTFLAGS -C link-args=-lffi"
+build() {
+  cd "rustc-$pkgver-src"
 
   msg2 "Run build under x.py"
   python2 ./x.py build
@@ -48,7 +48,7 @@
 
   cd "rustc-$pkgver-src"
 
-  make DESTDIR="$pkgdir" install
+  DESTDIR="$pkgdir" python2 ./x.py install
 
   for license in APACHE MIT; do install -Dm644 "LICENSE-$license" \
     "$pkgdir/usr/share/licenses/$pkgname/LICENSE-$license"; done

Added: bootstrap-config.toml
===================================================================
--- bootstrap-config.toml	                        (rev 0)
+++ bootstrap-config.toml	2017-07-21 11:40:22 UTC (rev 245924)
@@ -0,0 +1,115 @@
+# All options are commented out by default in this file, and they're commented
+# out with their default values. The build system by default looks for
+# `config.toml` in the current directory of a build for build configuration, but
+# a custom configuration file can also be specified with `--config` to the build
+# system.
+
+# =============================================================================
+# Tweaking how LLVM is compiled
+# =============================================================================
+[llvm]
+
+# Indicates whether ccache is used when building LLVM
+#ccache = false
+# or alternatively ...
+#ccache = "/path/to/ccache"
+
+# LLVM targets to build support for.
+# Note: this is NOT related to Rust compilation targets. However, as Rust is
+# dependent on LLVM for code generation, turning targets off here WILL lead to
+# the resulting rustc being unable to compile for the disabled architectures.
+# Also worth pointing out is that, in case support for new targets are added to
+# LLVM, enabling them here doesn't mean Rust is automatically gaining said
+# support. You'll need to write a target specification at least, and most
+# likely, teach rustc about the C ABI of the target. Get in touch with the
+# Rust team and file an issue if you need assistance in porting!
+#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX;Hexagon"
+
+# Cap the number of parallel linker invocations when compiling LLVM.
+# This can be useful when building LLVM with debug info, which significantly
+# increases the size of binaries and consequently the memory required by
+# each linker process.
+# If absent or 0, linker invocations are treated like any other job and
+# controlled by rustbuild's -j parameter.
+#link-jobs = 0
+
+# =============================================================================
+# General build configuration options
+# =============================================================================
+[build]
+
+# Instead of downloading the src/stage0.txt version of Cargo specified, use
+# this Cargo binary instead to build all Rust code
+cargo = "/usr/bin/cargo"
+
+# Instead of downloading the src/stage0.txt version of the compiler
+# specified, use this rustc binary instead as the stage0 snapshot compiler.
+rustc = "/usr/bin/rustc"
+
+# Python interpreter to use for various tasks throughout the build, notably
+# rustdoc tests, the lldb python interpreter, and some dist bits and pieces.
+# Note that Python 2 is currently required.
+python = "python2.7"
+
+# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose
+verbose = 1
+
+# Build the sanitizer runtimes
+#sanitizers = false
+
+# =============================================================================
+# General install configuration options
+# =============================================================================
+[install]
+
+# Instead of installing to /usr/local, install to this path instead.
+prefix = "/usr"
+
+# =============================================================================
+# Options for compiling Rust code itself
+# =============================================================================
+[rust]
+
+# Number of codegen units to use for each compiler invocation. A value of 0
+# means "the number of cores on this machine", and 1+ is passed through to the
+# compiler.
+codegen-units = 0
+
+# Whether or not debuginfo is emitted
+debuginfo = true
+
+# Whether or not line number debug information is emitted
+#debuginfo-lines = false
+
+# The "channel" for the Rust build to produce. The stable/beta channels only
+# allow using stable features, whereas the nightly and dev channels allow using
+# nightly features
+channel = "stable"
+
+# =============================================================================
+# Options for specific targets
+#
+# Each of the following options is scoped to the specific target triple in
+# question and is used for determining how to compile each target.
+# =============================================================================
+[target.x86_64-unknown-linux-gnu]
+
+# Path to the `llvm-config` binary of the installation of a custom LLVM to link
+# against. Note that if this is specifed we don't compile LLVM at all for this
+# target.
+llvm-config = "/usr/bin/llvm-config"
+
+# Path to the custom jemalloc static library to link into the standard library
+# by default. This is only used if jemalloc is still enabled above
+jemalloc = "/usr/lib/libjemalloc_pic.a"
+
+[target.i686-unknown-linux-gnu]
+
+# Path to the `llvm-config` binary of the installation of a custom LLVM to link
+# against. Note that if this is specifed we don't compile LLVM at all for this
+# target.
+llvm-config = "/usr/bin/llvm-config"
+
+# Path to the custom jemalloc static library to link into the standard library
+# by default. This is only used if jemalloc is still enabled above
+jemalloc = "/usr/lib/libjemalloc_pic.a"



More information about the arch-commits mailing list