tarantool / mkrepo

Maintain DEB and RPM repositories on S3
69 stars 24 forks source link

rpm: build filelists.xml correctly #75

Closed urbanchef closed 1 year ago

urbanchef commented 1 year ago

This change fixes the following dependency resolution error:

--> Processing Dependency: /opt/openssl102/lib/libssl.so.10 for package: sslkeylog102-opt-0.4-2.x86_64\n'}
--> Processing Dependency: /opt/openssl102/lib/libssl.so.10 for package: sslkeylog102-opt-0.4-2.x86_64\n'}
--> Finished Dependency Resolution\n'}
    Error: Package: sslkeylog102-opt-0.4-2.x86_64 (local)\n           Requires: /opt/openssl102/lib/libssl.so.10\n\x1b[0m'}
  ' You could try using --skip-broken to work around the problem\n'}
  ' You could try running: rpm -Va --nofiles --nodigest\n'}

On further investigation we found that filelists.xml was incorrectly built.

This is how mkrepo generates filelists.xml for the package in question:

<package pkgid="bb8c741100f0038aea8eb43a549a15bfc1514e580838f947f4415ab11f291761" name="openssl102-opt" arch="x86_64">
  <version epoch="1" ver="1.0.2j" rel="4.el7.centos"/>
  <file type="dir">/opt/openssl102/bin/</file>
  <file type="dir">/opt/openssl102/lib/</file>
  <file type="dir">/opt/openssl102/lib/engines/</file>
  <file type="dir">/opt/openssl102/share/doc/</file>
  <file type="dir">/opt/openssl102/share/doc/openssl102-opt-1.0.2j/</file>
  <file type="dir">/opt/openssl102/share/licenses/</file>
  <file type="dir">/opt/openssl102/share/licenses/openssl102-opt-1.0.2j/</file>
</package>

Note, there's no /opt/openssl102/lib/libssl.so.10 file listed.

And this is how rpm-software-management/createrepo_c does it:

<package pkgid="bb8c741100f0038aea8eb43a549a15bfc1514e580838f947f4415ab11f291761" name="openssl102-opt" arch="x86_64">
  <version epoch="1" ver="1.0.2j" rel="4.el7.centos"/>
  <file>/opt/openssl102/bin/openssl102</file>
  <file>/opt/openssl102/lib/engines/lib4758cca.so</file>
  <file>/opt/openssl102/lib/engines/libaep.so</file>
  <file>/opt/openssl102/lib/engines/libatalla.so</file>
  <file>/opt/openssl102/lib/engines/libcapi.so</file>
  <file>/opt/openssl102/lib/engines/libchil.so</file>
  <file>/opt/openssl102/lib/engines/libcswift.so</file>
  <file>/opt/openssl102/lib/engines/libgmp.so</file>
  <file>/opt/openssl102/lib/engines/libnuron.so</file>
  <file>/opt/openssl102/lib/engines/libpadlock.so</file>
  <file>/opt/openssl102/lib/engines/libsureware.so</file>
  <file>/opt/openssl102/lib/engines/libubsec.so</file>
  <file>/opt/openssl102/lib/libcrypto.so</file>
  <file>/opt/openssl102/lib/libcrypto.so.1.0</file>
  <file>/opt/openssl102/lib/libcrypto.so.1.0.0</file>
  <file>/opt/openssl102/lib/libcrypto.so.1.0.2</file>
  <file>/opt/openssl102/lib/libcrypto.so.1.0.2j</file>
  <file>/opt/openssl102/lib/libcrypto.so.10</file>
  <file>/opt/openssl102/lib/libssl.so</file>
  <file>/opt/openssl102/lib/libssl.so.1.0</file>
  <file>/opt/openssl102/lib/libssl.so.1.0.0</file>
  <file>/opt/openssl102/lib/libssl.so.1.0.2</file>
  <file>/opt/openssl102/lib/libssl.so.1.0.2j</file>
  <file>/opt/openssl102/lib/libssl.so.10</file>
  <file>/opt/openssl102/share/doc/openssl102-opt-1.0.2j/FAQ</file>
  <file>/opt/openssl102/share/doc/openssl102-opt-1.0.2j/NEWS</file>
  <file>/opt/openssl102/share/doc/openssl102-opt-1.0.2j/README</file>
  <file>/opt/openssl102/share/licenses/openssl102-opt-1.0.2j/LICENSE</file>
  <file type="dir">/opt/openssl102/lib/engines</file>
  <file type="dir">/opt/openssl102/share/doc/openssl102-opt-1.0.2j</file>
  <file type="dir">/opt/openssl102/share/licenses/openssl102-opt-1.0.2j</file>
</package>

Note, file /opt/openssl102/lib/libssl.so.10 is listed.