A tool to help Fedora Packagers update rust packages.
Fedora developers use a lot of time updating rust packages since there are often many missing crates at the beginning, or crates where the version in Fedora is too old. Updating spec file using rust2rpm requires some improvments including preserving additional patches, comments, macros, etc. Also, to update a package, we should make sure it will not introduce a transitive closure of dependent crates. rust-update-set tool was made to help (semi-)automate common workflows to save time and effort.
rust-update-set
is a Fedora Packager tool which tries to automate some common tasks
like:
and more.
$ rust-update-set update package_A package_B:version ...
This will recursively check out all packages need to be updated or created when trying to update package_A, package_B, etc. Changes from old spec files will be patched to new spec files and failures are expected in this process. Users need to double check when the patching fails or succeeds with warnings before pushing and building all packages. This will also do a update compatibility check, if some updated packages break other packages, a compat crate will be created with package name rust-{crate}{old_version}
$ rust-update-set update --branch f36
This will update release branches for all packages by running 'git rebase rawhide'
$ rust-update-set push
This will fork repos, commit changes and push to forked repos. Failures are also expected when repos are already forked and ahead of origin commits. Users need to double check before building all packages. FIX: this is mostly for testing, can be amended to push to actual release repo
$ rust-update-set push --branch f36
This will push updates to release branches for all packages by running 'git push'
$ rust-update-set mockbuild --release rawhide
This will mockbuild all new packages with release specified (default: rawhide) by running 'fedpkg --release RELEASE mockbuild' in package directory.
$ rust-update-set create-review
This will create Fedora Review for new pakcages by running 'fedora-create-review spec_file srpm_file' in package directory.
$ rust-update-set request-repos $ rust-update-set request-branches --all-release $ rust-update-set request-branches f36
This will request repository and release branches for new packages and compat packages
$ rust-update-set copr-build --copr-project project_name
This will specify an build order and build all packages in Copr project with name project_name. If the project does not exist, this command will also create a Copr project.
$ rust-update-set chain-build
This will specify an build order and build all packages in Koji with a requested side tag using 'fedpkg request-side-tag' and 'fedpkg chain-build'
$ rust-update-set chain-build --branch f36
This will specify an build order and build all packages in Koji with a requested side tag using 'fedpkg request-side-tag' and 'fedpkg chain-build'
$ rust-update-set check package_A package_B:version
This will perform a compatibility check without checking out all repos. Users can use this command to check what packages should be updated as a whole set.
$ rust-update-set bodhi-check --bodhi-id bodhi_update_id
This will perfrom a compatibility check for all builds within a bodhi update. Update reviewers can use this command to check if the update set will introduce transitive closure. This command will also show all compat crates inside the update set and results from repo query, which can be used for further manual compatibility review.