40
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..5e6b889
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,203 @@
+# 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.
+#version-check = false
+
+# Link libstdc++ statically into the librustc_llvm instead of relying on a
+# dynamic version to be available.
+static-libstdcpp = false
+
+# 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
+
+# =============================================================================
+# General build configuration options
+# =============================================================================
+[build]
+
+# 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
+
+# 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
+
+# =============================================================================
+# Options for compiling Rust code itself
+# =============================================================================
+[rust]
+
+# Whether or not to optimize the compiler and standard library
+optimize = true
+
+# 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
+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
+
+# 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.
+#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 = "..."
diff --git a/rust.changes b/rust.changes
index 4294812..0249db5 100644
--- a/rust.changes
+++ b/rust.changes
@@ -1,3 +1,62 @@
+-------------------------------------------------------------------
+Sat Feb 11 05:31:34 UTC 2017 - luke.nukem.jones@gmail.com
+
+- Update to 1.15.1
+- Fix IntoIter::as_mut_slice's signature
+
+-------------------------------------------------------------------
+Mon Feb 6 09:05:39 UTC 2017 - luke.nukem.jones@gmail.com
+
+- Correct rust-triples use in spec.
+
+-------------------------------------------------------------------
+Mon Feb 6 08:25:17 UTC 2017 - luke.nukem.jones@gmail.com
+
+- Update to 1.15.0
+
+- Language updates
+ * Basic procedural macros allowing custom `#[derive]`, aka "macros 1.1", are
+ stable. This allows popular code-generating crates like Serde and Diesel to
+ work ergonomically. [RFC 1681].
+ * [Tuple structs may be empty. Unary and empty tuple structs may be instantiated
+ with curly braces][36868]. Part of [RFC 1506].
+ * [A number of minor changes to name resolution have been activated][37127].
+ They add up to more consistent semantics, allowing for future evolution of
+ Rust macros. Specified in [RFC 1560], see its section on ["changes"] for
+ details of what is different. The breaking changes here have been transitioned
+ through the [`legacy_imports`] lint since 1.14, with no known regressions.
+ * [In `macro_rules`, `path` fragments can now be parsed as type parameter
+ bounds][38279]
+ * [`?Sized` can be used in `where` clauses][37791]
+ * [There is now a limit on the size of monomorphized types and it can be
+ modified with the `#![type_size_limit]` crate attribute, similarly to
+ the `#![recursion_limit]` attribute][37789]
+
+- Compiler changes
+ * [On Windows, the compiler will apply dllimport attributes when linking to
+ extern functions][37973]. Additional attributes and flags can control which
+ library kind is linked and its name. [RFC 1717].
+ * [Rust-ABI symbols are no longer exported from cdylibs][38117]
+ * [The `--test` flag works with procedural macro crates][38107]
+ * [Fix `extern "aapcs" fn` ABI][37814]
+ * [The `-C no-stack-check` flag is deprecated][37636]. It does nothing.
+ * [The `format!` expander recognizes incorrect `printf` and shell-style
+ formatting directives and suggests the correct format][37613].
+ * [Only report one error for all unused imports in an import list][37456]
+
+- Compiler performance
+ * [Avoid unnecessary `mk_ty` calls in `Ty::super_fold_with`][37705]
+ * [Avoid more unnecessary `mk_ty` calls in `Ty::super_fold_with`][37979]
+ * [Don't clone in `UnificationTable::probe`][37848]
+ * [Remove `scope_auxiliary` to cut RSS by 10%][37764]
+ * [Use small vectors in type walker][37760]
+ * [Macro expansion performance was improved][37701]
+ * [Change `HirVec>` to `HirVec` in `hir::Expr`][37642]
+ * [Replace FNV with a faster hash function][37229]
+
+- For full change list, please see
+ https://raw.githubusercontent.com/rust-lang/rust/master/RELEASES.md
+
-------------------------------------------------------------------
Tue Jan 31 09:41:33 UTC 2017 - luke.nukem.jones@gmail.com
diff --git a/rust.spec b/rust.spec
index 66a5a9c..c03d057 100644
--- a/rust.spec
+++ b/rust.spec
@@ -2,6 +2,7 @@
# spec file for package rust
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 Luke Jones, luke.nukem.jones@gmail.com
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,54 +17,68 @@
#
-%global prev_version 1.13.0
+%global prev_version 1.14.0
+%global abi gnu
+%ifarch armv7hl
+%global _arch armv7
+%global abi gnueabihf
+%endif
+%ifarch ppc64
+%global _arch powerpc64
+%endif
+%ifarch ppc64le
+%global _arch powerpc64le
+%endif
+%ifarch x86_64
+%global _arch x86_64
+%endif
+%ifarch %{ix86}
+%global _arch i586
+%endif
+%global rust_triple %{_arch}-unknown-linux-%{abi}
%bcond_with bootstrap
Name: rust
-Version: 1.14.0
+Version: 1.15.1
Release: 0
Summary: A systems programming language
License: MIT or Apache-2.0
Group: Development/Languages/Other
Url: http://www.rust-lang.org
Source0: https://static.rust-lang.org/dist/rustc-%{version}-src.tar.gz
+Source1: config.toml
Source100: %{name}-rpmlintrc
# PATCH-FIX-OPENSUSE: Set DT_SONAME when building dylibs
Patch1: add-soname.patch
BuildRequires: cmake
BuildRequires: curl
BuildRequires: gcc-c++
+BuildRequires: llvm-devel
+BuildRequires: procps
BuildRequires: python
Recommends: cargo
-#FIXME: currently there's no way to have rustc and rustc-beta installed
-
-Obsoletes: rustc-1_9
-Provides: rustc = %{version}
-Provides: rustc-stable = %{version}
+Recommends: %{name}-doc
+Recommends: %{name}-std
Conflicts: rustc-bootstrap
-
+Provides: rustc = %{version}
+Provides: rustc-stable = %{version}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
+ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64 ppc64le s390x
+
%if 0%{?suse_version}
BuildRequires: fdupes
%endif
-%ifarch %{arm}
-BuildRequires: rustc-bootstrap <= %{prev_version}
+
+%ifarch %{arm} aarch64 ppc64 ppc64le s390x
+BuildRequires: cargo-bootstrap
BuildRequires: rustc-bootstrap >= %{prev_version}
- %else
- %ifarch aarch64
-BuildRequires: rustc-bootstrap <= %{prev_version}
+%else
+%if %{with bootstrap} || (0%{?suse_version} < 1330 && 0%{?sle_version} < 120300)
+BuildRequires: cargo-bootstrap
BuildRequires: rustc-bootstrap >= %{prev_version}
- %else
- %if %{with bootstrap}
-BuildRequires: rustc-bootstrap <= %{prev_version}
-BuildRequires: rustc-bootstrap >= %{prev_version}
- %else
- %if %{without bootstrap}
-BuildRequires: rust <= %{version}
+%else
+BuildRequires: cargo
BuildRequires: rust >= %{prev_version}
- %endif
- %endif
- %endif
+%endif
%endif
%description
@@ -81,6 +96,14 @@ even though some of these abstractions feel like those of a
high-level language. Even then, Rust still allows precise
control like a low-level language would.
+%package std
+Summary: Standard library for Rust
+Group: Development/Languages/Other
+
+%description std
+This package includes the standard libraries for building
+applications written in Rust.
+
%package doc
Summary: Rust documentation
Group: Development/Languages/Other
@@ -92,7 +115,6 @@ Documentation for the Rust language.
Summary: Gdb integration for rust binaries
Group: Development/Languages/Other
Supplements: packageand(%{name}:gdb)
-Provides: rust-gdb = %{version}
Provides: rustc:%{_bindir}/rust-gdb
%description gdb
@@ -100,36 +122,50 @@ This subpackage provides pretty printers and a wrapper script for
invoking gdb on rust binaries.
%prep
-%setup -q -n rustc-%{version}
+%setup -q -n rustc-%{version}-src
%patch1 -p1
%build
export CPPFLAGS="%{optflags}" # eliminate complain from RPMlint
-# FIXME: you should use the %%configure macro
-./configure \
+%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}
%install
-make %{?_smp_mflags} DESTDIR=%{buildroot} install
+%make_install
# Remove executable permission from HTML documentation
# to prevent RPMLINT errors.
-chmod -R -x+X %{buildroot}%{_datadir}/doc/rust/html
+chmod -R -x+X %{buildroot}%{_docdir}/%{name}/html
-# Remove files which mention buildroot to prevent RPMLINT errors.
+# Remove surplus files
+rm %{buildroot}%{_prefix}/lib/rustlib/components
rm %{buildroot}%{_prefix}/lib/rustlib/manifest-rust*
rm %{buildroot}%{_prefix}/lib/rustlib/install.log
-
+rm %{buildroot}%{_prefix}/lib/rustlib/uninstall.sh
+rm %{buildroot}%{_prefix}/lib/rustlib/rust-installer-version
# Remove lockfile to avoid errors.
-rm %{buildroot}%{_datadir}/doc/rust/html/.lock
+rm %{buildroot}%{_docdir}/%{name}/html/.lock
-# allow parallel installation of docs
-mv %{buildroot}%{_datadir}/doc/rust \
- %{buildroot}%{_datadir}/doc/rust-%{version}
+# The remaining shared libraries should be executable for debuginfo extraction.
+find %{buildroot}/%{_prefix}/lib/ -type f -name '*.so' -exec chmod -v +x '{}' '+'
+
+# extract bundled licenses for packaging - From fedora spec
+cp src/rt/hoedown/LICENSE src/rt/hoedown/LICENSE-hoedown
+sed -e '/*\//q' src/libbacktrace/backtrace.h \
+ >src/libbacktrace/LICENSE-libbacktrace
%if 0%{?suse_version}
%fdupes %{buildroot}%{_prefix}
@@ -140,23 +176,60 @@ mv %{buildroot}%{_datadir}/doc/rust \
%files
%defattr(-,root,root,-)
+%license COPYRIGHT LICENSE-APACHE LICENSE-MIT
+%license src/libbacktrace/LICENSE-libbacktrace
+%license src/rt/hoedown/LICENSE-hoedown
+%doc README.md
%{_bindir}/rustc
%{_bindir}/rustdoc
-%{_mandir}/*/rust*
-%exclude %{_datadir}/doc/rust
-%{_prefix}/lib/*.so
-%{_prefix}/lib/rustlib
-%exclude %{_prefix}/lib/rustlib%{_sysconfdir}/gdb_load_rust_pretty_printers.py
-%exclude %{_prefix}/lib/rustlib%{_sysconfdir}/gdb_rust_pretty_printing.py
+%{_mandir}/man1/rustc.1*
+%{_mandir}/man1/rustdoc.1*
+%{_prefix}/lib/lib*.so
+%exclude %{_docdir}/%{name}/html
-%files doc
+%files std
%defattr(-,root,root)
-%{_datadir}/doc/rust-%{version}
+%dir %{_prefix}/lib/rustlib
+%dir %{_prefix}/lib/rustlib/%{rust_triple}
+%dir %{_prefix}/lib/rustlib/%{rust_triple}/lib
+%{_prefix}/lib/rustlib/%{rust_triple}/lib/*.rlib
+%{_prefix}/lib/rustlib/%{rust_triple}/lib/*.so
%files gdb
%defattr(-,root,root,-)
%{_bindir}/rust-gdb
-%{_prefix}/lib/rustlib%{_sysconfdir}/gdb_load_rust_pretty_printers.py
-%{_prefix}/lib/rustlib%{_sysconfdir}/gdb_rust_pretty_printing.py
+%dir %{_prefix}/lib/rustlib
+%dir %{_prefix}/lib/rustlib/etc
+%{_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
+
+%files doc
+%defattr(-,root,root)
+%license %{_docdir}/%{name}/html/FiraSans-LICENSE.txt
+%license %{_docdir}/%{name}/html/Heuristica-LICENSE.txt
+%license %{_docdir}/%{name}/html/LICENSE-APACHE.txt
+%license %{_docdir}/%{name}/html/LICENSE-MIT.txt
+%license %{_docdir}/%{name}/html/SourceCodePro-LICENSE.txt
+%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
%changelog
diff --git a/rustc-1.14.0-src.tar.gz b/rustc-1.14.0-src.tar.gz
deleted file mode 100644
index 313364c..0000000
--- a/rustc-1.14.0-src.tar.gz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c790edd2e915bd01bea46122af2942108479a2fda9a6f76d1094add520ac3b6b
-size 27572650
diff --git a/rustc-1.15.1-src.tar.gz b/rustc-1.15.1-src.tar.gz
new file mode 100644
index 0000000..59ecf1a
--- /dev/null
+++ b/rustc-1.15.1-src.tar.gz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e7daad418a830b45b977cd7ecf181b65f30f73df63ff36e124ea5fe5d1af327
+size 28100203