From Fedora Project Wiki

(Correct critpath.txt links and add multiple links in case mash failed)
(use templates for release number)
 
(17 intermediate revisions by 11 users not shown)
Line 5: Line 5:
= Background =
= Background =


The critical path was proposed and defined as part of a [[Fedora Activity Day]].
Previously, documented policy treated every package the same.  While good for uniformity, in reality certain packages require extra attention and care when updating and testing.  These packages have potential to break the critical path of use of our Fedora distribution.  As part of a [[Fedora Activity Day]], several contributors proposed a critical set of actions that must not be broken.  The packages required to sustain these actions initially made up the ''critical path''. Later, it was agreed that the maintainers of Editions, spins, and labs can also declare packages that provide other key functionality to be part of the ''critical path'' for that Edition, spin or lab.


= Scope =
= Actions =


Packages within the ''critical path'' are required to perform the most fundamental actions on a system. Those actions include:
Packages required to perform the most fundamental actions on a system are always considered part of the ''critical path''. Those actions include:
* graphical network install
* graphical network install
* post-install booting
* post-install booting
Line 20: Line 20:
* compose new trees
* compose new trees
* compose live
* compose live
and other actions considered by an Edition, spin or lab to be 'fundamental'.


= Implementation =
= Implementation =
Line 25: Line 26:
A set of groups are defined in the {{filename|comps.xml}} file to include packages required for the critical use cases listed above.  Since package dependencies change regularly, the {{filename|comps.xml}} groups are then used to dynamically generate the list of packages.
A set of groups are defined in the {{filename|comps.xml}} file to include packages required for the critical use cases listed above.  Since package dependencies change regularly, the {{filename|comps.xml}} groups are then used to dynamically generate the list of packages.


The critical path package groups in {{filename|comps.xml}} are listed below:
The package groups in {{filename|comps.xml}} that make up the critical path are defined in [https://pagure.io/releng/blob/main/f/scripts/critpath.py#_38 the generation script]. As of 2023-08, the list is:
<pre>@core
<pre>@core
@critical-path-anaconda
@critical-path-apps
@critical-path-base
@critical-path-base
@critical-path-build
@critical-path-compose
@critical-path-deepin-desktop
@critical-path-gnome
@critical-path-gnome
@critical-path-apps
@critical-path-kde
@critical-path-kde
@critical-path-lxde
@critical-path-lxde
@critical-path-lxqt
@critical-path-server
@critical-path-standard
@critical-path-xfce</pre>
@critical-path-xfce</pre>


For more information on {{filename|comps.xml}} see [[how to use and edit comps.xml for package groups]].
You can list the packages in these groups with the following command, replacing 'critical-path-base' with the name of the group you're interested in:


= Maintainer Responsibilities =
<pre>dnf group info critical-path-base</pre>


{{admon/important|FIXME|This section needs to be updated.}}
For more information on {{filename|comps.xml}} see [[how to use and edit comps.xml for package groups]].
 
If a package is added to the critical path list as a result of normal package dependency the package maintainer will be notified through direct email and the extra processes they have to go through. (IS THIS TRUE)
 
If they do not wish to maintain the packages with these extra processes then they have to orphan the package.  A new maintainer will need to be found.
 
= Tester Responsibilities =
 
The [https://admin.fedoraproject.org/accounts/group/view/proventesters ''proventesters'' FAS group] is responsible for ensuring minimal disruption to the critical actions listed above.  If you would like to join ''proventesters'', check out [[QA/JoinProvenTesters]].  General test instructions for ''proventesters'' is available at [[User:Adamwill/Draft_proventesters_instructions]].


= Where can I find the ''critical path''? =
= Where can I find the ''critical path''? =


The critical path package list is generated daily during the mash process for both [[Releases/Rawhide|rawhide]] and [[Releases/Branched|branched]].  
The critical path package lists for all releases are generated daily and stored in [https://bodhi.fedoraproject.org/ Bodhi]. There is not currently a convenient way to view them from the Bodhi web UI, but you can check out the [https://pagure.io/releng releng git repository]:
 
{{admon/note|Availability of Fedora Branched (aka {{FedoraVersion|long|next}})|Depending on the schedule, the critical path links for Fedora Branched (aka {{FedoraVersion|long|next}}) may not be available. Generation of Fedora Branched (aka {{FedoraVersion|long|next}}) content does not occur until the ''Branch {{FedoraVersion|long|next}} from Rawhide'' task noted in the [http://poelstra.fedorapeople.org/schedules/f-{{FedoraVersion|number|next}}/f-{{FedoraVersion|number|next}}-releng-tasks.html schedule].}}


The most recent list of critical path packages are available at:
<pre>git clone https://pagure.io/releng.git</pre>
<!--
* Branched (aka {{FedoraVersion|long|next}}) - [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt]
* Rawhide - [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt]
-->
* Branched (aka {{FedoraVersion|long|next}}) - [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 0 day}}/logs/critpath.txt today], [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt yesterday], [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 2 day}}/logs/critpath.txt 2 days ago], [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 3 day}}/logs/critpath.txt 3 days ago], [http://kojipkgs.fedoraproject.org/mash/branched-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 7 day}}/logs/critpath.txt last week]
* Rawhide (aka {{FedoraVersion|long|next2}}) - [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 0 day}}/logs/critpath.txt today], [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}/logs/critpath.txt yesterday], [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 2 day}}/logs/critpath.txt 2 days ago], [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 3 day}}/logs/critpath.txt 3 days ago], [http://kojipkgs.fedoraproject.org/mash/rawhide-{{CURRENTYEAR}}{{CURRENTMONTH}}{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 7 day}}/logs/critpath.txt last week]


{{admon/caution|{{filename|critpath.txt}} links return 404|Generation of Fedora Branched (aka {{FedoraVersion|long|next}}), or Fedora [[Releases/Rawhide Rawhide]], may fail due as a result of an unforeseen error during mash, pungi or composition.  Links to previous {{filename|critpath.txt}} are provided for convenience.  Ticket {{Ticket|rel-eng|3802}} has been filed to provide a stable URL to the latest critpath.txt information for both Rawhide and Branched.}}
and run the script locally:


{{command|./releng/scripts/critpath.py {{FedoraVersionNumber|current}}}}


<!--
to generate the critical path data for {{FedoraVersion|full|current}}. This will produce files {{filename|critpath.txt}} (containing a flat list of all critical path packages) and {{filename|critpath.json}} (JSON containing the critical path packages by group).
{{#time: d | {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} - 1 day}}
-->

Latest revision as of 06:03, 19 March 2024

For information on the proposal, see Critical Path Packages Proposal.

A critical path package is a specially managed package in Fedora that provides some essential or core functionality. Updates for critical path packages must undergo additional verification before they can be distributed to the community at large.

Background

Previously, documented policy treated every package the same. While good for uniformity, in reality certain packages require extra attention and care when updating and testing. These packages have potential to break the critical path of use of our Fedora distribution. As part of a Fedora Activity Day, several contributors proposed a critical set of actions that must not be broken. The packages required to sustain these actions initially made up the critical path. Later, it was agreed that the maintainers of Editions, spins, and labs can also declare packages that provide other key functionality to be part of the critical path for that Edition, spin or lab.

Actions

Packages required to perform the most fundamental actions on a system are always considered part of the critical path. Those actions include:

  • graphical network install
  • post-install booting
  • decrypt encrypted filesystems
  • graphics
  • login
  • networking
  • get updates
  • minimal buildroot
  • compose new trees
  • compose live

and other actions considered by an Edition, spin or lab to be 'fundamental'.

Implementation

A set of groups are defined in the comps.xml file to include packages required for the critical use cases listed above. Since package dependencies change regularly, the comps.xml groups are then used to dynamically generate the list of packages.

The package groups in comps.xml that make up the critical path are defined in the generation script. As of 2023-08, the list is:

@core
@critical-path-anaconda
@critical-path-apps
@critical-path-base
@critical-path-build
@critical-path-compose
@critical-path-deepin-desktop
@critical-path-gnome
@critical-path-kde
@critical-path-lxde
@critical-path-lxqt
@critical-path-server
@critical-path-standard
@critical-path-xfce

You can list the packages in these groups with the following command, replacing 'critical-path-base' with the name of the group you're interested in:

dnf group info critical-path-base

For more information on comps.xml see how to use and edit comps.xml for package groups.

Where can I find the critical path?

The critical path package lists for all releases are generated daily and stored in Bodhi. There is not currently a convenient way to view them from the Bodhi web UI, but you can check out the releng git repository:

git clone https://pagure.io/releng.git

and run the script locally:

./releng/scripts/critpath.py 39

to generate the critical path data for Fedora 39. This will produce files critpath.txt (containing a flat list of all critical path packages) and critpath.json (JSON containing the critical path packages by group).