On Wed, 10 Feb 2021, Bernhard M. Wiedemann wrote:
On 09/02/2021 18.48, L A Walsh wrote:
the rpmbuild shipped with openSUSE is the exact binary I am trying to build. You are claiming I need some specific version of rpm, like rpm-4.15-build to build rpm-4.15
This very much reminds me of what the people over at http://bootstrappable.org/ are trying to do. They struggle with things like Haskell's ghc that needs ghc to build.
The solution here would be to find the intermediate version of rpm-4.15 that did not require rpm-4.15 yet. E.g. try https://code.opensuse.org/package/rpm/c/eb41fdc109
It's of course also "nice" if these kind of core packages do not try to live on the edge with respect to these kind of features... For rpm itself you can of course "bootstrap" it by editing out the not supported parts in the .spec file and build a "bootstrap" rpm (of the newer version) you can then use to (re-)build the original unaltered sources. There's similar issues with gcc packages which require an Ada compiler to build the Ada compiler parts. Richard.
The other parts are just plain reproducible builds [1]. You can use my 'nachbau' script from https://github.com/bmwiedemann/reproducibleopensuse/ on a checkout of the sources. I.e. osc co openSUSE:Factory/rpm && cd $_ nachbau
Currently, it still needs OBS to provide the prjconf and to resolve+fetch build dependencies, but that will be improved sooner or later. And I still need to invest some effort to publish my index of old binary rpms[2].
We are not so far away from being able to build from https://code.opensuse.org/package/rpm
Also worth noting, that the _buildenv file available at https://build.opensuse.org/package/binaries/openSUSE:Factory/rpm/standard now contains the prjconf that was used to build this artifact, because it can affect the build result. It also contains info on what exact version of what BuildRequires was used.
Ciao Bernhard M.
[1] https://reproducible-builds.org/ [2] http://opensuse.zq1.de/history/
--
Richard Biener