Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-kde
Path: blob/main/Mk/Scripts/checksum.sh
16461 views
1
#!/bin/sh
2
#
3
# MAINTAINER: [email protected]
4
5
set -e
6
set -o pipefail
7
8
. "${dp_SCRIPTSDIR}/functions.sh"
9
10
validate_env dp_CHECKSUM_ALGORITHMS dp_CURDIR dp_DISTDIR dp_DISTINFO_FILE \
11
dp_DIST_SUBDIR dp_ECHO_MSG dp_FETCH_REGET dp_MAKE dp_MAKEFLAGS \
12
dp_DISABLE_SIZE dp_NO_CHECKSUM
13
14
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_CHECKSUM}" ] && set -x
15
16
set -u
17
18
check_checksum_algorithms
19
20
if [ -f "${dp_DISTINFO_FILE}" ]; then
21
cd "${dp_DISTDIR}"
22
OK=
23
refetchlist=
24
for file in "${@}"; do
25
ignored="true"
26
for alg in ${dp_CHECKSUM_ALGORITHMS}; do
27
ignore="false"
28
eval "alg_executable=\$dp_${alg}"
29
30
if [ "$alg_executable" != "NO" ]; then
31
MKSUM=$($alg_executable < "${file}")
32
CKSUM=$(distinfo_data "${alg}" "${file}")
33
else
34
ignore="true"
35
fi
36
37
if [ $ignore = "false" -a -z "$CKSUM" ]; then
38
${dp_ECHO_MSG} "=> No $alg checksum recorded for $file."
39
ignore="true"
40
fi
41
42
if [ $ignore != "false" ]; then
43
continue
44
fi
45
46
match="false"
47
for chksum in $CKSUM; do
48
if [ "$chksum" = "$MKSUM" ]; then
49
match="true"
50
break
51
fi
52
done
53
if [ $match = "true" ]; then
54
${dp_ECHO_MSG} "=> $alg Checksum OK for $file."
55
ignored="false"
56
else
57
${dp_ECHO_MSG} "=> $alg Checksum mismatch for $file."
58
refetchlist="$refetchlist $file "
59
OK="${OK:-retry}"
60
[ "${OK}" = "retry" -a "${dp_FETCH_REGET}" -gt 0 ] && rm -f "${file}"
61
ignored="false"
62
fi
63
done
64
65
if [ $ignored = "true" ]; then
66
${dp_ECHO_MSG} "=> No suitable checksum found for $file."
67
OK=false
68
fi
69
done
70
71
if [ "${OK:=true}" = "retry" ] && [ "${dp_FETCH_REGET}" -gt 0 ]; then
72
${dp_ECHO_MSG} "===> Refetch for ${dp_FETCH_REGET} more times files: $refetchlist"
73
if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FORCE_FETCH_LIST="$refetchlist" FETCH_REGET="$((dp_FETCH_REGET - 1))" fetch; then
74
if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FETCH_REGET="$((dp_FETCH_REGET - 1))" checksum ; then
75
OK="true"
76
fi
77
fi
78
fi
79
80
if [ "$OK" != "true" -a "${dp_FETCH_REGET}" -eq 0 ]; then
81
${dp_ECHO_MSG} "===> Giving up on fetching files: $refetchlist"
82
${dp_ECHO_MSG} "Make sure the Makefile and distinfo file (${dp_DISTINFO_FILE})"
83
${dp_ECHO_MSG} "are up to date. If you are absolutely sure you want to override this"
84
${dp_ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."
85
exit 1
86
fi
87
if [ "$OK" != "true" ]; then
88
exit 1
89
fi
90
elif [ -n "${*}" ]; then
91
${dp_ECHO_MSG} "=> No checksum file (${dp_DISTINFO_FILE})."
92
exit 1
93
fi
94
95