public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/fedora-release] f45: Support installing Edition env groups
@ 2026-08-10  9:35 Stephen Gallagher
  0 siblings, 0 replies; only message in thread
From: Stephen Gallagher @ 2026-08-10  9:35 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/fedora-release
            Branch : f45
            Commit : 6be4dd974eb4eba7e8233360a6354701fd153179
            Author : Stephen Gallagher <sgallagh@redhat.com>
            Date   : 2020-04-29T15:49:43+00:00
            Stats  : +290/-23 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/fedora-release/c/6be4dd974eb4eba7e8233360a6354701fd153179?branch=f45

            Log:
            Support installing Edition env groups

Add new "identity" subpackages to handle the actual creation of
os-release, SWID tags and similar metadata for identifying a
particular Spin or Edition in Fedora.

Resolves: rhbz#1813482

Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>

---
diff --git a/.gitignore b/.gitignore
index e69de29..b9c6347 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.build*.log
+fedora-release-*/*
+*~
+*.swp
+*.src.rpm
+noarch/*
+licenses/*

diff --git a/fedora-release.spec b/fedora-release.spec
index 3cd3a2e..a253355 100644
--- a/fedora-release.spec
+++ b/fedora-release.spec
@@ -14,7 +14,7 @@
 Summary:        Fedora release files
 Name:           fedora-release
 Version:        33
-Release:        0.6
+Release:        0.7
 License:        MIT
 URL:            https://fedoraproject.org/
 
@@ -41,15 +41,17 @@ BuildArch:      noarch
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 
-# We need to Provides: and Conflicts: system release here and in each
-# of the fedora-release-$VARIANT subpackages to ensure that only one
-# may be installed on the system at a time.
-Conflicts:      system-release
 Provides:       system-release
 Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-basic if nothing else is already doing so.
+Recommends:     fedora-release-identity-basic
+
+
 BuildRequires:  redhat-rpm-config > 121-1
 
 %description
@@ -67,15 +69,33 @@ Suggests:   fedora-release
 Obsoletes:  redhat-release
 Provides:   redhat-release
 Requires:   fedora-repos(%{version})
+Requires:   fedora-release-identity = %{version}-%{release}
+
+# Fedora ships a generic-release package to make the creation of Remixes
+# easier, but it cannot coexist with the fedora-release[-*] packages, so we
+# will explicitly conflict with it.
+Conflicts:  generic-release
 
 %description common
 Release files common to all Editions and Spins of Fedora
 
+
+%package identity-basic
+Summary:        Package providing the basic Fedora identity
+
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-basic
+Provides the necessary files for a Fedora installation that is not identifying
+itself as a particular Edition or Spin.
+
+
 %package cinnamon
 Summary:        Base package for Fedora Cinnamon-specific default configurations
 
 RemovePathPostfixes: .cinnamon
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -83,17 +103,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-cinnamon if nothing else is already doing so.
+Recommends:     fedora-release-identity-cinnamon
+
 
 %description cinnamon
 Provides a base package for Fedora Cinnamon-specific configuration files to
 depend on as well as Cinnamon system defaults.
 
 
+%package identity-cinnamon
+Summary:        Package providing the identity for Fedora Cinnamon Spin
+
+RemovePathPostfixes: .cinnamon
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-cinnamon
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Cinnamon.
+
+
 %package cloud
 Summary:        Base package for Fedora Cloud-specific default configurations
 
 RemovePathPostfixes: .cloud
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -101,17 +138,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-cloud if nothing else is already doing so.
+Recommends:     fedora-release-identity-cloud
+
 
 %description cloud
 Provides a base package for Fedora Cloud-specific configuration files to
 depend on.
 
 
+%package identity-cloud
+Summary:        Package providing the identity for Fedora Cloud Edition
+
+RemovePathPostfixes: .cloud
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-cloud
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Cloud Edition.
+
+
 %package container
 Summary:        Base package for Fedora container specific default configurations
 
 RemovePathPostfixes: .container
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -119,17 +173,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-container if nothing else is already doing so.
+Recommends:     fedora-release-identity-container
+
 
 %description container
 Provides a base package for Fedora container specific configuration files to
 depend on as well as container system defaults.
 
 
+%package identity-container
+Summary:        Package providing the identity for Fedora Container Base Image
+
+RemovePathPostfixes: .container
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-container
+Provides the necessary files for a Fedora installation that is identifying
+itself as the Fedora Container Base Image.
+
+
 %package coreos
 Summary:        Base package for Fedora CoreOS-specific default configurations
 
 RemovePathPostfixes: .coreos
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -137,17 +208,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-coreos if nothing else is already doing so.
+Recommends:     fedora-release-identity-coreos
+
 
 %description coreos
 Provides a base package for Fedora CoreOS Host-specific configuration files to
 depend.
 
 
+%package identity-coreos
+Summary:        Package providing the identity for Fedora CoreOS
+
+RemovePathPostfixes: .coreos
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-coreos
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora CoreOS.
+
+
 %package iot
 Summary:        Base package for Fedora IoT specific default configurations
 
 RemovePathPostfixes: .iot
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -155,17 +243,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-iot if nothing else is already doing so.
+Recommends:     fedora-release-identity-iot
+
 
 %description iot
 Provides a base package for Fedora IoT specific configuration files to
 depend on as well as IoT system defaults.
 
 
+%package identity-iot
+Summary:        Package providing the identity for Fedora IoT Edition
+
+RemovePathPostfixes: .iot
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-iot
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora IoT Edition.
+
+
 %package kde
 Summary:        Base package for Fedora KDE Plasma-specific default configurations
 
 RemovePathPostfixes: .kde
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -173,17 +278,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-kde if nothing else is already doing so.
+Recommends:     fedora-release-identity-kde
+
 
 %description kde
 Provides a base package for Fedora KDE Plasma-specific configuration files to
 depend on as well as KDE Plasma system defaults.
 
 
+%package identity-kde
+Summary:        Package providing the identity for Fedora KDE Plasma Spin
+
+RemovePathPostfixes: .kde
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-kde
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora KDE Plasma Spin.
+
+
 %package matecompiz
 Summary:        Base package for Fedora MATE-Compiz-specific default configurations
 
 RemovePathPostfixes: .matecompiz
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -191,17 +313,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-matecompiz if nothing else is already doing so.
+Recommends:     fedora-release-identity-matecompiz
+
 
 %description matecompiz
 Provides a base package for Fedora MATE-compiz-specific configuration files to
 depend on as well as MATE-Compiz system defaults.
 
 
+%package identity-matecompiz
+Summary:        Package providing the identity for Fedora MATE-Compiz Spin
+
+RemovePathPostfixes: .matecompiz
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-matecompiz
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora MATE-Compiz.
+
+
 %package server
 Summary:        Base package for Fedora Server-specific default configurations
 
 RemovePathPostfixes: .server
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -209,17 +348,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-server if nothing else is already doing so.
+Recommends:     fedora-release-identity-server
+
 
 %description server
 Provides a base package for Fedora Server-specific configuration files to
 depend on.
 
 
+%package identity-server
+Summary:        Package providing the identity for Fedora Server Edition
+
+RemovePathPostfixes: .server
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-server
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Server Edition.
+
+
 %package silverblue
 Summary:        Base package for Fedora Silverblue-specific default configurations
 
 RemovePathPostfixes: .silverblue
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -227,17 +383,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-silverblue if nothing else is already doing so.
+Recommends:     fedora-release-identity-silverblue
+
 
 %description silverblue
 Provides a base package for Fedora Silverblue-specific configuration files to
 depend on as well as Silverblue system defaults.
 
 
+%package identity-silverblue
+Summary:        Package providing the identity for Fedora Silverblue
+
+RemovePathPostfixes: .silverblue
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-silverblue
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Silverblue.
+
+
 %package snappy
 Summary:        Base package for Fedora snap specific default configurations
 
 RemovePathPostfixes: .snappy
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -245,17 +418,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-snappy if nothing else is already doing so.
+Recommends:     fedora-release-identity-snappy
+
 
 %description snappy
 Provides a base package for Fedora snap specific configuration files to
 depend on as well as Snappy system defaults.
 
 
+%package identity-snappy
+Summary:        Package providing the identity for Fedora Snappy environments
+
+RemovePathPostfixes: .snappy
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-snappy
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora's snappy environment.
+
+
 %package soas
 Summary:        Base package for Fedora Sugar on a Stick-specific default configurations
 
 RemovePathPostfixes: .soas
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -263,17 +453,34 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-soas if nothing else is already doing so.
+Recommends:     fedora-release-identity-soas
+
 
 %description soas
 Provides a base package for Fedora Sugar on a Stick-specific configuration files to
 depend on as well as SoaS system defaults.
 
 
+%package identity-soas
+Summary:        Package providing the identity for Fedora Sugar on a Stick
+
+RemovePathPostfixes: .soas
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-soas
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Sugar on a Stick.
+
+
 %package workstation
 Summary:        Base package for Fedora Workstation-specific default configurations
 
 RemovePathPostfixes: .workstation
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -282,17 +489,34 @@ Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 Provides:       system-release-product
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-workstation if nothing else is already doing so.
+Recommends:     fedora-release-identity-workstation
+
 
 %description workstation
 Provides a base package for Fedora Workstation-specific configuration files to
 depend on.
 
 
+%package identity-workstation
+Summary:        Package providing the identity for Fedora Workstation Edition
+
+RemovePathPostfixes: .workstation
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-workstation
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Workstation Edition.
+
+
 %package xfce
 Summary:        Base package for Fedora Xfce specific default configurations
 
 RemovePathPostfixes: .xfce
-Conflicts:      system-release
 Provides:       fedora-release = %{version}-%{release}
 Provides:       fedora-release-variant = %{version}-%{release}
 Provides:       system-release
@@ -300,12 +524,30 @@ Provides:       system-release(%{version})
 Provides:       base-module(platform:f%{version})
 Requires:       fedora-release-common = %{version}-%{release}
 
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-xfce if nothing else is already doing so.
+Recommends:     fedora-release-identity-xfce
+
 
 %description xfce
 Provides a base package for Fedora Xfce specific configuration files to
 depend on as well as Xfce system defaults.
 
 
+%package identity-xfce
+Summary:        Package providing the identity for Fedora Xfce Spin
+
+RemovePathPostfixes: .xfce
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+
+
+%description identity-xfce
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora Xfce.
+
+
 %prep
 sed -i 's|@@VERSION@@|%{dist_version}|g' %{SOURCE2}
 
@@ -565,31 +807,37 @@ ln -s %{_swidtagdir} %{buildroot}%{_sysconfdir}/swid/swidtags.d/fedoraproject.or
 
 
 %files
+%files identity-basic
 %{_prefix}/lib/os-release
 
 
-%files cloud
-%{_prefix}/lib/os-release.cloud
-%attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.cloud
-
-
 %files cinnamon
+%files identity-cinnamon
 %{_prefix}/lib/os-release.cinnamon
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.cinnamon
 
 
+%files cloud
+%files identity-cloud
+%{_prefix}/lib/os-release.cloud
+%attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.cloud
+
+
 %files container
+%files identity-container
 %{_prefix}/lib/os-release.container
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.container
 
 
 %files coreos
+%files identity-coreos
 %{_prefix}/lib/systemd/system-preset/80-coreos.preset
 %{_prefix}/lib/os-release.coreos
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.coreos
 
 
 %files iot
+%files identity-iot
 %{_prefix}/lib/os-release.iot
 %{_prefix}/lib/systemd/system-preset/80-iot.preset
 %{_prefix}/lib/systemd/user-preset/80-iot-user.preset
@@ -598,22 +846,26 @@ ln -s %{_swidtagdir} %{buildroot}%{_sysconfdir}/swid/swidtags.d/fedoraproject.or
 
 
 %files kde
+%files identity-kde
 %{_prefix}/lib/os-release.kde
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.kde
 
 
 %files matecompiz
+%files identity-matecompiz
 %{_prefix}/lib/os-release.matecompiz
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.matecompiz
 
 
 %files server
+%files identity-server
 %{_prefix}/lib/os-release.server
 %{_prefix}/lib/systemd/system-preset/80-server.preset
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.server
 
 
 %files silverblue
+%files identity-silverblue
 %{_prefix}/lib/os-release.silverblue
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.silverblue
 # Keep this in sync with workstation below
@@ -622,16 +874,19 @@ ln -s %{_swidtagdir} %{buildroot}%{_sysconfdir}/swid/swidtags.d/fedoraproject.or
 %attr(0644,root,root) %{_prefix}/share/polkit-1/rules.d/org.projectatomic.rpmostree1.rules
 
 %files snappy
+%files identity-snappy
 %{_prefix}/lib/os-release.snappy
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.snappy
 
 
 %files soas
+%files identity-soas
 %{_prefix}/lib/os-release.soas
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.soas
 
 
 %files workstation
+%files identity-workstation
 %{_prefix}/lib/os-release.workstation
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.workstation
 # Keep this in sync with silverblue above
@@ -641,11 +896,16 @@ ln -s %{_swidtagdir} %{buildroot}%{_sysconfdir}/swid/swidtags.d/fedoraproject.or
 
 
 %files xfce
+%files identity-xfce
 %{_prefix}/lib/os-release.xfce
 %attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.xfce
 
 
 %changelog
+* Tue Apr 21 2020 Stephen Gallagher <sgallagh@redhat.com> - 33-0.7
+- Add new "identity" subpackages to allow Edition and Spin environment groups
+  to be installed together.
+
 * Mon Apr 20 2020 Stephen Gallagher <sgallagh@redhat.com> - 33-0.6
 - Add "Prerelease" notation to PRETTY_NAME and VERSION in os-release
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-10  9:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-10  9:35 [rpms/fedora-release] f45: Support installing Edition env groups Stephen Gallagher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox