Discussion:
[users] Fedora 17 adventures in .spec management
Nico Kadel-Garcia
2012-04-21 14:04:07 UTC
Permalink
I've been looking at rawhide and Fedora 17, as part of Subversion
repackaging. (I sometimes backport things from Fedora to RHEL and like to
publish to Repoforge, especially things that will replace RHEL components
like Subversioni or Bind.) And it's getting to be more and more of an
adventure to make .spec files cross-compatible, so I thought I'd mention
them here.

* Init scripts - Fedora 17 is discarding init script service management.
They're switching to systemctl. This is reasonable in a technological
sense, but it means rewriting *very single one* of the init scripts for
Repoforge packages, and teaching the .spec files to provide different
'%post' and '%pre' service management, and updating "INSTALL" notes for
anything that is not updated upstream.

* sysctl does have its uses: init scripts have historically been
complex to manage, there are too darned many badly written ones, and
they've been fragile for daemons that are likely to crash. They've also
been difficult to "sudo" manage, so I can see this as a reasonable change.
* There are hooks for SysV based init scripts to still be accessible,
but this is *not* going to be pretty to migrate. We could have mostly
manged it by requiring "/sbin/chkconfig" for older packages, but see below.

* /bin/* is all moving to /usr/bin/, with /bin is becoming a symlink. Same
for /sbin. In and of itself, this is not ugly, but every dependency on any
/sbin or /bin components like "/bin/rm" or "/sbin/chkconfig" is about to
become an adventure. And Fedora dependencies on components in '%{_bindir}'
are potentially not backwards compatible.

* The old "/bin" and "/usr/bin" separation is legacy, from when "/usr"
was on a separate disk or partition and the "/" partition was deliberatlely
teenie. Those days are gone, and it does add complexity.
* These fun and games are in the 'systemd-utils' package, which leads
to the below problem.

* RPM has new features for systemd-utils. This will break RHEL based
cross-compilation tools like 'mock' and 'mach', much as the change in RPM
signatures with RHEL 6 and more recent Fedora broke backporting of recent
SRPM's with modern signatures.

Overall, this is going to be very, very painful to keep .spec files
compatible between the new Fedora 17 architecture and RHEL or even Fedora
16. And it's going to be this way for 10 years, until support for RHEL 6
ends.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.repoforge.org/pipermail/users/attachments/20120421/512e749e/attachment.html
Nico Kadel-Garcia
2012-04-21 14:04:07 UTC
Permalink
I've been looking at rawhide and Fedora 17, as part of Subversion
repackaging. (I sometimes backport things from Fedora to RHEL and like to
publish to Repoforge, especially things that will replace RHEL components
like Subversioni or Bind.) And it's getting to be more and more of an
adventure to make .spec files cross-compatible, so I thought I'd mention
them here.

* Init scripts - Fedora 17 is discarding init script service management.
They're switching to systemctl. This is reasonable in a technological
sense, but it means rewriting *very single one* of the init scripts for
Repoforge packages, and teaching the .spec files to provide different
'%post' and '%pre' service management, and updating "INSTALL" notes for
anything that is not updated upstream.

* sysctl does have its uses: init scripts have historically been
complex to manage, there are too darned many badly written ones, and
they've been fragile for daemons that are likely to crash. They've also
been difficult to "sudo" manage, so I can see this as a reasonable change.
* There are hooks for SysV based init scripts to still be accessible,
but this is *not* going to be pretty to migrate. We could have mostly
manged it by requiring "/sbin/chkconfig" for older packages, but see below.

* /bin/* is all moving to /usr/bin/, with /bin is becoming a symlink. Same
for /sbin. In and of itself, this is not ugly, but every dependency on any
/sbin or /bin components like "/bin/rm" or "/sbin/chkconfig" is about to
become an adventure. And Fedora dependencies on components in '%{_bindir}'
are potentially not backwards compatible.

* The old "/bin" and "/usr/bin" separation is legacy, from when "/usr"
was on a separate disk or partition and the "/" partition was deliberatlely
teenie. Those days are gone, and it does add complexity.
* These fun and games are in the 'systemd-utils' package, which leads
to the below problem.

* RPM has new features for systemd-utils. This will break RHEL based
cross-compilation tools like 'mock' and 'mach', much as the change in RPM
signatures with RHEL 6 and more recent Fedora broke backporting of recent
SRPM's with modern signatures.

Overall, this is going to be very, very painful to keep .spec files
compatible between the new Fedora 17 architecture and RHEL or even Fedora
16. And it's going to be this way for 10 years, until support for RHEL 6
ends.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.repoforge.org/pipermail/users/attachments/20120421/512e749e/attachment-0002.html>
Loading...