- use 'build' target for building, not 'dist'
- set jobs also for install target
- do not generate tarballs; we don't need them, but they take a lot of disk-space
- do not install 'src'
- do not generate 'install.log' nor 'uninstall.sh'
- on Darwin, use headerpad_max_install_names to be able to fix all dylibs
- make optimized bootstrap
- pkglint fixes
- get ready to depend on lang/llvm and devel/jemalloc
Upstream changes:
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 doc now supports --message-format=json. This is equivalent
to calling rustdoc --error-format=json.
* Cargo will now provide a progress bar for builds.
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.
Pkgsrc changest:
* Explicitly list bootstrap kit version number for each kit we carry,
so that one entry's version doesn't "bleed into" following kits.
* Tweak for handling "earmv7hf" CPU type for NetBSD in the bootstrap.py
script
* Add two patches from Debian for sparc64; rust would generate code
generating unaligned accesses, causing SIGBUS on sparc64
* Update most of the bootstrap kits to version 1.29.2; need minimum
1.29.0 to build 1.30.0.
* Rust regrettably doesn't build for powerpc or earmv7hf in this version,
most probably due to "char" being "unsigned char" on these platforms.
Ref. https://github.com/rust-lang/rust/issues/55465
point to the bootstrap kit for NetBSD/powerpc I'm hosting at the
moment.
Also add the bits I used when cross-building the NetBSD/powerpc
rust on amd64, commented out, as well as the gcc / c++ wrapper
script I used in the process.
The changes affecting other ports are:
* We now add LD_LIBRARY_PATH in the make environment, so that
if the bootstrap kit binaries and shared libraries don't have
the $ORIGIN-style RPATH entries, it will still work
* The bootstrap.py script has been changed to turn off the
generation of debuginfo in "RUSTFLAGS"; for some so far unknown
reason, the NetBSD/powerpc rust will not build if you ask for
debug info. This could perhaps have been made OS-variant dependent,
but isn't at the moment.
So .. bump PKGREVISION.