Accepting request 648255 from devel:languages:rust

OBS-URL: https://build.opensuse.org/request/show/648255
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rust?expand=0&rev=30
This commit is contained in:
Dominique Leuenberger 2018-11-13 15:33:00 +00:00 committed by Git OBS Bridge
commit f39150ce74
25 changed files with 786 additions and 11709 deletions

View File

@ -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>

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f4ea629da354cc5f5136c8d013ac36e2f342c522150b1dd9ced57b3c42c26e40
size 5099302

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:877f140f58e362f3d47806d9671e3904b7c135c76075d00213efa87cbf6008d7
size 5991048

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c95455fd5006667865b7b6c677102fea1378b3facaf3bf6a6d94e8233bae926e
size 5835402

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:503a7f8a5e9283df33e7d86aa401dca1744abeea67a0ccbb62b2724a63dcd5fc
size 6353885

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e7ebf34c9278d375ac323d22a1a5404f2e8fba4db99d7f7f4e0a64b24d90ddd0
size 5968362

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8d1ed2baf81a933187ef62ef5273b54c055e816922f607411273ed662e45016b
size 5894524

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:917faaf071aa8c84c9160d786bab00a48cd8309d9ca26ac4b8f17f5137590dc6
size 5289607

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f50b64a7610401f4c1afe21de238663f33c621b7fc42c51401090ebd48e69fec
size 6278605

View File

@ -1,246 +0,0 @@
# default options are commented out
# =============================================================================
# Tweaking how LLVM is compiled
# =============================================================================
[llvm]
# Indicates whether rustc will support compilation with LLVM
# note: rustc does not compile without LLVM at the moment
#enabled = true
# 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 = true
# 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 = true
# 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"
# LLVM experimental targets to build support for. These targets are specified in
# the same format as above, but since these targets are experimental, they are
# not built by default and the experimental Rust compilation targets that depend
# on them will not work unless the user opts in to building them. Possible
# experimental LLVM targets include WebAssembly for the
# wasm32-experimental-emscripten Rust target.
#experimental-targets = ""
# 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
# When invoking `llvm-config` this configures whether the `--shared` argument is
# passed to prefer linking to shared libraries.
#link-shared = false
# =============================================================================
# General build configuration options
# =============================================================================
[build]
build = "<rust-triple>"
host = ["<rust-triple>"]
target = ["<rust-triple>"]
cargo = "<cargo-bin>"
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 = true
# 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"
# Force Cargo to check that Cargo.lock describes the precise dependency
# set that all the Cargo.toml files create, instead of updating it.
#locked-deps = false
# Indicate whether the vendored sources are used for Rust dependencies or not
vendor = true
# Typically the build system will build the rust compiler twice. The second
# compiler, however, will simply use its own libraries to link against. If you
# would rather to perform a full bootstrap, compiling the compiler three times,
# then you can set this option to true. You shouldn't ever need to set this
# option to true.
full-bootstrap = true
# Enable a build of the extended rust tool set which is not only the compiler
# but also tools such as Cargo. This will also produce "combined installers"
# which are used to install Rust and Cargo together. This is disabled by
# default.
#extended = false
# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose
verbose = 1
# Build the sanitizer runtimes
#sanitizers = false
# Build the profiler runtime
#profiler = false
# Indicates whether the OpenSSL linked into Cargo will be statically linked or
# not. If static linkage is specified then the build system will download a
# known-good version of OpenSSL, compile it, and link it to Cargo.
#openssl-static = false
# Run the build with low priority, by setting the process group's "nice" value
# to +10 on Unix platforms, and by using a "low priority" job object on Windows.
#low-priority = false
# Arguments passed to the `./configure` script, used during distcheck. You
# probably won't fill this in but rather it's filled in by the `./configure`
# script.
#configure-args = []
# Indicates that a local rebuild is occurring instead of a full bootstrap,
# essentially skipping stage0 as the local compiler is recompiling itself again.
#local-rebuild = false
# =============================================================================
# General install configuration options
# =============================================================================
[install]
prefix = "<prefix>"
sysconfdir = "/etc"
bindir = "<bindir>"
libdir = "<libdir>"
mandir = "<mandir>"
docdir = "<docdir>"
# =============================================================================
# Options for compiling Rust code itself
# =============================================================================
[rust]
# Indicates that the build should be optimized for debugging Rust. Note that
# this is typically not what you want as it takes an incredibly large amount of
# time to have a debug-mode rustc compile any code (notably libstd). If this
# value is set to `true` it will affect a number of configuration options below
# as well, if unconfigured.
#debug = false
# Whether or not to optimize the compiler and standard library
# Note: the slowness of the non optimized compiler compiling itself usually
# outweighs the time gains in not doing optimizations, therefore a
# full bootstrap takes much more time with optimize set to false.
#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. Also enables compilation of debug! and trace! logging macros.
#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 = false
debug-jemalloc = false
# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
#backtrace = true
# The default linker that will be hard-coded into the generated compiler for
# targets that don't specify linker explicitly in their target specifications.
# Note that this is not the linker used to link said compiler.
#default-linker = "cc"
# 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 = false
# Suppresses extraneous output from tests to ensure the output of the test
# harness is relatively clean.
#quiet-tests = false
# 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 = false
# Flag indicating whether git info will be retrieved from .git automatically.
# Having the git information can cause a lot of rebuilds during development.
# Note: If this attribute is not explicity set (e.g. if left commented out) it
# will default to true if channel = "dev", but will default to false otherwise.
#ignore-git = true
# When creating source tarballs whether or not to create a source tarball.
#dist-src = false
# Whether to also run the Miri tests suite when running tests.
# As a side-effect also generates MIR for all libraries.
#test-miri = false

View File

@ -0,0 +1,17 @@
*** 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);
}

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:63ef07abc851889ec8d0df4333b581c8767cb50f3e7c343ce08f5e96b82015a3
size 99702524

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:62712e24a785e8afcc65c07343508c2518eac7815b1f20cb9c095d47ddcf3146
size 105657004

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1c6bc61992a4e1fd5d098739142bad5204cfcd4f5489f87e7d972d5bd7e65ec9
size 105958932

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2e9cfba714309f1f19fe9550b693d9c1f35e95ae25049851abab3af94f446510
size 150567444

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7d6db7c98caad76015bea002e7e61bba43e1ff4fcdf76f905ad6c378e4caaac9
size 103432092

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:27714e2abde3d89f5947371ec144f4386639b037aa214e5571508faff2d0c66f
size 106607384

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48f1a492d12e8441549e8229ee0bddab4f3634c0a6ebeb2b10d36dc89332401a
size 99114900

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b27b4da8e7a85c07dc546cb26682cf0fc74cb4c183dce44f9014c2dd9265931f
size 148275708

View File

@ -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/.*")

View File

@ -1,3 +1,370 @@
-------------------------------------------------------------------
Sun Nov 11 19:43:09 UTC 2018 - Luke Jones <jones_ld@protonmail.com>
- 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 <jones_ld@protonmail.com>
- Add Provides/Obsoletes/Conflicts to rust-std-static and cargo
-------------------------------------------------------------------
Thu Nov 8 01:17:22 UTC 2018 - Neal Gompa <ngompa13@gmail.com>
- 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 <jengelh@inai.de>
- Fix second-person language and spellos.
-------------------------------------------------------------------
Sun Nov 4 22:12:42 UTC 2018 - Luke Jones <jones_ld@protonmail.com>
- 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 <jones_ld@protonmail.com>
- 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 <jones_ld@protonmail.com>
- 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.
- Added a lint warning when you have duplicated `macro_export`s.-
- Reduced the number of allocations in the macro parser.- This can
improve compile times of macro heavy crates on average by 5%.
+ Libraries
- Implemented `Default` for `&mut str`.-
- Implemented `From<bool>` for all integer and unsigned number types.-
- Implemented `Extend` for `()`.-
- The `Debug` implementation of `time::Duration` should now be more easily
human readable.- Previously a `Duration` of one second would printed as
`Duration { secs: 1, nanos: 0 }` and will now be printed as `1s`.
- Implemented `From<&String>` for `Cow<str>`, `From<&Vec<T>>` for `Cow<[T]>`,
`From<Cow<CStr>>` for `CString`, `From<CString>, From<CStr>, From<&CString>`
for `Cow<CStr>`, `From<OsString>, From<OsStr>, From<&OsString>` for
`Cow<OsStr>`, `From<&PathBuf>` for `Cow<Path>`, and `From<Cow<Path>>`
for `PathBuf`.-
- Implemented `Shl` and `Shr` for `Wrapping<u128>`
and `Wrapping<i128>`.-
- `DirEntry::metadata` now uses `fstatat` instead of `lstat` when
possible.- This can provide up to a 40% speed increase.
- Improved error messages when using `format!`.-
+ Stabilized APIs
- `Iterator::step_by`
- `Path::ancestors`
- `SystemTime::UNIX_EPOCH`
- `alloc::GlobalAlloc`
- `alloc::Layout`
- `alloc::LayoutErr`
- `alloc::System`
- `alloc::alloc`
- `alloc::alloc_zeroed`
- `alloc::dealloc`
- `alloc::realloc`
- `alloc::handle_alloc_error`
- `btree_map::Entry::or_default`
- `fmt::Alignment`
- `hash_map::Entry::or_default`
- `iter::repeat_with`
- `num::NonZeroUsize`
- `num::NonZeroU128`
- `num::NonZeroU16`
- `num::NonZeroU32`
- `num::NonZeroU64`
- `num::NonZeroU8`
- `ops::RangeBounds`
- `slice::SliceIndex`
- `slice::from_mut`
- `slice::from_ref`
- `{Any + Send + Sync}::downcast_mut`
- `{Any + Send + Sync}::downcast_ref`
- `{Any + Send + Sync}::is`
+ Cargo
- Cargo will now no longer allow you to publish crates with build scripts that
modify the `src` directory.][cargo/5584] The `src` directory in a crate should be
considered to be immutable.
+ Misc
- The `suggestion_applicability` field in `rustc`'s json output is now
stable.- This will allow dev tools to check whether a code suggestion
would apply to them.
+ Compatibility Notes
- Rust will consider trait objects with duplicated constraints to be the same
type as without the duplicated constraint.- For example the below code will
now fail to compile.
```rust
trait Trait {}
impl Trait + Send {
fn test(&self) { println!("one"); } //~ ERROR duplicate definitions with name `test`
}
impl Trait + Send + Send {
fn test(&self) { println!("two"); }
}
- Update to version 1.27.2:
+ Compatibility Notes
- The borrow checker was fixed to avoid an additional potential unsoundness when using
match ergonomics
- Update to version 1.27.1:
+ Security Notes
- rustdoc would execute plugins in the /tmp/rustdoc/plugins directory
when running, which enabled executing code as some other user on a
given machine. This release fixes that vulnerability; you can read
more about this on the blog. The associated CVE is [CVE-2018-1000622].
Thank you to Red Hat for responsibily disclosing this vulnerability to us.
+ Compatibility Notes
- The borrow checker was fixed to avoid an additional potential unsoundness when using
match ergonomics
- Update to version 1.27.0:
+ Language
- Removed 'proc' from the reserved keywords list. This allows `proc` to
be used as an identifier.
- The dyn syntax is now available. This syntax is equivalent to the
bare `Trait` syntax, and should make it clearer when being used in tandem with
`impl Trait` because it is equivalent to the following syntax:
`&Trait == &dyn Trait`, `&mut Trait == &mut dyn Trait`, and
`Box<Trait> == Box<dyn Trait>`.
- Attributes on generic parameters such as types and lifetimes are
now stable. e.g.
`fn foo<#[lifetime_attr] 'a, #[type_attr] T: 'a>() {}`
- The `#[must_use]` attribute can now also be used on functions as well as
types. It provides a lint that by default warns users when the
value returned by a function has not been used.
+ Compiler
- Added the `armvte-unknown-linux-musleabi` target.
+ Libraries
- SIMD (Single Instruction Multiple Data) on x/x_ is now stable.
This includes arch::x & arch::x_ modules which contain
SIMD intrinsics, a new macro called `is_x_feature_detected!`, the
`#[target_feature(enable="")]` attribute, and adding `target_feature = ""` to
the `cfg` attribute.
- A lot of methods for `[u]`, `f`, and `f` previously only available in
std are now available in core.
- The generic `Rhs` type parameter on `ops::{Shl, ShlAssign, Shr}` now defaults
to `Self`.
- std::str::replace` now has the `#[must_use]` attribute to clarify
that the operation isn't done in place.
- Clone::clone`, `Iterator::collect`, and `ToOwned::to_owned` now have
the `#[must_use]` attribute] to warn about unused potentially
expensive allocations.
+ Stabilized APIs
- DoubleEndedIterator::rfind
- DoubleEndedIterator::rfold
- DoubleEndedIterator::try_rfold
- Duration::from_micros
- Duration::from_nanos
- Duration::subsec_micros
- Duration::subsec_millis
- HashMap::remove_entry
- Iterator::try_fold
- Iterator::try_for_each
- NonNull::cast
- Option::filter
- String::replace_range
- Take::set_limit
- hint::unreachable_unchecked
- os::unix::process::parent_id
- ptr::swap_nonoverlapping
- slice::rsplit_mut
- slice::rsplit
- slice::swap_with_slice
+ Cargo
- `cargo-metadata` now includes `authors`, `categories`, `keywords`,
`readme`, and `repository` fields.
- `cargo-metadata` now includes a package's `metadata` table.
- Added the `--target-dir` optional argument. This allows you to specify
a different directory than `target` for placing compilation artifacts.
- Cargo will be adding automatic target inference for binaries, benchmarks,
examples, and tests in the Rust 2018 edition. If your project specifies
specific targets, e.g. using `[[bin]]`, and have other binaries in locations
where cargo would infer a binary, Cargo will produce a warning. You can
disable this feature ahead of time by setting any of the following to false:
`autobins`, `autobenches`, `autoexamples`, `autotests`.
- Cargo will now cache compiler information. This can be disabled by
setting `CARGO_CACHE_RUSTC_INFO=0` in your environment.
+ Compatibility Notes
- Calling a `CharExt` or `StrExt` method directly on core will no longer
work. e.g. `::core::prelude::v1::StrExt::is_empty("")` will not
compile, `"".is_empty()` will still compile.
- `Debug` output on `atomic::{AtomicBool, AtomicIsize, AtomicPtr, AtomicUsize}`
will only print the inner type. E.g.
`print!("{:?}", AtomicBool::new(true))` will print `true`,
not `AtomicBool(true)`.
- The maximum number for `repr(align(N))` is now 2²⁹. Previously you
could enter higher numbers but they were not supported by LLVM. Up to 512MB
alignment should cover all use cases.
- The `.description()` method on the `std::error::Error` trait
has been soft-deprecated. It is no longer required to implement it.
+ Misc
- Added “The Rustc book” into the official documentation.
-------------------------------------------------------------------
Wed Jun 6 10:37:27 UTC 2018 - mmanu84@outlook.de

420
rust.spec
View File

@ -2,7 +2,7 @@
# spec file for package rust
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
# Copyright (c) 2017 Luke Jones, luke.nukem.jones@gmail.com
# Copyright (c) 2018 Luke Jones, jones_ld@protonmail.com
#
# 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 @@ Conflicts: rustc-bootstrap
# 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 @@ 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 -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 @@ invoking gdb on rust binaries.
%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 @@ This package includes source files for the Rust standard library. This
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
%if %{with rust_bootstrap}
%global rust_root %{_builddir}/rust-%{prev_rust}-%{rust_triple}%{_prefix}
%else
%global rust_root %{_prefix}
%endif
# 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
%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 @@ rm %{buildroot}%{_docdir}/%{name}/html/.lock
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}
# 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.
%fdupes %{buildroot}%{_prefix}
# 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 @@ rm %{buildroot}%{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE-APACHE,LICENSE-MI
%{_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 @@ rm %{buildroot}%{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE-APACHE,LICENSE-MI
%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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700
size 95312651

3
rustc-1.30.0-src.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b9fc7304fd48d6d6a23fa4565d94353c7cc2659db452f34d69fbc01c4f67021d
size 96083280

File diff suppressed because one or more lines are too long