diff --git a/anda/terra/obsolete/anda.hcl b/anda/terra/obsolete/anda.hcl new file mode 100644 index 0000000000..b8007c60e4 --- /dev/null +++ b/anda/terra/obsolete/anda.hcl @@ -0,0 +1,6 @@ +project pkg { + arches = ["x86_64"] + rpm { + spec = "terra-obsolete.spec" + } +} diff --git a/anda/terra/obsolete/terra-obsolete.spec b/anda/terra/obsolete/terra-obsolete.spec new file mode 100644 index 0000000000..88e337a2b4 --- /dev/null +++ b/anda/terra/obsolete/terra-obsolete.spec @@ -0,0 +1,126 @@ +Name: terra-obsolete +# Please keep the version equal to the targeted Terra release +Version: 39 +# The dist number is the version here, it is intentionally not repeated in the release +%global dist %nil + +Release: %autorelease +Summary: A package to obsolete retired packages, based on Fedora's equivalent package + +License: LicenseRef-Fedora-Public-Domain +BuildArch: noarch + +# =============================================================================== +# Skip down below these convenience macros +%define obsolete_ticket() %{lua: + local ticket = rpm.expand('%1') + + -- May need to declare the master structure + if type(obs) == 'nil' then + obs = {} + end + + if ticket == '%1' then + rpm.expand('%{error:No ticket provided to obsolete_ticket}') + end + + if ticket == 'Ishouldfileaticket' then + ticket = nil + end + + -- Declare a new set of obsoletes + local index = #obs+1 + obs[index] = {} + obs[index].ticket = ticket + obs[index].list = {} +} + +%define obsolete() %{lua: + local pkg = rpm.expand('%1') + local ver = rpm.expand('%2') + local pkg_ + local ver_ + local i + local j + + if pkg == '%1' then + rpm.expand('%{error:No package name provided to obsolete}') + end + if ver == '%2' then + rpm.expand('%{error:No version provided to obsolete}') + end + + if not string.find(ver, '-') then + rpm.expand('%{error:You must provide a version-release, not just a version.}') + end + + print('Obsoletes: ' .. pkg .. ' < ' .. ver) + + -- Check if the package wasn't already obsoleted + for i = 1,#obs do + for j = 1,#obs[i].list do + pkg_, ver_ = table.unpack(obs[i].list[j]) + if pkg == pkg_ then + rpm.expand('%{error:' .. pkg ..' obsoleted multiple times (' .. ver_ .. ' and ' .. ver ..').}') + end + end + end + + -- Append this obsolete to the last set of obsoletes in the list + local list = obs[#obs].list + list[#list+1] = {pkg, ver} +} + +%define list_obsoletes %{lua: + local i + local j + for i = 1,#obs do + for j = 1,#obs[i].list do + pkg, ver = table.unpack(obs[i].list[j]) + print(' ' .. pkg .. ' < ' .. ver .. '\\n') + end + if obs[i].ticket == nil then + print(' (No ticket was provided!)\\n\\n') + else + print(' (See ' .. obs[i].ticket .. ')\\n\\n') + end + end +} + +# =============================================================================== +# Add calls to the obsolete_ticket and obsolete macros below, along with a note +# indicating the Terra version in which the entries can be removed. This is +# generally three releases beyond whatever release Rawhide is currently. The +# macros make this easy, and will automatically update the package description. + +# A link with information is important. Please don't add things here +# without having a link to a PR on GitHub, a link to a package +# retirement commit, or something similar. We generally recommend you +# put the GitHub PR in which the obsolete is being added. + +# All Obsoletes: entries MUST be versioned (including the release), +# with the version being higher (!) +# than the last version-release of the obsoleted package. +# This allows the package to return to the distribution later. +# The best possible thing to do is to find the last version-release +# which was in the distribution, add one to the release, +# and add that version without using a dist tag. +# This allows a rebuild with a bumped Release: to be installed. + +# Remove in 43 +%obsolete_ticket tbd +%obsolete switchboard-plug-wallet 50582fc-3 + +%description + +Currently obsoleted packages: + +%list_obsoletes + +%prep + +%files + +%changelog +%autochangelog +