Learn more about these different git repos.
Other Git URLs
For some reason between pungi-4.1.40 and 4.1.41 on F-32 pungi stopped generating rpms.json, it would log:
2020-01-14 03:27:08 [INFO ] Writing RPM manifest: /mnt/koji/compose/iot/Fedora-IoT-32-20200114.0/compose/metadata/rpms.json
Now with .41 and later the compose fails with:
2020-02-11 13:37:14 [INFO ] [DONE ] Running pipeline (3/3). Phases: ostree, ostree_installer 2020-02-11 13:37:14 [ERROR ] Compose run failed: [Errno 2] No such file or directory: '/mnt/koji/compose/iot/Fedora-IoT-32-20200211.1/compose/metadata/rpms.json' 2020-02-11 13:37:14 [ERROR ] Extended traceback in: /mnt/koji/compose/iot/Fedora-IoT-32-20200211.1/logs/global/traceback.global.log 2020-02-11 13:37:14 [CRITICAL] Compose failed: /mnt/koji/compose/iot/Fedora-IoT-32-20200211.1
For some reason F-31 with the same version works fine.
rolling back to pungi-4.1.40-4.fc31 works fine
The problem is that gather phase is skipped. Therefore there are no RPMs in the final compose, and no reason to write the metadata. However, createrepo phase reads the metadata to build repos (which would be empty in this case). The bug here is that only 2 out of 3 ways to skip phases are checked.
gather
createrepo
To fix the problem, skip createrepo phase in your config.
Fix on Pungi side is to check skipped phases in check_skip_phases.
check_skip_phases
For debugging purpuses, here's the compose: https://kojipkgs.fedoraproject.org/compose/iot/Fedora-IoT-32-20200211.1/
The problem is that gather phase is skipped. Therefore there are no RPMs in the final compose,
So is the real fix here to stop skipping the gather phase? We have a iot override repo we occasionally use, not sure if that affects this.
The real fix is to skip createrepo phase as well.
If we have a side tag (eg f32-iot) does that matter, or does koji generate that repo?
No, that doesn't matter. As far as I can tell from the config, you want ostree repo and installer as main deliverables. The createrepo phase creates repos for yum/dnf in compose/IoT/$arch/os/, but since you don't run gather phase there are no packages to put there.
compose/IoT/$arch/os/
What throws me off is the additional_packages configuration: without gather phase that has no effect. What is the purpose of it?
additional_packages
Right, so it's output, not input we don't need that.
Probably a legacy of hacking up the main fedora pungi config all the way back in ~ F-27/28 time frame.
So if i remove gather I get this:
Failed validation in : 'gather_method' is a required property
gather_method is mandatory even though gather phase is skipped.
According to Lubomir's comment, 'createrepo' should be added to skip_phases config, e.g.
"skip_phases": [ "gahter", "createrepo" ],
PS: I'm working on pungi to print better error message for this.
Commit af5ee70 fixes this issue
Metadata Update from @lsedlar: - Issue set to the milestone: 4.2.1
Login to comment on this ticket.