= Proposed Self Contained Change: Removing ldconfig scriptlets = https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets
Change owner(s): * Igor Gnatenko <ignatenkobrain AT fedoraproject DOT org,> * Neal Gompa <ngompa13 AT gmail DOT com>
For many years, package maintainers were required to write scriptlets which call ldconfig in %post/%postun if they package shared libraries.
== Detailed Description == Since time immemorial, Red Hat/Fedora packagers have been required to add a stanza to spec files for packages containing libraries to update the ldconfig cache.
%post -p /sbin/ldconfig %postun -p /sbin/ldconfig
To say this is annoying is to put it mildly. However, there was no standard mechanism to make this boilerplate go away. Now with RPM 4.13+, we should change this to file triggers and make all of that go away.
With this change, these scriptlets can be removed and ldconfig would be run just once per transaction.
If your package places shared libraries in special locations referenced by ld.so.conf, you still need to run ldconfig manually.
For those who concerned about whether this is self-contained or system-wide change: there is no overhead if packagers don't remove ldconfig scriptlets in time, so completion doesn't depend whether packagers remove them or not. We are just making it possible.
== Scope == * Proposal owners: Make sure that DSO symlinks are being packagedcommit, add transaction filetriggers to glibccommit + commit.
* Other developers: Package maintainers are advised to remove ldconfig scriptlets in order to achieve benefits specified above.
* Release engineering: #7284: https://pagure.io/releng/issue/7284
* List of deliverables: N/A (not a System Wide Change)
* Policies and guidelines: Packaging guidelines need to be updated to reflect reality.
* Trademark approval: N/A (not needed for this Change)
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
So long story short: * If you have %post -p /sbin/ldconfig and %postun -p /sbin/ldconfig, replace it with %ldconfig_scriptlets * If you have just one of those, replace it with %ldconfig_post or %ldconfig_postun accordingly * If you just call to /sbin/ldconfig from one of your scriptlets in shell, just replace it with %?ldconfig
However, if you are not interested to support distro versions less than F28, then just remove scriptlets 😉 Although on F28+, those macro expand to nothin g so it's just matter of having 1-2 additional lines in spec file.
On Mon, 2018-01-29 at 22:30 +0100, Jan Kurik wrote:
= Proposed Self Contained Change: Removing ldconfig scriptlets = https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets
Change owner(s):
- Igor Gnatenko <ignatenkobrain AT fedoraproject DOT org,>
- Neal Gompa <ngompa13 AT gmail DOT com>
For many years, package maintainers were required to write scriptlets which call ldconfig in %post/%postun if they package shared libraries.
== Detailed Description == Since time immemorial, Red Hat/Fedora packagers have been required to add a stanza to spec files for packages containing libraries to update the ldconfig cache.
%post -p /sbin/ldconfig %postun -p /sbin/ldconfig
To say this is annoying is to put it mildly. However, there was no standard mechanism to make this boilerplate go away. Now with RPM 4.13+, we should change this to file triggers and make all of that go away.
With this change, these scriptlets can be removed and ldconfig would be run just once per transaction.
If your package places shared libraries in special locations referenced by ld.so.conf, you still need to run ldconfig manually.
For those who concerned about whether this is self-contained or system-wide change: there is no overhead if packagers don't remove ldconfig scriptlets in time, so completion doesn't depend whether packagers remove them or not. We are just making it possible.
== Scope ==
- Proposal owners:
Make sure that DSO symlinks are being packagedcommit, add transaction filetriggers to glibccommit + commit.
- Other developers:
Package maintainers are advised to remove ldconfig scriptlets in order to achieve benefits specified above.
- Release engineering:
#7284: https://pagure.io/releng/issue/7284
- List of deliverables:
N/A (not a System Wide Change)
- Policies and guidelines:
Packaging guidelines need to be updated to reflect reality.
- Trademark approval:
N/A (not needed for this Change)
Jan Kuřík Platform & Fedora Program Manager Red Hat Czech s.r.o., Purkynova 99/71, 612 45 Brno, Czech Republic
- -- - -Igor Gnatenko
On 30/01/18 10:04 +0100, Igor Gnatenko wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
So long story short:
- If you have %post -p /sbin/ldconfig and %postun -p /sbin/ldconfig, replace it
with %ldconfig_scriptlets
- If you have just one of those, replace it with %ldconfig_post or
%ldconfig_postun accordingly
- If you just call to /sbin/ldconfig from one of your scriptlets in shell, just
replace it with %?ldconfig
However, if you are not interested to support distro versions less than F28, then just remove scriptlets 😉 Although on F28+, those macro expand to nothin g so it's just matter of having 1-2 additional lines in spec file.
Is there any way to use the macros for subpackages?
The boost package has lots of subpackages that install shared libs, so each one does:
%post foo -p /sbin/ldconfig %postun foo -p /sbin/ldconfig
%post bar -p /sbin/ldconfig %postun bar -p /sbin/ldconfig
(Although for Boost we don't have a single spec file that works for all distro versions, so I can just remove them entirely in rawhide, and keep them in older branches).
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
On Tue, 2018-01-30 at 09:49 +0000, Jonathan Wakely wrote:
On 30/01/18 10:04 +0100, Igor Gnatenko wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
So long story short:
- If you have %post -p /sbin/ldconfig and %postun -p /sbin/ldconfig,
replace it with %ldconfig_scriptlets
- If you have just one of those, replace it with %ldconfig_post or
%ldconfig_postun accordingly
- If you just call to /sbin/ldconfig from one of your scriptlets in shell,
just replace it with %?ldconfig
However, if you are not interested to support distro versions less than F28, then just remove scriptlets 😉 Although on F28+, those macro expand t o nothin g so it's just matter of having 1-2 additional lines in spec file.
Is there any way to use the macros for subpackages?
Sure!
The boost package has lots of subpackages that install shared libs, so each one does:
%post foo -p /sbin/ldconfig %postun foo -p /sbin/ldconfig
%post bar -p /sbin/ldconfig %postun bar -p /sbin/ldconfig
%ldconfig_scriptlets foo %ldconfig_scriptlets bar
(Although for Boost we don't have a single spec file that works for all distro versions, so I can just remove them entirely in rawhide, and keep them in older branches).
It also accepts -n, so %ldconfig_scriptlets -n foo-bar would work as well! - -- - -Igor Gnatenko
On Tue, Jan 30, 2018 at 10:04:48AM +0100, Igor Gnatenko wrote:
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
The macros should be used instead of this conditional from the change page?
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= %27)
Which package is supposed to provide the macros? I don't see them in an up-to-date F27 (and neither rawhide) buildroot.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
On Tue, 2018-01-30 at 11:25 +0100, Miroslav Lichvar wrote:
On Tue, Jan 30, 2018 at 10:04:48AM +0100, Igor Gnatenko wrote:
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
The macros should be used instead of this conditional from the change page?
Yes.
%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} <= %27)
Which package is supposed to provide the macros? I don't see them in an up-to-date F27 (and neither rawhide) buildroot.
redhat-rpm-config and epel-rpm-macros. Those are already in buildroot, but not in updates yet (update is still pending). - -- - -Igor Gnatenko
On Tue, 2018-01-30 at 10:04 +0100, Igor Gnatenko wrote:
For those who didn't check Change page since today's morning: Thanks to Jason Tibbits (tibbs) who proposed %ldconfig_scriptlets macro and its implementation.
Now we have 4 macros you could use: %ldconfig, %ldconfig_post, %ldconfig_postun, %ldconfig_scriptlets.
So long story short:
- If you have %post -p /sbin/ldconfig and %postun -p /sbin/ldconfig,
replace it with %ldconfig_scriptlets
- If you have just one of those, replace it with %ldconfig_post or
%ldconfig_postun accordingly
- If you just call to /sbin/ldconfig from one of your scriptlets in
shell, just replace it with %?ldconfig
However, if you are not interested to support distro versions less than F28, then just remove scriptlets 😉 Although on F28+, those macro expand t o nothin g so it's just matter of having 1-2 additional lines in spec file.
Hi,
now, building network-manager-applet(fc28) on Fedora 27, it fails:
Full log written to /data/src/fedpkg/network-manager-applet/network- manager-applet-1.8.10/x86_64-redhat-linux-gnu/meson-logs/testlog.txt + %ldconfig_scriptlets -n libnma /var/tmp/rpm-tmp.YVXizL: line 40: fg: no job control error: Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check) Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check)
This doesn't seem right. Can we fix this? It seems very convenient to be able to build a package for f28 across various Fedora versions, because that is how I test the package...
See https://src.fedoraproject.org/rpms/network-manager-applet/c/d6f6981153e4bc15...
best, Thomas
On Mon, 2018-01-29 at 22:30 +0100, Jan Kurik wrote:
= Proposed Self Contained Change: Removing ldconfig scriptlets = https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets
Change owner(s):
- Igor Gnatenko <ignatenkobrain AT fedoraproject DOT org,>
- Neal Gompa <ngompa13 AT gmail DOT com>
For many years, package maintainers were required to write scriptlets which call ldconfig in %post/%postun if they package shared libraries.
== Detailed Description == Since time immemorial, Red Hat/Fedora packagers have been required to add a stanza to spec files for packages containing libraries to update the ldconfig cache.
%post -p /sbin/ldconfig %postun -p /sbin/ldconfig
To say this is annoying is to put it mildly. However, there was no standard mechanism to make this boilerplate go away. Now with RPM 4.13+, we should change this to file triggers and make all of that go away.
With this change, these scriptlets can be removed and ldconfig would be run just once per transaction.
If your package places shared libraries in special locations referenced by ld.so.conf, you still need to run ldconfig manually.
For those who concerned about whether this is self-contained or system-wide change: there is no overhead if packagers don't remove ldconfig scriptlets in time, so completion doesn't depend whether packagers remove them or not. We are just making it possible.
== Scope ==
- Proposal owners:
Make sure that DSO symlinks are being packagedcommit, add transaction filetriggers to glibccommit + commit.
- Other developers:
Package maintainers are advised to remove ldconfig scriptlets in order to achieve benefits specified above.
- Release engineering:
#7284: https://pagure.io/releng/issue/7284
- List of deliverables:
N/A (not a System Wide Change)
- Policies and guidelines:
Packaging guidelines need to be updated to reflect reality.
- Trademark approval:
N/A (not needed for this Change)
Jan Kuřík Platform & Fedora Program Manager Red Hat Czech s.r.o., Purkynova 99/71, 612 45 Brno, Czech Republic
devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-leave@lists.fedoraproject.org
Thomas Haller wrote:
now, building network-manager-applet(fc28) on Fedora 27, it fails:
Full log written to /data/src/fedpkg/network-manager-applet/network- manager-applet-1.8.10/x86_64-redhat-linux-gnu/meson-logs/testlog.txt
- %ldconfig_scriptlets -n libnma
/var/tmp/rpm-tmp.YVXizL: line 40: fg: no job control error: Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check) Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check)
This doesn't seem right. Can we fix this? It seems very convenient to be able to build a package for f28 across various Fedora versions, becauseredhat-rpm-config-70-1.fc27 that is how I test the package...
If you're building locally, do you actually have redhat-rpm-config-70-1.fc27 installed? (It's currently still in updates-testing).
It is tagged as a koji buildroot override, so koji builds should get it too.
-- Rex
On Sun, 2018-02-04 at 09:08 -0600, Rex Dieter wrote:
Thomas Haller wrote:
now, building network-manager-applet(fc28) on Fedora 27, it fails:
Full log written to /data/src/fedpkg/network-manager- applet/network- manager-applet-1.8.10/x86_64-redhat-linux-gnu/meson- logs/testlog.txt
- %ldconfig_scriptlets -n libnma
/var/tmp/rpm-tmp.YVXizL: line 40: fg: no job control error: Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check) Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check)
This doesn't seem right. Can we fix this? It seems very convenient to be able to build a package for f28 across various Fedora versions, becauseredhat-rpm-config-70-1.fc27 that is how I test the package...
If you're building locally, do you actually have redhat-rpm-config- 70-1.fc27 installed? (It's currently still in updates-testing).
It is tagged as a koji buildroot override, so koji builds should get it too.
Hi,
yes, redhat-rpm-config-70-1.fc27 fixes the build. Thanks.
As a suggestion, maybe not update packages in dist-git, before the required packages hit Fedora stable...
best, Thomas
Thomas Haller wrote:
On Sun, 2018-02-04 at 09:08 -0600, Rex Dieter wrote:
Thomas Haller wrote:
now, building network-manager-applet(fc28) on Fedora 27, it fails:
Full log written to /data/src/fedpkg/network-manager- applet/network- manager-applet-1.8.10/x86_64-redhat-linux-gnu/meson- logs/testlog.txt
- %ldconfig_scriptlets -n libnma
/var/tmp/rpm-tmp.YVXizL: line 40: fg: no job control error: Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check) Bad exit status from /var/tmp/rpm-tmp.YVXizL (%check)
This doesn't seem right. Can we fix this? It seems very convenient to be able to build a package for f28 across various Fedora versions, becauseredhat-rpm-config-70-1.fc27 that is how I test the package...
If you're building locally, do you actually have redhat-rpm-config- 70-1.fc27 installed? (It's currently still in updates-testing).
It is tagged as a koji buildroot override, so koji builds should get it too.
Hi,
yes, redhat-rpm-config-70-1.fc27 fixes the build. Thanks.
As a suggestion, maybe not update packages in dist-git, before the required packages hit Fedora stable...
As far as I know, packages were updated only in master/ branch, where the required packages were already available.
-- Rex
devel@lists.stg.fedoraproject.org