Name:       terra-obsolete
# Please keep the version equal to the targeted Terra release
Version:    %{?fedora:%{fedora}}%{?rhel:%{rhel}}
# The dist number is the version here, it is intentionally not repeated in the release
%global dist %nil

Release:    4%{?dist}
Summary:    A package to obsolete retired packages, based on Fedora's equivalent package

License:    LicenseRef-Fedora-Public-Domain
BuildArch:  noarch

Packager:   Terra Packaging Team <terra@fyralabs.com>

# ===============================================================================
# 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.

%obsolete_ticket https://github.com/terrapkg/packages/pull/994
%obsolete switchboard-plug-wallet 50582fc-3

%obsolete_ticket https://github.com/terrapkg/packages/pull/1000
%obsolete systemd-sysusers-presets 1.0-2
%obsolete systemd-sysusers-presets-polkit 1.0-2
%obsolete systemd-sysusers-presets-rpcbind 1.0-2
%obsolete katsu-systemd-sysusers-presets 1.0-2
%obsolete katsu-systemd-sysusers-presets-polkit 1.0-2
%obsolete katsu-systemd-sysusers-presets-rpcbind 1.0-2

%obsolete_ticket https://github.com/terrapkg/packages/issues/991
%obsolete iosevka-fusion-fonts 25.1.1-2

%obsolete_ticket https://github.com/terrapkg/packages/pull/3138
%obsolete terra-sddm 0.21.0-6
%obsolete terra-rgbds 0.9.0-3
%obsolete terra-libplacebo 7.349.0-3
%obsolete terra-libplacebo-devel 7.349.0-3
%obsolete terra-wl-clipboard 2.2.1-2
%obsolete terra-maturin 1.8.1-3
%obsolete terra-libindicator 16.10.0-3
%obsolete terra-libindicator-devel 16.10.0-3
%obsolete terra-libindicator-gtk3 16.10.0-3
%obsolete terra-libindicator-gtk3-devel 16.10.0-3
%obsolete terra-blueprint-compiler 0.16.0-3
%obsolete nushell 0.101.0-3
%obsolete uutils-coreutils-util-linux 0.0.29-2
%obsolete uutils-coreutils-util-linux-replace 0.0.29-2
# pantheon packages only packaged in terra
%obsolete elementary-appcenter 7.4.0-3
%obsolete switchboard-plug-datetime 8.0.0-2
%obsolete switchboard-plug-locale 8.0.0-2
%obsolete switchboard-plug-parental-controls 8.0.0-2
%obsolete switchboard-plug-power 8.0.0-2
%obsolete switchboard-plug-security-privacy 8.0.0-2
%obsolete switchboard-plug-useraccounts 8.0.0-2
%obsolete switchboard-plug-wacom 8.0.0-2

%obsolete_ticket https://github.com/terrapkg/packages/pull/7098
%obsolete terra-surface-dtx-daemon v0.3.10~1-5

%obsolete_ticket https://github.com/terrapkg/packages/pull/12665
%obsolete supergfxctl 5.2.7-3

%obsolete_ticket https://github.com/terrapkg/packages/pull/12665
%obsolete gnome-shell-extension-gpu-switcher-supergfxctl 11^20250925.1de26db-4

%obsolete_ticket https://github.com/terrapkg/packages/pull/7521
%obsolete x264-bash-completion 0.165-18.20250609gitb35605ac

%obsolete_ticket https://github.com/terrapkg/packages/pull/7659
%obsolete x264-bootstrap 0.0.165-18.20250609gitb35605ac_bootstrap
%obsolete x264-bootstrap-libs 0.0.165-18.20250609gitb35605ac_bootstrap
%obsolete x264-bootstrap-devel 0.0.165-18.20250609gitb35605ac_bootstrap

%obsolete_ticket https://github.com/terrapkg/packages/pull/7503
%obsolete zig-master-bootstrap 0.16.0~dev.1484+d0ba6642b-3

%description
Currently obsoleted packages:

%list_obsoletes

%prep

%files

%changelog
%autochangelog
