From b73a50510287060f0d58bf31e5d545f5877760a2 Mon Sep 17 00:00:00 2001 From: Patrik Polakovic Date: Sep 16 2025 09:43:32 +0000 Subject: Update unretirement process and SOP pagure.io/releng/issue/12905 Signed-off-by: Patrik Polakovic --- diff --git a/modules/releng_misc_guide/pages/sop_unretire.adoc b/modules/releng_misc_guide/pages/sop_unretire.adoc index 609fbcb..d418d77 100644 --- a/modules/releng_misc_guide/pages/sop_unretire.adoc +++ b/modules/releng_misc_guide/pages/sop_unretire.adoc @@ -1,29 +1,30 @@ -== Unretire a Package += Package Unretirement Process -=== Description +== Description -Sometimes a packager might request that we _unretire_ a package branch that -has previously been retired. +Sometimes a packager might request (via opening a ticket) +that we _unretire_ a package branch that has previously been retired. -This typically happens on the [.title-ref]#rawhide# branch, but could -conceivably happen on any stable or arbitrary branch. +Unretirements typically happen for the `rawhide` branch, but could +conceivably happen for any stable branch. [NOTE] ==== A valid Kerberos (`kinit`) ticket and `cvsadmin` FAS group membership are needed. ==== -=== Actions +== Actions -==== Validate Package Ready for Unretirement +=== Validate Package Ready For Unretirement -. Verify the package was not retired for any reason, such as legal or -license issues, that would prevent it from being re-instated. -. Ensure a Bugzilla was filed to review the package for unretirement. -. Verify with the the requestor exactly which tags they would like -unblocked as part of the unretirement request. +. Verify what the reason and time of the retirement was. +This is usually stated in the retirement commit. +. Ensure that a Bugzilla ticket was filed to review the package for unretirement. +This is https://docs.fedoraproject.org/en-US/fesco/Policy_for_orphan_and_retired_packages/#unorphaning_and_unretiring_packages/[not necessary] +in case the package was retired less than 8 weeks ago. +. Verify with the the requestor exactly which branches are to be unretired. -==== Revert the Retirement Commit +=== Revert The Retirement Commit . Connect to one of the compose systems. + @@ -31,50 +32,108 @@ unblocked as part of the unretirement request. $ ssh compose-branched01.rdu3.fedoraproject.org .... + -. Clone the dist-git package using the the proper release engineering -credentials. +. Clone the package using the the proper release engineering credentials. + .... $ GIT_SSH=/usr/local/bin/relengpush fedpkg --user releng clone PACKAGENAME .... + -. Enter the directory of the cloned package and configure the git user -information. +. Enter the directory of the cloned package. + .... $ cd PACKAGENAME +.... ++ +. Configure the git user information. ++ +.... $ git config --local user.name "Fedora Release Engineering" $ git config --local user.email "releng@fedoraproject.org" .... + -. Git revert the retirement commit (that introduces the `dead.package` file) +. Revert the retirement commit (that introduced the `dead.package` file) in dist-git on the particular branch using its commit hash ID. Ensure the commit message contains a URL to the request in Pagure. + .... $ git revert -s COMMIT_HASH_ID +.... ++ +. Push the commit. ++ +.... $ GIT_SSH=/usr/local/bin/relengpush fedpkg --user releng push .... Commit message example: -`Unretirement request: pagure.io/releng/issue/12345` +`*Unretirement request: pagure.io/releng/issue/12345*` + +==== Special Case: Branches That Have An Identical Commit History -==== Unblock the Package in Koji +Normally that should be all that is required in regards to git operations. +If the branches have already diverged then each branch gets its own revert commit. +However, from time to time a special case might arise +(usually around the time of mass branching) where both of the branches have an +identical commit history. -. Check the current state of the branches in Koji for the package. +The package gets retired due to +https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/[FTBFS/FTI] +reasons, has the `dead.package` file at the time of mass branching and then +a new branch is created that also contains the `dead.package` file. At this point +nobody without proper credentials can push to the repository. + +In such a case we want to keep the commit history identical for both branches. + +. Update the remote-tracking branches. ++ +.... +$ GIT_SSH=/usr/local/bin/relengpush git fetch +.... ++ +. Switch to the other branch that is to be unretired. ++ +.... +$ git switch BRANCH_NAME +.... ++ +. Reset both the index and the working tree of the branch you are on +to the branch that already contains the unretirement commit. ++ +.... +$ git reset --hard rawhide +.... ++ +. Push the changes to the correct branch. ++ +.... +$ GIT_SSH=/usr/local/bin/relengpush git push origin BRANCH_NAME +.... + +The outcome of this should be that there is only one revert commit for both +branches, keeping the commit history clean. + +=== Unblock The Package In Koji + +. Check the current state of the tags. + .... $ koji list-pkgs --show-blocked --package PACKAGE_NAME .... + -. Unblock each requested tag using Koji. +. Unblock each requested tag. + .... $ koji unblock-pkg TAG_NAME PACKAGE_NAME .... ++ +. Untag all of the builds for each tag that was unblocked. ++ +.... +$ koji untag-build --all TAG_NAME PACKAGE_NAME --force +.... -==== Verify Package is Not Orphaned +=== Verify Package Is Not Orphaned . Navigate to https://src.fedoraproject.org/[dist-git] and find the package. + @@ -87,8 +146,9 @@ through the web interface. [NOTE] ==== -It is a good idea to link the dist-git repository directly in the ticket when closing it. - -It makes it much more time efficient in case something else needs to be done in regards -to the ticket in the future. +It is a good idea to link the dist-git repository directly in the ticket when closing it and remind the requestor to submit a new build for each unretired branch. ==== + +== Resources +. https://docs.fedoraproject.org/en-US/fesco/Policy_for_orphan_and_retired_packages/[Policy For Orphaned And Retired Packages] +. https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/[FTBFS/FTI]