From 2c12758fc11f0acffc29762ecda553a896cdb2abd12b05471942eaebbe0b7f9b Mon Sep 17 00:00:00 2001 From: Luke Jones Date: Wed, 22 Mar 2017 03:21:12 +0000 Subject: [PATCH] Accepting request 481900 from home:luke_nukem:branches:devel:languages:rust OBS-URL: https://build.opensuse.org/request/show/481900 OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rust?expand=0&rev=82 --- _constraints | 2 +- config.toml | 191 +++++++++------------------------------------------ rust.changes | 8 +++ rust.spec | 68 ++++++++---------- 4 files changed, 69 insertions(+), 200 deletions(-) diff --git a/_constraints b/_constraints index a42ffec..351ff62 100644 --- a/_constraints +++ b/_constraints @@ -3,7 +3,7 @@ 8 - 4 + 8 20 diff --git a/config.toml b/config.toml index 5e6b889..c3d702c 100644 --- a/config.toml +++ b/config.toml @@ -1,203 +1,76 @@ -# Sample TOML configuration file for building Rust. -# -# To configure rustbuild, copy this file to the directory from which you will be -# running the build, and name it config.toml. -# -# 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 the LLVM build is a Release or Debug build optimize = true - -# Indicates whether an LLVM Release build should include debug info release-debuginfo = false - -# Indicates whether the LLVM assertions are enabled or not #assertions = false - -# Indicates whether ccache is used when building LLVM -#ccache = false -# or alternatively ... -#ccache = "/path/to/ccache" - -# If an external LLVM root is specified, we automatically check the version by -# default to make sure it's within the range that we're expecting, but setting -# this flag will indicate that this version check should not be done. +ccache = true #version-check = false - -# Link libstdc++ statically into the librustc_llvm instead of relying on a -# dynamic version to be available. static-libstdcpp = false +ninja = true -# Tell the LLVM build system to use Ninja instead of the platform default for -# the generated build system. This can sometimes be faster than make, for -# example. -#ninja = false +targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX" # ============================================================================= # General build configuration options # ============================================================================= [build] +build = "" +host = [""] +target = [""] -# Build triple for the original snapshot compiler. This must be a compiler that -# nightlies are already produced for. The current platform must be able to run -# binaries of this build triple and the nightly will be used to bootstrap the -# first compiler. -#build = "x86_64-unknown-linux-gnu" # defaults to your host platform - -# In addition to the build triple, other triples to produce full compiler -# toolchains for. Each of these triples will be bootstrapped from the build -# triple and then will continue to bootstrap themselves. This platform must -# currently be able to run all of the triples provided here. -#host = ["x86_64-unknown-linux-gnu"] # defaults to just the build triple - -# In addition to all host triples, other triples to produce the standard library -# for. Each host triple will be used to produce a copy of the standard library -# for each target triple. -#target = ["x86_64-unknown-linux-gnu"] # defaults to just the build triple - -# Instead of downloading the src/nightlies.txt version of Cargo specified, use -# this Cargo binary instead to build all Rust code cargo = "/usr/bin/cargo" - -# Instead of downloading the src/nightlies.txt version of the compiler -# specified, use this rustc binary instead as the stage0 snapshot compiler. rustc = "/usr/bin/rustc" -# Flag to specify whether any documentation is built. If false, rustdoc and -# friends will still be compiled but they will not be used to generate any -# documentation. docs = true - -# Indicate whether the compiler should be documented in addition to the standard -# library and facade crates. -#compiler-docs = false +compiler-docs = true # Indicate whether submodules are managed and updated automatically. submodules = false - -# The path to (or name of) the GDB executable to use. This is only used for -# executing the debuginfo test suite. #gdb = "gdb" - -# The node.js executable to use. Note that this is only used for the emscripten -# target when running tests, otherwise this can be omitted. #nodejs = "node" - -# 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" -# Indicate whether the vendored sources are used for Rust dependencies or not -vendor = true +vendor = true # + +#full-bootstrap = false + +# Enable a build of the and extended rust tool set which is not only the +# compiler but also tools such as Cargo. Requires cloning git repo of cargo +extended = false + +# ============================================================================= +# General install configuration options +# ============================================================================= +[install] +prefix = "" +libdir = "" +mandir = "" +docdir = "" # ============================================================================= # Options for compiling Rust code itself # ============================================================================= [rust] - -# Whether or not to optimize the compiler and standard library optimize = true +codegen-units = 0 # 0 = core-count -# 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 debug assertions are enabled for the compiler and standard -# library -#debug-assertions = false - -# Whether or not debuginfo is emitted +debug-assertions = false debuginfo = true - -# Whether or not line number debug information is emitted debuginfo-lines = false - -# Whether or not to only build debuginfo for the standard library if enabled. -# If enabled, this will not compile the compiler with debuginfo, just the -# standard library. debuginfo-only-std = false -# Whether or not jemalloc is built and enabled -#use-jemalloc = true +use-jemalloc = false +debug-jemalloc = false -# Whether or not jemalloc is built with its debug option set -#debug-jemalloc = false - -# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE) -#backtrace = true - -# The default linker that will be used by the generated compiler. Note that this -# is not the linker used to link said compiler. +backtrace = true #default-linker = "cc" - -# The default ar utility that will be used by the generated compiler if LLVM -# cannot be used. Note that this is not used to assemble said compiler. #default-ar = "ar" -# 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" -# By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix -# platforms to ensure that the compiler is usable by default from the build -# directory (as it links to a number of dynamic libraries). This may not be -# desired in distributions, for example. -#rpath = true - -# Flag indicating whether tests are compiled with optimizations (the -O flag) or -# with debuginfo (the -g flag) -#optimize-tests = true -#debuginfo-tests = true - -# Flag indicating whether codegen tests will be run or not. If you get an error -# saying that the FileCheck executable is missing, you may want to disable this. -#codegen-tests = true - -# ============================================================================= -# 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] - -# C compiler to be used to compiler C code and link Rust code. Note that the -# default value is platform specific, and if not specified it may also depend on -# what platform is crossing to what platform. -#cc = "cc" - -# C++ compiler to be used to compiler C++ code (e.g. LLVM and our LLVM shims). -# This is only used for host targets. -#cxx = "c++" - -# 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 = "../path/to/llvm/root/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 = "/path/to/jemalloc/libjemalloc_pic.a" - -# If this target is for Android, this option will be required to specify where -# the NDK for the target lives. This is used to find the C compiler to link and -# build native code. -#android-ndk = "/path/to/ndk" - -# The root location of the MUSL installation directory. The library directory -# will also need to contain libunwind.a for an unwinding implementation. Note -# that this option only makes sense for MUSL targets that produce statically -# linked binaries -#musl-root = "..." +rpath = false +optimize-tests = true +debuginfo-tests = true +codegen-tests = false diff --git a/rust.changes b/rust.changes index 2229809..b52bdb0 100644 --- a/rust.changes +++ b/rust.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Mar 22 01:43:22 UTC 2017 - luke.nukem.jones@gmail.com + +- Switch .spec to use rust-build compilation system +- Update config.toml to reflect rust-build changes +- Strict versioning for compilation so rustc always use previous + stable compiler + ------------------------------------------------------------------- Fri Mar 17 05:59:18 UTC 2017 - luke.nukem.jones@gmail.com diff --git a/rust.spec b/rust.spec index 49350a3..2c47ba9 100644 --- a/rust.spec +++ b/rust.spec @@ -17,7 +17,8 @@ # -%global prev_version 1.15.0 +%global prev_rust 1.15.1 +%global prev_cargo 0.16.0 %global abi gnu %ifarch s390x %global _arch s390x @@ -39,7 +40,7 @@ %global _arch i586 %endif %global rust_triple %{_arch}-unknown-linux-%{abi} -%bcond_with bootstrap +%bcond_with rust_bootstrap Name: rust Version: 1.16.0 Release: 0 @@ -52,10 +53,13 @@ Source1: config.toml Source100: %{name}-rpmlintrc # PATCH-FIX-OPENSUSE: Set DT_SONAME when building dylibs Patch1: add-soname.patch +BuildRequires: ccache +BuildRequires: chrpath BuildRequires: cmake BuildRequires: curl BuildRequires: gcc-c++ BuildRequires: llvm-devel +BuildRequires: ninja BuildRequires: procps BuildRequires: python Recommends: cargo @@ -75,12 +79,15 @@ BuildRequires: fdupes # There are no successful builds for less than TW or Leap 42.2, so bootstrap # until such time that there is. -%if %{with bootstrap} || (0%{?suse_version} < 1330 && 0%{?sle_version} <= 120100) -BuildRequires: cargo-bootstrap -BuildRequires: rustc-bootstrap >= %{prev_version} +%if %{with rust_bootstrap} || (0%{?suse_version} < 1330 && 0%{?sle_version} <= 120100) +BuildRequires: cargo-bootstrap >= %{prev_cargo} +BuildRequires: rust-std-bootstrap == %{prev_rust} +BuildRequires: rustc-bootstrap == %{prev_rust} %else -BuildRequires: cargo -BuildRequires: rust >= %{prev_version} +# Require exact versions to help prevent OBS build loops +BuildRequires: cargo == %{prev_cargo} +BuildRequires: rust == %{prev_rust} +BuildRequires: rust-std == %{prev_rust} %endif %description @@ -129,24 +136,19 @@ invoking gdb on rust binaries. %build export CPPFLAGS="%{optflags}" # eliminate complain from RPMlint -%configure --disable-option-checking \ - --build=%{rust_triple} \ - --host=%{rust_triple} \ - --target=%{rust_triple} \ - --enable-local-rust \ - --local-rust-root=%{_prefix} \ - --prefix=%{_prefix} \ - --libdir=%{_prefix}/lib \ - --docdir=%{_docdir}/%{name} \ - --disable-rpath \ - --disable-codegen-tests \ - --disable-rustbuild \ - --enable-vendor \ - --release-channel=stable -make %{?_smp_mflags} +sed -e 's::%{rust_triple}:g' \ + -e 's::%{buildroot}%{_prefix}:g' \ + -e 's::%{buildroot}%{_prefix}/lib:g' \ + -e 's::%{buildroot}%{_mandir}:g' \ + -e 's::%{buildroot}%{_docdir}/%{name}:g' \ + %{SOURCE1} > config.toml +./x.py build -v +./x.py doc -v %install -%make_install +./x.py dist --install +# Fix any rpaths if needed +chrpath -d %{buildroot}%{_prefix}/lib/lib*.so # Remove executable permission from HTML documentation # to prevent RPMLINT errors. @@ -187,6 +189,7 @@ rm %{buildroot}%{_defaultdocdir}/%{name}/{COPYRIGHT,LICENSE-APACHE,LICENSE-MIT} %doc README.md %{_bindir}/rustc %{_bindir}/rustdoc +%{_bindir}/rust-lldb %{_mandir}/man1/rustc.1* %{_mandir}/man1/rustdoc.1* %{_prefix}/lib/lib*.so @@ -208,6 +211,7 @@ rm %{buildroot}%{_defaultdocdir}/%{name}/{COPYRIGHT,LICENSE-APACHE,LICENSE-MIT} %{_prefix}/lib/rustlib/etc/debugger_pretty_printers_common.py %{_prefix}/lib/rustlib/etc/gdb_load_rust_pretty_printers.py %{_prefix}/lib/rustlib/etc/gdb_rust_pretty_printing.py +%{_prefix}/lib/rustlib/etc/lldb_rust_formatters.py %files doc %defattr(-,root,root) @@ -219,22 +223,6 @@ rm %{buildroot}%{_defaultdocdir}/%{name}/{COPYRIGHT,LICENSE-APACHE,LICENSE-MIT} %license %{_docdir}/%{name}/html/SourceSerifPro-LICENSE.txt %dir %{_docdir}/%{name} %dir %{_docdir}/%{name}/html -%doc %{_docdir}/%{name}/html/alloc -%doc %{_docdir}/%{name}/html/book -%doc %{_docdir}/%{name}/html/collections -%doc %{_docdir}/%{name}/html/core -%doc %{_docdir}/%{name}/html/extra -%doc %{_docdir}/%{name}/html/implementors -%doc %{_docdir}/%{name}/html/libc -%doc %{_docdir}/%{name}/html/nomicon -%doc %{_docdir}/%{name}/html/src -%doc %{_docdir}/%{name}/html/std -%doc %{_docdir}/%{name}/html/std_unicode -%doc %{_docdir}/%{name}/html/COPYRIGHT.txt -%doc %{_docdir}/%{name}/html/*.html -%doc %{_docdir}/%{name}/html/*.inc -%doc %{_docdir}/%{name}/html/*.woff -%doc %{_docdir}/%{name}/html/*.js -%doc %{_docdir}/%{name}/html/*.css +%doc %{_docdir}/%{name}/html/* %changelog