rust2rpm

Version 21

- new %crate_instdir convenience macro with the path to the
  installation directory
- license and documentation files are now installed just once under
  %crate_instdir and are marked with %license and %doc there
- link flags are now passed using the RUSTFLAGS envvar and include
  package note linker script (when %_package_note_file is defined)
- CFLAGS/CXXFLAGS are passed to the processes started by cargo
- rpmautospec can be disabled with --no-rpmautospec
- minor tweaks to existence checks, documentation file detection, license tags,
  version handling and spec file naming

Version 20

- fix autodetection of rpmspec if it was already used in the existing spec file
- fix parsing of ID_LIKE in os-release files
- drop unused __cargo_skip_build logic
- improve handling of the upper bound in dependencies with ~ in version
- minor improvements to grammar and whitespace in generated output

Version 19

- use rpmautospec by default for Fedora
- check if a package already exists in Fedora (use --no-existence-check to opt-out)
- replace hyphens by underscores in Version (issue #124)
- suppress tracebacks for network errors and similar (issue #125)
- add bundled() provider for vendoring to be used with 'cargo vendor'
  and a new --provides-vendor parameter
- test with Python 3.10 and mark it as supported
- licensing: add CDDL-1.1, LGPL-2.0-or-later

Version 18

- Add simple %license and %doc file auto-detection
- Add optional support for rpmautospec (%autorelease, %autochangelog)
- Use changelog timestamp format with time and timezone only on OpenSUSE
- Fix parsing of features with "+" in their name
- Use Fedora 35 for Fedora license helper script
- licensing: add Python-2.0

Version 17

- revert the change to specify all BuildRequires directly, not in
  %generate_buildrequires

Version 16

- new 'fedora-helper' tool for Fedora
- specify all BuildRequires directly, not in %generate_buildrequires
- introduce new unwanted-features setting in .rust2rpm.conf files to
  prevent subpackages for specific "unwanted" features from being
  generated
- licensing: add LGPL-3.0-or-later, LGPL-2.1-or-later, EUPL-1.2
- add riscv64 to %rust_arches

Version 14/15

- Use '--no-track' for 'cargo install'
- Support versions with multiple wildcards (e.g. '1.*.*')
- Ignore 'Cargo.toml.orig' which causes issues with build of many crates

Version 13

- Generate %files entries with '%{version_no_tilde}'
- Add support for using multiple features at a time in cargo-inspector
- Implement support for "renamed" dependencies

Version 12

- Set proper Version field for pre-release versions of crates

Version 11

- When dynamic BuildRequires are turned on, propagate arguments to %cargo_*
- Few improvements in algorithm of description splitting into a summary
- Ignore Cargo.lock for installation (publish lockfile feature in Cargo 1.37+)
- Replace semantic_version dependency by custom parser
- Add MPL-2.0-or-later and 0BSD into a Fedora SPDX mapping
- Pass --cap-lints=warn into the RUSTFLAGS to prevent FTBFS after
  dependency and/or compiler updates
- Enable dynamic BuildRequires by default for Fedora target

Version 10

- Translate '-or-later' and '+' license suffixes properly
- Check /usr/lib/os-release in addition to /etc/os-release
- Prettify summary and description automatically
- Use %{expand:…} for %description to avoid escaping of newlines
- Add '--suffix' option for "compat" packages
- Implement option to skip building of crates (aka fast/bootstrap build)

Version 9

- Always put upstream license in spec
- Fix version in egg-info
- Remove accidentally left Cargo.toml.deps
- Fix packager detection fallback

Version 8

- Pass '-Ccodegen-units=1' in RUSTFLAGS
- Switch to '%{build_rustflags}'

Version 7

- Generate %doc statements for readme from Cargo.toml
- Split features into subpackages ('rust-$crate+$feature-devel')
- Add support for dependencies with same name
- Add support for user configuration ('.rust2rpm.conf', '_rust2rpm.conf')
- Option to not generate default changelog entry ('--no-auto-changelog-entry')
- Set 'CARGO_HOME' to the local '.cargo' (required by new Rust)
- Improvements for crates with pre-release versions
- Fix '%cargo_install' with crates which use whitespace in files
- Do not put unneeded optional dependencies in BuildRequires ('-Z avoid-dev-deps')
- Option to use all crate features when generating spec file
- Use new-style changelog format (with TZ info) on Fedora
- Option to use dynamic BuildRequires (requires RPM 4.15+)
- Environment variables to control packager identity

Version 6

- Improvements in RPM macros
- Add support for handling local crates
- Add option to copy crate into current working directory
- Filter non-linux dependencies automatically
- Translate SPDX licenses into Fedora ones (for Fedora and Mageia)

Version 5

- Add cargo dependency for runtime (devel subpackages)
- Use cp instead of install in macros in order to keep original permissions
- Ignore yanked versions when no version is specified
- Pass --no-fail-fast for cargo-test
- Treat optional dependencies as "features" as well
- Add support for "rlib" crate-type
- Add support for Mageia and (open)SUSE in template

Version 4

- Switch to /usr/share/cargo/registry for storing crates
- Explicitly set rustdoc in macro so it won't collide with the one used by user
- Add initial support for pre-release versions
- Add support for versions with multiple wildcards (like 1.*.*)

Version 3

- Use rich dependencies to fulfil requirements
- Automagically strip [dev-dependencies] when building without tests
- Add support for wildcard in version
- Generate initial changelog
- Use rust-packaging for BuildRequires to break loop
- Other cleanups and fixes

Version 2

- Automatic generation of summary and description
- Initial patching of metadata
- Save generated spec/patch as files instead of printing to stdout
- Support for proc-macro kind of library
- %cargo_build and %cargo_test now accept any parameters
- Automatically strip [dev-dependencies] when %check is disabled

Version 1

- initial version with setuptools metadata
