%define release_name Pallas %define is_rawhide 0 # Define this to 1 for Branched releases prior to RC # or 0 for RC and stable releases %define is_development 0 %define eol_date 2026-05-13 %define dist_version 42 %define rhel_dist_version 11 %if %{is_rawhide} %define bug_version rawhide %if 0%{?eln} %define releasever eln %else %define releasever rawhide %endif %define doc_version rawhide %else %define bug_version %{dist_version} %define releasever %{dist_version} %define doc_version f%{dist_version} %endif %bcond basic %[%{undefined eln}] %bcond cinnamon %[%{undefined eln}] %bcond cloud %[%{undefined eln}] %bcond compneuro %[%{undefined eln}] %bcond container %[%{undefined eln}] %bcond coreos %[%{undefined eln}] %bcond designsuite %[%{undefined eln}] %bcond eln %[%{defined eln}] %bcond flatpak %[%{undefined eln}] %bcond iot %[%{undefined eln}] %bcond kde_desktop %[%{undefined eln}] %bcond kde_mobile %[%{undefined eln}] %bcond matecompiz %[%{undefined eln}] %bcond server %[%{undefined eln}] %bcond silverblue %[%{undefined eln}] %bcond kinoite %[%{undefined eln}] %bcond kinoite_mobile %[%{undefined eln}] %bcond snappy %[%{undefined eln}] %bcond soas %[%{undefined eln}] %bcond toolbx %[%{undefined eln}] %bcond workstation %[%{undefined eln}] %bcond xfce %[%{undefined eln}] %bcond i3 %[%{undefined eln}] %bcond lxqt %[%{undefined eln}] %bcond budgie %[%{undefined eln}] %bcond budgie_atomic %[%{undefined eln}] %bcond sway %[%{undefined eln}] %bcond sway_atomic %[%{undefined eln}] %bcond mobility %[%{undefined eln}] %bcond miraclewm %[%{undefined eln}] %bcond miraclewm_atomic %[%{undefined eln}] %bcond cosmic %[%{undefined eln}] %bcond cosmic_atomic %[%{undefined eln}] %bcond wsl %[%{undefined eln}] %if %{with silverblue} || %{with kinoite} || %{with kinoite_mobile} || %{with sway_atomic} || %{with budgie_atomic} || %{with miraclewm_atomic} || %{with cosmic_atomic} %global with_ostree_desktop 1 %endif Summary: Athena OS release files Name: athenaos-release Version: 42 # The numbering is 0. before a given Athena OS release is released, # and then just . Release: %autorelease License: MIT URL: https://athenaos.org/ Source1: LICENSE Source2: Fedora-Legal-README.txt Source10: 85-display-manager.preset Source11: 90-default.preset Source12: 90-default-user.preset Source13: 99-default-disable.preset Source14: 80-server.preset Source15: 80-workstation.preset Source16: org.gnome.shell.gschema.override Source17: org.projectatomic.rpmostree1.rules Source18: 80-iot.preset Source19: distro-template.swidtag Source20: distro-edition-template.swidtag Source21: fedora-workstation.conf Source22: 80-coreos.preset Source23: zezere-ignition-url Source24: 80-iot-user.preset Source25: plasma-desktop.conf Source26: 80-kde-desktop.preset Source27: 81-desktop.preset Source28: longer-default-shutdown-timeout.conf Source29: org.gnome.settings-daemon.plugins.power.gschema.override Source30: fedora-sway.conf Source31: 20-fedora-defaults.conf Source32: 75-eln.preset Source33: plasma-mobile.conf Source34: 80-kde-mobile.preset Source35: fedora-miraclewm.conf Source36: fedora-cosmic.conf BuildArch: noarch Provides: fedora-release = %{version}-%{release} Provides: fedora-release-variant = %{version}-%{release} Provides: system-release(%{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 BuildRequires: systemd-rpm-macros %description Athena OS release files such as various /etc/ files that define the release and systemd preset files that determine which services are enabled by default. # See https://docs.fedoraproject.org/en-US/packaging-guidelines/DefaultServices/ for details. %package common Summary: Athena OS release files Requires: fedora-release-variant = %{version}-%{release} Suggests: fedora-release %if %{with eln} Requires: fedora-repos-eln = %{version} %else Requires: fedora-repos(%{version}) %endif Requires: fedora-release-identity = %{version}-%{release} %if %{is_rawhide} # Make $releasever return "rawhide" on Rawhide # and "eln" on ELN. # https://pagure.io/releng/issue/7445 Provides: system-release(releasever) = %{releasever} %endif # 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 # rpm-ostree count me is now enabled in 90-default.preset Obsoletes: fedora-release-ostree-counting <= 36-0.7 %description common Release files common to all Editions and Spins of Fedora %if %{with basic} %package identity-basic Summary: Package providing the basic Fedora identity RemovePathPostfixes: .basic 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. %endif %if %{with silverblue} %package silverblue Summary: Base package for Fedora Silverblue-specific default configurations RemovePathPostfixes: .silverblue Provides: fedora-release = %{version}-%{release} Provides: fedora-release-variant = %{version}-%{release} Provides: system-release Provides: system-release(%{version}) Requires: fedora-release-common = %{version}-%{release} Requires: fedora-release-ostree-desktop = %{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 Athena OS Silverblue-specific configuration files to depend on as well as Silverblue system defaults. %package identity-silverblue Summary: Package providing the identity for Athena OS Silverblue RemovePathPostfixes: .silverblue Provides: fedora-release-identity = %{version}-%{release} Conflicts: fedora-release-identity Requires(meta): fedora-release-silverblue = %{version}-%{release} %description identity-silverblue Provides the necessary files for an Athena OS installation that is identifying itself as Athena OS Silverblue. %endif %if %{with ostree_desktop} %package ostree-desktop Summary: Configuration package for rpm-ostree variants to add rpm-ostree polkit rules %description ostree-desktop Configuration package for rpm-ostree variants to add rpm-ostree polkit rules %endif %prep mkdir -p licenses sed 's|@@VERSION@@|%{dist_version}|g' %{SOURCE2} >licenses/Fedora-Legal-README.txt %build %install install -d %{buildroot}%{_prefix}/lib echo "Athena OS release %{version} (%{release_name})" > %{buildroot}%{_prefix}/lib/athenaos-release echo "cpe:/o:athenaos:athenaos:%{version}" > %{buildroot}%{_prefix}/lib/system-release-cpe # Symlink the -release files install -d %{buildroot}%{_sysconfdir} ln -s ../usr/lib/athenaos-release %{buildroot}%{_sysconfdir}/athenaos-release ln -s ../usr/lib/system-release-cpe %{buildroot}%{_sysconfdir}/system-release-cpe ln -s athenaos-release %{buildroot}%{_sysconfdir}/system-release # Create the common os-release file %{lua: function starts_with(str, start) return str:sub(1, #start) == start end } %define starts_with(str,prefix) (%{expand:%%{lua:print(starts_with(%1, %2) and "1" or "0")}}) %if %{starts_with "a%{release}" "a0"} %global prerelease \ Prerelease %endif # ------------------------------------------------------------------------- # Definitions for /etc/os-release and for macros in macros.dist. These # macros are useful for spec files where distribution-specific identifiers # are used to customize packages. # Name of vendor / name of distribution. Typically used to identify where # the binary comes from in --help or --version messages of programs. # Examples: gdb.spec, clang.spec %global dist_vendor Athena OS %global dist_name Athena OS # URL of the homepage of the distribution # Example: gstreamer1-plugins-base.spec %global dist_home_url https://athenaos.org/ # Bugzilla / bug reporting URLs shown to users. # Examples: gcc.spec %global dist_bug_report_url https://gitlab.com/groups/athenaos/-/issues # debuginfod server, as used in elfutils.spec. %global dist_debuginfod_url https://debuginfod.fedoraproject.org/ # ------------------------------------------------------------------------- # Set the RELEASE_TYPE appropriately %define release_type %[0%{?is_development} ? "development" : "stable"] cat <os-release NAME="%{dist_name}" VERSION="%{dist_version} (%{release_name}%{?prerelease})" RELEASE_TYPE=%{release_type} ID=athenaos VERSION_ID=%{dist_version} VERSION_CODENAME="" PLATFORM_ID="platform:f%{dist_version}" PRETTY_NAME="Athena OS %{dist_version} (%{release_name}%{?prerelease})" ANSI_COLOR="0;38;2;60;110;180" LOGO=athenaos-hello-logo CPE_NAME="cpe:/o:athenaos:athenaos:%{dist_version}" DEFAULT_HOSTNAME="athenaos" HOME_URL="%{dist_home_url}" DOCUMENTATION_URL="https://athenaos.org/en/getting-started/athenaos/" SUPPORT_URL="https://ask.fedoraproject.org/" BUG_REPORT_URL="%{dist_bug_report_url}" REDHAT_BUGZILLA_PRODUCT="Fedora" REDHAT_BUGZILLA_PRODUCT_VERSION=%{bug_version} REDHAT_SUPPORT_PRODUCT="Fedora" REDHAT_SUPPORT_PRODUCT_VERSION=%{bug_version} SUPPORT_END=%{eol_date} EOF # Create the common /etc/issue echo "\S" > %{buildroot}%{_prefix}/lib/issue echo "Kernel \r on \m (\l)" >> %{buildroot}%{_prefix}/lib/issue echo >> %{buildroot}%{_prefix}/lib/issue ln -s ../usr/lib/issue %{buildroot}%{_sysconfdir}/issue # Create /etc/issue.net echo "\S" > %{buildroot}%{_prefix}/lib/issue.net echo "Kernel \r on \m (\l)" >> %{buildroot}%{_prefix}/lib/issue.net ln -s ../usr/lib/issue.net %{buildroot}%{_sysconfdir}/issue.net # Create /etc/issue.d mkdir -p %{buildroot}%{_sysconfdir}/issue.d mkdir -p %{buildroot}%{_swidtagdir} # Create os-release files for the different editions %if %{with basic} # Basic cp -p os-release \ %{buildroot}%{_prefix}/lib/os-release.basic %endif %if %{with silverblue} # Silverblue cp -p os-release \ %{buildroot}%{_prefix}/lib/os-release.silverblue echo "VARIANT=\"Silverblue\"" >> %{buildroot}%{_prefix}/lib/os-release.silverblue echo "VARIANT_ID=silverblue" >> %{buildroot}%{_prefix}/lib/os-release.silverblue sed -i -e "s|(%{release_name}%{?prerelease})|(Silverblue%{?prerelease})|g" %{buildroot}%{_prefix}/lib/os-release.silverblue sed -i -e 's|DOCUMENTATION_URL=.*|DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora-silverblue/"|' %{buildroot}%{_prefix}/lib/os-release.silverblue sed -i -e 's|HOME_URL=.*|HOME_URL="https://silverblue.fedoraproject.org"|' %{buildroot}/%{_prefix}/lib/os-release.silverblue sed -i -e 's|BUG_REPORT_URL=.*|BUG_REPORT_URL="https://github.com/fedora-silverblue/issue-tracker/issues"|' %{buildroot}/%{_prefix}/lib/os-release.silverblue sed -e "s#\$version#%{bug_version}#g" -e 's/$edition/Silverblue/;s///;/^$/d' %{SOURCE20} > %{buildroot}%{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.silverblue %endif %if %{with silverblue} || %{with workstation} # Silverblue and Workstation install -Dm0644 %{SOURCE15} -t %{buildroot}%{_prefix}/lib/systemd/system-preset/ install -Dm0644 %{SOURCE27} -t %{buildroot}%{_prefix}/lib/systemd/system-preset/ # Override the list of enabled gnome-shell extensions for Workstation install -Dm0644 %{SOURCE16} -t %{buildroot}%{_datadir}/glib-2.0/schemas/ %endif %if %{with ostree_desktop} # Install rpm-ostree polkit rules install -Dm0644 %{SOURCE17} -t %{buildroot}%{_datadir}/polkit-1/rules.d/ %endif # Create the symlink for /etc/os-release ln -s ../usr/lib/os-release %{buildroot}%{_sysconfdir}/os-release # Set up the dist tag macros install -d -m 755 %{buildroot}%{_rpmconfigdir}/macros.d cat >> %{buildroot}%{_rpmconfigdir}/macros.d/macros.dist << EOF # dist macros. %%__bootstrap ~bootstrap %if 0%{?eln} %%rhel %{rhel_dist_version} %%el%{rhel_dist_version} 1 # Although eln is set in koji tags, we put it in the macros.dist file for local and mock builds. %%eln %{eln} %%distcore .eln%%{eln} %else %%fedora %{dist_version} %%fc%{dist_version} 1 %%distcore .fc%%{athenaos} %endif %%dist %%{!?distprefix0:%%{?distprefix}}%%{expand:%%{lua:for i=0,9999 do print("%%{?distprefix" .. i .."}") end}}%%{distcore}%%{?with_bootstrap:%%{__bootstrap}} %%dist_vendor %{dist_vendor} %%dist_name %{dist_name} %%dist_home_url %{dist_home_url} %%dist_bug_report_url %{dist_bug_report_url} %%dist_debuginfod_url %{dist_debuginfod_url} EOF # Install licenses install -pm 0644 %{SOURCE1} licenses/LICENSE # Default system wide install -Dm0644 %{SOURCE10} -t %{buildroot}%{_prefix}/lib/systemd/system-preset/ install -Dm0644 %{SOURCE11} -t %{buildroot}%{_prefix}/lib/systemd/system-preset/ install -Dm0644 %{SOURCE12} -t %{buildroot}%{_prefix}/lib/systemd/user-preset/ # The same file is installed in two places with identical contents install -Dm0644 %{SOURCE13} -t %{buildroot}%{_prefix}/lib/systemd/system-preset/ install -Dm0644 %{SOURCE13} -t %{buildroot}%{_prefix}/lib/systemd/user-preset/ # Create distro-level SWID tag file install -d %{buildroot}%{_swidtagdir} sed -e "s#\$version#%{bug_version}#g" -e 's///;/^$/d' %{SOURCE19} > %{buildroot}%{_swidtagdir}/org.athenaos.AthenaOS-%{bug_version}.swidtag install -d %{buildroot}%{_sysconfdir}/swid/swidtags.d ln -s --relative %{buildroot}%{_swidtagdir} %{buildroot}%{_sysconfdir}/swid/swidtags.d/athenaos.org # Install DNF 5 configuration defaults install -Dm0644 %{SOURCE31} -t %{buildroot}%{_prefix}/share/dnf5/libdnf.conf.d/ %files common %license licenses/LICENSE licenses/Fedora-Legal-README.txt %{_prefix}/lib/athenaos-release %{_prefix}/lib/system-release-cpe %{_sysconfdir}/os-release %{_sysconfdir}/athenaos-release %{_sysconfdir}/system-release %{_sysconfdir}/system-release-cpe %attr(0644,root,root) %{_prefix}/lib/issue %config(noreplace) %{_sysconfdir}/issue %attr(0644,root,root) %{_prefix}/lib/issue.net %config(noreplace) %{_sysconfdir}/issue.net %dir %{_sysconfdir}/issue.d %attr(0644,root,root) %{_rpmconfigdir}/macros.d/macros.dist %dir %{_prefix}/lib/systemd/user-preset/ %{_prefix}/lib/systemd/user-preset/90-default-user.preset %{_prefix}/lib/systemd/user-preset/99-default-disable.preset %dir %{_prefix}/lib/systemd/system-preset/ %{_prefix}/lib/systemd/system-preset/85-display-manager.preset %{_prefix}/lib/systemd/system-preset/90-default.preset %{_prefix}/lib/systemd/system-preset/99-default-disable.preset %dir %{_swidtagdir} %{_swidtagdir}/org.athenaos.AthenaOS-%{bug_version}.swidtag %dir %{_sysconfdir}/swid %{_sysconfdir}/swid/swidtags.d %{_prefix}/share/dnf5/libdnf.conf.d/20-fedora-defaults.conf %if %{with basic} %files %files identity-basic %{_prefix}/lib/os-release.basic %endif %if %{with silverblue} %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 %{_datadir}/glib-2.0/schemas/org.gnome.shell.gschema.override %{_prefix}/lib/systemd/system-preset/80-workstation.preset %{_prefix}/lib/systemd/system-preset/81-desktop.preset %endif %if %{with ostree_desktop} %files ostree-desktop %attr(0644,root,root) %{_prefix}/share/polkit-1/rules.d/org.projectatomic.rpmostree1.rules %endif %changelog %autochangelog