#1344 IoT on F-32 pungi compose failing due to no rpms.json
Closed: Fixed 4 years ago by lsedlar. Opened 4 years ago by pbrobinson.

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.

To fix the problem, skip createrepo phase in your config.

Fix on Pungi side is to check skipped phases in check_skip_phases.

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.

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.

What throws me off is the additional_packages configuration: without gather phase that has no effect. What is the purpose of it?

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.

Right, so it's output, not input we don't need that.

What throws me off is the additional_packages configuration: without gather phase that has no effect. What is the purpose of it?

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.

Metadata Update from @lsedlar:
- Issue set to the milestone: 4.2.1

4 years ago

Login to comment on this ticket.

Metadata
Related Pull Requests
  • #1349 Merged 4 years ago