Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/Tools/scripts/redundant-opt-files.sh
16462 views
1
#!/bin/sh
2
# redundant-opt-files.sh
3
# Written by John Marino ([email protected])
4
#
5
# This script checks every option file against the default options of
6
# its port. If they are identical, it writes the full path of the ports
7
# option directory (typically in /var/db/ports) to stdout.
8
# It is typically used by Synth users to identify options files that can
9
# deleted in order to prevent future configuration check failures.
10
11
portsdir=${PORTSDIR:-/usr/ports}
12
if [ ! -d "${portsdir}" ]; then
13
echo "The ${portsdir} ports directory does not exist"
14
echo "There is nothing more to do."
15
exit
16
fi
17
18
db_dir=$(/usr/bin/make -C ${portsdir}/devel/gmake -V PORT_DBDIR 2>/dev/null)
19
20
if [ ! -d "${db_dir}" ]; then
21
echo "The ${db_dir} ports option directory does not exist"
22
echo "There is nothing more to do."
23
exit
24
fi
25
26
catport() {
27
local category
28
local port
29
local workstr=${1#${db_dir}/}
30
local words=$(echo ${workstr} | /usr/bin/tr "_" " ");
31
for word in ${words}; do
32
category=${word}
33
break;
34
done
35
port=${workstr#${category}_}
36
echo ${portsdir}/$category/$port
37
}
38
39
identical_options() {
40
local origin=$(catport $1)
41
if [ ! -d ${origin} ]; then
42
# origin no longer exists, list it anyway without testing further
43
echo $1
44
return
45
fi
46
local selected_pristine=$(/usr/bin/make -C ${origin} \
47
-V SELECTED_OPTIONS PORT_DBDIR=/dev/null)
48
local selected_now=$(/usr/bin/make -C ${origin} -V SELECTED_OPTIONS)
49
local deselected_pristine=$(/usr/bin/make -C ${origin} \
50
-V DESELECTED_OPTIONS PORT_DBDIR=/dev/null)
51
local deselected_now=$(/usr/bin/make -C ${origin} -V DESELECTED_OPTIONS)
52
if [ "${selected_pristine}" = "${selected_now}" -a \
53
"${deselected_pristine}" = "${deselected_now}" ]; then
54
echo $1
55
fi;
56
}
57
58
optdirs=$(/usr/bin/find -s "${db_dir}" -type d -depth 1)
59
60
for dossier in ${optdirs}; do
61
identical_options ${dossier}
62
done
63
64