View | Details | Raw Unified | Return to bug 208916 | Differences between
and this patch

Collapse All | Expand All

(-)Mk/Scripts/check-vulnerable.sh (+35 lines)
Added Link Here
1
#!/bin/sh
2
# $FreeBSD$
3
#
4
# MAINTAINER: portmgr@FreeBSD.org
5
6
set -e
7
8
. "${dp_SCRIPTSDIR}/functions.sh"
9
10
validate_env dp_ECHO_MSG dp_PKG_BIN dp_PORTNAME
11
12
set -u
13
14
# If the package is pkg, disable these checks, it fails while
15
# upgrading when pkg is not there.
16
# FIXME: check is this is still true
17
if [ "${dp_PORTNAME}" = "pkg" ]; then
18
	exit 0
19
fi
20
21
if [ -x "${dp_PKG_BIN}" ]; then
22
	vlist=$(${dp_PKG_BIN} audit "${dp_PKGNAME}" || :)
23
	if [ "${vlist}" = "0 problem(s) in the installed packages found." ]; then
24
		vlist=""
25
	fi
26
fi
27
28
if [ -n "$vlist" ]; then
29
	${dp_ECHO_MSG} "===>  ${dp_PKGNAME} has known vulnerabilities:"
30
	${dp_ECHO_MSG} "$vlist"
31
	${dp_ECHO_MSG} "=> Please update your ports tree and try again."
32
	${dp_ECHO_MSG} "=> Note: Vulnerable ports are marked as such even if there is no update available."
33
	${dp_ECHO_MSG} "=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'"
34
	exit 1
35
fi
(-)Mk/Scripts/checksum.sh (+89 lines)
Added Link Here
1
#!/bin/sh
2
# $FreeBSD$
3
#
4
# MAINTAINER: portmgr@FreeBSD.org
5
6
set -e
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
set -u
15
16
check_checksum_algorithms
17
18
if [ -f "${dp_DISTINFO_FILE}" ]; then
19
	cd "${dp_DISTDIR}"
20
	OK=
21
	refetchlist=
22
	for file in "${@}"; do
23
		ignored="true"
24
		for alg in ${dp_CHECKSUM_ALGORITHMS}; do
25
			ignore="false"
26
			eval "alg_executable=\$dp_${alg}"
27
28
			if [ "$alg_executable" != "NO" ]; then
29
				MKSUM=$($alg_executable < "${file}")
30
				CKSUM=$(distinfo_data "${alg}" "${file}")
31
			else
32
				ignore="true"
33
			fi
34
35
			if [ $ignore = "false" -a -z "$CKSUM" ]; then
36
				${dp_ECHO_MSG} "=> No $alg checksum recorded for $file."
37
				ignore="true"
38
			fi
39
40
			if [ $ignore = "false" ]; then
41
				match="false"
42
				for chksum in $CKSUM; do
43
					if [ "$chksum" = "$MKSUM" ]; then
44
						match="true"
45
						break
46
					fi
47
				done
48
				if [ $match = "true" ]; then
49
					${dp_ECHO_MSG} "=> $alg Checksum OK for $file."
50
					ignored="false"
51
				else
52
					${dp_ECHO_MSG} "=> $alg Checksum mismatch for $file."
53
					refetchlist="$refetchlist $file "
54
					OK="${OK:-retry}"
55
					[ "${OK}" = "retry" -a "${dp_FETCH_REGET}" -gt 0 ] && rm -f "${file}"
56
					ignored="false"
57
				fi
58
			fi
59
		done
60
61
		if [ $ignored = "true" ]; then
62
			${dp_ECHO_MSG} "=> No suitable checksum found for $file."
63
			OK=false
64
		fi
65
	done
66
67
	if [ "${OK:=true}" = "retry" ] && [ "${dp_FETCH_REGET}" -gt 0 ]; then
68
		${dp_ECHO_MSG} "===>  Refetch for ${dp_FETCH_REGET} more times files: $refetchlist"
69
		if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FORCE_FETCH_LIST="$refetchlist" FETCH_REGET="$((dp_FETCH_REGET - 1))" fetch; then
70
			if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FETCH_REGET="$((dp_FETCH_REGET - 1))" checksum ; then
71
			OK="true"
72
			fi
73
		fi
74
	fi
75
76
	if [ "$OK" != "true" -a "${dp_FETCH_REGET}" -eq 0 ]; then
77
		${dp_ECHO_MSG} "===>  Giving up on fetching files: $refetchlist"
78
		${dp_ECHO_MSG} "Make sure the Makefile and distinfo file (${dp_DISTINFO_FILE})"
79
		${dp_ECHO_MSG} "are up to date.  If you are absolutely sure you want to override this"
80
		${dp_ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."
81
		exit 1
82
	fi
83
	if [ "$OK" != "true" ]; then
84
		exit 1
85
	fi
86
elif [ -n "${@}" ]; then
87
	${dp_ECHO_MSG} "=> No checksum file (${DISTINFO_FILE})."
88
	exit 1
89
fi
(-)Mk/Scripts/do-fetch.sh (+143 lines)
Added Link Here
1
#!/bin/sh
2
# $FreeBSD$
3
#
4
# MAINTAINER: portmgr@FreeBSD.org
5
6
set -e
7
8
. "${dp_SCRIPTSDIR}/functions.sh"
9
10
validate_env dp_DISABLE_SIZE dp_DISTDIR dp_DISTINFO_FILE dp_DIST_SUBDIR \
11
	dp_ECHO_MSG dp_FETCH_AFTER_ARGS dp_FETCH_BEFORE_ARGS dp_FETCH_CMD \
12
	dp_FETCH_ENV dp_FORCE_FETCH_ALL dp_FORCE_FETCH_LIST \
13
	dp_MASTER_SITE_BACKUP dp_MASTER_SITE_OVERRIDE dp_MASTER_SORT_AWK \
14
	dp_NO_CHECKSUM dp_RANDOMIZE_SITES dp_SCRIPTSDIR \
15
	dp_SORTED_MASTER_SITES_DEFAULT_CMD dp_TARGET
16
17
set -u
18
19
mkdir -p "${dp_DISTDIR}"
20
cd "${dp_DISTDIR}"
21
22
for _file in "${@}"; do
23
	file=${_file%%:*}
24
25
	# If this files has groups
26
	if [ "$_file" = "$file" ]; then
27
		select=''
28
	else
29
		select=$(echo "${_file##*:}" | sed -e 's/,/ /g')
30
	fi
31
32
	filebasename=${file##*/}
33
	if [ -n "${dp_FORCE_FETCH_ALL}" ]; then
34
		force_fetch=true
35
	else
36
		force_fetch=false
37
		for afile in ${dp_FORCE_FETCH_LIST}; do
38
			afile=${afile##*/}
39
			if [ "x$afile" = "x$filebasename" ]; then
40
				force_fetch=true
41
			fi
42
		done
43
	fi
44
	if [ ! -f "$file" -a ! -f "$filebasename" -o "$force_fetch" = "true" ]; then
45
		full_file="${dp_DIST_SUBDIR:+${dp_DIST_SUBDIR}/}${file}"
46
		if [ -L "$file" -o -L "$filebasename" ]; then
47
			${dp_ECHO_MSG} "=> ${dp_DISTDIR}/$file is a broken symlink."
48
			${dp_ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"
49
			${dp_ECHO_MSG} "=> Please correct this problem and try again."
50
			exit 1
51
		fi
52
		if [ -f "${dp_DISTINFO_FILE}" -a -z "${dp_NO_CHECKSUM}" ]; then
53
			_sha256sum=$(distinfo_data SHA256 "${full_file}")
54
			if [ -z "$_sha256sum" ]; then
55
				${dp_ECHO_MSG} "=> ${dp_DIST_SUBDIR:+$dp_DIST_SUBDIR/}$file is not in ${dp_DISTINFO_FILE}."
56
				${dp_ECHO_MSG} "=> Either ${dp_DISTINFO_FILE} is out of date, or"
57
				${dp_ECHO_MSG} "=> ${dp_DIST_SUBDIR:+$dp_DIST_SUBDIR/}$file is spelled incorrectly."
58
				exit 1
59
			fi
60
		fi
61
		case ${dp_TARGET} in
62
		do-fetch|makesum)
63
			${dp_ECHO_MSG} "=> $file doesn't seem to exist in ${dp_DISTDIR}."
64
			;;
65
		esac
66
		if [ ! -w "${dp_DISTDIR}" ]; then
67
			${dp_ECHO_MSG} "=> ${dp_DISTDIR} is not writable by you; cannot fetch."
68
			exit 1
69
		fi
70
		if [ -n "$select" ] ; then
71
			__MASTER_SITES_TMP=
72
			for group in $select; do
73
				eval ___MASTER_SITES_TMP="\${_MASTER_SITES_${group}}"
74
				if [ -n "${___MASTER_SITES_TMP}" ] ; then
75
					__MASTER_SITES_TMP="${__MASTER_SITES_TMP} ${___MASTER_SITES_TMP}"
76
				fi
77
			done
78
			___MASTER_SITES_TMP=
79
			SORTED_MASTER_SITES_CMD_TMP="echo ${dp_MASTER_SITE_OVERRIDE} $(echo -n "${__MASTER_SITES_TMP}" | awk "${dp_MASTER_SORT_AWK}") ${dp_MASTER_SITE_BACKUP}"
80
		else
81
			SORTED_MASTER_SITES_CMD_TMP="${dp_SORTED_MASTER_SITES_DEFAULT_CMD}"
82
		fi
83
		case ${dp_TARGET} in
84
			fetch-list)
85
				echo -n "mkdir -p ${dp_DISTDIR} && "
86
				echo -n "cd ${dp_DISTDIR} && { "
87
				;;
88
		esac
89
		sites_remaining=0
90
		sites="$(eval "${SORTED_MASTER_SITES_CMD_TMP} ${dp_RANDOMIZE_SITES}")"
91
		for site in ${sites}; do
92
			sites_remaining=$((sites_remaining + 1))
93
		done
94
		for site in ${sites}; do
95
			sites_remaining=$((sites_remaining - 1))
96
			CKSIZE=$(distinfo_data SIZE "${full_file}")
97
			case ${file} in
98
				*/*)
99
					mkdir -p "${file%/*}"
100
					args="-o ${file} ${site}${file}"
101
					;;
102
				*)
103
					args=${site}${file}
104
					;;
105
			esac
106
			_fetch_cmd=$(eval "echo ${dp_FETCH_ENV} ${dp_FETCH_CMD} ${dp_FETCH_BEFORE_ARGS} \\\"${args}\\\" ${dp_FETCH_AFTER_ARGS}")
107
			case ${dp_TARGET} in
108
			do-fetch|makesum)
109
				${dp_ECHO_MSG} "=> Attempting to fetch ${site}${file}"
110
				if eval "env ${_fetch_cmd}"; then
111
					actual_size=$(stat -f %z "${file}")
112
					if [ -n "${dp_DISABLE_SIZE}" ] || [ -z "${CKSIZE}" ] || [ "${actual_size}" -eq "${CKSIZE}" ]; then
113
						continue 2
114
					else
115
						${dp_ECHO_MSG} "=> Fetched file size mismatch (expected ${CKSIZE}, actual ${actual_size})"
116
						if [ ${sites_remaining} -gt 0 ]; then
117
							${dp_ECHO_MSG} "=> Trying next site"
118
							rm -f "${file}"
119
						fi
120
					fi
121
				fi
122
				;;
123
			fetch-list)
124
				echo -n "env ${_fetch_cmd} || "
125
				;;
126
			fetch-url-list-int)
127
				echo "${args}"
128
				;;
129
			esac
130
		done
131
		case ${dp_TARGET} in
132
		do-fetch|makesum)
133
			${dp_ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this"
134
			${dp_ECHO_MSG} "=> port manually into ${dp_DISTDIR} and try again."
135
			exit 1
136
			;;
137
		fetch-list)
138
			echo "echo ${file} not fetched; }" ; \
139
			;;
140
		esac
141
	fi
142
done
143
(-)Mk/Scripts/functions.sh (+28 lines)
Lines 216-218 export_ports_env() { Link Here
216
		fi
216
		fi
217
	done
217
	done
218
}
218
}
219
220
distinfo_data() {
221
	local alg file
222
223
	alg=$1
224
	file=$2
225
226
	if [ \( -n "${dp_DISABLE_SIZE}" -a -n "${dp_NO_CHECKSUM}" \) -o ! -f "${dp_DISTINFO_FILE}" ]; then
227
		exit
228
	fi
229
	awk -v alg="$alg" -v file="${file}" \
230
		'$1 == alg && $2 == "(" file ")" {print $4}' "${dp_DISTINFO_FILE}"
231
}
232
233
check_checksum_algorithms() {
234
	for alg in ${dp_CHECKSUM_ALGORITHMS}; do
235
		eval "alg_executable=\$dp_$alg"
236
		if [ -z "$alg_executable" ]; then
237
			${dp_ECHO_MSG} "Checksum algorithm $alg: Couldn't find the executable."
238
			${dp_ECHO_MSG} "Set $alg=/path/to/$alg in /etc/make.conf and try again."
239
			exit 1
240
		elif [ ! -x "$alg_executable" ]; then
241
			${dp_ECHO_MSG} "Checksum algorithm $alg: $alg_executable is not executable."
242
			${dp_ECHO_MSG} "Fix modes, or change $alg=$alg_executable in /etc/make.conf and try again."
243
			exit 1
244
		fi
245
	done
246
}
(-)Mk/Scripts/makesum.sh (+32 lines)
Added Link Here
1
#!/bin/sh
2
# $FreeBSD$
3
#
4
# MAINTAINER: portmgr@FreeBSD.org
5
6
set -e
7
8
. "${dp_SCRIPTSDIR}/functions.sh"
9
10
validate_env dp_CHECKSUM_ALGORITHMS dp_CKSUMFILES dp_DISTDIR dp_DISTINFO_FILE \
11
	dp_ECHO_MSG
12
13
set -u
14
15
check_checksum_algorithms
16
17
if [ -f "${dp_DISTINFO_FILE}" ]; then
18
	> "${dp_DISTINFO_FILE}"
19
fi
20
21
cd "${dp_DISTDIR}"
22
23
for file in ${dp_CKSUMFILES}; do
24
	for alg in ${dp_CHECKSUM_ALGORITHMS}; do
25
		eval "alg_executable=\$dp_$alg"
26
27
		if [ "$alg_executable" != "NO" ]; then
28
			$alg_executable "$file" >> "${dp_DISTINFO_FILE}"
29
		fi
30
	done
31
	echo "SIZE ($file) = $(stat -f %z "$file")" >> "${dp_DISTINFO_FILE}"
32
done
(-)Mk/bsd.port.mk (-462 / +124 lines)
Lines 3037-3230 check-deprecated: Link Here
3037
AUDITFILE?=		${PKG_DBDIR}/vuln.xml
3037
AUDITFILE?=		${PKG_DBDIR}/vuln.xml
3038
3038
3039
check-vulnerable:
3039
check-vulnerable:
3040
.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING)
3040
.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING) \
3041
	@if [ -f "${AUDITFILE}" ]; then \
3041
		&& exists(${AUDITFILE})
3042
		if [ -x "${PKG_BIN}" ]; then \
3042
	@${SETENV} \
3043
			vlist=`${PKG_BIN} audit "${PKGNAME}" || :`; \
3043
			dp_ECHO_MSG="${ECHO_MSG}" \
3044
			if [ "$${vlist}" = "0 problem(s) in the installed packages found." ]; then \
3044
			dp_PKG_BIN="${PKG_BIN}" \
3045
				vlist=""; \
3045
			dp_PORTNAME="${PORTNAME}" \
3046
			fi; \
3046
			dp_SCRIPTSDIR="${SCRIPTSDIR}" \
3047
		elif [ "${PORTNAME}" = "pkg" ]; then \
3047
			${SH} ${SCRIPTSDIR}/check-vulnerable.sh
3048
			vlist=""; \
3048
.endif
3049
		fi; \
3049
3050
		if [ -n "$$vlist" ]; then \
3050
_DO_FETCH_ENV= \
3051
			${ECHO_MSG} "===>  ${PKGNAME} has known vulnerabilities:"; \
3051
			dp_DISABLE_SIZE='${DISABLE_SIZE}' \
3052
			${ECHO_MSG} "$$vlist"; \
3052
			dp_DISTDIR='${_DISTDIR}' \
3053
			${ECHO_MSG} "=> Please update your ports tree and try again."; \
3053
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
3054
			${ECHO_MSG} "=> Note: Vulnerable ports are marked as such even if there is no update available."; \
3054
			dp_DIST_SUBDIR='${DIST_SUBDIR}' \
3055
			${ECHO_MSG} "=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'"; \
3055
			dp_ECHO_MSG='${ECHO_MSG}' \
3056
			exit 1; \
3056
			dp_FETCH_AFTER_ARGS='${FETCH_AFTER_ARGS}' \
3057
		fi; \
3057
			dp_FETCH_BEFORE_ARGS='${FETCH_BEFORE_ARGS}' \
3058
	fi
3058
			dp_FETCH_CMD='${FETCH_CMD}' \
3059
.endif
3059
			dp_FETCH_ENV='${FETCH_ENV}' \
3060
3060
			dp_FORCE_FETCH_ALL='${FORCE_FETCH_ALL}' \
3061
# set alg to any of SIZE, SHA256 (or any other checksum algorithm):
3061
			dp_FORCE_FETCH_LIST='${FORCE_FETCH_LIST}' \
3062
DISTINFO_DATA?=	if [ \( -n "${DISABLE_SIZE}" -a -n "${NO_CHECKSUM}" \) -o ! -f "${DISTINFO_FILE}" ]; then exit; fi; \
3062
			dp_MASTER_SITE_BACKUP='${_MASTER_SITE_BACKUP}' \
3063
	DIR=${DIST_SUBDIR}; ${AWK} -v alg=$$alg -v file=$${DIR:+$$DIR/}$${file}	\
3063
			dp_MASTER_SITE_OVERRIDE='${_MASTER_SITE_OVERRIDE}' \
3064
		'$$1 == alg && $$2 == "(" file ")" {print $$4}' ${DISTINFO_FILE}
3064
			dp_MASTER_SORT_AWK='${MASTER_SORT_AWK}' \
3065
			dp_NO_CHECKSUM='${NO_CHECKSUM}' \
3066
			dp_RANDOMIZE_SITES='${_RANDOMIZE_SITES}' \
3067
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
3068
			dp_SORTED_MASTER_SITES_DEFAULT_CMD='${SORTED_MASTER_SITES_DEFAULT_CMD}' \
3069
			dp_TARGET='${.TARGET}'
3065
3070
3066
# Fetch
3071
# Fetch
3067
3072
3068
.if !target(do-fetch)
3073
.if !target(do-fetch)
3069
do-fetch:
3074
do-fetch:
3070
	@${MKDIR} ${_DISTDIR}
3075
	@${SETENV} \
3071
	@cd ${_DISTDIR};\
3076
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3072
	${_MASTER_SITES_ENV} ; \
3077
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3073
	for _file in ${DISTFILES}; do \
3074
		file=$${_file%%:*}; \
3075
		if [ $$_file = $$file ]; then	\
3076
			select='';	\
3077
		else	\
3078
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3079
		fi;	\
3080
		force_fetch=false; \
3081
		filebasename=$${file##*/}; \
3082
		for afile in ${FORCE_FETCH}; do \
3083
			afile=$${afile##*/}; \
3084
			if [ "x$$afile" = "x$$filebasename" ]; then \
3085
				force_fetch=true; \
3086
			fi; \
3087
		done; \
3088
		if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
3089
			if [ -L $$file -o -L $$filebasename ]; then \
3090
				${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
3091
				${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
3092
				${ECHO_MSG} "=> Please correct this problem and try again."; \
3093
				exit 1; \
3094
			fi; \
3095
			if [ -f ${DISTINFO_FILE} -a "x${NO_CHECKSUM}" = "x" ]; then \
3096
				_sha256sum=`alg=SHA256; ${DISTINFO_DATA}`; \
3097
				if [ -z "$$_sha256sum" ]; then \
3098
					${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is not in ${DISTINFO_FILE}."; \
3099
					${ECHO_MSG} "=> Either ${DISTINFO_FILE} is out of date, or"; \
3100
					${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is spelled incorrectly."; \
3101
					exit 1; \
3102
				fi; \
3103
			fi; \
3104
			${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
3105
			if [ ! -w ${_DISTDIR} ]; then \
3106
			   ${ECHO_MSG} "=> ${_DISTDIR} is not writable by you; cannot fetch."; \
3107
			   exit 1; \
3108
			fi; \
3109
			if [ ! -z "$$select" ] ; then \
3110
				__MASTER_SITES_TMP= ; \
3111
				for group in $$select; do \
3112
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
3113
						eval ___MASTER_SITES_TMP="\$${_MASTER_SITES_$${group}}" ; \
3114
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
3115
					fi; \
3116
				done; \
3117
				___MASTER_SITES_TMP= ; \
3118
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3119
			else \
3120
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
3121
			fi; \
3122
			sites_remaining=0; \
3123
			sites="`eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`"; \
3124
			for site in $${sites}; do \
3125
				sites_remaining=$$(($${sites_remaining} + 1)); \
3126
			done; \
3127
			for site in $${sites}; do \
3128
				sites_remaining=$$(($${sites_remaining} - 1)); \
3129
			    ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
3130
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
3131
				case $${file} in \
3132
				*/*)	${MKDIR} $${file%/*}; \
3133
						args="-o $${file} $${site}$${file}";; \
3134
				*)		args=$${site}$${file};; \
3135
				esac; \
3136
				if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
3137
					actual_size=`stat -f %z "$${file}"`; \
3138
					if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
3139
						continue 2; \
3140
					else \
3141
						${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
3142
						if [ $${sites_remaining} -gt 0 ]; then \
3143
							${ECHO_MSG} "=> Trying next site"; \
3144
							${RM} -f $${file}; \
3145
						fi; \
3146
					fi; \
3147
				fi; \
3148
			done; \
3149
			${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
3150
			${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
3151
			exit 1; \
3152
	    fi; \
3153
	 done
3154
.if defined(PATCHFILES)
3078
.if defined(PATCHFILES)
3155
	@cd ${_DISTDIR};\
3079
	@${SETENV} \
3156
	${_PATCH_SITES_ENV} ; \
3080
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3157
	for _file in ${PATCHFILES}; do \
3081
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/.*/'&'/}
3158
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
3159
		if [ $$_file = $$file ]; then	\
3160
			select='';	\
3161
		else	\
3162
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3163
		fi;	\
3164
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
3165
		force_fetch=false; \
3166
		filebasename=$${file##*/}; \
3167
		for afile in ${FORCE_FETCH}; do \
3168
			afile=$${afile##*/}; \
3169
			if [ "x$$afile" = "x$$filebasename" ]; then \
3170
				force_fetch=true; \
3171
			fi; \
3172
		done; \
3173
		if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
3174
			if [ -L $$file -o -L $${file##*/} ]; then \
3175
				${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
3176
				${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
3177
				${ECHO_MSG} "=> Please correct this problem and try again."; \
3178
				exit 1; \
3179
			fi; \
3180
			${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
3181
			if [ ! -z "$$select" ] ; then \
3182
				__PATCH_SITES_TMP= ; \
3183
				for group in $$select; do \
3184
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
3185
						eval ___PATCH_SITES_TMP="\$${_PATCH_SITES_$${group}}" ; \
3186
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
3187
					fi; \
3188
				done; \
3189
				___PATCH_SITES_TMP= ; \
3190
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3191
			else \
3192
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
3193
			fi; \
3194
			sites_remaining=0; \
3195
			sites="`eval $$SORTED_PATCH_SITES_CMD_TMP`"; \
3196
			for site in $${sites}; do \
3197
				sites_remaining=$$(($${sites_remaining} + 1)); \
3198
			done; \
3199
			for site in $${sites}; do \
3200
				sites_remaining=$$(($${sites_remaining} - 1)); \
3201
			    ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
3202
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
3203
				case $${file} in \
3204
				*/*)	${MKDIR} $${file%/*}; \
3205
						args="-o $${file} $${site}$${file}";; \
3206
				*)		args=$${site}$${file};; \
3207
				esac; \
3208
				if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
3209
					actual_size=`stat -f %z "$${file}"`; \
3210
					if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
3211
						continue 2; \
3212
					else \
3213
						${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
3214
						if [ $${sites_remaining} -gt 1 ]; then \
3215
							${ECHO_MSG} "=> Trying next site"; \
3216
							${RM} -f $${file}; \
3217
						fi; \
3218
					fi; \
3219
				fi; \
3220
			done; \
3221
			${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
3222
			${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
3223
			exit 1; \
3224
		fi; \
3225
	 done
3226
.endif
3082
.endif
3227
.endif
3083
.endif
3084
#
3085
# Prints out a list of files to fetch (useful to do a batch fetch)
3086
3087
.if !target(fetch-list)
3088
fetch-list:
3089
	@${SETENV} \
3090
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3091
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3092
.if defined(PATCHFILES)
3093
	@${SETENV} \
3094
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3095
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/.*/'&'/}
3096
.endif
3097
.endif
3098
3099
# Used by fetch-urlall-list and fetch-url-list
3100
3101
.if !target(fetch-url-list-int)
3102
fetch-url-list-int:
3103
	@${SETENV} \
3104
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
3105
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
3106
.if defined(PATCHFILES)
3107
	@${SETENV} \
3108
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
3109
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/.*/'&'/}
3110
.endif
3111
.endif
3112
3113
# Prints out all the URL for all the DISTFILES and PATCHFILES.
3114
3115
.if !target(fetch-urlall-list)
3116
fetch-urlall-list:
3117
	@cd ${.CURDIR} && ${SETENV} FORCE_FETCH_ALL=yes ${MAKE} fetch-url-list-int
3118
.endif
3119
3120
# Prints the URL for all the DISTFILES and PATCHFILES that are not here
3121
3122
.if !target(fetch-url-list)
3123
fetch-url-list: fetch-url-list-int
3124
.endif
3125
3228
3126
3229
# Extract
3127
# Extract
3230
3128
Lines 3943-4118 delete-distfiles-list: Link Here
3943
.endif
3841
.endif
3944
.endif
3842
.endif
3945
3843
3946
# Prints out a list of files to fetch (useful to do a batch fetch)
3947
3948
.if !target(fetch-list)
3949
fetch-list:
3950
	@${MKDIR} ${_DISTDIR}
3951
	@(cd ${_DISTDIR}; \
3952
	 ${_MASTER_SITES_ENV} ; \
3953
	 for _file in ${DISTFILES}; do \
3954
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
3955
		if [ $$_file = $$file ]; then	\
3956
			select='';	\
3957
		else	\
3958
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
3959
		fi;	\
3960
		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
3961
			if [ ! -z "$$select" ] ; then \
3962
				__MASTER_SITES_TMP= ; \
3963
				for group in $$select; do \
3964
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
3965
						eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
3966
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
3967
					fi; \
3968
				done; \
3969
				___MASTER_SITES_TMP= ; \
3970
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
3971
			else \
3972
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
3973
			fi; \
3974
			${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
3975
			${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
3976
			for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
3977
				if [ ! -z "`${ECHO_CMD} ${NOFETCHFILES} | ${GREP} -w $${file}`" ]; then \
3978
					if [ -z "`${ECHO_CMD} ${MASTER_SITE_OVERRIDE} | ${GREP} -w $${site}`" ]; then \
3979
						continue; \
3980
					fi; \
3981
				fi; \
3982
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
3983
				case $${file} in \
3984
				*/*)	args="-o $${file} $${site}$${file}";; \
3985
				*)		args=$${site}$${file};; \
3986
				esac; \
3987
				${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
3988
			done; \
3989
			${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
3990
		fi; \
3991
	done)
3992
.if defined(PATCHFILES)
3993
	@(cd ${_DISTDIR}; \
3994
	 ${_PATCH_SITES_ENV} ; \
3995
	 for _file in ${PATCHFILES}; do \
3996
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
3997
		if [ $$_file = $$file ]; then	\
3998
			select='';	\
3999
		else	\
4000
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4001
		fi;	\
4002
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
4003
		if [ ! -f $$file -a ! -f $${file##*/} ]; then \
4004
			if [ ! -z "$$select" ] ; then \
4005
				__PATCH_SITES_TMP= ; \
4006
				for group in $$select; do \
4007
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
4008
						eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
4009
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
4010
				fi; \
4011
				done; \
4012
				___PATCH_SITES_TMP= ; \
4013
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4014
			else \
4015
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
4016
			fi; \
4017
			${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
4018
			${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
4019
			for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4020
				CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
4021
				case $${file} in \
4022
				*/*)	args="-o $${file} $${site}$${file}";; \
4023
				*)		args=$${site}$${file};; \
4024
				esac; \
4025
				${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
4026
			done; \
4027
			${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
4028
		fi; \
4029
	 done)
4030
.endif
4031
.endif
4032
4033
.if !target(fetch-url-list-int)
4034
fetch-url-list-int:
4035
	@${MKDIR} ${_DISTDIR}
4036
	@(cd ${_DISTDIR}; \
4037
	${_MASTER_SITES_ENV}; \
4038
	for _file in ${DISTFILES}; do \
4039
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
4040
			fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
4041
		if [ $$_file = $$file ]; then	\
4042
			select='';	\
4043
		else	\
4044
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4045
		fi;	\
4046
		if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
4047
			if [ ! -z "$$select" ] ; then \
4048
				__MASTER_SITES_TMP= ; \
4049
				for group in $$select; do \
4050
					if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
4051
						eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
4052
						__MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
4053
					fi \
4054
				done; \
4055
				___MASTER_SITES_TMP= ; \
4056
				SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4057
			else \
4058
				SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
4059
			fi ; \
4060
			for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4061
				case $${file} in \
4062
				*/*)	args="-o $${file} $${site}$${file}";; \
4063
				*)		args=$${site}$${file};; \
4064
				esac; \
4065
				${ECHO_CMD} $${args} ; \
4066
			done; \
4067
		fi \
4068
	done)
4069
.if defined(PATCHFILES)
4070
	@(cd ${_DISTDIR}; \
4071
	${_PATCH_SITES_ENV} ; \
4072
	for _file in ${PATCHFILES}; do \
4073
		file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
4074
		if [ $$_file = $$file ]; then	\
4075
			select='';	\
4076
		else	\
4077
			select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ;	\
4078
		fi;	\
4079
		file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
4080
		fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
4081
		if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
4082
			if [ ! -z "$$select" ] ; then \
4083
				__PATCH_SITES_TMP= ; \
4084
				for group in $$select; do \
4085
					if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
4086
						eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
4087
						__PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
4088
					fi \
4089
				done; \
4090
				___PATCH_SITES_TMP= ; \
4091
				SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
4092
			else \
4093
				SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
4094
			fi ; \
4095
			for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
4096
				case $${file} in \
4097
				*/*)	args="-o $${file} $${site}$${file}";; \
4098
				*)		args=$${site}$${file};; \
4099
				esac; \
4100
				${ECHO_CMD} $${args} ; \
4101
			done; \
4102
		fi \
4103
	 done)
4104
.endif
4105
.endif
4106
4107
.if !target(fetch-urlall-list)
4108
fetch-urlall-list:
4109
	@cd ${.CURDIR} && LISTALL=yes ${MAKE} fetch-url-list-int
4110
.endif
4111
4112
.if !target(fetch-url-list)
4113
fetch-url-list: fetch-url-list-int
4114
.endif
4115
4116
# Generates patches.
3844
# Generates patches.
4117
3845
4118
update-patches:
3846
update-patches:
Lines 4128-4250 update-patches: Link Here
4128
3856
4129
# Checksumming utilities
3857
# Checksumming utilities
4130
3858
4131
check-checksum-algorithms:
3859
# List all algorithms here, all the variables name must begin with dp_
4132
	@ \
3860
_CHECKSUM_INIT_ENV= \
4133
	${checksum_init} \
3861
	dp_SHA256=${SHA256}
4134
	\
4135
	for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
4136
		eval alg_executable=\$$$$alg; \
4137
		if [ -z "$$alg_executable" ]; then \
4138
			${ECHO_MSG} "Checksum algorithm $$alg: Couldn't find the executable."; \
4139
			${ECHO_MSG} "Set $$alg=/path/to/$$alg in /etc/make.conf and try again."; \
4140
			exit 1; \
4141
		fi; \
4142
	done; \
4143
4144
checksum_init=\
4145
	SHA256=${SHA256};
4146
3862
4147
.if !target(makesum)
3863
.if !target(makesum)
4148
makesum: check-checksum-algorithms
3864
# Some port change the options with OPTIONS_*_FORCE when make(makesum) to be
4149
	@cd ${.CURDIR} && ${MAKE} fetch NO_CHECKSUM=yes \
3865
# able to add all distfiles in one go.
4150
		DISABLE_SIZE=yes
3866
# For this to work, we need to call the do-fetch script directly here so that
4151
	@if [ -f ${DISTINFO_FILE} ]; then ${CAT} /dev/null > ${DISTINFO_FILE}; fi
3867
# the options consistent when fetching and when makesum'ing.
4152
	@( \
3868
# As we're fetching new distfiles, that are not in the distinfo file, disable
4153
		cd ${DISTDIR}; \
3869
# checksum and sizes checks.
4154
		\
3870
makesum:
4155
		${checksum_init} \
3871
	@${SETENV} \
4156
		\
3872
			${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
4157
		for file in ${_CKSUMFILES}; do \
3873
			dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
4158
			for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
3874
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
4159
				eval alg_executable=\$$$$alg; \
3875
.if defined(PATCHFILES)
4160
				\
3876
	@${SETENV} \
4161
				if [ $$alg_executable != "NO" ]; then \
3877
			${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
4162
					$$alg_executable $$file >> ${DISTINFO_FILE}; \
3878
			dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
4163
				fi; \
3879
			${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/.*/'&'/}
4164
			done; \
3880
.endif
4165
			${ECHO_CMD} "SIZE ($$file) = `${STAT} -f \"%z\" $$file`" >> ${DISTINFO_FILE}; \
3881
	@${SETENV} \
4166
		done \
3882
			${_CHECKSUM_INIT_ENV} \
4167
	)
3883
			dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
3884
			dp_CKSUMFILES='${_CKSUMFILES}' \
3885
			dp_DISTDIR='${DISTDIR}' \
3886
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
3887
			dp_ECHO_MSG='${ECHO_MSG}' \
3888
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
3889
			${SH} ${SCRIPTSDIR}/makesum.sh ${DISTFILES:C/.*/'&'/}
4168
.endif
3890
.endif
4169
3891
4170
.if !target(checksum)
3892
.if !target(checksum)
4171
checksum: fetch check-checksum-algorithms
3893
checksum: fetch
4172
	@set -e ; \
3894
	@${SETENV} \
4173
	${checksum_init} \
3895
			${_CHECKSUM_INIT_ENV} \
4174
	if [ -f ${DISTINFO_FILE} ]; then \
3896
			dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
4175
		cd ${DISTDIR}; OK="";\
3897
			dp_CURDIR='${.CURDIR}' \
4176
		for file in ${_CKSUMFILES}; do \
3898
			dp_DISTDIR='${DISTDIR}' \
4177
			ignored="true"; \
3899
			dp_DISTINFO_FILE='${DISTINFO_FILE}' \
4178
			_file=$${file#${DIST_SUBDIR}/*};	\
3900
			dp_DIST_SUBDIR='${DIST_SUBDIR}' \
4179
			for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
3901
			dp_ECHO_MSG='${ECHO_MSG}' \
4180
				ignore="false"; \
3902
			dp_FETCH_REGET='${FETCH_REGET}' \
4181
				eval alg_executable=\$$$$alg; \
3903
			dp_MAKE='${MAKE}' \
4182
				\
3904
			dp_MAKEFLAGS='${.MAKEFLAGS}' \
4183
				if [ $$alg_executable != "NO" ]; then \
3905
			dp_SCRIPTSDIR='${SCRIPTSDIR}' \
4184
					MKSUM=`$$alg_executable < $$file`; \
3906
			dp_DISABLE_SIZE='${DISABLE_SIZE}' \
4185
					CKSUM=`file=$$_file; ${DISTINFO_DATA}`; \
3907
			dp_NO_CHECKSUM='${NO_CHECKSUM}' \
4186
				else \
3908
			${SH} ${SCRIPTSDIR}/checksum.sh ${_CKSUMFILES:C/.*/'&'/}
4187
					ignore="true"; \
3909
4188
				fi; \
4189
				\
4190
				if [ $$ignore = "false" -a -z "$$CKSUM" ]; then \
4191
					${ECHO_MSG} "=> No $$alg checksum recorded for $$file."; \
4192
					ignore="true"; \
4193
				fi; \
4194
				\
4195
				if [ $$ignore = "false" ]; then \
4196
					match="false"; \
4197
					for chksum in $$CKSUM; do \
4198
						if [ "$$chksum" = "$$MKSUM" ]; then \
4199
							match="true"; \
4200
							break; \
4201
						fi; \
4202
					done; \
4203
					if [ $$match = "true" ]; then \
4204
						${ECHO_MSG} "=> $$alg Checksum OK for $$file."; \
4205
						ignored="false"; \
4206
					else \
4207
						${ECHO_MSG} "=> $$alg Checksum mismatch for $$file."; \
4208
						refetchlist="$$refetchlist$$file "; \
4209
						OK="$${OK:-retry}"; \
4210
						[ "$${OK}" = "retry" -a ${FETCH_REGET} -gt 0 ] && ${RM} -f $${file}; \
4211
						ignored="false"; \
4212
					fi; \
4213
				fi; \
4214
			done; \
4215
			\
4216
			if [ $$ignored = "true" ]; then \
4217
				${ECHO_MSG} "=> No suitable checksum found for $$file."; \
4218
				OK="${FALSE}"; \
4219
			fi; \
4220
			\
4221
		done; \
4222
		\
4223
		if [ "$${OK:=true}" = "retry" ] && [ ${FETCH_REGET} -gt 0 ]; then \
4224
			${ECHO_MSG} "===>  Refetch for ${FETCH_REGET} more times files: $$refetchlist"; \
4225
			if ( cd ${.CURDIR} && \
4226
			    ${MAKE} ${.MAKEFLAGS} FORCE_FETCH="$$refetchlist" FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" fetch); then \
4227
				  if ( cd ${.CURDIR} && \
4228
			        ${MAKE} ${.MAKEFLAGS} FETCH_REGET="`${EXPR} ${FETCH_REGET} - 1`" checksum ); then \
4229
				      OK="true"; \
4230
				  fi; \
4231
			fi; \
4232
		fi; \
4233
		\
4234
		if [ "$$OK" != "true" -a ${FETCH_REGET} -eq 0 ]; then \
4235
			${ECHO_MSG} "===>  Giving up on fetching files: $$refetchlist"; \
4236
			${ECHO_MSG} "Make sure the Makefile and distinfo file (${DISTINFO_FILE})"; \
4237
			${ECHO_MSG} "are up to date.  If you are absolutely sure you want to override this"; \
4238
			${ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."; \
4239
			exit 1; \
4240
		fi; \
4241
		if [ "$$OK" != "true" ]; then \
4242
			exit 1; \
4243
		fi; \
4244
	elif [ -n "${_CKSUMFILES:M*}" ]; then \
4245
		${ECHO_MSG} "=> No checksum file (${DISTINFO_FILE})."; \
4246
		exit 1; \
4247
	fi
4248
.endif
3910
.endif
4249
3911
4250
################################################################
3912
################################################################

Return to bug 208916