On Fri, Jan 29, 2021 at 7:33 PM Zbigniew Jędrzejewski-Szmek <zbyszek@xxxxxxxxx> wrote: > > Hello fellow packagers! > > The subject of bootstrapping came up on fedora-devel recently. > I had the following idea, about which I would love to hear some feedback: > > == Problem: > building packages with bootstrap currently involves doing *two* > patches to the spec file: first to add '%global _without_bootstrap 1', > then comes a rebuild, second to remove the macro, and then comes > another rebuild. > > == Partial solution > Let's have an rpm that provides a single file that sets the macro for us: > $ rpm -qpl noarch/rpm-with-bootstrap-0-1.fc34.noarch.rpm > /usr/lib/rpm/macros.d/macros.rpm-with-bootstrap > $ cat rpm-macros-bootstrap/macros.rpm-with-bootstrap > # Enable %%with_bootstrap for all builds > %_with_bootstrap 1 For my experience, a boolean bootstrap macro is not enough for bootstrapping the whole Feodra distribution. Especially for cross-bootstrapping Fedora to a new architecture. We may need a few bootstrap stages. For each stage we can define different value for an rpm macro. For example: %define _bootstrap_stage 1 %define _bootstrap_stage 2 .... And the %_bootstrap or %bootstrap macro may have been used by different packages for different semantics. It is better to use a brand new macro for distribution bootstrap. -robin > > Then we can do the following: > $ rpmdev-bumpspec 'Do rebuild w/ bootstrap' > $ mock -i rpm-with-bootstrap > $ fedpkg mockbuild > $ rpmdev-bumpspec 'Do rebuild w/o bootstrap' > $ mock -i rpm-without-bootstrap [3] > $ fedpkg mockbuild > Voilà! > > The same pattern should work with side-tags in koji. > > I prepared a poc implementation in [1] which builds > rpm-{with,without}-{bootstrap,tests,lto}, and a test package [2] which > prints the values of %with_bootstrap, %with_tests, %with_lto. > > == Full solution > If we have automatic version bumps, this would become even simpler: > $ mock -i rpm-with-bootstrap > $ fedpkg mockbuild > $ mock --dnf-cmd remove rpm-with-bootstrap > $ fedpkg mockbuild > > My idea would be to submit [1] for package-review so that it's > generally available. > > Note that this works if the package we're building uses > %bcond_with bootstrap > or > %bcond_without bootstrap > I picked %{with bootstrap}, %{with lto}, %{with tests} as > generally-useful settings. I think it is worth standarizing the names > like this, and at least %{with bootstrap} and %{with tests} could be > added to packaging guidelines. > > [1] https://pagure.io/rpm-macros-bootstrap > [2] https://pagure.io/rpm-macros-test > [3] rpm-without-bootstrap has Conflicts:rpm-with-bootstrap, so installing > one forces the other out. Alternatively, rpm-with-bootstrap may just > be uninstalled. > > Zbyszek > _______________________________________________ > devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx > Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ > List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines > List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx