No edit summary |
No edit summary |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 34: | Line 34: | ||
* Name: [[User:ignatenkobrain|Igor Gnatenko]], [[User:ngompa|Neal Gompa]] | * Name: [[User:ignatenkobrain|Igor Gnatenko]], [[User:ngompa|Neal Gompa]] | ||
* Email: ignatenkobrain@fedoraproject.org, ngompa13@gmail.com | * Email: ignatenkobrain@fedoraproject.org, ngompa13@gmail.com | ||
* Release notes | * Release notes ticket: [https://pagure.io/fedora-docs/release-notes/issue/111 #111] | ||
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo) | <!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo) | ||
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address> | * FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address> | ||
Line 54: | Line 54: | ||
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development | ||
--> | --> | ||
* Tracker bug: | * Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1547061 #1547061] | ||
== Detailed Description == | == Detailed Description == | ||
Line 103: | Line 103: | ||
Packagers who want to support only Fedora 28+ in their spec files can remove scriptlets entirely. For the rest, they should switch to use newly created macros. | Packagers who want to support only Fedora 28+ in their spec files can remove scriptlets entirely. For the rest, they should switch to use newly created macros. | ||
Spec file should use <code>%ldconfig_post</code>, <code>%ldconfig_postun</code>, or preferably, < | Spec file should use <code>%ldconfig_post</code>, <code>%ldconfig_postun</code>, or preferably, <code>%ldconfig_scriptlets</code>. | ||
* <code>%post -p /sbin/ldconfig</code> → <code>%ldconfig_post</code> | * <code>%post -p /sbin/ldconfig</code> → <code>%ldconfig_post</code> | ||
* <code>%postun -p /sbin/ldconfig</code> → <code>%ldconfig_postun</code> | * <code>%postun -p /sbin/ldconfig</code> → <code>%ldconfig_postun</code> | ||
* <code>%post -p /sbin/ldconfig</code> + <code>%postun -p /sbin/ldconfig</code> → <code>%ldconfig_scriptlets</code> | * <code>%post -p /sbin/ldconfig</code> + <code>%postun -p /sbin/ldconfig</code> → <code>%ldconfig_scriptlets</code> | ||
* Simple <code>/sbin/ldconfig</code> line in <code>%post/%postun</code> → <code>%ldconfig</code> | * Simple <code>/sbin/ldconfig</code> line in <code>%post/%postun</code> → <code>%?ldconfig</code> | ||
<!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? --> | <!-- What happens to systems that have had a previous versions of Fedora installed and are updated to the version containing this change? Will anything require manual configuration or data migration? Will any existing functionality be no longer supported? --> | ||
Line 165: | Line 165: | ||
--> | --> | ||
[[Category: | [[Category:ChangeAcceptedF28]] | ||
<!-- When your change proposal page is completed and ready for review and announcement --> | <!-- When your change proposal page is completed and ready for review and announcement --> | ||
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> | <!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler --> |
Latest revision as of 15:07, 2 March 2018
Removing ldconfig scriptlets
Summary
For many years, package maintainers were required to write scriptlets which call ldconfig in %post/%postun if they package shared libraries.
Owner
- Name: Igor Gnatenko, Neal Gompa
- Email: ignatenkobrain@fedoraproject.org, ngompa13@gmail.com
- Release notes ticket: #111
Current status
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.
Benefit to Fedora
- Packagers don't need to write ldconfig scriptlets anymore (often they forget to).
- Significantly faster installation of packages.
Scope
- Proposal owners:
- Other developers: Package maintainers are advised to remove ldconfig scriptlets in order to achieve benefits specified above.
- Release engineering: #7284 (a check of an impact with Release Engineering is needed)
- 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)
Upgrade/compatibility impact
Packagers who want to support only Fedora 28+ in their spec files can remove scriptlets entirely. For the rest, they should switch to use newly created macros.
Spec file should use %ldconfig_post
, %ldconfig_postun
, or preferably, %ldconfig_scriptlets
.
%post -p /sbin/ldconfig
→%ldconfig_post
%postun -p /sbin/ldconfig
→%ldconfig_postun
%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
→%ldconfig_scriptlets
- Simple
/sbin/ldconfig
line in%post/%postun
→%?ldconfig
How To Test
- Make sure you have latest glibc and redhat-rpm-config
- Find package which packages shared library
- Remove ldconfig scriptlets
- Build package
- Install package
- Test that dependent applications work
User Experience
Installation of packages is significantly faster.
Dependencies
N/A (not a System Wide Change)
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
- Blocks product? product
Documentation
N/A (not a System Wide Change)