diff options
Diffstat (limited to 'find-deprecated-pkgs')
-rwxr-xr-x | find-deprecated-pkgs | 279 |
1 files changed, 0 insertions, 279 deletions
diff --git a/find-deprecated-pkgs b/find-deprecated-pkgs deleted file mode 100755 index 841045f..0000000 --- a/find-deprecated-pkgs +++ /dev/null @@ -1,279 +0,0 @@ -#!/bin/bash -# Copyright (C) 2018 David P. <megver83@parabola.nu> -# Find deprecated Arch packages that are still in our blacklists. - -# Repositories for specific arch'es. -# Common repos are in 'repos' variable. -repos="core community extra" -repos_x86_64="$repos testing multilib multilib-testing" -repos_i686="$repos testing build-support" -repos_armv7h="$repos alarm" # although we don't sync [alarm] we blacklist its packages to conflict with your-freedom - -# Parabola repos for checking blacklists like your-privacy, -# which sometimes block [libre] and [pcr] packages. -# [nonprism] and [nonsystemd] are not listened because -# we do not blacklists those packages anywhere -repos_parabola="pcr pcr-multilib pcr-multilib-testing pcr-testing libre libre-multilib libre-multilib-testing libre-testing" - -# Set the blacklist files. The packages here always have a [libre] replacement if there's one. -# aur-blacklist.txt is not here since we want to check Arch's official repos -blacklists="blacklist.txt" - -# List here files that may also blacklist Parabola packages. -# These are intended to be used with $repos_parabola -blacklists_parabola="your-initfreedom-blacklist.txt your-privacy-blacklist.txt your-freedom_emu-blacklist.txt" - -# Mirrors. Please choose HTTPS over HTTP when possible -# x86_64 mirrors -for r in $repos_x86_64; do - mirrors+=(https://mirrors.edge.kernel.org/archlinux/$r/os/x86_64/) -done -# i686 mirrors -for r in $repos_i686; do - mirrors+=(https://mirror.archlinux32.org/i686/$r/) -done -# armv7h mirrors -for r in $repos_armv7h; do - mirrors+=(https://fl.us.mirror.archlinuxarm.org/armv7h/$r/) -done - -add_parabola_mirrors(){ - # Parabola mirrors, used to check [libre] and [pcr] packages - for r in $repos_parabola; do - mirrors+=(https://mirror.grapentin.org/parabola/$r/os/x86_64/) - mirrors+=(https://mirror.grapentin.org/parabola/$r/os/i686/) - mirrors+=(https://mirror.grapentin.org/parabola/$r/os/armv7h/) - done -} - -# Sed expresion tested for Nginx, change if needed -sedexp='s/.*href="//;s/\.pkg.tar.xz.*//' -# extra sedexps for special characters/symbols -sedexp+=';s/%2B/+/g;s/%3A/:/g;s/%40/@/g' - -usage(){ -cat <<EOM -Usage: ${0##*/} [arch|parabola] -Check if there are inexistent packages in the blacklists. - -Arguments: - arch Compares ArchLinux{32,ARM} blacklists - with their repositories - parabola Compares Arch/Parabola blacklists (e.g. - your-privacy) with Parabola's and Arch's - repos - -The 'parabola' argument compares with our repositories and Arch's -since in blacklists like your-privacy and your-initfreedom we also block -some packages from [pcr] (like jitsi) and [libre] (like icedove), and -probably also from their -multilib, -testing and -multilib-testing derivatives. - -Note that the package architecture is always specified with 'parabola', and -in 'arch' only when there's an uneeded replacement. This is because your-freedom -is for any architecture and no matter if you use Parabola x86_64 or i686, it -will always conflict packages that are even for armv7h only (and vice versa). - -To easily remove a line, you can use the following sed expresion: - - sed '/^pkgname:/d' -i blacklist_file.txt -EOM -} - -mkpkglist(){ - parabola_pkgs=$(mktemp) - arch_pkgs=$(mktemp) - case $1 in - parabola) add_parabola_mirrors - curl -s ${mirrors[@]} | grep '".*.pkg.tar.xz"' | sed $sedexp > $parabola_pkgs - - # Separate packages by architecture - for arch in x86_64 i686 armv7h any; do - grep $arch$ $parabola_pkgs | for f in $(</dev/stdin); do - echo "${f%-*-*-*} $arch" >> $parabola_pkgs-$arch - done - done - cat $parabola_pkgs-{x86_64,i686,armv7h,any} | sort -u > $parabola_pkgs - rm $parabola_pkgs-{x86_64,i686,armv7h,any} - ;; - arch) curl -s ${mirrors[@]} | grep '".*.pkg.tar.xz"' | sed $sedexp > $arch_pkgs - - # Separate packages by architecture - for arch in x86_64 i686 armv7h any; do - grep $arch$ $arch_pkgs | for f in $(</dev/stdin); do - echo "${f%-*-*-*} $arch" >> $arch_pkgs-$arch - done - done - cat $arch_pkgs-{x86_64,i686,armv7h,any} | sort -u > $arch_pkgs - rm $arch_pkgs-{x86_64,i686,armv7h,any} - ;; - esac -} - -err(){ - printf '%s==> Error:%s %s\n' \ - "$(tput bold;tput setaf 1)" \ - "$(tput sgr0)" \ - "$1" - exit 1 -} - -msg(){ - printf '%s==>%s %s\n' \ - "$(tput bold;tput setaf 2)" \ - "$(tput sgr0)" \ - "$1" -} - -submsg(){ - printf ' %s->%s %s\n' \ - "$(tput bold;tput setaf 4)" \ - "$(tput sgr0)" \ - "$1" -} - -get_libre_pkgs(){ - # We'll use this when we check Arch's pkgs only - if ! [[ -e $libre_pkgs ]]; then - libre_pkgs=$(mktemp) - for r in libre libre-multilib libre-testing libre-multilib-testing; do - mirrors_parabola+=(https://mirror.grapentin.org/parabola/$r/os/x86_64/) - mirrors_parabola+=(https://mirror.grapentin.org/parabola/$r/os/i686/) - mirrors_parabola+=(https://mirror.grapentin.org/parabola/$r/os/armv7h/) - done - curl -s ${mirrors_parabola[@]} | grep '".*.pkg.tar.xz"' | sed $sedexp > $libre_pkgs - for arch in x86_64 i686 armv7h any; do - grep $arch$ $libre_pkgs | for f in $(</dev/stdin); do - echo "${f%-*-*-*} $arch" >> $libre_pkgs-$arch - done - done - cat $libre_pkgs-{x86_64,i686,armv7h,any} | sort -u > $libre_pkgs - fi -} - -add(){ - list=$(( $list + 1 )) -} - -compare_pkgs(){ - # $1 is the pkgname and replacement (used when checking Arch pkgs) - # $2 is the packages file list - - # First check if the pkg is available for - # a specific architecture, if not, check - # if it's for 'any' - package="${1%%:*}" - replacement="$(cut -d ":" -f2 <(echo $1))" - - for arch in x86_64 i686 armv7h; do - grep $arch$ $2 | awk '{print $1}' | grep -xw ^$package &> /dev/null || \ - grep any$ $2 | awk '{print $1}' | grep -xw ^$package &> /dev/null || \ - if [ $2 = $arch_pkgs ]; then - get_libre_pkgs - # Check if the package has a replacement, and - # if such replacement is available for the same - # architectures - if ! [[ $replacement = "" ]]; then - # If this works, it means the pkg doesn't exist for $arch in Arch, - # but we have the [libre] replacement which should be deprecated. - grep $arch$ $libre_pkgs | awk '{print $1}' | grep -xw ^$replacement &> /dev/null || \ - grep any$ $libre_pkgs | awk '{print $1}' | grep -xw ^$replacement &> /dev/null - - case $? in - 0) to_be_removed+=($arch) - ;; - *) is_not_for+=($arch) - ;; - esac - else - # However if this fails, it means the pkg doesn't have a replacement - # for $arch, or it simply doesn't have a replacement. - is_not_for+=($arch) - fi - elif [ $2 = $parabola_pkgs ]; then - if ! [[ $replacement = "" ]]; then - # Look for the replacement - grep $arch$ $parabola_pkgs | awk '{print $1}' | grep -xw ^$replacement &> /dev/null || \ - grep any$ $parabola_pkgs | awk '{print $1}' | grep -xw ^$replacement &> /dev/null - - case $? in - 0) to_be_deleted+=($arch) - ;; - *) isnt_for+=($arch) - ;; - esac - else - isnt_for+=($arch) - fi - fi - done - - # Arch - if [[ ${is_not_for[@]} = "x86_64 i686 armv7h" ]]; then - submsg "$package was not found" - add - elif [[ ${to_be_removed[@]} = "x86_64 i686 armv7h" ]]; then - submsg "$package was not found, but we've [libre] replacements which should be removed" - add - elif ! [[ ${is_not_for[@]} = "" ]] || ! [[ ${to_be_removed[@]} = "" ]]; then - for arch in ${to_be_removed[@]}; do - # If the replacement is available for the three arch'es supported - # by Parabola, then shut up - for a in x86_64 i686 armv7h; do - grep -xw "^$replacement $a$" $libre_pkgs &> /dev/null && arches+=($a) - done - if ! [[ ${arches[*]} = "x86_64 i686 armv7h" ]]; then - submsg "$package ($arch) was not found, but we've a [libre] replacement which should be removed" - add - fi - unset arches - done - fi - - # Parabola - if [[ ${isnt_for[@]} = "x86_64 i686 armv7h" ]]; then - submsg "$package was not found" - add - elif ! [[ ${isnt_for[@]} = "" ]]; then - for arch in ${to_be_deleted[@]}; do - submsg "$package ($arch) was not found, but we've $replacement as replacement and should be removed" - add - done - fi - - # Unset the variables so they can be re-used - unset to_be_deleted to_be_removed is_not_for isnt_for arch package replacement -} - -check(){ - mkpkglist $1 - case $1 in - parabola) msg 'Comparing blacklists with Parabola packages ...' - pkgs=$(for bl in $blacklists_parabola; do grep -v ^# $bl | awk '{print $1}'; done) - for p in $pkgs; do - compare_pkgs $p $parabola_pkgs - done - rm -f $parabola_pkgs - ;; - arch) msg 'Comparing blacklists with Arch packages ...' - pkgs=$(for bl in $blacklists; do grep -v ^# $bl | awk '{print $1}'; done) - for p in $pkgs; do - compare_pkgs $p $arch_pkgs - done - rm -f $arch_pkgs $libre_pkgs - ;; - *) err "$1 is not a valid argument" - ;; - esac - if ! [[ $list -gt 0 ]]; then - submsg 'No packages to show' - fi - msg 'done' -} - -if [[ ${#@} -gt 0 ]]; then - ip r | grep ^default | awk '{print $3}' | - ping -q -w1 -c1 $(tail -n1 /dev/stdin) &> /dev/null || err 'You must have internet connection to run this program' - for arg in $@; do check $arg; done -else - usage -fi |