RPM `filelists.xml` updater
Proposal
The filelists.xml
RPM repository metadata file contains a list of files for each package in the repository (or in our case, the project). Each time a new .rpm
file is uploaded, we need to update this repository file.
In this issue, we create a service that can update the filelists.xml
given a package, a list of files, and any other relevant metadata that needs to be written to the filelists.xml
file. The data to update this file will be coming from the service defined in #372648 (closed).
This is an example of what part of the filelists.xml
file looks like:
Click to expand
<?xml version="1.0" encoding="UTF-8"?>
<filelists xmlns="http://linux.duke.edu/metadata/filelists" packages="58687">
<package pkgid="56cd21bf16e17cdccb5ff4fb8da211502ea6f1071f3ac6067f9b4a591dfbe8a7" name="0ad" arch="aarch64">
<version epoch="0" ver="0.0.25b" rel="2.fc36"/>
<file>/usr/bin/0ad</file>
<file>/usr/bin/pyrogenesis</file>
<file type="dir">/usr/lib/.build-id</file>
<file type="dir">/usr/lib/.build-id/11</file>
<file>/usr/lib/.build-id/11/57f609ab087f3f08530c505a1f9cb550f02de8</file>
<file type="dir">/usr/lib/.build-id/51</file>
<file>/usr/lib/.build-id/51/14b1530e67371e61405ba3327a13d7dd54d87d</file>
<file type="dir">/usr/lib/.build-id/69</file>
<file>/usr/lib/.build-id/69/2a8788b6115f72612ffd0db0b2fa41b2e8a2f8</file>
<file type="dir">/usr/lib/.build-id/bc</file>
<file>/usr/lib/.build-id/bc/edfcd9c32a40999afc2a7f93156c0aece9e839</file>
<file type="dir">/usr/lib64/0ad</file>
<file>/usr/lib64/0ad/libAtlasUI.so</file>
<file>/usr/lib64/0ad/libCollada.so</file>
<file>/usr/lib64/0ad/libmozjs78-ps-release.so</file>
<file type="dir">/usr/share/0ad</file>
<file type="dir">/usr/share/0ad/l10n</file>
<file type="dir">/usr/share/0ad/l10n/.tx</file>
<file>/usr/share/0ad/l10n/.tx/config</file>
<file>/usr/share/0ad/l10n/ast.engine.po</file>
<file>/usr/share/0ad/l10n/ca.engine.po</file>
<file>/usr/share/0ad/l10n/cs.engine.po</file>
<file>/usr/share/0ad/l10n/de.engine.po</file>
<file>/usr/share/0ad/l10n/el.engine.po</file>
<file>/usr/share/0ad/l10n/en_GB.engine.po</file>
<file>/usr/share/0ad/l10n/engine.pot</file>
<file>/usr/share/0ad/l10n/es.engine.po</file>
<file>/usr/share/0ad/l10n/eu.engine.po</file>
<file>/usr/share/0ad/l10n/fi.engine.po</file>
<file>/usr/share/0ad/l10n/fr.engine.po</file>
<file>/usr/share/0ad/l10n/gd.engine.po</file>
<file>/usr/share/0ad/l10n/hu.engine.po</file>
<file>/usr/share/0ad/l10n/id.engine.po</file>
<file>/usr/share/0ad/l10n/it.engine.po</file>
<file>/usr/share/0ad/l10n/messages.json</file>
<file>/usr/share/0ad/l10n/nl.engine.po</file>
<file>/usr/share/0ad/l10n/pl.engine.po</file>
<file>/usr/share/0ad/l10n/pt_BR.engine.po</file>
<file>/usr/share/0ad/l10n/ru.engine.po</file>
<file>/usr/share/0ad/l10n/sk.engine.po</file>
<file>/usr/share/0ad/l10n/sv.engine.po</file>
<file>/usr/share/0ad/l10n/tr.engine.po</file>
<file>/usr/share/0ad/l10n/uk.engine.po</file>
<file type="dir">/usr/share/0ad/mods</file>
<file type="dir">/usr/share/0ad/mods/_test.dae</file>
<file type="dir">/usr/share/0ad/mods/_test.dae/art</file>
<file type="dir">/usr/share/0ad/mods/_test.dae/art/actors</file>
<file>/usr/share/0ad/mods/_test.dae/art/actors/jav2.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.dae/art/animation</file>
<file>/usr/share/0ad/mods/_test.dae/art/animation/jav2.dae</file>
<file type="dir">/usr/share/0ad/mods/_test.dae/art/meshes</file>
<file>/usr/share/0ad/mods/_test.dae/art/meshes/jav2.dae</file>
<file type="dir">/usr/share/0ad/mods/_test.gui</file>
<file type="dir">/usr/share/0ad/mods/_test.gui/gui</file>
<file type="dir">/usr/share/0ad/mods/_test.gui/gui/common</file>
<file>/usr/share/0ad/mods/_test.gui/gui/common/styles.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.gui/gui/event</file>
<file>/usr/share/0ad/mods/_test.gui/gui/event/event.js</file>
<file>/usr/share/0ad/mods/_test.gui/gui/event/event.xml</file>
<file>/usr/share/0ad/mods/_test.gui/gui/event/page_event.xml</file>
<file>/usr/share/0ad/mods/_test.gui/gui/gui.rng</file>
<file>/usr/share/0ad/mods/_test.gui/gui/gui_page.rng</file>
<file type="dir">/usr/share/0ad/mods/_test.gui/gui/hotkey</file>
<file>/usr/share/0ad/mods/_test.gui/gui/hotkey/hotkey.js</file>
<file>/usr/share/0ad/mods/_test.gui/gui/hotkey/hotkey.xml</file>
<file>/usr/share/0ad/mods/_test.gui/gui/hotkey/page_hotkey.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.gui/gui/regainFocus</file>
<file>/usr/share/0ad/mods/_test.gui/gui/regainFocus/page_emptyPage.xml</file>
<file>/usr/share/0ad/mods/_test.gui/gui/regainFocus/page_pushWithPopOnInit.xml</file>
<file>/usr/share/0ad/mods/_test.gui/gui/regainFocus/pushWithPopOnInit.js</file>
<file>/usr/share/0ad/mods/_test.gui/gui/regainFocus/pushWithPopOnInit.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/actors</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/meshes</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/particles</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/particles/sprite.tga</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/skins</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/skins/male.dds</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/terrain</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendbad.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendcircle.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendcorner.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendedge.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendedgecorner.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendedgetwocorners.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendfourcorners.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendlshape.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendlshapecorner.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendthreecorners.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendtwocorners.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendtwoedges.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendtwooppositecorners.dds</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/alphamaps/special/blendushape.dds</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/art/textures/terrain/types</file>
<file>/usr/share/0ad/mods/_test.minimal/art/textures/terrain/types/whiteness.dds</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/fonts</file>
<file>/usr/share/0ad/mods/_test.minimal/fonts/console.fnt</file>
<file>/usr/share/0ad/mods/_test.minimal/fonts/console.tga</file>
<file type="dir">/usr/share/0ad/mods/_test.minimal/shaders</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/globallight.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing_base.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing_light.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing_light.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing_lightp.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancing_lightp.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancingp.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/instancingp.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/model_light.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/model_light.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/model_lightp.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/model_lightp.xml</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/postouv1.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/water_high.fs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/water_high.vs</file>
<file>/usr/share/0ad/mods/_test.minimal/shaders/water_high.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.sim</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/globalscripts</file>
<file>/usr/share/0ad/mods/_test.sim/globalscripts/test-global-helper.js</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/components</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/components/addentity</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/addentity/test-addentity.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/error.js</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/components/interfaces</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/interfaces/test-interface.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-addentity.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-destroyentity.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-entityid.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-global-helper.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-helper.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-hotload1.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-hotload2.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-interface.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-modding1.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-modding2.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-msg.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-param.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-query.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test-serialize.js</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/components/test.js</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/data</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/data/pathfinder.rng</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/data/pathfinder.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/data/territorymanager.rng</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/data/territorymanager.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/helpers</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/helpers/test-helper.js</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/templates</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/basic.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/hotload.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/illformed.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit-broken.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit-loop-2.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit-loop.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit-special.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit1.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit2.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit_a.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit_b.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit_c.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/inherit_d.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/invalid.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/templates/special</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/special/actor.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.sim/simulation/templates/special/filter</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/special/filter/foundation.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/template-serialize.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/test1-inherit.xml</file>
<file>/usr/share/0ad/mods/_test.sim/simulation/templates/test1.xml</file>
<file type="dir">/usr/share/0ad/mods/_test.tex</file>
<file type="dir">/usr/share/0ad/mods/_test.tex/art</file>
<file type="dir">/usr/share/0ad/mods/_test.tex/art/textures</file>
<file type="dir">/usr/share/0ad/mods/_test.tex/art/textures/a</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/a/demo-abgr.dds</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/a/demo-dxt1.dds</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/a/demo-dxt5.dds</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/a/demo.png</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/a/demo.tga</file>
<file type="dir">/usr/share/0ad/mods/_test.tex/art/textures/b</file>
<file>/usr/share/0ad/mods/_test.tex/art/textures/b/test.png</file>
<file type="dir">/usr/share/0ad/mods/_test.xero</file>
<file type="dir">/usr/share/0ad/mods/_test.xero/a</file>
<file type="dir">/usr/share/0ad/mods/_test.xero/a/b</file>
<file>/usr/share/0ad/mods/_test.xero/a/b/test1.xml</file>
<file>/usr/share/0ad/mods/_test.xero/test1.xml</file>
<file type="dir">/usr/share/0ad/tests</file>
<file type="dir">/usr/share/0ad/tests/collada</file>
<file>/usr/share/0ad/tests/collada/bogus_material_target.dae</file>
<file>/usr/share/0ad/tests/collada/skeletons.xml</file>
<file>/usr/share/0ad/tests/collada/sphere.dae</file>
<file>/usr/share/0ad/tests/collada/sphere.pmd</file>
<file>/usr/share/0ad/tests/test_setup.js</file>
<file>/usr/share/applications/0ad.desktop</file>
<file type="dir">/usr/share/doc/0ad</file>
<file>/usr/share/doc/0ad/README.txt</file>
<file>/usr/share/icons/hicolor/128x128/apps/0ad.png</file>
<file type="dir">/usr/share/licenses/0ad</file>
<file>/usr/share/licenses/0ad/LICENSE.txt</file>
<file>/usr/share/licenses/0ad/license_gpl-2.0.txt</file>
<file>/usr/share/licenses/0ad/license_lgpl-2.1.txt</file>
<file>/usr/share/licenses/0ad/license_mit.txt</file>
<file>/usr/share/man/man6/0ad.6.gz</file>
<file>/usr/share/man/man6/pyrogenesis.6.gz</file>
<file>/usr/share/metainfo/0ad.appdata.xml</file>
</package>
<package pkgid="7df8d6bc9817cf65f4b52a31721b54735b30b919869325879a5de61287a834a4" name="0ad-data" arch="noarch">
<version epoch="0" ver="0.0.25b" rel="3.fc36"/>
<file type="dir">/usr/share/0ad</file>
<file type="dir">/usr/share/0ad/config</file>
<file>/usr/share/0ad/config/default.cfg</file>
<file>/usr/share/0ad/config/keys.txt</file>
<file type="dir">/usr/share/0ad/mods</file>
<file type="dir">/usr/share/0ad/mods/mod</file>
<file>/usr/share/0ad/mods/mod/mod.zip</file>
<file type="dir">/usr/share/0ad/mods/public</file>
<file>/usr/share/0ad/mods/public/mod.json</file>
<file>/usr/share/0ad/mods/public/public.zip</file>
<file type="dir">/usr/share/0ad/tools</file>
<file type="dir">/usr/share/0ad/tools/atlas</file>
<file type="dir">/usr/share/0ad/tools/atlas/buttons</file>
<file>/usr/share/0ad/tools/atlas/buttons/next_s.bmp</file>
<file>/usr/share/0ad/tools/atlas/buttons/pause_s.bmp</file>
...
The exact format should be determined by looking through the source code of createrepo_c
and/or createrepo
(createrepo_c
is the most current version of the repository generator).
Edited by Steve Abrams