blob: 35ebd56c48666ae7893db6cc4c79393ecbec3f02 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#!/bin/bash
# Copyright (C) 2018 David P. <megver83@parabola.nu>
# Find deprecated Arch packages that are still in our blacklists.
set -e
# Repositories for specific arch'es.
# Common repos are in 'repos' variable.
repos="core extra community"
repos_x86_64="$repos testing multilib multilib-testing"
repos_i686="$repos testing build-support"
repos_armv7h="$repos alarm"
# 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
repos_parabola="pcr pcr-multilib pcr-multilib-testing pcr-testing libre libre-multilib libre-multilib-testing libre-testing"
# Set the blacklist files
# aur-blacklist.txt is not here since we want to check Arch's official repos
blacklists="blacklist.txt"
# List here file that may also blacklist Parabola packages
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 mirror
for r in $repos_x86_64; do
mirrors+=(https://mirrors.edge.kernel.org/archlinux/$r/os/x86_64/)
done
# i686 mirror
for r in $repos_i686; do
mirrors+=(https://mirror.archlinux32.org/i686/$r/)
done
# armv7h mirror
for r in $repos_armv7h; do
mirrors+=(https://fl.us.mirror.archlinuxarm.org/armv7h/$r/)
done
# Parabola mirrors, used to check [libre] and [pcr] packages
if [[ $1 = parabola ]]; then
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
fi
# Sed expresion tested on Nginx, change if needed
sedexp='s/.*href="//;s/\-any.pkg.tar.xz.*//;s/\-x86_64.pkg.tar.xz.*//;s/\-i686.pkg.tar.xz.*//;s/\-armv7h.pkg.tar.xz.*//'
# extra sedexps for 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.
This program only takes one argument, meaning that (for example) if you run
\`${0##*/} parabola arch' only 'parabola' is considered
EOM
exit $STATUS
}
mkpkglist() {
parabola_pkgs=$(mktemp)
arch_pkgs=$(mktemp)
case $1 in
parabola) curl -s ${mirrors[@]} | grep '".*.pkg.tar.xz"' | sed $sedexp > $parabola_pkgs
;;
arch) curl -s ${mirrors[@]} | grep '".*.pkg.tar.xz"' | sed $sedexp > $arch_pkgs
;;
esac
}
err() {
printf '%sError:%s %s\n' \
"$(tput setaf 1)" \
"$(tput sgr0)" \
"$1"
false
}
check(){
mkpkglist $1
case $1 in
parabola) pkgs=$(cut -d ":" -f 1 $blacklists_parabola | grep -v ^#)
for p in $pkgs; do
grep ^$p $parabola_pkgs &> /dev/null || printf '%s was not found\n' "$p"
done
;;
arch) pkgs=$(cut -d ":" -f 1 $blacklists | grep -v ^#)
for p in $pkgs; do
grep ^$p $arch_pkgs &> /dev/null || printf '%s was not found\n' "$p"
done
;;
*) err "$1 is not a valid argument"
;;
esac
}
if [ -s $1 ]; then
usage
else
ping -q -w 1 -c 1 `ip r | grep ^default | awk '{print $3}'` &> /dev/null || err 'You are not connected to internet'
check $1 || STATUS=$? usage
fi
|