Fixes #9841 - adds a release_type field to .composeinfo so we can tell Beta and Final releases apart. #13029

Merged
jnsamyak merged 3 commits from jnsamyak/tooling:update_composeinfo_file into main 2026-07-21 00:23:08 +00:00
Owner

Problem

The .composeinfo file never included release type. PXE boot menus in RH Beaker labs couldn't tell Beta from GOLD for the same version - both showed up as "fedora-33". Beta entries stuck around after GOLD shipped, which confused the menu.

Solution

So, as discussed in the ticket, I modified the script to add one more variant in the product section:

Modified build_composeinfo.py:

  • Added extract_release_type_from_path() to parse release type from directory paths
    ("42_Beta" → "Beta", "42_RC" → "Final")
  • Added optional --release-type parameter for explicit control
  • Writes release_type to the [product] section

Modified stage_release.sh:

  • Extracts release type from RELEASEVER (Beta → Beta, RC/Final/no suffix → Final)
  • Passes it to the koji compose call

  Output                                                                                     
                                                                                                
  ```ini                                                                                        
  [product]
  family = Fedora                                                                               
  name = Fedora-44                                          
  version = 44
  release_type = Beta
  variants = Everything,Server,...                                                              

Related Issue: releng/tickets#9841

### Problem The `.composeinfo` file never included release type. PXE boot menus in RH Beaker labs couldn't tell Beta from GOLD for the same version - both showed up as "fedora-33". Beta entries stuck around after GOLD shipped, which confused the menu. ### Solution So, as discussed in the ticket, I modified the script to add one more variant in the product section: Modified `build_composeinfo.py`: - Added `extract_release_type_from_path()` to parse release type from directory paths ("42_Beta" → "Beta", "42_RC" → "Final") - Added optional `--release-type` parameter for explicit control - Writes `release_type` to the `[product]` section Modified `stage_release.sh`: - Extracts release type from `RELEASEVER` (Beta → Beta, RC/Final/no suffix → Final) - Passes it to the koji compose call --- ``` Output ```ini [product] family = Fedora name = Fedora-44 version = 44 release_type = Beta variants = Everything,Server,... ``` Related Issue: https://forge.fedoraproject.org/releng/tickets/issues/9841
Signed-off-by: Samyak Jain <samyak.jn11@gmail.com>
Signed-off-by: Samyak Jain <samyak.jn11@gmail.com>
Owner

Seems all pretty plausable, I haven't tested it though...

And you seem to have conflicts... can you get those sorted out?

Seems all pretty plausable, I haven't tested it though... And you seem to have conflicts... can you get those sorted out?
Member

Looking at RHEL composes, this doesn't match. Here's a sample:

[product]
family = Red Hat Enterprise Linux
name = RHEL-10.3-20260510.1
short = RHEL
type = ga
variants = BaseOS
version = 10.3

so the name should be type and the value for a final release should be ga.

I see quite a lot of other discrepancies, e.g. we're entirely missing the compose section:

[compose]
date = 20260510
id = RHEL-10.3-20260510.1
label = Beta-1.0
respin = 1
type = production

Possibly we need to compare notes with however this generation is done for RHEL composes and sync things up?

Ping me if you need a link to the RHEL compose server so you can cross-reference.

Looking at RHEL composes, this doesn't match. Here's a sample: ``` [product] family = Red Hat Enterprise Linux name = RHEL-10.3-20260510.1 short = RHEL type = ga variants = BaseOS version = 10.3 ``` so the name should be `type` and the value for a final release should be `ga`. I see quite a lot of other discrepancies, e.g. we're entirely missing the `compose` section: ``` [compose] date = 20260510 id = RHEL-10.3-20260510.1 label = Beta-1.0 respin = 1 type = production ``` Possibly we need to compare notes with however this generation is done for RHEL composes and sync things up? Ping me if you need a link to the RHEL compose server so you can cross-reference.
Author
Owner

Okay so added builds/compose/build_composeinfo_wrapper.py as a follow-up to the release_type work.

When composeinfo.json is present (typical Pungi compose tree), the wrapper uses compose-utils to write the legacy .composeinfo INI format and adds release_type under [product]. If there’s no JSON e.g. staged mirror trees it falls back to the existing treeinfo logic in build_composeinfo.py.

stage_release.sh is unchanged for now; planning to switch that in a follow-up once this looks good.

Okay, and now the compose file looks like this: releng/tickets#9841 (comment)

Okay so added builds/compose/build_composeinfo_wrapper.py as a follow-up to the release_type work. When composeinfo.json is present (typical Pungi compose tree), the wrapper uses compose-utils to write the legacy .composeinfo INI format and adds release_type under [product]. If there’s no JSON e.g. staged mirror trees it falls back to the existing treeinfo logic in build_composeinfo.py. stage_release.sh is unchanged for now; planning to switch that in a follow-up once this looks good. Okay, and now the compose file looks like this: https://forge.fedoraproject.org/releng/tickets/issues/9841#issuecomment-1061513
jnsamyak force-pushed update_composeinfo_file from e99bc8f08a to 9d5d0cfdb0 2026-07-13 12:43:58 +00:00 Compare
jnsamyak force-pushed update_composeinfo_file from 9d5d0cfdb0 to 2cc78d2395 2026-07-13 12:45:29 +00:00 Compare
Author
Owner

As discussed in the releng call yesterday, we will merge this. And at the time of beta release, we will check for discrepancies and check with the beaker folks to see if this is as expected.

As discussed in the releng call yesterday, we will merge this. And at the time of beta release, we will check for discrepancies and check with the beaker folks to see if this is as expected.
jnsamyak deleted branch update_composeinfo_file 2026-07-21 00:23:09 +00:00
Sign in to join this conversation.
No reviewers
releng/members
releng/Owners
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
releng/tooling!13029
No description provided.