Hello community,

here is the log from the commit of package rust for openSUSE:Factory checked in 
at 2018-11-13 16:33:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rust (Old)
 and      /work/SRC/openSUSE:Factory/.rust.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rust"

Tue Nov 13 16:33:00 2018 rev:30 rq:648255 version:1.30.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rust/rust.changes        2018-06-15 
14:32:52.457753232 +0200
+++ /work/SRC/openSUSE:Factory/.rust.new/rust.changes   2018-11-13 
17:48:19.055731243 +0100
@@ -1,0 +2,367 @@
+Sun Nov 11 19:43:09 UTC 2018 - Luke Jones <[email protected]>
+
+- Set the bootstrap flag in the spec file temporarily so that rings
+  will build rust without intervention. Must be reverted once all
+  releases are successful.
+
+-------------------------------------------------------------------
+Fri Nov  9 06:42:47 UTC 2018 - Luke Jones <[email protected]>
+
+- Add Provides/Obsoletes/Conflicts to rust-std-static and cargo
+
+-------------------------------------------------------------------
+Thu Nov  8 01:17:22 UTC 2018 - Neal Gompa <[email protected]>
+
+- Strengthen the dependency on rust-std-static to Requires
+  to fix crate package builds in OBS
+- Use standard form rich dependencies for SUSE Linux 15 and newer
+
+-------------------------------------------------------------------
+Tue Nov  6 12:32:37 UTC 2018 - Jan Engelhardt <[email protected]>
+
+- Fix second-person language and spellos.
+
+-------------------------------------------------------------------
+Sun Nov  4 22:12:42 UTC 2018 - Luke Jones <[email protected]>
+
+- Add ignore-Wstring-conversion.patch: we require patching of
+  src/librustc_llvm/build.rs to ignore a flag that
+  llvm-config --cxxflags outputs which GCC doesn't recognise.
+- Default to building using the distro LLVM where the version is
+  >= 5.0, instead of the Rust bundled LLVM which requires
+  compilation. This should decrease build times. SLE LLVM is too old.
+
+-------------------------------------------------------------------
+Sat Nov  3 23:03:53 UTC 2018 - Luke Jones <[email protected]>
+
+- Fixing various rpmlint warnings and errors:
+  + ExclusiveArch instead of BuildArch for i686
+  + Remove conflicts with same package name
+  + Remove a few hidden files during prep, does not touch '.clang-format'
+  + Remove old patch macro in comment
+  + Fix lint warning about bash and zsh completition files
+  + Fix various script shebang warnings (incorrect or missing)
+  + Adjust rpmlintrc to mask some 'invalid' warnings
+- Move Rust and its tools in to their own category under:
+  + Development/Languages/Rust
+
+-------------------------------------------------------------------
+Sat Nov  3 07:12:01 UTC 2018 - Luke Jones <[email protected]>
+
+- Jump from version 1.26.2 to 1.30.0 due to a build issue with using 1.26.x to
+  compile 1.27.x. This package release requires %{rust_bootstrap} to be set.
+- Enable extra rust tools to be built (cargo, rls, rustfmt, analysis)
+    + cargo is now packaged with the same version number as the rust release, 
this
+      may break any packages that relied on a cargo version number.
+- Remove ccache and ninja from BuildRequires.
+- Switch build configuration to use configure script, remove config.toml.
+- Include all bootstraps in source rpm to make bootstrapping easier to manage
+  within OBS.
+- Remove unused patch: update-config-guess.patch
+Update to version 1.30.0 (2018-10-25)
+  + Language
+    - Procedural macros are now available.-  These kinds of macros allow for
+      more powerful code generation. There is a new chapter available
+      in the Rust Programming Language book that goes further in depth.
+    - You can now use keywords as identifiers using the raw identifiers
+      syntax (`r#`),-  e.g. `let r#for = true;`
+    - Using anonymous parameters in traits is now deprecated with a warning and
+      will be a hard error in the 2018 edition.- 
+    - You can now use `crate` in paths.-  This allows you to refer to the
+      crate root in the path, e.g. `use crate::foo;` refers to `foo` in 
`src/lib.rs`.
+    - Using a external crate no longer requires being prefixed with `::`.- 
+      Previously, using a external crate in a module without a use statement
+      required `let json = ::serde_json::from_str(foo);` but can now be written
+      as `let json = serde_json::from_str(foo);`.
+    - You can now apply the `#[used]` attribute to static items to prevent the
+      compiler from optimising them away, even if they appear to be unused,- 
+      e.g. `#[used] static FOO: u32 = 1;`
+    - You can now import and reexport macros from other crates with the `use`
+      syntax.-  Macros exported with `#[macro_export]` are now placed into
+      the root module of the crate. If your macro relies on calling other local
+      macros, it is recommended to export with the
+      `#[macro_export(local_inner_macros)]` attribute so users won't have to 
import
+      those macros.
+    - You can now catch visibility keywords (e.g. `pub`, `pub(crate)`) in 
macros
+      using the `vis` specifier.- 
+    - Non-macro attributes now allow all forms of literals, not just
+      strings.-  Previously, you would write `#[attr("true")]`, and you can now
+      write `#[attr(true)]`.
+    - You can now specify a function to handle a panic in the Rust runtime 
with the
+      `#[panic_handler]` attribute.- 
+  + Compiler
+    - Added the `riscv32imc-unknown-none-elf` target.- 
+    - Added the `aarch64-unknown-netbsd` target- 
+  + Libraries
+    - `ManuallyDrop` now allows the inner type to be unsized.- 
+  + Stabilized APIs
+    - `Ipv4Addr::BROADCAST`
+    - `Ipv4Addr::LOCALHOST`
+    - `Ipv4Addr::UNSPECIFIED`
+    - `Ipv6Addr::LOCALHOST`
+    - `Ipv6Addr::UNSPECIFIED`
+    - `Iterator::find_map`
+    - The following methods are replacement methods for `trim_left`, 
`trim_right`,
+      `trim_left_matches`, and `trim_right_matches`, which will be deprecated
+      in 1.33.0:
+      + `str::trim_end_matches`
+      + `str::trim_end`
+      + `str::trim_start_matches`
+      + `str::trim_start`
+  + Cargo
+    - `cargo run` doesn't require specifying a package in 
workspaces.][cargo/5877]
+    - `cargo doc` now supports `--message-format=json`.][cargo/5878] This is
+      equivalent to calling `rustdoc --error-format=json`.
+    - Cargo will now provide a progress bar for builds.][cargo/5995]
+  + Misc
+    - `rustdoc` allows you to specify what edition to treat your code as with 
the
+      `--edition` option.- 
+    - `rustdoc` now has the `--color` (specify whether to output color) and
+      `--error-format` (specify error format, e.g. `json`) options.- 
+    - We now distribute a `rust-gdbgui` script that invokes `gdbgui` with Rust
+      debug symbols.- 
+    - Attributes from Rust tools such as `rustfmt` or `clippy` are now
+      available,-  e.g. `#[rustfmt::skip]` will skip formatting the next item.
+- Update to version 1.29.2 (2018-10-11)
+  + Workaround for an aliasing-related LLVM bug, which caused miscompilation.
+  + The `rls-preview` component on the windows-gnu targets has been restored.
+- Update to version 1.29.1 (2018-09-25)
+  + Security Notes
+    - The standard library's `str::repeat` function contained an out of bounds 
write
+      caused by an integer overflow. This has been fixed by deterministically
+      panicking when an overflow happens.
+- Update to version 1.29.0 (2018-09-13)
+  + Compiler
+    - Bumped minimum LLVM version to 5.0.
+    - Added `powerpc64le-unknown-linux-musl` target.
+    - Added `aarch64-unknown-hermit` and `x86_64-unknown-hermit` targets.
+  + Libraries
+    - `Once::call_once` no longer requires `Once` to be `'static`.
+    - `BuildHasherDefault` now implements `PartialEq` and `Eq`.
+    - `Box<CStr>`, `Box<OsStr>`, and `Box<Path>` now implement `Clone`.
+    - Implemented `PartialEq<&str>` for `OsString` and `PartialEq<OsString>`
+      for `&str`.
+    - `Cell<T>` now allows `T` to be unsized.
+    - `SocketAddr` is now stable on Redox.
+  + Stabilized APIs
+    - `Arc::downcast`
+    - `Iterator::flatten`
+    - `Rc::downcast`
+  + Cargo
+    - Cargo can silently fix some bad lockfiles.][cargo/5831] You can use
+      `--locked` to disable this behavior.
+    - `cargo-install` will now allow you to cross compile an install
+      using `--target`.][cargo/5614]
+    - Added the `cargo-fix` subcommand to automatically move project code from
+      2015 edition to 2018.][cargo/5723]
+    - `cargo doc` can now optionally document private types using the
+      `--document-private-items` flag.][cargo/5543]
+  + Misc
+    - `rustdoc` now has the `--cap-lints` option which demotes all lints above
+      the specified level to that level. For example `--cap-lints warn`
+      will demote `deny` and `forbid` lints to `warn`.
+    - `rustc` and `rustdoc` will now have the exit code of `1` if compilation
+      fails and `101` if there is a panic.
+    - A preview of clippy has been made available through rustup.
+      You can install the preview with `rustup component add clippy-preview`.
+  + Compatibility Notes
+    - `str::{slice_unchecked, slice_unchecked_mut}` are now deprecated.
+      Use `str::get_unchecked(begin..end)` instead.
+    - `std::env::home_dir` is now deprecated for its unintuitive behavior.
+      Consider using the `home_dir` function from
+      https://crates.io/crates/dirs instead.
+    - `rustc` will no longer silently ignore invalid data in target spec.
+    - `cfg` attributes and `--cfg` command line flags are now more
+      strictly validated.
+- Update to version 1.28.0
+  + Language
+    - The `#[repr(transparent)]` attribute is now stable.-  This attribute
+      allows a Rust newtype wrapper (`struct NewType<T>(T);`) to be 
represented as
+      the inner type across Foreign Function Interface (FFI) boundaries.
+    - The keywords `pure`, `sizeof`, `alignof`, and `offsetof` have been 
unreserved
+      and can now be used as identifiers.- 
+    - The `GlobalAlloc` trait and `#[global_allocator]` attribute are now
+      stable.-  This will allow users to specify a global allocator for
+      their program.
+    - Unit test functions marked with the `#[test]` attribute can now return
+      `Result<(), E: Debug>` in addition to `()`.- 
+    - The `lifetime` specifier for `macro_rules!` is now stable.-  This
+      allows macros to easily target lifetimes.
+  + Compiler
+    - The `s` and `z` optimisation levels are now stable.-  These optimisations
+      prioritise making smaller binary sizes. `z` is the same as `s` with the
+      exception that it does not vectorise loops, which typically results in 
an even
+      smaller binary.
+    - The short error format is now stable.-  Specified with
+      `--error-format=short` this option will provide a more compressed output 
of
+      rust error messages.
++++ 170 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/rust/rust.changes
++++ and /work/SRC/openSUSE:Factory/.rust.new/rust.changes

Old:
----
  cargo-0.27.0-aarch64-unknown-linux-gnu.tar.gz
  cargo-0.27.0-arm-unknown-linux-gnueabihf.tar.gz
  cargo-0.27.0-armv7-unknown-linux-gnueabihf.tar.gz
  cargo-0.27.0-i686-unknown-linux-gnu.tar.gz
  cargo-0.27.0-powerpc64-unknown-linux-gnu.tar.gz
  cargo-0.27.0-powerpc64le-unknown-linux-gnu.tar.gz
  cargo-0.27.0-s390x-unknown-linux-gnu.tar.gz
  cargo-0.27.0-x86_64-unknown-linux-gnu.tar.gz
  config.toml
  rustc-1.26.2-src.tar.gz
  update-config-guess.patch

New:
----
  ignore-Wstring-conversion.patch
  rust-1.29.2-aarch64-unknown-linux-gnu.tar.xz
  rust-1.29.2-arm-unknown-linux-gnueabihf.tar.xz
  rust-1.29.2-armv7-unknown-linux-gnueabihf.tar.xz
  rust-1.29.2-i686-unknown-linux-gnu.tar.xz
  rust-1.29.2-powerpc64-unknown-linux-gnu.tar.xz
  rust-1.29.2-powerpc64le-unknown-linux-gnu.tar.xz
  rust-1.29.2-s390x-unknown-linux-gnu.tar.xz
  rust-1.29.2-x86_64-unknown-linux-gnu.tar.xz
  rustc-1.30.0-src.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rust.spec ++++++
--- /var/tmp/diff_new_pack.0kF21r/_old  2018-11-13 17:48:39.459702830 +0100
+++ /var/tmp/diff_new_pack.0kF21r/_new  2018-11-13 17:48:39.463702824 +0100
@@ -2,7 +2,7 @@
 # spec file for package rust
 #
 # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
-# Copyright (c) 2017 Luke Jones, [email protected]
+# Copyright (c) 2018 Luke Jones, [email protected]
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -13,12 +13,17 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
-%global prev_rust 1.25.0
-%global cargo_version 0.27.0
+%global prev_rust 1.29.2
+# some sub-packages are versioned independantly
+%global rustfmt_version 0.99.4
+%global rls_version 0.130.5
+%global clippy_version 0.0.212
+# Build the rust target triple.
+# Some rust arches don't match what SUSE labels them.
 %global rust_arch %{_arch}
 %global abi gnu
 %ifarch armv7hl
@@ -40,41 +45,60 @@
 %global rust_arch i686
 %endif
 %global rust_triple %{rust_arch}-unknown-linux-%{abi}
+# All sources and bootstraps are fetched form here
 %global dl_url https://static.rust-lang.org/dist
+# Rust doesn't function well when put in /usr/lib64
 %global common_libdir %{_prefix}/lib
 %global rustlibdir %{common_libdir}/rustlib
-%bcond_with rust_bootstrap
+# Use hardening ldflags.
+%global rustflags -Clink-arg=-Wl,-z,relro,-z,now
+# We occasionally need to bootstrap builds due to breakage etc. Rust only 
guarantees
+# v-1 will build v
+# %bcond_with rust_bootstrap
+# Temporarily set the bootstrap flag in the spec so rings will build without 
intervention
+%bcond_without rust_bootstrap
+# Distro LLVM should be sufficient, this also cuts compile times byu almost 
half
+%if 0%{?suse_version} <= 1315
+%bcond_without bundled_llvm
+%else
+%bcond_with bundled_llvm
+%endif
 Name:           rust
-Version:        1.26.2
+Version:        1.30.0
 Release:        0
 Summary:        A systems programming language
 License:        MIT OR Apache-2.0
-Group:          Development/Languages/Other
+Group:          Development/Languages/Rust
 URL:            https://www.rust-lang.org
-Source0:        %{dl_url}/rustc-%{version}-src.tar.gz
-Source1:        config.toml
+Source0:        %{dl_url}/rustc-%{version}-src.tar.xz
 Source99:       %{name}-rpmlintrc
-Source100:      cargo-%{cargo_version}-x86_64-unknown-linux-gnu.tar.gz
-Source101:      cargo-%{cargo_version}-i686-unknown-linux-gnu.tar.gz
-Source102:      cargo-%{cargo_version}-aarch64-unknown-linux-gnu.tar.gz
-Source103:      cargo-%{cargo_version}-armv7-unknown-linux-gnueabihf.tar.gz
-Source104:      cargo-%{cargo_version}-arm-unknown-linux-gnueabihf.tar.gz
-Source105:      cargo-%{cargo_version}-powerpc64-unknown-linux-gnu.tar.gz
-Source106:      cargo-%{cargo_version}-powerpc64le-unknown-linux-gnu.tar.gz
-Source107:      cargo-%{cargo_version}-s390x-unknown-linux-gnu.tar.gz
-Patch0:         update-config-guess.patch
-# PATCH-FIX-OPENSUSE: Set DT_SONAME when building dylibs
-BuildRequires:  ccache
-BuildRequires:  cmake >= 3.4.3
+Source100:      %{dl_url}/rust-%{prev_rust}-x86_64-unknown-linux-gnu.tar.xz
+Source101:      %{dl_url}/rust-%{prev_rust}-i686-unknown-linux-gnu.tar.xz
+Source102:      %{dl_url}/rust-%{prev_rust}-aarch64-unknown-linux-gnu.tar.xz
+Source103:      
%{dl_url}/rust-%{prev_rust}-armv7-unknown-linux-gnueabihf.tar.xz
+Source104:      %{dl_url}/rust-%{prev_rust}-arm-unknown-linux-gnueabihf.tar.xz
+Source105:      %{dl_url}/rust-%{prev_rust}-powerpc64-unknown-linux-gnu.tar.xz
+Source106:      
%{dl_url}/rust-%{prev_rust}-powerpc64le-unknown-linux-gnu.tar.xz
+Source107:      %{dl_url}/rust-%{prev_rust}-s390x-unknown-linux-gnu.tar.xz
+# PATCH-FIX-OPENSUSE: edit src/librustc_llvm/build.rs to ignore GCC 
incompatible flag
+Patch0:         ignore-Wstring-conversion.patch
+BuildRequires:  cmake
 BuildRequires:  curl
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
-BuildRequires:  llvm-devel
-BuildRequires:  ninja
+BuildRequires:  git
+BuildRequires:  pkgconfig
 BuildRequires:  procps
 BuildRequires:  python3-base
+BuildRequires:  pkgconfig(libcurl)
+BuildRequires:  pkgconfig(libgit2) >= 0.23
+BuildRequires:  pkgconfig(libssh2) >= 1.4.3
+BuildRequires:  pkgconfig(openssl)
+BuildRequires:  pkgconfig(zlib)
+# The compiler is not generally useful without the std library installed
+# And the std library is exactly specific to the version of the compiler
+Requires:       %{name}-std-static = %{version}
 Recommends:     %{name}-doc
-Recommends:     %{name}-std
 Recommends:     cargo
 Conflicts:      rust
 Conflicts:      rustc-bootstrap
@@ -82,16 +106,22 @@
 # bootstrapped before we can build the n+1 release
 ExclusiveArch:  x86_64 %{arm} aarch64 ppc64 ppc64le s390x %{ix86}
 %ifarch %{ix86}
-BuildArch:      i686
+ExclusiveArch:  i686
 %endif
-%if %{with rust_bootstrap}
-BuildRequires:  rust-std-bootstrap = %{prev_rust}
-BuildRequires:  rustc-bootstrap = %{prev_rust}
-%else
+%if %{without bundled_llvm}
+# LLVM gives incorrect C++ flags for GCC
+BuildRequires:  llvm-devel >= 5.0
+%endif
+%if %{without rust_bootstrap}
+# We will now package cargo using the version number of rustc since
+# it is being built from rust sources. Old cargo packages have a 0.x number
+BuildRequires:  cargo <= %{version}
+BuildRequires:  cargo >= %{prev_rust}
 BuildRequires:  rust <= %{version}
 BuildRequires:  rust >= %{prev_rust}
-BuildRequires:  rust-std <= %{version}
-BuildRequires:  rust-std >= %{prev_rust}
+# This must be bumped to rust-std-static after 1.27.2 is in mainstream
+BuildRequires:  rust-std-static <= %{version}
+BuildRequires:  rust-std-static >= %{prev_rust}
 %endif
 
 %description
@@ -109,32 +139,41 @@
 high-level language. Even then, Rust still allows precise
 control like a low-level language would.
 
-%package -n rust-std
+%package -n rust-std-static
 Summary:        Standard library for Rust
-Group:          Development/Languages/Other
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
 Requires:       %{name} = %{version}
-Conflicts:      rust-std
+Obsoletes:      rust-std < %{version}
+Conflicts:      rust-std < %{version}
+Provides:       rust-std = %{version}
 
-%description -n rust-std
+%description -n rust-std-static
 This package includes the standard libraries for building
 applications written in Rust.
 
 %package -n rust-doc
 Summary:        Rust documentation
-Group:          Development/Languages/Other
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
 Requires:       %{name} = %{version}
-Conflicts:      rust-doc
 
 %description -n rust-doc
 Documentation for the Rust language.
 
 %package -n rust-gdb
 Summary:        Gdb integration for rust binaries
-Group:          Development/Languages/Other
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
 Requires:       %{name} = %{version}
+%if 0%{?suse_version} && 0%{?suse_version} < 1500
+# Legacy SUSE-only form
 Supplements:    packageand(%{name}:gdb)
-Conflicts:      rust-gdb
-Provides:       rustc:%{_bindir}/rust-gdb
+%else
+# Standard form
+Supplements:    (%{name} and gdb)
+%endif
+Provides:       rust-gdb = %{version}
 
 %description -n rust-gdb
 This subpackage provides pretty printers and a wrapper script for
@@ -142,7 +181,8 @@
 
 %package -n rust-src
 Summary:        Sources for the Rust standard library
-Group:          Development/Languages/Other
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
 Requires:       %{name} = %{version}
 BuildArch:      noarch
 
@@ -151,53 +191,207 @@
 is commonly used for function detail lookups in helper programs such
 as RLS or racer.
 
+%package -n rls
+Summary:        Language server for Rust lang
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
+Requires:       %{name} = %{version}
+Provides:       rls = %{rls_version}
+
+%description -n rls
+The RLS provides a server that runs in the background, providing IDEs,
+editors, and other tools with information about Rust programs. It
+supports functionality such as 'goto definition', symbol search,
+reformatting, and code completion, and enables renaming and refactorings.
+It can be used with an IDE such as Gnome-Builder.
+
+%package -n rust-analysis
+Summary:        Compiler analysis data for the Rust standard library
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
+Requires:       rust-std-static = %{version}
+
+%description -n rust-analysis
+This package contains analysis data files produced with rustc's -Zsave-analysis
+feature for the Rust standard library. The RLS (Rust Language Server) uses this
+data to provide information about the Rust standard library.
+
+%package -n rustfmt
+Summary:        Code formatting tool for Rust lang
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
+Requires:       %{name} = %{version}
+%if 0%{?suse_version} && 0%{?suse_version} < 1500
+# Legacy SUSE-only form
+Supplements:    packageand(%{name}:cargo)
+%else
+# Standard form
+Supplements:    (%{name} and cargo)
+%endif
+Provides:       cargo-fmt = %{rustfmt_version}
+Provides:       rustfmt = %{rustfmt_version}
+
+%description -n rustfmt
+A tool for formatting Rust code according to style guidelines.
+
+%package -n clippy
+Summary:        Lints to catch common mistakes and improve Rust code
+# /usr/bin/clippy-driver is dynamically linked against internal rustc libs
+License:        MPL-2.0
+Group:          Development/Languages/Rust
+Requires:       %{name} = %{version}
+Requires:       cargo
+Provides:       clippy = %{clippy_version}
+
+%description -n clippy
+A collection of lints to catch common mistakes and improve Rust code.
+
+%package -n cargo
+Summary:        The Rust package manager
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
+Requires:       %{name} = %{version}
+Obsoletes:      cargo < %{version}
+Conflicts:      cargo < %{version}
+Provides:       rustc:%{_bindir}/cargo = %{version}
+
+%description -n cargo
+Cargo downloads dependencies of Rust projects and compiles it.
+
+%package -n cargo-doc
+Version:        %{version}
+Release:        0
+Summary:        Documentation for Cargo
+# Cargo no longer builds its own documentation
+# https://github.com/rust-lang/cargo/pull/4904
+License:        MIT OR Apache-2.0
+Group:          Development/Languages/Rust
+Requires:       rust-doc = %{version}
+BuildArch:      noarch
+
+%description -n cargo-doc
+This package includes HTML documentation for Cargo.
+
 %prep
+%if %{with rust_bootstrap}
 %ifarch x86_64
-%setup -q -T -b 100 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 100 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch %{ix86}
-%setup -q -T -b 101 -n cargo-%{cargo_version}-i686-unknown-linux-%{abi}
+%setup -q -T -b 101 -n rust-%{prev_rust}-i686-unknown-linux-%{abi}
 %endif
 %ifarch aarch64
-%setup -q -T -b 102 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 102 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch armv7hl
-%setup -q -T -b 103 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 103 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch armv6hl
-%setup -q -T -b 104 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 104 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch ppc64
-%setup -q -T -b 105 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 105 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch ppc64le
-%setup -q -T -b 106 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 106 -n rust-%{prev_rust}-%{rust_triple}
 %endif
 %ifarch s390x
-%setup -q -T -b 107 -n cargo-%{cargo_version}-%{rust_triple}
+%setup -q -T -b 107 -n rust-%{prev_rust}-%{rust_triple}
 %endif
+%endif
+./install.sh --components=cargo,rustc,rust-std-%{rust_triple} 
--prefix=.%{_prefix} --disable-ldconfig
 
-# The cargo binary is only used to build rust and is not shipped
-%global cargo_bin 
%{_builddir}/cargo-%{cargo_version}-%{rust_triple}/cargo/bin/cargo
+%if %{with rust_bootstrap}
+    %global rust_root %{_builddir}/rust-%{prev_rust}-%{rust_triple}%{_prefix}
+%else
+    %global rust_root %{_prefix}
+%endif
 
 %setup -q -n rustc-%{version}-src
-# %patch0 -p1
-sed -e 's:<cargo-bin>:%{cargo_bin}:g' \
-    -e 's:<rust-triple>:%{rust_triple}:g' \
-       -e 's:<prefix>:%{_prefix}:g' \
-       -e 's:<bindir>:%{_prefix}/bin:g' \
-    -e 's:<libdir>:%{common_libdir}:g' \
-    -e 's:<mandir>:%{_mandir}:g' \
-    -e 's:<docdir>:%{_docdir}/%{name}:g' \
-    %{SOURCE1} > config.toml
+
+%patch0 -p1
 
 # use python3
-sed -i -e "1s|#!.*|#!/usr/bin/python3|" x.py
+sed -i -e "1s|#!.*|#!%{_bindir}/python3|" x.py
+sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure
+
+# We never enable emscripten.
+rm -rf src/llvm-emscripten/
+# We never enable other LLVM tools.
+rm -rf src/tools/clang
+rm -rf src/tools/lld
+rm -rf src/tools/lldb
+
+%if %without bundled_llvm
+rm -rf src/llvm/
+%endif
+
+# extract bundled licenses for packaging
+sed -e '/*\//q' src/libbacktrace/backtrace.h \
+  >src/libbacktrace/LICENSE-libbacktrace
+
+# The configure macro will modify some autoconf-related files, which upsets
+# cargo when it tries to verify checksums in those files.  If we just truncate
+# that file list, cargo won't have anything to complain about.
+find src/vendor -name .cargo-checksum.json \
+  -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
+
+# Fix rpmlint error "This script uses 'env' as an interpreter"
+sed -i '1s|#!%{_bindir}/env python|#!%{_bindir}/python3|' 
src/jemalloc/scripts/gen_travis.py
+sed -i '1s|#!%{_bindir}/env python|#!%{_bindir}/python3|' 
src/libcore/unicode/unicode.py
+sed -i '1s|#!%{_bindir}/env bash|#!%{_bindir}/bash|' 
src/liblibc/ci/emscripten-entry.sh
+find src/libcompiler_builtins/compiler-rt/lib/ -name '*.py' \
+  -exec sed -i -e '1s|#!%{_bindir}/env python|#!%{_bindir}/python3|' '{}' '+'
+
+# Fix rpmlint warnings about these shell scripts not having a shebang
+sed -i '1s|^|#!/bin/bash\n|' src/libbacktrace/ltmain.sh
+sed -i '1s|^|#!/bin/bash\n|' src/libcompiler_builtins/ci/run.sh
+sed -i '1s|^|#!/bin/bash\n|' src/liblibc/ci/run-docker.sh
+sed -i '1s|^|#!/bin/bash\n|' src/stdsimd/ci/run-docker.sh
 
 %build
+# This should eventually migrate to distro policy
+# Enable optimization, debuginfo, and link hardening.
+export RUSTFLAGS="%{rustflags}"
+# Cargo use system libs
+export LIBGIT2_SYS_USE_PKG_CONFIG=1
+export LIBSSH2_SYS_USE_PKG_CONFIG=1
+
+# Debuginfo can exhaust memory on these architecture workers
+%ifarch  %{arm} %{ix86}
+%define codegen_units --set codegen-units=4
+%define debug_info --disable-debuginfo --enable-debuginfo-only-std 
--disable-debuginfo-tools --disable-debuginfo-lines
+%else
+%define debug_info --enable-debuginfo --disable-debuginfo-only-std 
--enable-debuginfo-tools --disable-debuginfo-lines
+%endif
+
+%configure \
+  --disable-option-checking \
+  --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \
+  --local-rust-root=%{rust_root} \
+  --libdir=%{common_libdir} \
+  --docdir=%{_docdir}/%{name} \
+  %{!?with_bundled_llvm: --llvm-root=%{_prefix} --enable-llvm-link-shared} \
+  --disable-codegen-tests \
+  --enable-docs \
+  --enable-verbose-tests \
+  --disable-jemalloc \
+  --disable-rpath \
+  %{debug_info} \
+  --enable-extended \
+  --enable-vendor \
+  --release-channel="stable"
+
 export CPPFLAGS="%{optflags}" # eliminate complain from RPMlint
-RUST_BACKTRACE=1 python3 ./x.py build --config config.toml
-python3 ./x.py doc --config config.toml
+
+# We need less codegen units for these arches since the workers are running 
out of memory
+# This means we must apply a minimum of 2 CPUs to a worker in constraints.
+%ifarch  %{arm} %{ix86}
+sed -i -e "s|#codegen-units = 1|codegen-units = 2|" config.toml
+%endif
+
+./x.py build
+./x.py doc
 
 %install
 DESTDIR=%{buildroot} python3 ./x.py install
@@ -214,26 +408,39 @@
 find %{buildroot}%{_docdir}/%{name}/html -empty -delete
 find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+'
 
-# Remove surplus files
-rm %{buildroot}%{rustlibdir}/components
-rm %{buildroot}%{rustlibdir}/manifest-rust*
-rm %{buildroot}%{rustlibdir}/install.log
-rm %{buildroot}%{rustlibdir}/uninstall.sh
-rm %{buildroot}%{rustlibdir}/rust-installer-version
+# Remove the license files from _docdir: make install put duplicates there
+rm %{buildroot}%{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE*}
+rm %{buildroot}%{_docdir}/%{name}/*.old
 
 # Remove installer artifacts (manifests, uninstall scripts, etc.)
 find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+'
 
+# Remove hidden files from source
+find %{buildroot}%{rustlibdir} -type f -name '.appveyor.yml -exec rm -v '{}' 
'+'
+find %{buildroot}%{rustlibdir} -type f -name '.travis.yml -exec rm -v '{}' '+'
+
 # The shared libraries should be executable for debuginfo extraction.
 find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -name '*.so' -exec chmod -v 
+x '{}' '+'
 
 # extract bundled licenses for packaging - From fedora spec
 sed -e '/*\//q' src/libbacktrace/backtrace.h > 
src/libbacktrace/LICENSE-libbacktrace
 
-# Remove the license files from _docdir: make install put duplicates there
-rm 
%{buildroot}%{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE-APACHE,LICENSE-MIT}
-
-%fdupes %{buildroot}%{_prefix}
+# The html docs for x86 and x86_64 are the same in most places
+%fdupes %{buildroot}%{_docdir}/%{name}/html
+# We don't want to run fdupes over much else (like src) or it may cause 
weirdness.
+
+# Create the path for crate-devel packages
+mkdir -p %{buildroot}%{_datadir}/cargo/registry
+
+# Cargo no longer builds its own documentation
+# https://github.com/rust-lang/cargo/pull/4904
+mkdir -p %{buildroot}%{_docdir}/cargo
+ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html
+
+# Move the bash-completition to correct directory for openSUSE
+install -D %{buildroot}%{_sysconfdir}/bash_completion.d/cargo 
%{buildroot}%{_datadir}/bash-completion/completions/cargo
+# There should be nothing here at all
+rm -rf %{buildroot}%{_sysconfdir}
 
 %post   -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
@@ -250,20 +457,22 @@
 %{_bindir}/rustc
 %{_bindir}/rustdoc
 %{_bindir}/rust-lldb
-%{_mandir}/man1/rustc.1*
-%{_mandir}/man1/rustdoc.1*
+%{_mandir}/man1/rustc.1%{?ext_man}
+%{_mandir}/man1/rustdoc.1%{?ext_man}
 %{_prefix}/lib/lib*.so
+%dir %{rustlibdir}
+%dir %{rustlibdir}/%{rust_triple}
+%dir %{rustlibdir}/%{rust_triple}/lib
+%{rustlibdir}/%{rust_triple}/lib/*.so
+%{rustlibdir}/%{rust_triple}/codegen-backends/
 %exclude %{_docdir}/%{name}/html
 %exclude %{rustlibdir}/src
 
-%files -n rust-std
+%files -n rust-std-static
 %dir %{rustlibdir}
 %dir %{rustlibdir}/%{rust_triple}
-%dir %{rustlibdir}/%{rust_triple}/codegen-backends
 %dir %{rustlibdir}/%{rust_triple}/lib
-%{rustlibdir}/%{rust_triple}/codegen-backends/librustc_trans-llvm.so
 %{rustlibdir}/%{rust_triple}/lib/*.rlib
-%{rustlibdir}/%{rust_triple}/lib/*.so
 
 %files -n rust-gdb
 %{_bindir}/rust-gdb
@@ -283,4 +492,57 @@
 %dir %{rustlibdir}
 %{rustlibdir}/src
 
+%files -n rls
+%if 0%{?suse_version} == 1315
+%doc src/tools/rls/LICENSE-{APACHE,MIT}
+%else
+%license src/tools/rls/LICENSE-{APACHE,MIT}
+%endif
+%doc src/tools/rls/{README.md,COPYRIGHT,debugging.md}
+%{_bindir}/rls
+
+%files analysis
+%{rustlibdir}/%{rust_triple}/analysis/
+
+%files -n rustfmt
+%if 0%{?suse_version} == 1315
+%doc src/tools/rustfmt/LICENSE-{APACHE,MIT}
+%else
+%license src/tools/rustfmt/LICENSE-{APACHE,MIT}
+%endif
+%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
+%{_bindir}/cargo-fmt
+%{_bindir}/rustfmt
+
+%files -n clippy
+%if 0%{?suse_version} == 1315
+%doc src/tools/clippy/LICENSE
+%else
+%license src/tools/clippy/LICENSE
+%endif
+%doc src/tools/clippy/{README.md,CHANGELOG.md}
+%{_bindir}/cargo-clippy
+%{_bindir}/clippy-driver
+
+%files -n cargo
+%if 0%{?suse_version} == 1315
+%doc src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY}
+%else
+%license src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY}
+%endif
+%{_bindir}/cargo
+%{_mandir}/man1/cargo*.1%{?ext_man}
+%dir %{_datadir}/bash-completion
+%dir %{_datadir}/bash-completion/completions
+%{_datadir}/bash-completion/completions/cargo
+%dir %{_datadir}/zsh
+%dir %{_datadir}/zsh/site-functions
+%{_datadir}/zsh/site-functions/_cargo
+%dir %{_datadir}/cargo
+%dir %{_datadir}/cargo/registry
+
+%files -n cargo-doc
+%dir %{_docdir}/cargo
+%{_docdir}/cargo/html
+
 %changelog

++++++ _constraints ++++++
--- /var/tmp/diff_new_pack.0kF21r/_old  2018-11-13 17:48:39.491702784 +0100
+++ /var/tmp/diff_new_pack.0kF21r/_new  2018-11-13 17:48:39.491702784 +0100
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <constraints>
   <hardware>
-  <processors>8</processors>
+  <processors>4</processors>
     <memory>
       <size unit="G">8</size>
     </memory>
@@ -11,14 +11,41 @@
   </hardware>
   <overwrite>
     <conditions>
+      <arch>i586</arch>
       <arch>armv6l</arch>
       <arch>armv7l</arch>
     </conditions>
     <hardware>
-      <memory>
-        <size unit="M">768</size>
-      </memory>
+      <processors>2</processors>
+      <physicalmemory>
+        <size unit="G">4</size>
+      </physicalmemory>
+      <disk>
+        <size unit="G">15</size>
+      </disk>
+    </hardware>
+  </overwrite>
+  <overwrite>
+    <conditions>
+      <arch>x86_64</arch>
+    </conditions>
+    <hardware>
+      <physicalmemory>
+        <size unit="G">8</size>
+      </physicalmemory>
+    </hardware>
+  </overwrite>
+  <overwrite>
+    <conditions>
+      <arch>aarch64</arch>
+    </conditions>
+    <hardware>
+      <physicalmemory>
+        <size unit="G">8</size>
+      </physicalmemory>
+      <disk>
+        <size unit="G">10</size>
+      </disk>
     </hardware>
   </overwrite>
 </constraints>
-

++++++ ignore-Wstring-conversion.patch ++++++
*** rustc-1.30.0-src/src/librustc_llvm/build.rs 2018-10-25 09:00:01.000000000 
+1300
--- rust-patch/src/librustc_llvm/build.rs       2018-11-05 07:31:35.672765505 
+1300
***************
*** 147,152 ****
--- 147,158 ----
              continue;
          }
  
+         // hack to avoid flag on openSUSE which is incompatible with GCC
+         if flag.starts_with("-W") && flag.contains("string-conversion") {
+             continue;
+         }
+ 
+ 
          cfg.flag(flag);
      }
  
++++++ rust-rpmlintrc ++++++
--- /var/tmp/diff_new_pack.0kF21r/_old  2018-11-13 17:48:39.531702729 +0100
+++ /var/tmp/diff_new_pack.0kF21r/_new  2018-11-13 17:48:39.531702729 +0100
@@ -1,8 +1,8 @@
 # filters for rust-src
+addFilter("devel-dependency rust-std-static")
 addFilter("devel-file-in-non-devel-package.*/usr/lib/rustlib/src/.*")
-addFilter("non-executable-script*./usr/lib/rustlib/src/.*")
 # filters for rust-std
 # rlib not in elf format
 addFilter("binaryinfo-readelf-failed*./usr/lib/rustlib/*.rlib")
 # rust has no stable ABI as of yet, soname is of no use yet
-addFilter("no-soname.*/usr/lib/lib.*")
+addFilter("no-soname.*/usr/lib/rustlib/.*")


Reply via email to