Re: Ideas and proposal for removing changelog and release fields from spec file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Anyway, here is what I would personnaly consider a robust, inclusive,
and future-proof design:

— a %{use_dynstate} rpm variable enables dynamic changelog/release
behaviour
  — probably initialy set to false distro-wide, to let volunteers test
the thing by setting it to true iin their specs,
  — then to true (opt-out), when kinks have been fixed, and FPC/FESCO
greenlights general availability

– when activated, last changelog, evr and %{dynrel} state are saved in
one or several detached files
  — evr computed using a fixed neutral %{dist} value (for example “-”
since it’s forbidden in %{dist})

– those files are given standard rpm variable names and added to
Sources:
  – manual packager Source900: %{dynstate} or whatever
  – rpm later updated to allow source file declarations via macros at
to eliminate boilerplate (I need this in forge and go packages)
  – or the detached files are set in stone as separate Tags with a
default value overridable via the %{dynstate} variable in a new rpm
version

– the packager adds %{dynrel} wherever he sees fit in his Release
string

– at fedpkg commit time changelog state is updated with info taken from
fedora git state, *without* evr and build date
  – that’s Fedora-specific integration, exact commit/tag syntax to mark
things to inject or ignore TBD Fedora-side
  – fedpkg commit sets a tag in git to mark anything older can now be
ignored for changelog generation purposes
  – detached changelog state remains packager-editable, like the in-
spec changelog today. That allows pruning useless no longer relevant
stuff and fixing grammar errors

— at rpmbuild -bs stage
  – evr is computed using the same neutral %{dist} value as before, and
the saved %{dynrel} value
  – if it is equal to the previously saved evr %{dynrel} is bumped and
saved in the detached file
  – a build line is added to the detached changelog, using the current
date and full evr (without %{dist} neutralization)
  — that probably requires defining a rpm variable to track whom the
build is attributed to
  – it can default to "Anonymous coward" or whatever if not explicitely
set
  – Koji, OBS and Copr can set it to whoever asked them to build the
package
  – the result constitutes the new srpm (either first or second level
srpm as upstream rpm sees fit)
  – that’s generic non Fedora-specific behaviour that work as well in
rpmbuild -bs, mock, copr, koji, OBS, whatever, with or without Fedora
git presence
  – Koji/copr need to commit the new dynamic dynrel/changelog state to
git (a build-striggered state change is commited by the build system)

And yes that requires some work rpm-side. That is necessary to maintain
the rpm decentralized design and keep srpms independent from anyone’s
git state. Personnaly, I don’t see the point of pretending we can move
our infra forward without ever touching rpm. The cardinal sin of
Modularity was attempting to create an overlay over existing rpm/dnf
behaviour, without changing this behaviour when it needed improving.

Contrat that with dynamic buildrequires or weak deps that slotted into
our workflows with hardly any ripple. Though they were major feature
changes. But, they were done with rpm upstream, instead of trying to
bypass it.

Regards,

-- 
Nicolas Mailhot
_______________________________________________
packaging mailing list -- packaging@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to packaging-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/packaging@xxxxxxxxxxxxxxxxxxxxxxx




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite Forum]     [KDE Users]

  Powered by Linux