|
Packit |
46375d |
#!/bin/sh
|
|
Packit |
46375d |
# Quick and dirty script to audit font use in a yum package repository
|
|
Packit |
46375d |
#
|
|
Packit |
46375d |
# It is slow, it is ugly, and it requires a good network connection
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# Function declarations
|
|
Packit |
46375d |
|
|
Packit |
46375d |
usage() {
|
|
Packit |
46375d |
cat >&2 << EOF_USAGE
|
|
Packit |
46375d |
Usage: $0 <id> <location>
|
|
Packit |
46375d |
<id>: identifier of the package repository to check
|
|
Packit |
46375d |
<location>: location of the package repository to check
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Examples:
|
|
Packit |
46375d |
$0 tmp /tmp/rpm
|
|
Packit |
46375d |
$0 tmp file://tmp/rpm
|
|
Packit |
46375d |
$0 rawhide http://example.com/mirrors/fedora.redhat.com/fedora/linux/development/x86_64/os/
|
|
Packit |
46375d |
|
|
Packit |
46375d |
EOF_USAGE
|
|
Packit |
46375d |
exit 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
DATADIR="$(dirname $0)/../private"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# Filenames with whitespace or & + makefile = !!!
|
|
Packit |
46375d |
bad_pattern="[[:space:]&\:]"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# Tools and humans make mistakes; try to fix some obvious ones
|
|
Packit |
46375d |
fix_url() {
|
|
Packit |
46375d |
sed 's=^file:\(\/*\)=/=' | sed 's=^\(ftp\|http\|https\):\(\/*\)=\1://='
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
pretty_indent() {
|
|
Packit |
46375d |
fold -s -w $(($(tput cols) - 2)) \
|
|
Packit |
46375d |
| while read line ; do echo " $line" ; done
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = CSV file to evaluate
|
|
Packit |
46375d |
tally() {
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F "|" '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
filesize += $17
|
|
Packit |
46375d |
filenumber += 1
|
|
Packit |
46375d |
rpmsz[$3 "-" $4 "." $5] = $6
|
|
Packit |
46375d |
srpms[$2] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (rpm in rpmsz) {
|
|
Packit |
46375d |
rpmsize += rpmsz[rpm]
|
|
Packit |
46375d |
rpmnumber +=1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for (srpm in srpms) {
|
|
Packit |
46375d |
srpmnumber +=1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
rpmsize = rpmsize / (1024*1024)
|
|
Packit |
46375d |
filesize = filesize / (1024*1024)
|
|
Packit |
46375d |
print filenumber "|" rpmnumber "|" srpmnumber "|" filesize "|" rpmsize
|
|
Packit |
46375d |
}' "$1"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
summary() {
|
|
Packit |
46375d |
if [ $(cat "$1" | wc -l) -gt 0 ] ; then
|
|
Packit |
46375d |
tally "$1" | awk -F '|' '{ print "⇒ " $1 " file(s) (" $4 " MiB) in " $2 \
|
|
Packit |
46375d |
" package(s) (" $5 " MiB) generated from " $3 " source package(s)." }'\
|
|
Packit |
46375d |
| pretty_indent
|
|
Packit |
46375d |
else
|
|
Packit |
46375d |
echo "⇒ None!" | pretty_indent
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = summary file
|
|
Packit |
46375d |
# $2 = temporary data file
|
|
Packit |
46375d |
# $3 = test id
|
|
Packit |
46375d |
complete_csv_summary() {
|
|
Packit |
46375d |
awk -F '|' -v t_datafile="$2" -v testlabel="$3" \
|
|
Packit |
46375d |
'FILENAME==t_datafile { fail[$1"|"$2"|"$3"|"$4"|"$5"|"$10] = 1 }
|
|
Packit |
46375d |
FILENAME!=t_datafile && FNR==1 {
|
|
Packit |
46375d |
max = NF + 1
|
|
Packit |
46375d |
header = $1
|
|
Packit |
46375d |
for (i = 2 ; i <= max ; i++) {
|
|
Packit |
46375d |
header = header "|" $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print header testlabel
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FILENAME!=t_datafile && FNR>1 {
|
|
Packit |
46375d |
line = $1 "|" $2 "|" $3 "|" $4 "|" $5 "|" $6
|
|
Packit |
46375d |
newline = $1
|
|
Packit |
46375d |
for (i = 2 ; i <= max ; i++) {
|
|
Packit |
46375d |
newline = newline "|" $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print newline fail[line]
|
|
Packit |
46375d |
processed[line] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for ( line in fail ) {
|
|
Packit |
46375d |
if ( ! processed[line] ) {
|
|
Packit |
46375d |
newline = line
|
|
Packit |
46375d |
for (i = 7 ; i <= max ; i++) {
|
|
Packit |
46375d |
newline = newline "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print newline fail[line]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$2" "$1" > tmp/tmp.ccs.csv
|
|
Packit |
46375d |
awk 'FNR==1' tmp/tmp.ccs.csv > "$1"
|
|
Packit |
46375d |
awk 'FNR>1' tmp/tmp.ccs.csv | sort -f -t '|' >> "$1"
|
|
Packit |
46375d |
rm tmp/tmp.ccs.csv
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
substats() {
|
|
Packit |
46375d |
ss_datafile="$1"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '{ print $NF }' "$ss_datafile" | sort | uniq \
|
|
Packit |
46375d |
| while read key ; do
|
|
Packit |
46375d |
echo -n "$key|"
|
|
Packit |
46375d |
awk -F '|' -v key="$key" '$NF==key' "$ss_datafile" > tmp/tmp.ss.csv
|
|
Packit |
46375d |
tally tmp/tmp.ss.csv
|
|
Packit |
46375d |
rm tmp/tmp.ss.csv
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = CSV file to sum_up
|
|
Packit |
46375d |
stats() {
|
|
Packit |
46375d |
s_datafile="$1"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
summary "$s_datafile"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
if [ $(cat "$s_datafile" | wc -l) -gt 0 ] ; then
|
|
Packit |
46375d |
(echo "Format|Files|rpm|srpm|Files (MiB)|rpm (MiB)"
|
|
Packit |
46375d |
awk -F '|' '$13 != "" { print $0 "|" $15 }' "$s_datafile" > tmp/tmp.s.csv
|
|
Packit |
46375d |
substats tmp/tmp.s.csv) | column -t -s '|' | pretty_indent
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
(echo "Arch|Files|rpm|srpm|Files (MiB)|rpm (MiB)"
|
|
Packit |
46375d |
awk -F '|' '{ print $0 "|" $5 }' "$s_datafile" > tmp/tmp.s.csv
|
|
Packit |
46375d |
substats tmp/tmp.s.csv)| column -t -s '|' | pretty_indent
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
rm tmp/tmp.s.csv
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = CSV file to sum_up
|
|
Packit |
46375d |
list_rpm() {
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat "$1" | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
total[rpm] += 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
n = asorti(total, sorted)
|
|
Packit |
46375d |
for ( i = 1 ; i <= n ; i++ ) {
|
|
Packit |
46375d |
line = line sorted[i] "(" total[sorted[i]] "), "
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub(", $","",line)
|
|
Packit |
46375d |
print line
|
|
Packit |
46375d |
}' "$1" | pretty_indent
|
|
Packit |
46375d |
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# Pipe CSV file to sum_up
|
|
Packit |
46375d |
# It is assumed to be of the form
|
|
Packit |
46375d |
# rpm | pattern to match | pattern to display
|
|
Packit |
46375d |
# patterns may include # as separators
|
|
Packit |
46375d |
enum_rpm() {
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN { print "" }
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $1
|
|
Packit |
46375d |
key = $2
|
|
Packit |
46375d |
pat = $3
|
|
Packit |
46375d |
files[key] = files[key] pat "#" rpm "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (key in files) {
|
|
Packit |
46375d |
sub("\\|$", "", files[key])
|
|
Packit |
46375d |
total = split(files[key], lines,"|")
|
|
Packit |
46375d |
pb[total] = pb[total] key "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
n = asorti(pb, sorted)
|
|
Packit |
46375d |
for (i = n; i >= 1; i--) {
|
|
Packit |
46375d |
total = sorted[i]
|
|
Packit |
46375d |
sub("\\|$", "", pb[total])
|
|
Packit |
46375d |
split(pb[total], keys,"|")
|
|
Packit |
46375d |
nk = asort(keys, sortedkeys)
|
|
Packit |
46375d |
for ( k = 1 ; k <= nk ; k++ ) {
|
|
Packit |
46375d |
key = sortedkeys[k]
|
|
Packit |
46375d |
print gensub("#", ", ", "g", key)
|
|
Packit |
46375d |
split(files[key], lines, "|")
|
|
Packit |
46375d |
nl = asort(lines, sortedlines)
|
|
Packit |
46375d |
for ( l = 1 ; l <= nl ; l++ ) {
|
|
Packit |
46375d |
print " " gensub("#", "\t", "G", lines[l])
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print ""
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' | pretty_indent
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = this test id
|
|
Packit |
46375d |
# $2 = csv file with the results of this test
|
|
Packit |
46375d |
# $3 = csv file that consolidates the results of all tests
|
|
Packit |
46375d |
test_wrapup() {
|
|
Packit |
46375d |
|
|
Packit |
46375d |
complete_csv_summary "$3" "$2" "$1"
|
|
Packit |
46375d |
summary "$2"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# $1 = csv file with test results
|
|
Packit |
46375d |
test_score() {
|
|
Packit |
46375d |
if [ $(cat "$1" | wc -l) -gt 1 ] ; then
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN {
|
|
Packit |
46375d |
lh=7
|
|
Packit |
46375d |
headerline = "P#"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FNR==1 {
|
|
Packit |
46375d |
max = NF
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FNR>1 {
|
|
Packit |
46375d |
id = ""
|
|
Packit |
46375d |
for (i = 1 ; i < (lh-1) ; i++) {
|
|
Packit |
46375d |
if ($i != "") id = id $i "|"
|
|
Packit |
46375d |
else id = id " |"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub("\\|$","",id)
|
|
Packit |
46375d |
fail[id] = 1
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
score[id"|"i] = score[id"|"i] + $i
|
|
Packit |
46375d |
totalscore[i] = totalscore[i] + $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
if ( totalscore[i] ) { headerline = headerline "|" "t" i+1-lh }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print headerline
|
|
Packit |
46375d |
n = asorti(fail)
|
|
Packit |
46375d |
for (l = 1; l <= n; l++) {
|
|
Packit |
46375d |
newline = l
|
|
Packit |
46375d |
for (c = lh ; c <= max ; c++) {
|
|
Packit |
46375d |
if ( totalscore[c] ) {
|
|
Packit |
46375d |
if ( score[fail[l]"|"c] )
|
|
Packit |
46375d |
{ newline = newline "|" score[fail[l]"|"c] }
|
|
Packit |
46375d |
else
|
|
Packit |
46375d |
{ newline = newline "|‧" }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print newline
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
totalline = "Total"
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
if ( totalscore[i] ) { totalline = totalline "|" totalscore[i] }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print totalline
|
|
Packit |
46375d |
}' "$1" | column -t -s '|'
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN { lh=7 }
|
|
Packit |
46375d |
FNR>1 {
|
|
Packit |
46375d |
id = ""
|
|
Packit |
46375d |
for (i = 1 ; i < (lh-1) ; i++) {
|
|
Packit |
46375d |
if ($i != "") id = id $i "|"
|
|
Packit |
46375d |
else id = id " |"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub("\\|$","",id)
|
|
Packit |
46375d |
fail[id] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
print "P#|Maintainer|SRPM|RPM|EVR|Arch"
|
|
Packit |
46375d |
n = asorti(fail)
|
|
Packit |
46375d |
for (l = 1; l <= n; l++) {
|
|
Packit |
46375d |
print l "|" fail[l]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$1" | column -t -s '|'
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Test explanation:"
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN { lh = 7 }
|
|
Packit |
46375d |
FNR==1 {
|
|
Packit |
46375d |
max = NF
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
legend[i] = i+1-lh "|" $i }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FNR>1 {
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
totalscore[i] = totalscore[i] + $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (i = lh ; i <= max ; i++) {
|
|
Packit |
46375d |
if ( totalscore[i] ) { print legend[i] }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$1" | while read line ; do
|
|
Packit |
46375d |
testnumber=$(echo $line | awk -F '|' '{ print "t"$1 }')
|
|
Packit |
46375d |
testid=$(echo $line | awk -F '|' '{ print $2 }')
|
|
Packit |
46375d |
echo -n "$testnumber. "
|
|
Packit |
46375d |
"$DATADIR/test-info" $testid title
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
( "$DATADIR/test-info" $testid help ) | pretty_indent
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
else
|
|
Packit |
46375d |
echo "⇒ None!"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
collect() {
|
|
Packit |
46375d |
start_time=$(date "+%s")
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# This is very ugly but the safest syntax to use with any repoquery version
|
|
Packit |
46375d |
FREPOURL=$(echo "$REPOURL" | sed 's=^/=file:///=')
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "Looking for packages:"
|
|
Packit |
46375d |
echo "— with font metadata…"
|
|
Packit |
46375d |
repoquery --repofrompath=$REPOID,$FREPOURL --repoid=$REPOID \
|
|
Packit |
46375d |
--qf "%{sourcerpm}|%{name}|%{epoch}:%{version}-%{release}|%{arch}|%{packagesize}|M" \
|
|
Packit |
46375d |
--whatprovides "font(*)" --quiet \
|
|
Packit |
46375d |
| sort | uniq \
|
|
Packit |
46375d |
| sed 's=^\([^|]\+\?\)\-\([^-|]\+\?\)\-\([^-|]\+\?\)|=\1|=g' \
|
|
Packit |
46375d |
> "$FPL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "— that include files with common font extensions…"
|
|
Packit |
46375d |
repoquery --repofrompath=$REPOID,$FREPOURL --repoid=$REPOID \
|
|
Packit |
46375d |
--qf "%{sourcerpm}|%{name}|%{epoch}:%{version}-%{release}|%{arch}|%{packagesize}|E" \
|
|
Packit |
46375d |
-f '*.ttf' -f '*.otf' -f '*.ttc' \
|
|
Packit |
46375d |
-f '*.pfb' -f '*.pfa' \
|
|
Packit |
46375d |
-f '*.pcf.gz' -f '*.pcf' -f '*.bdf' --quiet \
|
|
Packit |
46375d |
| sort | uniq \
|
|
Packit |
46375d |
| sed 's=^\([^|]\+\?\)\-\([^-|]\+\?\)\-\([^-|]\+\?\)|=\1|=g' \
|
|
Packit |
46375d |
> "$PWFL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "— that use the core X11 protocol…"
|
|
Packit |
46375d |
repoquery --repofrompath=$REPOID,$FREPOURL --repoid=$REPOID \
|
|
Packit |
46375d |
--qf "%{sourcerpm}|%{name}|%{epoch}:%{version}-%{release}|%{arch}|%{packagesize}|X" \
|
|
Packit |
46375d |
--whatrequires 'libX11.so*' \
|
|
Packit |
46375d |
| sort | uniq \
|
|
Packit |
46375d |
| sed 's=^\([^|]\+\?\)\-\([^-|]\+\?\)\-\([^-|]\+\?\)|=\1|=g' \
|
|
Packit |
46375d |
> "$XPL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
if [ $(cat "$FPL" "$PWFL" "$XPL" | wc -l) -eq 0 ] ; then
|
|
Packit |
46375d |
echo "Nothing to do!"
|
|
Packit |
46375d |
exit
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
|
|
Packit |
46375d |
cat "$FPL" "$PWFL" "$XPL" \
|
|
Packit |
46375d |
| awk -F '|' '
|
|
Packit |
46375d |
{ tag[$1 "|" $2 "|" $3 "|" $4 "|" $5] = tag[$1 "|" $2 "|" $3 "|" $4 "|" $5] $6 "," }
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
n = asorti(tag,rpm)
|
|
Packit |
46375d |
for (l = 1; l <= n; l++) {
|
|
Packit |
46375d |
sub(",$", "", tag[rpm[l]])
|
|
Packit |
46375d |
print rpm[l] "|" tag[rpm[l]]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' > "tmp/$FL.1"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Inspecting packages:"
|
|
Packit |
46375d |
cd "tmp"
|
|
Packit |
46375d |
rm -f "$FL.2"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
cat "$FL.1" | while read line ; do
|
|
Packit |
46375d |
rpm=$(echo "$line" | awk -F '|' '{ print $2 "-" $3 "." $4 }')
|
|
Packit |
46375d |
rpmline=$(echo "$line" | awk -F '|' '{ print $1 "|" $2 "|" $3 "|" $4 "|" $5 }')
|
|
Packit |
46375d |
rpmd=$(echo "$rpm" | sed "s+$bad_pattern+_+g")
|
|
Packit |
46375d |
echo "$line" | cut -d "|" -f 6 | grep -q "M" && metadata="M" || metadata=""
|
|
Packit |
46375d |
echo -n "– $rpm ◔"
|
|
Packit |
46375d |
mkdir "$rpmd"
|
|
Packit |
46375d |
cd "$rpmd"
|
|
Packit |
46375d |
rpm_loc=$(repoquery --repofrompath=$REPOID,$REPOURL --repoid=$REPOID \
|
|
Packit |
46375d |
--location "$rpm" 2>/dev/null \
|
|
Packit |
46375d |
| fix_url)
|
|
Packit |
46375d |
if $(echo "$rpm_loc" | grep -q -e '^[\./~]') ; then
|
|
Packit |
46375d |
ln -s "$rpm_loc" .
|
|
Packit |
46375d |
else
|
|
Packit |
46375d |
curl -O --silent --show-error --retry 3 --connect-timeout 10 --retry-delay 15 --url "$rpm_loc"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
echo -ne "\b◑"
|
|
Packit |
46375d |
rpm2cpio *.rpm > "$rpm.cpio"
|
|
Packit |
46375d |
echo -ne "\b◕"
|
|
Packit |
46375d |
cat "$rpm.cpio" | cpio --quiet -it > "$rpm.lst"
|
|
Packit |
46375d |
nofont_score=$(cat "$rpm.lst" | sed 's=^\./=/=g' \
|
|
Packit |
46375d |
| grep -viE -e "^/usr/share/fonts" \
|
|
Packit |
46375d |
-e "^/usr/share/fontconfig/conf.avail/" \
|
|
Packit |
46375d |
-e "^/etc/fonts/conf.d/" \
|
|
Packit |
46375d |
-e "^/usr/share/doc/" \
|
|
Packit |
46375d |
-e "^/etc/X11/fontpath.d/" \
|
|
Packit |
46375d |
-e '\.((ttf)|(ttc)|(otf)|(pfa)|(pfb)|(bdf)|(pcf)|(pcf\.gz))$' \
|
|
Packit |
46375d |
| wc -l)
|
|
Packit |
46375d |
echo "$rpmline|$metadata|$nofont_score" > rpm-info.txt
|
|
Packit |
46375d |
if $(echo $line | cut -d "|" -f 6 | grep -q "E") ; then
|
|
Packit |
46375d |
cat "$rpm.lst" \
|
|
Packit |
46375d |
| grep -iE '\.((ttf)|(ttc)|(otf)|(pfa)|(pfb)|(bdf)|(pcf)|(pcf\.gz))$' \
|
|
Packit |
46375d |
| sort > "$rpm.fonts.lst"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
if $(echo $line | cut -d "|" -f 6 | grep -q "X") ; then
|
|
Packit |
46375d |
cat "$rpm.lst" \
|
|
Packit |
46375d |
| grep -i -e "^./sbin/" \
|
|
Packit |
46375d |
-e "^./usr/sbin/" \
|
|
Packit |
46375d |
-e "^./usr/kerberos/sbin" \
|
|
Packit |
46375d |
-e "^./bin/" \
|
|
Packit |
46375d |
-e "^./usr/bin/" \
|
|
Packit |
46375d |
-e "^./usr/kerberos/bin/" \
|
|
Packit |
46375d |
-e "^./lib.*/" \
|
|
Packit |
46375d |
-e "^./usr/lib.*/" \
|
|
Packit |
46375d |
-e "^./opt/" \
|
|
Packit |
46375d |
-e "^./usr/X11R6/" \
|
|
Packit |
46375d |
-e "^./usr/games/" \
|
|
Packit |
46375d |
-e "^./usr/local/" \
|
|
Packit |
46375d |
| grep -vi -e "^./usr/bin/dmxwininfo" \
|
|
Packit |
46375d |
-e "^./usr/bin/Xdmx" \
|
|
Packit |
46375d |
-e "^./usr/bin/xfontsel" \
|
|
Packit |
46375d |
-e "^./usr/bin/xlsfonts" \
|
|
Packit |
46375d |
-e "^./usr/bin/Xnest" \
|
|
Packit |
46375d |
-e "^./usr/bin/xprop" \
|
|
Packit |
46375d |
-e "^./usr/bin/xsetroot" \
|
|
Packit |
46375d |
-e "^./usr/bin/xwininfo" \
|
|
Packit |
46375d |
-e "^./usr/bin/x11vnc" \
|
|
Packit |
46375d |
-e "^./usr/bin/x2vnc" \
|
|
Packit |
46375d |
-e "^./usr/lib.*/libXcursor.so" \
|
|
Packit |
46375d |
| sort > "$rpm.bin.lst"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
touch "$rpm.fonts.lst" "$rpm.bin.lst"
|
|
Packit |
46375d |
cat "$rpm.fonts.lst" "$rpm.bin.lst" | sort | uniq > "$rpm.files.lst"
|
|
Packit |
46375d |
mkdir src
|
|
Packit |
46375d |
cd src
|
|
Packit |
46375d |
cpio -idm --quiet -E "../$rpm.files.lst" < "../$rpm.cpio"
|
|
Packit |
46375d |
cd ..
|
|
Packit |
46375d |
rm "$rpm.cpio"
|
|
Packit |
46375d |
echo -ne "\b● "
|
|
Packit |
46375d |
sed 's=^\./==g' "$rpm.fonts.lst" \
|
|
Packit |
46375d |
| while read file; do
|
|
Packit |
46375d |
unset target
|
|
Packit |
46375d |
type=$(file -bzh "src/$file")
|
|
Packit |
46375d |
case $(echo "$type" | sed 's+ (\(.*\)++g' \
|
|
Packit |
46375d |
| sed 's+ `\(.*\)++g' \
|
|
Packit |
46375d |
| sed 's+,\(.*\)++g' \
|
|
Packit |
46375d |
| sed 's+\( \)*$++g' ) in
|
|
Packit |
46375d |
"TrueType font data")
|
|
Packit |
46375d |
echo -n "t"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"TrueType font collection data")
|
|
Packit |
46375d |
echo -n "T"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"OpenType font data")
|
|
Packit |
46375d |
echo -n "o"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"X11 Portable Compiled Font data")
|
|
Packit |
46375d |
echo -n "b"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"X11 BDF font text")
|
|
Packit |
46375d |
echo -n "B"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
# PostScript files are a mess
|
|
Packit |
46375d |
"PostScript Type 1 font text")
|
|
Packit |
46375d |
echo -n "P"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"PostScript Type 1 font program data")
|
|
Packit |
46375d |
echo -n "p"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"PostScript document text conforming DSC level 3.0")
|
|
Packit |
46375d |
type="ignored"
|
|
Packit |
46375d |
echo -n "-"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"PostScript document text"|"8086 relocatable")
|
|
Packit |
46375d |
echo -n "!" >&2
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
"symbolic link to"|"broken symbolic link to")
|
|
Packit |
46375d |
target=$(readlink -m "src/$file" | sed "s+^$PWD/src++g")
|
|
Packit |
46375d |
if $(echo "$target" | grep -q "^/usr/share/fonts") ; then
|
|
Packit |
46375d |
type="Link"
|
|
Packit |
46375d |
echo -n "l"
|
|
Packit |
46375d |
else
|
|
Packit |
46375d |
type="ignored"
|
|
Packit |
46375d |
echo -n "-"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
*)
|
|
Packit |
46375d |
echo -n "?"
|
|
Packit |
46375d |
;;
|
|
Packit |
46375d |
esac
|
|
Packit |
46375d |
if [ "$type" != "ignored" -a ! -h "src/$file" ] ; then
|
|
Packit |
46375d |
mkdir -p $(dirname "tmp/$file")
|
|
Packit |
46375d |
echo "/$file|$type" > "tmp/$file.rfo.fonts.info"
|
|
Packit |
46375d |
if [ "$type" != "TrueType font data" -a \
|
|
Packit |
46375d |
"$type" != "OpenType font data" ] ; then
|
|
Packit |
46375d |
touch "tmp/$file.rfo.unicover"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
if [ "$type" = "Link" ] ; then
|
|
Packit |
46375d |
echo "/$file|$target" >> font-links.txt
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
sed 's=^\./==g' "$rpm.bin.lst" \
|
|
Packit |
46375d |
| while read file ; do
|
|
Packit |
46375d |
type=$(file -bzh "src/$file")
|
|
Packit |
46375d |
if $(echo "$type" | grep -q -e '^ELF ' -e ' ELF ') ; then
|
|
Packit |
46375d |
echo -n "‧"
|
|
Packit |
46375d |
mkdir -p $(dirname "tmp/$file")
|
|
Packit |
46375d |
echo "/$file|$type" > "tmp/$file.rfo.core-fonts.info"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
cd ..
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Analysing files…"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
find . -type d | grep "$bad_pattern" \
|
|
Packit |
46375d |
| while read dir ; do
|
|
Packit |
46375d |
mkdir -p $(echo "$dir" | sed "s+$bad_pattern+_+g")
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
find . -type f | grep "$bad_pattern" \
|
|
Packit |
46375d |
| while read file ; do
|
|
Packit |
46375d |
mv "$file" $(echo "$file"| sed "s+$bad_pattern+_+g")
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# There must be a cleaner way to do this
|
|
Packit |
46375d |
parallelism=$(($(cat /proc/cpuinfo | grep processor | wc -l)+1))
|
|
Packit |
46375d |
make -s -r -j $parallelism -f "$DATADIR/repo-font-audit.mk"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
find . -name "*\.rfo\.fonts" \
|
|
Packit |
46375d |
-o -name "*\.rfo\.core-fonts" \
|
|
Packit |
46375d |
-o -name processed-font-links.txt \
|
|
Packit |
46375d |
| while read datafile ; do
|
|
Packit |
46375d |
cat "$datafile" >> "$FL.2"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mkdir ../data
|
|
Packit |
46375d |
for rpmlint in */rpmlint.txt ; do
|
|
Packit |
46375d |
mkdir "../data/$(dirname $rpmlint)"
|
|
Packit |
46375d |
mv "$rpmlint" "../data/$rpmlint"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
for ext in fontlint unicover fc-query ; do
|
|
Packit |
46375d |
find . -name "*\.rfo\.$ext" \
|
|
Packit |
46375d |
| while read file ; do
|
|
Packit |
46375d |
dest=$(echo "$file" \
|
|
Packit |
46375d |
| sed "s+./\([^/]*\)/tmp/\(.*\).rfo.$ext+\1|\2.$ext.txt+" \
|
|
Packit |
46375d |
| sed 's+/+_+g' | sed 's+|+/+g')
|
|
Packit |
46375d |
[ -s "$file" ] && mv "$file" "../data/$dest"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
rm -fr "*/"
|
|
Packit |
46375d |
echo " ♻"
|
|
Packit |
46375d |
cd ..
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
consolidate() {
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Consolidating data…"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "Maintainer|SRPM|RPM|EVR|Arch|RPM size|RPM metadata|foreign data|\
|
|
Packit |
46375d |
rpmlint score|filename|family name|face name|fixed family name|\
|
|
Packit |
46375d |
fixed face name|format (fontconfig)|format (libmagic)|file size|checksum|\
|
|
Packit |
46375d |
partial scripts|partial blocks|fontlint|symlink target|symlink provider|\
|
|
Packit |
46375d |
core fonts use" > "$FL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
if [ -s "tmp/$FL.2" -a -r "tmp/$FL.2" ] ; then
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# FIXME: make this distro-agnostic
|
|
Packit |
46375d |
cut -d "|" -f 1 "tmp/$FL.2" | sort | uniq \
|
|
Packit |
46375d |
| /usr/bin/fedoradev-pkgowners 2>/dev/null \
|
|
Packit |
46375d |
| sed 's+ +|+g' \
|
|
Packit |
46375d |
| awk -F "|" -v file="tmp/$FL.2" '
|
|
Packit |
46375d |
{ owner[$2]=$1 }
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
while ((getline < file) > 0) {
|
|
Packit |
46375d |
print owner[$1] "|" $0
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' | sort -df -t "|" -k 1 -k 2 -k 3 > "tmp/$FL.3"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F "|" '
|
|
Packit |
46375d |
($16 != "Link") { source[$10] = $3 "-" $4
|
|
Packit |
46375d |
out[$0] = $0 "|" }
|
|
Packit |
46375d |
($16 == "Link") { link[$0] = $22 }
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (line in link) {
|
|
Packit |
46375d |
out[line] = line "|" source[link[line]]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
n = asort(out)
|
|
Packit |
46375d |
for (i = 1; i <= n; i++) print out[i]
|
|
Packit |
46375d |
}' "tmp/$FL.3" > "tmp/$FL.4"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
cat "tmp/$FL.4" \
|
|
Packit |
46375d |
| sort -df -t "|" -k 1 -k 2 -k 3 -k 4n -k 13 -k 14 -k 10 \
|
|
Packit |
46375d |
| sed 's=$=|=g' | sed 's=|0|=||=g' | sed 's=|0|=||=g' | sed 's=|\+$==g' \
|
|
Packit |
46375d |
>> "$FL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "Maintainer|SRPM|RPM|EVR|Arch|File" > "$TSUM"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
analyse() {
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Conducting tests:"
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" outside-usr-share-fonts title }
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24!="X") && \
|
|
Packit |
46375d |
($10 !~ /^\/usr\/share\/fonts\//)' "$FL" \
|
|
Packit |
46375d |
| sort -df -t "|" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup outside-usr-share-fonts tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" without-rpm-metadata title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24!="X") && \
|
|
Packit |
46375d |
($7 != "M")' "$FL" \
|
|
Packit |
46375d |
| sort -df -t "|" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup without-rpm-metadata tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" family-mixing title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
(NR > 1) && ($11 != "") {
|
|
Packit |
46375d |
rpm = $3 "-" $4 "." $5
|
|
Packit |
46375d |
files[rpm] = files[rpm] $0 "#"
|
|
Packit |
46375d |
if ( ! family[rpm] ) {
|
|
Packit |
46375d |
family[rpm] = $11
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
else {
|
|
Packit |
46375d |
if (family[rpm] != $11) {
|
|
Packit |
46375d |
mixed[rpm] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (rpm in mixed) {
|
|
Packit |
46375d |
sub("#$", "", files[rpm])
|
|
Packit |
46375d |
split(files[rpm], lines,"#")
|
|
Packit |
46375d |
for (l in lines) {
|
|
Packit |
46375d |
print lines[l]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$FL" \
|
|
Packit |
46375d |
| sort -df -t "|" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup family-mixing tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" duplicated-file title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
(NR > 1) && ($24 != "X") && ($16 != "Link") {
|
|
Packit |
46375d |
files[$18] = files[$18] $0 "#"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (checksum in files) {
|
|
Packit |
46375d |
sub("#$", "", files[checksum])
|
|
Packit |
46375d |
count = split(files[checksum], lines,"#")
|
|
Packit |
46375d |
if (count > 1) {
|
|
Packit |
46375d |
for (l in lines) {
|
|
Packit |
46375d |
print lines[l]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$FL" \
|
|
Packit |
46375d |
| sort -g -t "|" -k 18 > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
sub(".*/", "", $10)
|
|
Packit |
46375d |
if ( $11 != "" ) { sig = $11 }
|
|
Packit |
46375d |
if ( $12 != "") {
|
|
Packit |
46375d |
if ( sig != "" ) { sig = sig ", " }
|
|
Packit |
46375d |
sig = sig $12
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( sig != "" ) { sig = "#(" sig ")" }
|
|
Packit |
46375d |
print rpm "|" $18 "|" $10 sig
|
|
Packit |
46375d |
}' tmp/tmp.csv | enum_rpm
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup duplicated-file tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" duplicated-face-ext title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
(NR > 1) && ($11 != "") && ($12 != "") {
|
|
Packit |
46375d |
face = $11 "|" $12
|
|
Packit |
46375d |
rpm = $3 "-" $4 "." $5
|
|
Packit |
46375d |
files[face] = files[face] $0 "#"
|
|
Packit |
46375d |
if ( ! loc[face] ) { loc[face] = rpm }
|
|
Packit |
46375d |
else {
|
|
Packit |
46375d |
if (loc[face] != rpm) {
|
|
Packit |
46375d |
duplicated[face] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (face in duplicated) {
|
|
Packit |
46375d |
sub("#$", "", files[face])
|
|
Packit |
46375d |
split(files[face], lines,"#")
|
|
Packit |
46375d |
for (l in lines) {
|
|
Packit |
46375d |
print lines[l]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$FL" \
|
|
Packit |
46375d |
| sort -df -t "|" -k 11 -k 12 > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
sub(".*/", "", $10)
|
|
Packit |
46375d |
print rpm "|" $11 ", " $12 "|" $10
|
|
Packit |
46375d |
}' tmp/tmp.csv | enum_rpm
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup duplicated-face-ext tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" fc-query title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24!="X") && \
|
|
Packit |
46375d |
($15 == "")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup fc-query tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" libmagic title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24!="X") && \
|
|
Packit |
46375d |
(tolower(" " $16 " ") !~ / font /)' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup libmagic tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" broken-symlink title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 == "Link") && ($23 == "")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
sub(".*/", "", $10)
|
|
Packit |
46375d |
print rpm "|" $10 " ↛ " $22
|
|
Packit |
46375d |
}' tmp/tmp.csv | enum_rpm
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup broken-symlink tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" rpmlint title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24 != "X") && \
|
|
Packit |
46375d |
($9 != "")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup rpmlint tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" mixed-with-non-font-data title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24 != "X") && \
|
|
Packit |
46375d |
($8 != "")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup mixed-with-non-font-data tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" arch-package title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16 != "Link") && ($24 != "X") && \
|
|
Packit |
46375d |
($5 != "noarch")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup arch-package tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" bad-rpm-naming title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F "|" '(NR > 1) && ($16 != "Link") && ($24!="X") && \
|
|
Packit |
46375d |
$3 !~ /^[0-9abcdefghijklmnopqrstuvwxyz\.-]*-fonts$/' "$FL" \
|
|
Packit |
46375d |
> tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup bad-rpm-naming tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" bad-naming title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && \
|
|
Packit |
46375d |
((tolower($11)!=tolower($13)) || (tolower($12)!=tolower($14)))' \
|
|
Packit |
46375d |
"$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
sub(".*/", "", $10)
|
|
Packit |
46375d |
print rpm "|" $11 ", " $12 " → " $13 ", " $14 "|" $10
|
|
Packit |
46375d |
}' tmp/tmp.csv | enum_rpm
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup bad-naming tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" core-fonts title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($24=="X")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup core-fonts tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" font-linking title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($16=="Link")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup font-linking tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" duplicated-face-int title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
(NR > 1) && ($24!="X") && \
|
|
Packit |
46375d |
($15 != "PCF") && ($15 != "Type 1") && \
|
|
Packit |
46375d |
($11 != "") && ($12 != "") {
|
|
Packit |
46375d |
sig = $3 "|" $4 "|" $5 "|" $11 "|" $12
|
|
Packit |
46375d |
files[sig] = files[sig] $0 "#"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
for (sig in files) {
|
|
Packit |
46375d |
sub("#$", "", files[sig])
|
|
Packit |
46375d |
n = split(files[sig],lines,"#")
|
|
Packit |
46375d |
if (n > 1) {
|
|
Packit |
46375d |
for (l in lines) { print lines[l] }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$FL" \
|
|
Packit |
46375d |
| sort -df -t "|" -k 11 -k 12 -k 3 -k 2 > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
sub(".*/", "", $10)
|
|
Packit |
46375d |
print rpm "|" $11 ", " $12 "|" $10
|
|
Packit |
46375d |
}' tmp/tmp.csv | enum_rpm
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup duplicated-face-int tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" fontlint title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($24!="X") && ($21 > 0)' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup fontlint tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" no-english-metadata title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($24!="X") && \
|
|
Packit |
46375d |
($15 != "") && (($11 == "") || ($12 == ""))' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
{
|
|
Packit |
46375d |
rpm = $3 "-" $4 "." $5
|
|
Packit |
46375d |
if ( $7 == "M" ) { rpm = "[" rpm "]" }
|
|
Packit |
46375d |
print $10 "|" rpm
|
|
Packit |
46375d |
}' tmp/tmp.csv \
|
|
Packit |
46375d |
| column -t -s '|' | pretty_indent
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_wrapup no-english-metadata tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" partial-scripts title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($24!="X") && ($19 > 0)' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup partial-scripts tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo -n "— "
|
|
Packit |
46375d |
"$DATADIR/test-info" partial-blocks title
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($24!="X") && ($20 > 0)' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
list_rpm tmp/tmp.csv
|
|
Packit |
46375d |
test_wrapup partial-blocks tmp/tmp.csv "$TSUM"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
sum_up() {
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Audit results:"
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "– packages that declare font metadata:"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($7 == "M") && ($24!="X")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
stats tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "☛ File size is computed as extracted, while rpm is a compressed \
|
|
Packit |
46375d |
format." | pretty_indent
|
|
Packit |
46375d |
echo "☛ Mid-term, files in legacy PCF or Type1 formats need to be converted \
|
|
Packit |
46375d |
or removed." | pretty_indent
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "– font files in other packages (we should not find any!)"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '(NR > 1) && ($7 != "M") && ($16 != "Link") && ($24!="X")' "$FL" > tmp/tmp.csv
|
|
Packit |
46375d |
stats tmp/tmp.csv
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ $(cat tmp/tmp.csv | wc -l) -gt 0 ] && \
|
|
Packit |
46375d |
echo "☛ Bad packaging may result in arched packages or mixed content." \
|
|
Packit |
46375d |
| pretty_indent && echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "– errors, warnings and suggestions:"
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
test_score "$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
prepare_spam() {
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Packing mail data…"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mkdir spam
|
|
Packit |
46375d |
|
|
Packit |
46375d |
for srpm in $(awk -F '|' 'FNR>1 { print $2 }' "$TSUM" | uniq) ; do
|
|
Packit |
46375d |
[ ! -d "tmp/$srpm" ] && mkdir "tmp/$srpm"
|
|
Packit |
46375d |
cp -p report.txt "tmp/$srpm/repo-report.txt"
|
|
Packit |
46375d |
for file in "$FL" "$TSUM" ; do
|
|
Packit |
46375d |
awk 'FNR==1' "$file" > "tmp/$srpm/$file"
|
|
Packit |
46375d |
awk -F '|' -v srpm="$srpm" 'FNR>1 && $2==srpm' "$file" >> "tmp/$srpm/$file"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
for rpm in $(awk -F '|' 'FNR>1 { print $3 "-" $4 "." $5 }' "tmp/$srpm/$TSUM" | uniq | sed "s+$bad_pattern+_+g") ; do
|
|
Packit |
46375d |
cp -pr "data/$rpm" "tmp/$srpm"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
cat > tmp/$srpm/message.txt << EOF
|
|
Packit |
46375d |
Dear packager,
|
|
Packit |
46375d |
|
|
Packit |
46375d |
At $TIMESTAMP, your “$srpm” package failed one or more of the tests
|
|
Packit |
46375d |
I was performing on the “$ID” repository located at:
|
|
Packit |
46375d |
$REPOURL
|
|
Packit |
46375d |
|
|
Packit |
46375d |
There are three different reasons that may cause this message:
|
|
Packit |
46375d |
1. your package is including one or more font files, but not packaging
|
|
Packit |
46375d |
them properly;
|
|
Packit |
46375d |
2. your package is including one or more font files, and I've found
|
|
Packit |
46375d |
issues in some of them;
|
|
Packit |
46375d |
3. your package is not shipping any font file, but the way it accesses
|
|
Packit |
46375d |
fonts in other packages is not satisfying.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
To stop receiving this message, you need to:
|
|
Packit |
46375d |
1. drop the font files or fix their packaging;
|
|
Packit |
46375d |
2. relay the fonts issues to the fonts upstream to get them revised;
|
|
Packit |
46375d |
3. work with the code upstream to improve the way it accesses font
|
|
Packit |
46375d |
files (usually by making it use fontconfig through a higher-level
|
|
Packit |
46375d |
text library such as pango, pango-cairo, harfbuzz, or QT)
|
|
Packit |
46375d |
|
|
Packit |
46375d |
You can self-check your packages at any time by:
|
|
Packit |
46375d |
1. installing createrepo and fontpackages-tools:
|
|
Packit |
46375d |
# yum install createrepo fontpackages-tools
|
|
Packit |
46375d |
2. putting your packages and any font package they depends on in a
|
|
Packit |
46375d |
test directory
|
|
Packit |
46375d |
3. indexing this directory with createrepo:
|
|
Packit |
46375d |
$ createrepo path-to-test-directory
|
|
Packit |
46375d |
4. running repo-font-audit:
|
|
Packit |
46375d |
$ repo-font-audit test absolute-path-to-test-directory
|
|
Packit |
46375d |
|
|
Packit |
46375d |
A summary of the issues I detected is appended here. For your
|
|
Packit |
46375d |
convenience a more comprehensive analysis is also attached to this
|
|
Packit |
46375d |
message.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Errors, warnings and suggestions:
|
|
Packit |
46375d |
|
|
Packit |
46375d |
$(test_score "tmp/$srpm/$TSUM")
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please take the appropriate measures to fix the “$srpm” package.
|
|
Packit |
46375d |
I will warn you again if it is still necessary next time I am ran.
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This report was generated by the repo-font-audit command from:
|
|
Packit |
46375d |
http://fedoraproject.org/wiki/fontpackages
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please post questions, suggestions, patches or bug reports to:
|
|
Packit |
46375d |
https://admin.fedoraproject.org/mailman/listinfo/fonts
|
|
Packit |
46375d |
(subscription required)
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Your friendly QA robot,
|
|
Packit |
46375d |
|
|
Packit |
46375d |
--
|
|
Packit |
46375d |
repo-font-audit
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
cd tmp
|
|
Packit |
46375d |
tar cf "$srpm.tar" "$srpm"
|
|
Packit |
46375d |
cd ..
|
|
Packit |
46375d |
xz -9 "tmp/$srpm.tar"
|
|
Packit |
46375d |
mv "tmp/$srpm.tar.xz" spam
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
cat > spam/send-messages.sh << EOF
|
|
Packit |
46375d |
#!/bin/sh
|
|
Packit |
46375d |
# Send warnings to problem package owners
|
|
Packit |
46375d |
# This is a bit distribution-specific, people from other distributions are
|
|
Packit |
46375d |
# welcome to suggest how to make it more agnostic
|
|
Packit |
46375d |
|
|
Packit |
46375d |
#EMAIL="repo-font-audit <your@mail>"
|
|
Packit |
46375d |
#REPLYTO=another@mail
|
|
Packit |
46375d |
|
|
Packit |
46375d |
#export EMAIL REPLYTO
|
|
Packit |
46375d |
|
|
Packit |
46375d |
for srpm in \\
|
|
Packit |
46375d |
$(awk -F '|' 'FNR>1 { print $2 " \\" }' "$TSUM" | uniq)
|
|
Packit |
46375d |
; do
|
|
Packit |
46375d |
tar -xf \$srpm.tar.xz */message.txt -O \\
|
|
Packit |
46375d |
| mutt -s "[RFA] Your \$srpm $ID package did not pass QA" \\
|
|
Packit |
46375d |
-a \$srpm.tar.xz -- \$srpm-owner@fedoraproject.org
|
|
Packit |
46375d |
sleep 5
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
chmod +x spam/send-messages.sh
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
pack_data() {
|
|
Packit |
46375d |
echo "Packing result data…"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mv spam "$SPAM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mkdir -p "$RES/data"
|
|
Packit |
46375d |
cp "$TSUM" summary.txt report.txt "$FL" "$RES/"
|
|
Packit |
46375d |
cp -pr data/* "$RES/data" 2>/dev/null
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mkdir "$SRES/"
|
|
Packit |
46375d |
cp "$TSUM" summary.txt report.txt "$SRES/"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
for report in "$RES" "$SRES" "$SPAM" ; do
|
|
Packit |
46375d |
tar cf "$report.tar" "$report"
|
|
Packit |
46375d |
xz -9 "$report.tar"
|
|
Packit |
46375d |
mv "$report.tar.xz" "$ORIGDIR/"
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
echo "Audit complete!"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk 'NR > 1' "$FL" > "tmp/$FL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
end_time=$(date "+%s")
|
|
Packit |
46375d |
t=$(($end_time-$start_time))
|
|
Packit |
46375d |
th=$(($t/(60*60)))
|
|
Packit |
46375d |
tm=$((($t/60)-(th*60)))
|
|
Packit |
46375d |
ts=$(($t-(($th*60+$tm)*60)))
|
|
Packit |
46375d |
[ $th -gt 0 ] && elapsed_time="$th h"
|
|
Packit |
46375d |
if [ $tm -gt 0 ] ; then
|
|
Packit |
46375d |
[ "$elapsed_time" != "" ] \
|
|
Packit |
46375d |
&& elapsed_time="$elapsed_time $tm min" \
|
|
Packit |
46375d |
|| elapsed_time="$tm min"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
if [ $ts -gt 0 ] ; then
|
|
Packit |
46375d |
[ "$elapsed_time" != "" ] \
|
|
Packit |
46375d |
&& elapsed_time="$elapsed_time $ts s" \
|
|
Packit |
46375d |
|| elapsed_time="$ts s"
|
|
Packit |
46375d |
fi
|
|
Packit |
46375d |
|
|
Packit |
46375d |
(
|
|
Packit |
46375d |
cat << EOF
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Run time: $elapsed_time.
|
|
Packit |
46375d |
Number of items processed:
|
|
Packit |
46375d |
$(summary "tmp/$FL")
|
|
Packit |
46375d |
|
|
Packit |
46375d |
1. Extracted data: $ORIGDIR/$RES.tar.xz
|
|
Packit |
46375d |
2. Short summary: $ORIGDIR/$SRES.tar.xz
|
|
Packit |
46375d |
3. Mail data: $ORIGDIR/$SPAM.tar.xz
|
|
Packit |
46375d |
|
|
Packit |
46375d |
This report was generated by the repo-font-audit command from:
|
|
Packit |
46375d |
http://fedoraproject.org/wiki/fontpackages
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Please post questions, suggestions, patches or bug reports to:
|
|
Packit |
46375d |
https://admin.fedoraproject.org/mailman/listinfo/fonts
|
|
Packit |
46375d |
(subscription required)
|
|
Packit |
46375d |
EOF
|
|
Packit |
46375d |
) | pretty_indent
|
|
Packit |
46375d |
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
# End of function declarations
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ "$#" -lt "2" ] && usage
|
|
Packit |
46375d |
|
|
Packit |
46375d |
TIMESTAMP=$(date -u +%Y%m%dT%H%M%SZ)
|
|
Packit |
46375d |
ID=$1
|
|
Packit |
46375d |
REPOID="$1-rfa-$TIMESTAMP"
|
|
Packit |
46375d |
REPOURL=$(echo "$2" | fix_url)
|
|
Packit |
46375d |
ORIGDIR="$PWD"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
FPL="font-packages.csv"
|
|
Packit |
46375d |
PWFL="packages-with-fonts.csv"
|
|
Packit |
46375d |
XPL="package-using-x11.csv"
|
|
Packit |
46375d |
CSL="checksums.csv"
|
|
Packit |
46375d |
FL="consolidated-data.csv"
|
|
Packit |
46375d |
TSUM="test-summary.csv"
|
|
Packit |
46375d |
RES="repo-font-audit-$ID-$TIMESTAMP"
|
|
Packit |
46375d |
SRES="repo-font-audit-$ID-$TIMESTAMP-short"
|
|
Packit |
46375d |
SPAM="repo-font-audit-$ID-$TIMESTAMP-mail"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
TMPDIR=$(mktemp -d --tmpdir=/tmp $RES-XXXXXXXXXX)
|
|
Packit |
46375d |
cd $TMPDIR
|
|
Packit |
46375d |
|
|
Packit |
46375d |
mkdir tmp
|
|
Packit |
46375d |
|
|
Packit |
46375d |
collect
|
|
Packit |
46375d |
consolidate
|
|
Packit |
46375d |
analyse | tee report.txt
|
|
Packit |
46375d |
sum_up | tee summary.txt
|
|
Packit |
46375d |
prepare_spam
|
|
Packit |
46375d |
pack_data
|
|
Packit |
46375d |
|
|
Packit |
46375d |
cd "$ORIGDIR"
|
|
Packit |
46375d |
rm -fr "$TMPDIR"
|
|
Packit |
46375d |
echo "♻"
|