#12550 Fedora 42 Mass Branching Tracker
Closed: Fixed a year ago by jnsamyak. Opened a year ago by jnsamyak.

The Fedora 42 schedule[1] has a mass branching schedule, We need to plan and coordinate all tasks in preparation for it. For the driving changes please refer to [2].

Most importantly for the reviewers or the participators for the PRs and other $stuff here is the checklist we created from our last branching and will be our source to check if we missed anything!
https://docs.fedoraproject.org/en-US/infra/release_guide/mass_branching_checklist/

[1] https://fedorapeople.org/groups/schedule/f-42/f-42-key-tasks.html
[2] https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild#Driving_Features


T Day actions for mass branching

(for reviewers here is a checklist that one can copy this on the releng tracker, so we can keep track of everything needed in one place)

Merge all the preparatory PRs:

Merging and running ansible changes

Push the Changes

  • [ ] Commit, push, and apply the changes using the corresponding ansible playbooks for various services.

Disable Rawhide Builds in Koji

  • [ ] Configure an outage in Koji to disable Rawhide builds.
  • [ ] Cancel all running builds for Rawhide by listing and selecting relevant tasks, and then cancel each task.

PDC (Product Definition Center)

  • [ ] Create a new "product-release" in PDC using the provided script.
  • [ ] Clone or update the releng repository on PDC backend.
  • [ ] Run the create-new-release-branches.py script to set up the new release branches, ensuring to use the --createfile argument.

Koji

  • [ ] Run the make-koji-release-tags script from the releng repository to handle builds from the new branch.

Dist-Git

  • [ ] Create new branches in Git and update gitolite.conf to allow users to push to the new branches.
  • [ ] Run the mass-branching-git.py script to create new branches based on the file generated by PDC.

Bodhi

  • [ ] Link empty repos and create empty repos as necessary to prepare for the new release.
  • [ ] Create rawhide releases in Bodhi using appropriate commands for various types of releases (e.g., standard, container, flatpak).
  • [ ] Update MirrorManager to point to the new Rawhide release.
  • [ ] Enable autosigning on the Branched release after the compose is completed.
  • [ ] Perform ELN-related work, including updating image configurations and scripts.

Fedora Container Base Image

  • [ ] Import new images for Rawhide and update tags for fedora:rawhide and fedora:${RAWHIDE}.

Update Sync Script

  • [ ] Update the sync script in the releng repository with the new version.

Bugzilla version addition

  • [ ] Add 42 version to bugzilla

Metadata Update from @phsmoura:
- Issue tagged with: f42, high-gain, medium-trouble

a year ago
Repository PR Link (Rawhide) PR Link (F42) Reviewed Merged
pungi-fedora Link to PR Link to PR :heavy_check_mark:
fedora-kickstarts Not required? Link to PR
fedora-repos Link to PR Link to PR
fedora-release Link to PR Link to PR
workstation-os-config Link to PR Link to PR
fedora-lorax-template Not required? Just push a new branch without any changes?
fedora-kiwi-descriptions No changes required? Link to PR
fedora-comps No changes required? Link to PR :heavy_check_mark:
releng No changes required! No changes required, since the block retired is moved to poddlers and PDC is decomissioned!
ansible No changes required? Main Branch

BTW for creating branches, I need to get the list of all the RPMs that active (I.e. not retired in rawhide); For that, I'm using the following script:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/bash

set -eu

# Define variables
CHECKOUT_PATH="${1:-/srv/git/rpms}"
OUTPUT_TEMP_PACKAGES="package_list.txt"
OUTPUT_TEMP_RETIRED="retired_packages.txt"
OUTPUT_FINAL="components_f42.txt"

# Step 1: Get all package names from the rpms directory
echo "Fetching all package names..."
: > "$OUTPUT_TEMP_PACKAGES"  # Clear or create file
for git_repo in ${CHECKOUT_PATH}/*.git; do
  git_repo_name="$(basename "${git_repo}" .git)"
  echo "$git_repo_name" >> "$OUTPUT_TEMP_PACKAGES"
done
echo "Stored all package names in $OUTPUT_TEMP_PACKAGES."

# Step 2: Fetch retired packages from Fedora JSON source
echo "Fetching retired packages..."
curl -s https://src.fedoraproject.org/lookaside/retired_in_rawhide.json | jq -r '.rawhide[]' > "$OUTPUT_TEMP_RETIRED"
echo "Stored retired packages in $OUTPUT_TEMP_RETIRED."

# Step 3: Remove retired packages from the full package list to get active packages
echo "Filtering active packages..."
grep -Fxvf "$OUTPUT_TEMP_RETIRED" "$OUTPUT_TEMP_PACKAGES" | awk '{print "rpm/" $0}' > "$OUTPUT_FINAL"
echo "Stored active package list in $OUTPUT_FINAL."

# Step 4: Remove temporary files
rm -f "$OUTPUT_TEMP_PACKAGES" "$OUTPUT_TEMP_RETIRED"
echo "Removed temporary files."

echo "Process completed successfully! 🚀"

which gave the result:

wc -l active_packages.txt 
24436 active_packages.txt

Looks about right to me, but if someone can verify these, would be great!

There's going to be the packages we found that were created, but never imported.

Perhaps you could add a step 1.5:

Check if there's a rawhide $packagename.spec file for the package?

That would stop it from creating any of those never imported ones?

Great! To filter out packages that were created but never imported, I'll modify the script to check if the package has a .spec file in the rawhide branch.

Okay the script got introduced:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/bash

set -eu

# Define variables
CHECKOUT_PATH="${1:-/srv/git/rpms}"
OUTPUT_TEMP_PACKAGES="package_list.txt"
OUTPUT_TEMP_RETIRED="retired_packages.txt"
OUTPUT_FINAL="components_f42.txt"

# Step 1: Get all package names from the rpms directory
echo "Fetching all package names..."
: > "$OUTPUT_TEMP_PACKAGES"  # Clear or create file
for git_repo in ${CHECKOUT_PATH}/*.git; do
  git_repo_name="$(basename "${git_repo}" .git)"
  echo "$git_repo_name" >> "$OUTPUT_TEMP_PACKAGES"
done
echo "Stored all package names in $OUTPUT_TEMP_PACKAGES."

# Step 1.5: Check if the package has a .spec file in rawhide, filtering out never-imported packages
echo "Filtering packages that do not have a rawhide .spec file..."
: > "$OUTPUT_TEMP_PACKAGES.filtered"  # Create a new temp file
while IFS= read -r pkg; do
  if git -C "${CHECKOUT_PATH}/${pkg}.git" ls-tree -r rawhide --name-only | grep -qE "^${pkg}\\.spec$"; then
    echo "$pkg" >> "$OUTPUT_TEMP_PACKAGES.filtered"
  fi
done < "$OUTPUT_TEMP_PACKAGES"
mv "$OUTPUT_TEMP_PACKAGES.filtered" "$OUTPUT_TEMP_PACKAGES"
echo "Filtered package list is now stored in $OUTPUT_TEMP_PACKAGES."

# Step 2: Fetch retired packages from Fedora JSON source
echo "Fetching retired packages..."
curl -s https://src.fedoraproject.org/lookaside/retired_in_rawhide.json | jq -r '.rawhide[]' > "$OUTPUT_TEMP_RETIRED"
echo "Stored retired packages in $OUTPUT_TEMP_RETIRED."

# Step 3: Remove retired packages from the full package list to get active packages
echo "Filtering active packages..."
grep -Fxvf "$OUTPUT_TEMP_RETIRED" "$OUTPUT_TEMP_PACKAGES" | awk '{print "rpm/" $0}' > "$OUTPUT_FINAL"
echo "Stored active package list in $OUTPUT_FINAL."

# Step 4: Remove temporary files
rm -f "$OUTPUT_TEMP_PACKAGES" "$OUTPUT_TEMP_RETIRED"
echo "Removed temporary files."

echo "Process completed successfully! 🚀"

And the result seems reasonable to me:

24299 components_f42.txt

Earlier it was 24436, which has package such as

> rpm/askbot-plugin-authfas
> rpm/atari++
> rpm/Atomes
> rpm/autoconf268
> rpm/biosig4c++
> rpm/bonnie++
> rpm/boost1.78

Metadata Update from @jnsamyak:
- Issue untagged with: medium-trouble
- Issue tagged with: high-trouble

a year ago

Metadata Update from @jnsamyak:
- Issue assigned to jnsamyak

a year ago

Metadata Update from @jnsamyak:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

a year ago

Log in to comment on this ticket.

Metadata