From Fedora Project Wiki
(Initial draft)
 
m (Add testing stuff.)
Line 106: Line 106:
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->
The issue is required to be filed prior to feature submission, to ensure that someone is on board to do any process development work and testing, and that all changes make it into the pipeline; a bullet point in a change is not sufficient communication -->


* Policies and guidelines: N/A (not a System Wide Change) <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Policies and guidelines: We should ban new scriptlets appearing in any of the fixed packages.
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->
<!-- Do the packaging guidelines or other documents need to be updated for this feature?  If so, does it need to happen before or after the implementation is done?  If a FPC ticket exists, add a link here. -->


* Trademark approval: N/A (not needed for this Change)
== How To Test ==
<!-- If your Change may require trademark approval (for example, if it is a new Spin), file a ticket ( https://fedorahosted.org/council/ ) requesting trademark approval from the Fedora Council. This approval will be done via the Council's consensus-based process. -->
All of the following should provide no output on a standard container:


== Upgrade/compatibility impact ==
* rpm -a --qf '%{preinprog}'
<!-- 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? -->
* rpm -a --qf '%{preunprog}'
* rpm -a --qf '%{postinprog}'
* rpm -a --qf '%{postunprog}'
* rpm -a --qf '%{pretransprog}'
* rpm -a --qf '%{posttransprog}'


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
N/A (not a System Wide Change)
== How To Test ==
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  
<!-- This does not need to be a full-fledged document. Describe the dimensions of tests that this change implementation is expected to pass when it is done.  If it needs to be tested with different hardware or software configurations, indicate them.  The more specific you can be, the better the community testing can be.  


Line 133: Line 133:
-->
-->


<!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
== User Experience ==
N/A (not a System Wide Change)


== User Experience ==
There should be no noticeable difference to users.
<!-- If this change proposal is noticeable by users, how will their experiences change as a result?
<!-- If this change proposal is noticeable by users, how will their experiences change as a result?


Line 156: Line 155:
== Contingency Plan ==
== Contingency Plan ==


Until higher levels start to depend on the scriptlets not being present we just let those packages have scriptlets again, if it's required.
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan?  This might be as simple as "Revert the shipped configuration".  Or it might not (e.g. rebuilding a number of dependent packages).  If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy.  -->
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->
* Contingency mechanism: (What to do?  Who will do it?) N/A (not a System Wide Change)  <!-- REQUIRED FOR SYSTEM WIDE CHANGES -->

Revision as of 06:13, 8 June 2019

Important.png
Beta
Work in progress


Limit Scriptlet Usage of core packages

Summary

Remove direct scriptlet calls from "core packages" (those that are used to build minimal container image). The packages can still affect changes during installation by placing files in the correct locations to trigger registered external programs.

Owner

  • Name: James Antill
  • Email: <your email address so we can contact you, invite you to meetings, etc. Please provide your Bugzilla email address if it is different from your email in FAS>

Current status

  • Targeted release: Fedora 31
  • Last updated: 2019-06-08
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

Remove direct scriptlets from most (if not all) of the packages in the main fedora container image. This means all four of: %pre/%post/%preun/%postun. After this change some kind of temporary exception would have to be granted before those packages could add a scriptlet back.


Benefit to Fedora

At the moment all of the packages with scriptlets (and anything installed with them) are basically opaque programs that happen to also carry files that are installed, from all of the packaging tools (rpm, ostree, composer, etc.) . After this change the entire installation of the main container image will be declarative, and thus. understandable by all of those tools. This should make things faster, and allow new optimizations (as well as features).


Scope

  • Proposal owners:
  • Other developers: N/A (not a System Wide Change)
  • Policies and guidelines: We should ban new scriptlets appearing in any of the fixed packages.

How To Test

All of the following should provide no output on a standard container:

* rpm -a --qf '%{preinprog}'
* rpm -a --qf '%{preunprog}'
* rpm -a --qf '%{postinprog}'
* rpm -a --qf '%{postunprog}'
* rpm -a --qf '%{pretransprog}'
* rpm -a --qf '%{posttransprog}'


User Experience

There should be no noticeable difference to users.

Dependencies

N/A (not a System Wide Change)

Contingency Plan

Until higher levels start to depend on the scriptlets not being present we just let those packages have scriptlets again, if it's required.

  • 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)

Release Notes