[fedora-release/f22] Generate os-release based on product subpackages

Dennis Gilmore ausil at fedoraproject.org
Mon Mar 23 18:37:17 UTC 2015


commit 5b80d47e71f64be70e137571f20d1e7c10112361
Author: Dennis Gilmore <dennis at ausil.us>
Date:   Mon Mar 23 13:37:15 2015 -0500

    Generate os-release based on product subpackages
    
    - Remove the -nonproduct subpackage
    - Eliminate Conflicts between subpackages
    - Add preset file for workstation to disable sshd
    - make the os-release sysmlinks all relative

 fedora-release.spec | 179 ++++++++++++++++++++++++++++++++++++++++------------
 sources             |   2 +-
 2 files changed, 140 insertions(+), 41 deletions(-)
---
diff --git a/fedora-release.spec b/fedora-release.spec
index 36e6915..297a978 100644
--- a/fedora-release.spec
+++ b/fedora-release.spec
@@ -5,7 +5,7 @@
 Summary:        Fedora release files
 Name:           fedora-release
 Version:        22
-Release:        0.13
+Release:        0.14
 License:        MIT
 Group:          System Environment/Base
 URL:            http://fedoraproject.org
@@ -14,38 +14,25 @@ Obsoletes:      redhat-release
 Provides:       redhat-release
 Provides:       system-release
 Provides:       system-release(%{version})
+
+# Kill off the fedora-release-nonproduct package
+Provides:       fedora-release-nonproduct = %{version}
+Obsoletes:      fedora-release-nonproduct <= 23-0.3
+Provides:       fedora-release-standard = 22-0.8
+Obsoletes:      fedora-release-standard < 22-0.8
+
 Requires:       fedora-repos(%{version})
 BuildArch:      noarch
 
 %description
 Fedora release files such as various /etc/ files that define the release.
 
-%package nonproduct
-Summary:        Base package for non-product-specific default configurations
-Provides:       system-release-nonproduct
-Provides:       system-release-nonproduct(%{version})
-Provides:       system-release-product
-# turned out to be a bad name
-Provides:       fedora-release-standard = 22-0.8
-Obsoletes:      fedora-release-standard < 22-0.8
-Requires:       fedora-release = %{version}-%{release}
-Conflicts:      fedora-release-cloud
-Conflicts:      fedora-release-server
-Conflicts:      fedora-release-workstation
-
-%description nonproduct
-Provides a base package for non-product-specific configuration files to
-depend on.
-
 %package cloud
 Summary:        Base package for Fedora Cloud-specific default configurations
 Provides:       system-release-cloud
 Provides:       system-release-cloud(%{version})
 Provides:       system-release-product
 Requires:       fedora-release = %{version}-%{release}
-Conflicts:      fedora-release-server
-Conflicts:      fedora-release-nonproduct
-Conflicts:      fedora-release-workstation
 
 %description cloud
 Provides a base package for Fedora Cloud-specific configuration files to
@@ -60,11 +47,8 @@ Requires:       fedora-release = %{version}-%{release}
 Requires:       systemd
 Requires:       cockpit
 Requires:       rolekit
-Requires(post):	sed
-Requires(post):	systemd
-Conflicts:      fedora-release-cloud
-Conflicts:      fedora-release-nonproduct
-Conflicts:      fedora-release-workstation
+Requires(post): sed
+Requires(post): systemd
 
 %description server
 Provides a base package for Fedora Server-specific configuration files to
@@ -76,9 +60,6 @@ Provides:       system-release-workstation
 Provides:       system-release-workstation(%{version})
 Provides:       system-release-product
 Requires:       fedora-release = %{version}-%{release}
-Conflicts:      fedora-release-cloud
-Conflicts:      fedora-release-server
-Conflicts:      fedora-release-nonproduct
 # needed for captive portal support
 Requires:       NetworkManager-config-connectivity-fedora
 Requires(post): /usr/bin/glib-compile-schemas
@@ -105,8 +86,9 @@ echo >> $RPM_BUILD_ROOT/etc/issue
 ln -s fedora-release $RPM_BUILD_ROOT/etc/redhat-release
 ln -s fedora-release $RPM_BUILD_ROOT/etc/system-release
 
-install -d $RPM_BUILD_ROOT/usr/lib
-cat << EOF >>$RPM_BUILD_ROOT/usr/lib/os-release
+# Create the common os-release file
+install -d $RPM_BUILD_ROOT/usr/lib/os.release.d/
+cat << EOF >>$RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-fedora
 NAME=Fedora
 VERSION="%{dist_version} (%{release_name})"
 ID=fedora
@@ -123,7 +105,29 @@ REDHAT_SUPPORT_PRODUCT_VERSION=%{bug_version}
 PRIVACY_POLICY=https://fedoraproject.org/wiki/Legal:PrivacyPolicy
 EOF
 
+# Create os-release files for the different editions
+# Cloud
+cp -p $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-fedora \
+      $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-cloud
+echo "VARIANT=Cloud" >> $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-cloud
+
+# Server
+cp -p $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-fedora \
+      $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-server
+echo "VARIANT=Server" >> $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-server
+
+# Workstation
+cp -p $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-fedora \
+      $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-workstation
+echo "VARIANT=Workstation" >> $RPM_BUILD_ROOT/usr/lib/os.release.d/os-release-workstation
+
+# Create the symlink for /etc/os-release
+# This will be standard until %post when the
+# release packages will link the appropriate one into
+# /usr/lib/os-release
 ln -s ../usr/lib/os-release $RPM_BUILD_ROOT/etc/os-release
+ln -s os.release.d/os-release-fedora $RPM_BUILD_ROOT/usr/lib/os-release
+
 
 # Set up the dist tag macros
 install -d -m 755 $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d
@@ -139,23 +143,109 @@ EOF
 mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-preset/
 # Fedora Server
 install -m 0644 80-server.preset %{buildroot}%{_prefix}/lib/systemd/system-preset/
+# Fedora Workstation
+install -m 0644 80-workstation.preset %{buildroot}%{_prefix}/lib/systemd/system-preset/
 
 # Override the list of enabled gnome-shell extensions for Workstation
 mkdir -p %{buildroot}%{_datadir}/glib-2.0/schemas/
 install -m 0644 org.gnome.shell.gschema.override %{buildroot}%{_datadir}/glib-2.0/schemas/
 
+%posttrans
+# Only on installation
+if [ $1 = 0 ]; then
+    # If no fedora-release-$edition subpackage was installed,
+    # make sure to link /etc/os-release to the standard version
+    test -e /usr/lib/os-release || \
+        ln -sf ./os-release.d/os-release-fedora /usr/lib/os-release
+fi
+
+%post cloud
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+
+    # If there is no link to os-release yet from some other
+    # release package, create it
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-cloud /usr/lib/os-release
+
+    # If os-release isn't a link or it exists but it points to a
+    # non-productized version, replace it with this one
+    if [ \! -h /usr/lib/os-release -o "x$(readlink /usr/lib/os-release)" = "xos.release.d/os-release-fedora" ]; then
+        ln -sf ./os.release.d/os-release-cloud /usr/lib/os-release || :
+    fi
+fi
+
+%postun cloud
+# Uninstall
+if [ $1 = 0 ]; then
+    # If os-release is now a broken symlink or missing replace it
+    # with a symlink to basic version
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-fedora /usr/lib/os-release || :
+fi
+
+
 %post server
 if [ $1 -eq 1 ] ; then
-        # Initial installation; fix up after %%systemd_post in packages
-	# possibly installed before our preset file was added
-	units=$(sed -n 's/^enable//p' \
-		< %{_prefix}/lib/systemd/system-preset/80-server.preset)
+    # Initial installation
+
+    # If there is no link to os-release yet from some other
+    # release package, create it
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-server /usr/lib/os-release
+
+    # If os-release isn't a link or it exists but it points to a
+    # non-productized version, replace it with this one
+    if [ \! -h /usr/lib/os-release -o "x$(readlink /usr/lib/os-release)" = "xos.release.d/os-release-fedora" ]; then
+        ln -sf ./os.release.d/os-release-server /usr/lib/os-release || :
+    fi
+
+    # fix up after %%systemd_post in packages
+    # possibly installed before our preset file was added
+    units=$(sed -n 's/^enable//p' \
+        < %{_prefix}/lib/systemd/system-preset/80-server.preset)
         /usr/bin/systemctl preset $units >/dev/null 2>&1 || :
 fi
 
+%postun server
+# Uninstall
+if [ $1 = 0 ]; then
+    # If os-release is now a broken symlink or missing replace it
+    # with a symlink to basic version
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-fedora /usr/lib/os-release || :
+fi
+
+%post workstation
+if [ $1 -eq 1 ] ; then
+    # Initial installation
+
+    # If there is no link to os-release yet from some other
+    # release package, create it
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-workstation /usr/lib/os-release
+
+    # If os-release isn't a link or it exists but it points to a
+    # non-productized version, replace it with this one
+    if [ \! -h /usr/lib/os-release -o "x$(readlink /usr/lib/os-release)" = "xos.release.d/os-release-fedora" ]; then
+        ln -sf ./os.release.d/os-release-workstation /usr/lib/os-release || :
+    fi
+
+    # fix up after %%systemd_post in packages
+    # possibly installed before our preset file was added
+    units=$(sed -n 's/^disable//p' \
+        < %{_prefix}/lib/systemd/system-preset/80-workstation.preset)
+    /usr/bin/systemctl preset $units >/dev/null 2>&1 || :
+fi
+
 %postun workstation
 if [ $1 -eq 0 ] ; then
     glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
+
+    # If os-release is now a broken symlink or missing replace it
+    # with a symlink to basic version
+    test -e /usr/lib/os-release || \
+        ln -sf ./os.release.d/os-release-fedora /usr/lib/os-release || :
 fi
 
 %posttrans workstation
@@ -166,7 +256,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %defattr(-,root,root,-)
 %{!?_licensedir:%global license %%doc}
 %license LICENSE Fedora-Legal-README.txt
-%config %attr(0644,root,root) /usr/lib/os-release
+%dir /usr/lib/os.release.d
+%config %attr(0644,root,root) /usr/lib/os.release.d/os-release-fedora
+/usr/lib/os-release
 /etc/os-release
 %config %attr(0644,root,root) /etc/fedora-release
 /etc/redhat-release
@@ -176,25 +268,32 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %config(noreplace) %attr(0644,root,root) /etc/issue.net
 %attr(0644,root,root) %{_rpmconfigdir}/macros.d/macros.dist
 
-%files nonproduct
-%{!?_licensedir:%global license %%doc}
-%license LICENSE
-
 %files cloud
 %{!?_licensedir:%global license %%doc}
 %license LICENSE
+%config %attr(0644,root,root) /usr/lib/os.release.d/os-release-cloud
 
 %files server
 %{!?_licensedir:%global license %%doc}
 %license LICENSE
+%config %attr(0644,root,root) /usr/lib/os.release.d/os-release-server
 %{_prefix}/lib/systemd/system-preset/80-server.preset
 
 %files workstation
 %{!?_licensedir:%global license %%doc}
 %license LICENSE
+%config %attr(0644,root,root) /usr/lib/os.release.d/os-release-workstation
 %{_datadir}/glib-2.0/schemas/org.gnome.shell.gschema.override
+%{_prefix}/lib/systemd/system-preset/80-workstation.preset
 
 %changelog
+* Mon Mar 16 2015 Stephen Gallagher <sgallagh at redhat.com> 22-0.14
+- Generate os-release based on product subpackages
+- Remove the -nonproduct subpackage
+- Eliminate Conflicts between subpackages
+- Add preset file for workstation to disable sshd
+- make the os-release sysmlinks all relative
+
 * Tue Feb 24 2015 Dennis Gilmore <dennis at ausil.us> - 22-0.13
 - make the /etc/os-release symlink relative rhbz#1192276
 
diff --git a/sources b/sources
index 58fd5d7..17b150d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-12186f0823d577411f2512a9f9978457  fedora-release-22.tar.bz2
+511924e080a550cfefb8a2b78886f811  fedora-release-22.tar.bz2


More information about the scm-commits mailing list