svn commit: r415842 - in head/Mk: . Scripts
Mathieu Arnold
mat at FreeBSD.org
Wed May 25 15:58:33 UTC 2016
Author: mat
Date: Wed May 25 15:58:31 2016
New Revision: 415842
URL: https://svnweb.freebsd.org/changeset/ports/415842
Log:
Extract the larger bsd.port.mk targets into separate scripts.
Refactor all the fetch code so that there are not 6 slightly different
versions of it but one that does it all.
The targets that have been extracted are:
- check-vulnerable
- do-fetch
- fetch-list
- fetch-url-list-int
- fetch-urlall-list
- checksum.
- makesum.
- check-checksum-algorithms
Run the fetch code directly from make makesum instead of calling make
fetch, this is because some port change the options with OPTIONS_*_FORCE
when make(makesum) to be able to add all distfiles in one go, which was
a nice, non working, idea.
PR: 208916
Submitted by: mat
Exp-run by: antoine
With hat: portmgr
Sponsored by: Absolight
Differential Revision: https://reviews.freebsd.org/D5997
Added:
head/Mk/Scripts/check-vulnerable.sh (contents, props changed)
head/Mk/Scripts/checksum.sh (contents, props changed)
head/Mk/Scripts/do-fetch.sh (contents, props changed)
head/Mk/Scripts/makesum.sh (contents, props changed)
Modified:
head/Mk/Scripts/functions.sh (contents, props changed)
head/Mk/bsd.port.mk (contents, props changed)
Added: head/Mk/Scripts/check-vulnerable.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Scripts/check-vulnerable.sh Wed May 25 15:58:31 2016 (r415842)
@@ -0,0 +1,37 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# MAINTAINER: portmgr at FreeBSD.org
+
+set -e
+
+. "${dp_SCRIPTSDIR}/functions.sh"
+
+validate_env dp_ECHO_MSG dp_PKG_BIN dp_PORTNAME
+
+[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_CHECK_VULNERABLE}" ] && set -x
+
+set -u
+
+# If the package is pkg, disable these checks, it fails while
+# upgrading when pkg is not there.
+# FIXME: check is this is still true
+if [ "${dp_PORTNAME}" = "pkg" ]; then
+ exit 0
+fi
+
+if [ -x "${dp_PKG_BIN}" ]; then
+ vlist=$(${dp_PKG_BIN} audit "${dp_PKGNAME}" || :)
+ if [ "${vlist}" = "0 problem(s) in the installed packages found." ]; then
+ vlist=""
+ fi
+fi
+
+if [ -n "$vlist" ]; then
+ ${dp_ECHO_MSG} "===> ${dp_PKGNAME} has known vulnerabilities:"
+ ${dp_ECHO_MSG} "$vlist"
+ ${dp_ECHO_MSG} "=> Please update your ports tree and try again."
+ ${dp_ECHO_MSG} "=> Note: Vulnerable ports are marked as such even if there is no update available."
+ ${dp_ECHO_MSG} "=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'"
+ exit 1
+fi
Added: head/Mk/Scripts/checksum.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Scripts/checksum.sh Wed May 25 15:58:31 2016 (r415842)
@@ -0,0 +1,91 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# MAINTAINER: portmgr at FreeBSD.org
+
+set -e
+
+. "${dp_SCRIPTSDIR}/functions.sh"
+
+validate_env dp_CHECKSUM_ALGORITHMS dp_CURDIR dp_DISTDIR dp_DISTINFO_FILE \
+ dp_DIST_SUBDIR dp_ECHO_MSG dp_FETCH_REGET dp_MAKE dp_MAKEFLAGS \
+ dp_DISABLE_SIZE dp_NO_CHECKSUM
+
+[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_CHECKSUM}" ] && set -x
+
+set -u
+
+check_checksum_algorithms
+
+if [ -f "${dp_DISTINFO_FILE}" ]; then
+ cd "${dp_DISTDIR}"
+ OK=
+ refetchlist=
+ for file in "${@}"; do
+ ignored="true"
+ for alg in ${dp_CHECKSUM_ALGORITHMS}; do
+ ignore="false"
+ eval "alg_executable=\$dp_${alg}"
+
+ if [ "$alg_executable" != "NO" ]; then
+ MKSUM=$(eval $alg_executable \< "${file}")
+ CKSUM=$(distinfo_data "${alg}" "${file}")
+ else
+ ignore="true"
+ fi
+
+ if [ $ignore = "false" -a -z "$CKSUM" ]; then
+ ${dp_ECHO_MSG} "=> No $alg checksum recorded for $file."
+ ignore="true"
+ fi
+
+ if [ $ignore = "false" ]; then
+ match="false"
+ for chksum in $CKSUM; do
+ if [ "$chksum" = "$MKSUM" ]; then
+ match="true"
+ break
+ fi
+ done
+ if [ $match = "true" ]; then
+ ${dp_ECHO_MSG} "=> $alg Checksum OK for $file."
+ ignored="false"
+ else
+ ${dp_ECHO_MSG} "=> $alg Checksum mismatch for $file."
+ refetchlist="$refetchlist $file "
+ OK="${OK:-retry}"
+ [ "${OK}" = "retry" -a "${dp_FETCH_REGET}" -gt 0 ] && rm -f "${file}"
+ ignored="false"
+ fi
+ fi
+ done
+
+ if [ $ignored = "true" ]; then
+ ${dp_ECHO_MSG} "=> No suitable checksum found for $file."
+ OK=false
+ fi
+ done
+
+ if [ "${OK:=true}" = "retry" ] && [ "${dp_FETCH_REGET}" -gt 0 ]; then
+ ${dp_ECHO_MSG} "===> Refetch for ${dp_FETCH_REGET} more times files: $refetchlist"
+ if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FORCE_FETCH_LIST="$refetchlist" FETCH_REGET="$((dp_FETCH_REGET - 1))" fetch; then
+ if ${dp_MAKE} -C "${dp_CURDIR}" ${dp_MAKEFLAGS} FETCH_REGET="$((dp_FETCH_REGET - 1))" checksum ; then
+ OK="true"
+ fi
+ fi
+ fi
+
+ if [ "$OK" != "true" -a "${dp_FETCH_REGET}" -eq 0 ]; then
+ ${dp_ECHO_MSG} "===> Giving up on fetching files: $refetchlist"
+ ${dp_ECHO_MSG} "Make sure the Makefile and distinfo file (${dp_DISTINFO_FILE})"
+ ${dp_ECHO_MSG} "are up to date. If you are absolutely sure you want to override this"
+ ${dp_ECHO_MSG} "check, type \"make NO_CHECKSUM=yes [other args]\"."
+ exit 1
+ fi
+ if [ "$OK" != "true" ]; then
+ exit 1
+ fi
+elif [ -n "${@}" ]; then
+ ${dp_ECHO_MSG} "=> No checksum file (${DISTINFO_FILE})."
+ exit 1
+fi
Added: head/Mk/Scripts/do-fetch.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Scripts/do-fetch.sh Wed May 25 15:58:31 2016 (r415842)
@@ -0,0 +1,174 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# MAINTAINER: portmgr at FreeBSD.org
+
+set -e
+
+. "${dp_SCRIPTSDIR}/functions.sh"
+
+validate_env dp_DEVELOPER dp_DISABLE_SIZE dp_DISTDIR dp_DISTINFO_FILE \
+ dp_DIST_SUBDIR dp_ECHO_MSG dp_FETCH_AFTER_ARGS dp_FETCH_BEFORE_ARGS \
+ dp_FETCH_CMD dp_FETCH_ENV dp_FORCE_FETCH_ALL dp_FORCE_FETCH_LIST \
+ dp_MASTER_SITE_BACKUP dp_MASTER_SITE_OVERRIDE dp_MASTER_SORT_AWK \
+ dp_NO_CHECKSUM dp_RANDOMIZE_SITES dp_SITE_FLAVOR dp_SCRIPTSDIR \
+ dp_SORTED_MASTER_SITES_DEFAULT_CMD dp_SORTED_PATCH_SITES_DEFAULT_CMD \
+ dp_TARGET
+
+[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_DO_FETCH}" ] && set -x
+
+set -u
+
+mkdir -p "${dp_DISTDIR}"
+cd "${dp_DISTDIR}"
+
+for _file in "${@}"; do
+ file=${_file%%:*}
+ unescaped_file=$(unescape "${file}")
+
+ # If this files has groups
+ if [ "$_file" = "$file" ]; then
+ select=''
+ else
+ select=$(echo "${_file##*:}" | sed -e 's/,/ /g')
+ fi
+
+ filebasename=${file##*/}
+ if [ -n "${dp_FORCE_FETCH_ALL}" ]; then
+ force_fetch=true
+ else
+ force_fetch=false
+ for afile in ${dp_FORCE_FETCH_LIST}; do
+ afile=${afile##*/}
+ if [ "x$afile" = "x$filebasename" ]; then
+ force_fetch=true
+ fi
+ done
+ fi
+ if [ ! -f "${unescaped_file}" -a ! -f "$filebasename" -o "$force_fetch" = "true" ]; then
+ full_file="${dp_DIST_SUBDIR:+${dp_DIST_SUBDIR}/}${file}"
+ if [ -L "$file" -o -L "$filebasename" ]; then
+ ${dp_ECHO_MSG} "=> ${dp_DISTDIR}/$file is a broken symlink."
+ ${dp_ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"
+ ${dp_ECHO_MSG} "=> Please correct this problem and try again."
+ exit 1
+ fi
+ if [ -f "${dp_DISTINFO_FILE}" -a -z "${dp_NO_CHECKSUM}" ]; then
+ _sha256sum=$(distinfo_data SHA256 "${full_file}")
+ if [ -z "$_sha256sum" ]; then
+ ${dp_ECHO_MSG} "=> ${dp_DIST_SUBDIR:+$dp_DIST_SUBDIR/}$file is not in ${dp_DISTINFO_FILE}."
+ ${dp_ECHO_MSG} "=> Either ${dp_DISTINFO_FILE} is out of date, or"
+ ${dp_ECHO_MSG} "=> ${dp_DIST_SUBDIR:+$dp_DIST_SUBDIR/}$file is spelled incorrectly."
+ exit 1
+ fi
+ fi
+ case ${dp_TARGET} in
+ do-fetch|makesum)
+ ${dp_ECHO_MSG} "=> $file doesn't seem to exist in ${dp_DISTDIR}."
+ ;;
+ esac
+ if [ ! -w "${dp_DISTDIR}" ]; then
+ ${dp_ECHO_MSG} "=> ${dp_DISTDIR} is not writable by you; cannot fetch."
+ exit 1
+ fi
+ if [ -n "$select" ] ; then
+ __MASTER_SITES_TMP=
+ for group in $select; do
+ # Disable nounset for this, it may come up empty.
+ set +u
+ eval ___MASTER_SITES_TMP="\${_${dp_SITE_FLAVOR}_SITES_${group}}"
+ set -u
+ if [ -n "${___MASTER_SITES_TMP}" ] ; then
+ __MASTER_SITES_TMP="${__MASTER_SITES_TMP} ${___MASTER_SITES_TMP}"
+ else
+ case ${dp_TARGET} in
+ do-fetch|makesum)
+ if [ -n "${dp_DEVELOPER}" ]; then
+ ${dp_ECHO_MSG} "===> /!\\ Error /!\\"
+ else
+ ${dp_ECHO_MSG} "===> /!\\ Warning /!\\"
+ fi
+ ${dp_ECHO_MSG} " The :${group} group used for $file is missing"
+ ${dp_ECHO_MSG} " from ${dp_SITE_FLAVOR}_SITES. Check for typos, or errors."
+ if [ -n "${dp_DEVELOPER}" ]; then
+ exit 1
+ fi
+ ;;
+ esac
+
+ fi
+ done
+ ___MASTER_SITES_TMP=
+ SORTED_MASTER_SITES_CMD_TMP="echo ${dp_MASTER_SITE_OVERRIDE} $(echo -n "${__MASTER_SITES_TMP}" | awk "${dp_MASTER_SORT_AWK}") ${dp_MASTER_SITE_BACKUP}"
+ else
+ if [ ${dp_SITE_FLAVOR} = "MASTER" ]; then
+ SORTED_MASTER_SITES_CMD_TMP="${dp_SORTED_MASTER_SITES_DEFAULT_CMD}"
+ else
+ SORTED_MASTER_SITES_CMD_TMP="${dp_SORTED_PATCH_SITES_DEFAULT_CMD}"
+ fi
+ fi
+ case ${dp_TARGET} in
+ fetch-list)
+ echo -n "mkdir -p ${dp_DISTDIR} && "
+ echo -n "cd ${dp_DISTDIR} && { "
+ ;;
+ esac
+ sites_remaining=0
+ sites="$(eval "${SORTED_MASTER_SITES_CMD_TMP} ${dp_RANDOMIZE_SITES}")"
+ for site in ${sites}; do
+ sites_remaining=$((sites_remaining + 1))
+ done
+ for site in ${sites}; do
+ sites_remaining=$((sites_remaining - 1))
+ CKSIZE=$(distinfo_data SIZE "${full_file}")
+ # The site may contain special shell characters, they
+ # need to be escaped.
+ site=$(escape "${site}")
+ # There is a lot of escaping, but the " needs to survive echo/eval.
+ case ${file} in
+ */*)
+ mkdir -p "${file%/*}"
+ args="-o \\\"${file}\\\" \\\"${site}${file}\\\""
+ ;;
+ *)
+ args="\\\"${site}${file}\\\""
+ ;;
+ esac
+ _fetch_cmd=$(eval "echo ${dp_FETCH_ENV} ${dp_FETCH_CMD} ${dp_FETCH_BEFORE_ARGS} ${args} ${dp_FETCH_AFTER_ARGS}")
+ case ${dp_TARGET} in
+ do-fetch|makesum)
+ ${dp_ECHO_MSG} "=> Attempting to fetch ${site}${file}"
+ if eval "env ${_fetch_cmd}"; then
+ actual_size=$(eval stat -f %z "${file}")
+ if [ -n "${dp_DISABLE_SIZE}" ] || [ -z "${CKSIZE}" ] || [ "${actual_size}" -eq "${CKSIZE}" ]; then
+ continue 2
+ else
+ ${dp_ECHO_MSG} "=> Fetched file size mismatch (expected ${CKSIZE}, actual ${actual_size})"
+ if [ ${sites_remaining} -gt 0 ]; then
+ ${dp_ECHO_MSG} "=> Trying next site"
+ rm -f "${file}"
+ fi
+ fi
+ fi
+ ;;
+ fetch-list)
+ echo -n "env ${_fetch_cmd} || "
+ ;;
+ fetch-url-list-int)
+ eval "echo $(eval "echo ${args}")"
+ ;;
+ esac
+ done
+ case ${dp_TARGET} in
+ do-fetch|makesum)
+ ${dp_ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this"
+ ${dp_ECHO_MSG} "=> port manually into ${dp_DISTDIR} and try again."
+ exit 1
+ ;;
+ fetch-list)
+ echo "echo ${file} not fetched; }" ; \
+ ;;
+ esac
+ fi
+done
+
Modified: head/Mk/Scripts/functions.sh
==============================================================================
--- head/Mk/Scripts/functions.sh Wed May 25 15:55:37 2016 (r415841)
+++ head/Mk/Scripts/functions.sh Wed May 25 15:58:31 2016 (r415842)
@@ -216,3 +216,37 @@ export_ports_env() {
fi
done
}
+
+distinfo_data() {
+ local alg file
+
+ alg=$1
+ file=$2
+
+ if [ \( -n "${dp_DISABLE_SIZE}" -a -n "${dp_NO_CHECKSUM}" \) -o ! -f "${dp_DISTINFO_FILE}" ]; then
+ exit
+ fi
+ awk -v alg="$alg" -v file="${file}" \
+ '$1 == alg && $2 == "(" file ")" {print $4}' "${dp_DISTINFO_FILE}"
+}
+
+check_checksum_algorithms() {
+ for alg in ${dp_CHECKSUM_ALGORITHMS}; do
+ eval "alg_executable=\$dp_$alg"
+ if [ -z "$alg_executable" ]; then
+ ${dp_ECHO_MSG} "Checksum algorithm $alg: Couldn't find the executable."
+ ${dp_ECHO_MSG} "Set $alg=/path/to/$alg in /etc/make.conf and try again."
+ exit 1
+ elif [ ! -x "$alg_executable" ]; then
+ ${dp_ECHO_MSG} "Checksum algorithm $alg: $alg_executable is not executable."
+ ${dp_ECHO_MSG} "Fix modes, or change $alg=$alg_executable in /etc/make.conf and try again."
+ exit 1
+ fi
+ done
+}
+escape() {
+ echo "$1" | sed -e 's/[&;()!#]/\\&/g'
+}
+unescape() {
+ echo "$1" | sed -e 's/\\//g'
+}
Added: head/Mk/Scripts/makesum.sh
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/Mk/Scripts/makesum.sh Wed May 25 15:58:31 2016 (r415842)
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# MAINTAINER: portmgr at FreeBSD.org
+
+set -e
+
+. "${dp_SCRIPTSDIR}/functions.sh"
+
+validate_env dp_CHECKSUM_ALGORITHMS dp_CKSUMFILES dp_DISTDIR dp_DISTINFO_FILE \
+ dp_ECHO_MSG
+
+[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_MAKESUM}" ] && set -x
+
+set -u
+
+DISTINFO_OLD=$(mktemp -t makesum-old)
+DISTINFO_NEW=$(mktemp -t makesum-new)
+
+trap 'rm -f ${DISTINFO_OLD} ${DISTINFO_NEW}' EXIT INT TERM
+
+check_checksum_algorithms
+
+cd "${dp_DISTDIR}"
+
+# Running `make makesum` a twice should not change the timestamp generated from
+# the first run.
+# So, we extract the content of the distinfo file minus the TIMESTAMP, if it
+# contains a TIMESTAMP.
+if [ -f "${dp_DISTINFO_FILE}" ] && grep -q "^TIMESTAMP " ${dp_DISTINFO_FILE}; then
+ grep -v "^TIMESTAMP " ${dp_DISTINFO_FILE} > ${DISTINFO_OLD}
+fi
+
+for file in ${dp_CKSUMFILES}; do
+ for alg in ${dp_CHECKSUM_ALGORITHMS}; do
+ eval "alg_executable=\$dp_$alg"
+
+ if [ "$alg_executable" != "NO" ]; then
+ $alg_executable "$file" >> "${DISTINFO_NEW}"
+ fi
+ done
+ echo "SIZE ($file) = $(stat -f %z "$file")" >> "${DISTINFO_NEW}"
+done
+
+# Now, we generate the distinfo file in two cases:
+# - If the saved file is empty, it means there was no TIMESTAMP in it, so we
+# need to add one.
+# - If the old and new distinfo content minus the TIMESTAMP differ, it means
+# something was updated or changed, it is time to generate a new timestamp.
+if [ ! -s ${DISTINFO_OLD} ] || ! cmp -s ${DISTINFO_OLD} ${DISTINFO_NEW}; then
+ echo "TIMESTAMP = $(date '+%s')" > ${dp_DISTINFO_FILE}
+ cat ${DISTINFO_NEW} >> ${dp_DISTINFO_FILE}
+fi
Modified: head/Mk/bsd.port.mk
==============================================================================
--- head/Mk/bsd.port.mk Wed May 25 15:55:37 2016 (r415841)
+++ head/Mk/bsd.port.mk Wed May 25 15:58:31 2016 (r415842)
@@ -2065,8 +2065,8 @@ FETCH_CMD?= ${FETCH_BINARY} ${FETCH_ARG
.if defined(RANDOMIZE_MASTER_SITES)
.if exists(/usr/games/random)
RANDOM_CMD?= /usr/games/random
-RANDOM_ARGS?= "-w -f -"
-_RANDOMIZE_SITES= " |${RANDOM_CMD} ${RANDOM_ARGS}"
+RANDOM_ARGS?= -w -f -
+_RANDOMIZE_SITES= |${RANDOM_CMD} ${RANDOM_ARGS}
.endif
.endif
@@ -3062,195 +3062,114 @@ check-deprecated:
AUDITFILE?= ${PKG_DBDIR}/vuln.xml
check-vulnerable:
-.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING)
- @if [ -f "${AUDITFILE}" ]; then \
- if [ -x "${PKG_BIN}" ]; then \
- vlist=`${PKG_BIN} audit "${PKGNAME}" || :`; \
- if [ "$${vlist}" = "0 problem(s) in the installed packages found." ]; then \
- vlist=""; \
- fi; \
- elif [ "${PORTNAME}" = "pkg" ]; then \
- vlist=""; \
- fi; \
- if [ -n "$$vlist" ]; then \
- ${ECHO_MSG} "===> ${PKGNAME} has known vulnerabilities:"; \
- ${ECHO_MSG} "$$vlist"; \
- ${ECHO_MSG} "=> Please update your ports tree and try again."; \
- ${ECHO_MSG} "=> Note: Vulnerable ports are marked as such even if there is no update available."; \
- ${ECHO_MSG} "=> If you wish to ignore this vulnerability rebuild with 'make DISABLE_VULNERABILITIES=yes'"; \
- exit 1; \
- fi; \
- fi
+.if !defined(DISABLE_VULNERABILITIES) && !defined(PACKAGE_BUILDING) \
+ && exists(${AUDITFILE})
+ @${SETENV} \
+ dp_ECHO_MSG="${ECHO_MSG}" \
+ dp_PKG_BIN="${PKG_BIN}" \
+ dp_PORTNAME="${PORTNAME}" \
+ dp_SCRIPTSDIR="${SCRIPTSDIR}" \
+ ${SH} ${SCRIPTSDIR}/check-vulnerable.sh
.endif
-# set alg to any of SIZE, SHA256 (or any other checksum algorithm):
-DISTINFO_DATA?= if [ \( -n "${DISABLE_SIZE}" -a -n "${NO_CHECKSUM}" \) -o ! -f "${DISTINFO_FILE}" ]; then exit; fi; \
- DIR=${DIST_SUBDIR}; ${AWK} -v alg=$$alg -v file=$${DIR:+$$DIR/}$${file} \
- '$$1 == alg && $$2 == "(" file ")" {print $$4}' ${DISTINFO_FILE}
+# Quote simply quote all variables, except FETCH_ENV, some ports are creative
+# with it, and it needs to be quoted twice to pass through the echo/eval in
+# do-fetch.
+_DO_FETCH_ENV= \
+ dp_DISABLE_SIZE='${DISABLE_SIZE}' \
+ dp_DISTDIR='${_DISTDIR}' \
+ dp_DISTINFO_FILE='${DISTINFO_FILE}' \
+ dp_DIST_SUBDIR='${DIST_SUBDIR}' \
+ dp_ECHO_MSG='${ECHO_MSG}' \
+ dp_FETCH_AFTER_ARGS='${FETCH_AFTER_ARGS}' \
+ dp_FETCH_BEFORE_ARGS='${FETCH_BEFORE_ARGS}' \
+ dp_FETCH_CMD='${FETCH_CMD}' \
+ dp_FETCH_ENV=${FETCH_ENV:Q:Q} \
+ dp_FORCE_FETCH_ALL='${FORCE_FETCH_ALL}' \
+ dp_FORCE_FETCH_LIST='${FORCE_FETCH_LIST}' \
+ dp_MASTER_SITE_BACKUP='${_MASTER_SITE_BACKUP}' \
+ dp_MASTER_SITE_OVERRIDE='${_MASTER_SITE_OVERRIDE}' \
+ dp_MASTER_SORT_AWK='${MASTER_SORT_AWK}' \
+ dp_NO_CHECKSUM='${NO_CHECKSUM}' \
+ dp_RANDOMIZE_SITES='${_RANDOMIZE_SITES}' \
+ dp_SCRIPTSDIR='${SCRIPTSDIR}' \
+ dp_SORTED_MASTER_SITES_DEFAULT_CMD='${SORTED_MASTER_SITES_DEFAULT_CMD}' \
+ dp_SORTED_PATCH_SITES_DEFAULT_CMD='${SORTED_PATCH_SITES_DEFAULT_CMD}' \
+ dp_TARGET='${.TARGET}'
+.if defined(DEVELOPER)
+_DO_FETCH_ENV+= dp_DEVELOPER=yes
+.else
+_DO_FETCH_ENV+= dp_DEVELOPER=
+.endif
# Fetch
.if !target(do-fetch)
do-fetch:
- @${MKDIR} ${_DISTDIR}
- @cd ${_DISTDIR};\
- ${_MASTER_SITES_ENV} ; \
- for _file in ${DISTFILES}; do \
- file=$${_file%%:*}; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- force_fetch=false; \
- filebasename=$${file##*/}; \
- for afile in ${FORCE_FETCH}; do \
- afile=$${afile##*/}; \
- if [ "x$$afile" = "x$$filebasename" ]; then \
- force_fetch=true; \
- fi; \
- done; \
- if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
- if [ -L $$file -o -L $$filebasename ]; then \
- ${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
- ${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
- ${ECHO_MSG} "=> Please correct this problem and try again."; \
- exit 1; \
- fi; \
- if [ -f ${DISTINFO_FILE} -a "x${NO_CHECKSUM}" = "x" ]; then \
- _sha256sum=`alg=SHA256; ${DISTINFO_DATA}`; \
- if [ -z "$$_sha256sum" ]; then \
- ${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is not in ${DISTINFO_FILE}."; \
- ${ECHO_MSG} "=> Either ${DISTINFO_FILE} is out of date, or"; \
- ${ECHO_MSG} "=> $${DIR:+$$DIR/}$$file is spelled incorrectly."; \
- exit 1; \
- fi; \
- fi; \
- ${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
- if [ ! -w ${_DISTDIR} ]; then \
- ${ECHO_MSG} "=> ${_DISTDIR} is not writable by you; cannot fetch."; \
- exit 1; \
- fi; \
- if [ ! -z "$$select" ] ; then \
- __MASTER_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
- eval ___MASTER_SITES_TMP="\$${_MASTER_SITES_$${group}}" ; \
- __MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
- fi; \
- done; \
- ___MASTER_SITES_TMP= ; \
- SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
- fi; \
- sites_remaining=0; \
- sites="`eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`"; \
- for site in $${sites}; do \
- sites_remaining=$$(($${sites_remaining} + 1)); \
- done; \
- for site in $${sites}; do \
- sites_remaining=$$(($${sites_remaining} - 1)); \
- ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
- CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
- case $${file} in \
- */*) ${MKDIR} $${file%/*}; \
- args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
- actual_size=`stat -f %z "$${file}"`; \
- if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
- continue 2; \
- else \
- ${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
- if [ $${sites_remaining} -gt 0 ]; then \
- ${ECHO_MSG} "=> Trying next site"; \
- ${RM} -f $${file}; \
- fi; \
- fi; \
- fi; \
- done; \
- ${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
- ${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
- exit 1; \
- fi; \
- done
-.if defined(PATCHFILES)
- @cd ${_DISTDIR};\
- ${_PATCH_SITES_ENV} ; \
- for _file in ${PATCHFILES}; do \
- file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
- force_fetch=false; \
- filebasename=$${file##*/}; \
- for afile in ${FORCE_FETCH}; do \
- afile=$${afile##*/}; \
- if [ "x$$afile" = "x$$filebasename" ]; then \
- force_fetch=true; \
- fi; \
- done; \
- if [ ! -f $$file -a ! -f $$filebasename -o "$$force_fetch" = "true" ]; then \
- if [ -L $$file -o -L $${file##*/} ]; then \
- ${ECHO_MSG} "=> ${_DISTDIR}/$$file is a broken symlink."; \
- ${ECHO_MSG} "=> Perhaps a filesystem (most likely a CD) isn't mounted?"; \
- ${ECHO_MSG} "=> Please correct this problem and try again."; \
- exit 1; \
- fi; \
- ${ECHO_MSG} "=> $$file doesn't seem to exist in ${_DISTDIR}."; \
- if [ ! -z "$$select" ] ; then \
- __PATCH_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
- eval ___PATCH_SITES_TMP="\$${_PATCH_SITES_$${group}}" ; \
- __PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
- fi; \
- done; \
- ___PATCH_SITES_TMP= ; \
- SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
- fi; \
- sites_remaining=0; \
- sites="`eval $$SORTED_PATCH_SITES_CMD_TMP`"; \
- for site in $${sites}; do \
- sites_remaining=$$(($${sites_remaining} + 1)); \
- done; \
- for site in $${sites}; do \
- sites_remaining=$$(($${sites_remaining} - 1)); \
- ${ECHO_MSG} "=> Attempting to fetch $${site}$${file}"; \
- CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
- case $${file} in \
- */*) ${MKDIR} $${file%/*}; \
- args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- if ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} ${FETCH_AFTER_ARGS}; then \
- actual_size=`stat -f %z "$${file}"`; \
- if [ -n "${DISABLE_SIZE}" ] || [ -z "$${CKSIZE}" ] || [ $${actual_size} -eq $${CKSIZE} ]; then \
- continue 2; \
- else \
- ${ECHO_MSG} "=> Fetched file size mismatch (expected $${CKSIZE}, actual $${actual_size})"; \
- if [ $${sites_remaining} -gt 1 ]; then \
- ${ECHO_MSG} "=> Trying next site"; \
- ${RM} -f $${file}; \
- fi; \
- fi; \
- fi; \
- done; \
- ${ECHO_MSG} "=> Couldn't fetch it - please try to retrieve this";\
- ${ECHO_MSG} "=> port manually into ${_DISTDIR} and try again."; \
- exit 1; \
- fi; \
- done
+.if !empty(DISTFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
+ dp_SITE_FLAVOR=MASTER \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
+.endif
+.if defined(PATCHFILES) && !empty(PATCHFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
+ dp_SITE_FLAVOR=PATCH \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
+.endif
+.endif
+#
+# Prints out a list of files to fetch (useful to do a batch fetch)
+
+.if !target(fetch-list)
+fetch-list:
+.if !empty(DISTFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
+ dp_SITE_FLAVOR=MASTER \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
+.endif
+.if defined(PATCHFILES) && !empty(PATCHFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
+ dp_SITE_FLAVOR=PATCH \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
.endif
.endif
+# Used by fetch-urlall-list and fetch-url-list
+
+.if !target(fetch-url-list-int)
+fetch-url-list-int:
+.if !empty(DISTFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
+ dp_SITE_FLAVOR=MASTER \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
+.endif
+.if defined(PATCHFILES) && !empty(PATCHFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
+ dp_SITE_FLAVOR=PATCH \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
+.endif
+.endif
+
+# Prints out all the URL for all the DISTFILES and PATCHFILES.
+
+.if !target(fetch-urlall-list)
+fetch-urlall-list:
+ @cd ${.CURDIR} && ${SETENV} FORCE_FETCH_ALL=yes ${MAKE} fetch-url-list-int
+.endif
+
+# Prints the URL for all the DISTFILES and PATCHFILES that are not here
+
+.if !target(fetch-url-list)
+fetch-url-list: fetch-url-list-int
+.endif
+
+
# Extract
clean-wrkdir:
@@ -3968,176 +3887,6 @@ delete-distfiles-list:
.endif
.endif
-# Prints out a list of files to fetch (useful to do a batch fetch)
-
-.if !target(fetch-list)
-fetch-list:
- @${MKDIR} ${_DISTDIR}
- @(cd ${_DISTDIR}; \
- ${_MASTER_SITES_ENV} ; \
- for _file in ${DISTFILES}; do \
- file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- if [ ! -f $$file -a ! -f $${file##*/} ]; then \
- if [ ! -z "$$select" ] ; then \
- __MASTER_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
- eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
- __MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
- fi; \
- done; \
- ___MASTER_SITES_TMP= ; \
- SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
- fi; \
- ${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
- ${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
- for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
- if [ ! -z "`${ECHO_CMD} ${NOFETCHFILES} | ${GREP} -w $${file}`" ]; then \
- if [ -z "`${ECHO_CMD} ${MASTER_SITE_OVERRIDE} | ${GREP} -w $${site}`" ]; then \
- continue; \
- fi; \
- fi; \
- CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
- case $${file} in \
- */*) args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- ${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
- done; \
- ${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
- fi; \
- done)
-.if defined(PATCHFILES)
- @(cd ${_DISTDIR}; \
- ${_PATCH_SITES_ENV} ; \
- for _file in ${PATCHFILES}; do \
- file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
- if [ ! -f $$file -a ! -f $${file##*/} ]; then \
- if [ ! -z "$$select" ] ; then \
- __PATCH_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
- eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
- __PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
- fi; \
- done; \
- ___PATCH_SITES_TMP= ; \
- SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
- fi; \
- ${ECHO_CMD} -n ${MKDIR} ${_DISTDIR} '&& ' ; \
- ${ECHO_CMD} -n cd ${_DISTDIR} '&& { ' ; \
- for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
- CKSIZE=`alg=SIZE; ${DISTINFO_DATA}`; \
- case $${file} in \
- */*) args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- ${ECHO_CMD} -n ${SETENV} ${FETCH_ENV} ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${args} "${FETCH_AFTER_ARGS}" '|| ' ; \
- done; \
- ${ECHO_CMD} "${ECHO_CMD} $${file} not fetched; }" ; \
- fi; \
- done)
-.endif
-.endif
-
-.if !target(fetch-url-list-int)
-fetch-url-list-int:
- @${MKDIR} ${_DISTDIR}
- @(cd ${_DISTDIR}; \
- ${_MASTER_SITES_ENV}; \
- for _file in ${DISTFILES}; do \
- file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^:]+$$//'` ; \
- fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
- if [ ! -z "$$select" ] ; then \
- __MASTER_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_MASTER_SITES_$${group}} ] ; then \
- eval ___MASTER_SITES_TMP=\$${_MASTER_SITES_$${group}} ; \
- __MASTER_SITES_TMP="$${__MASTER_SITES_TMP} $${___MASTER_SITES_TMP}" ; \
- fi \
- done; \
- ___MASTER_SITES_TMP= ; \
- SORTED_MASTER_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__MASTER_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_MASTER_SITES_CMD_TMP="${SORTED_MASTER_SITES_DEFAULT_CMD}" ; \
- fi ; \
- for site in `eval $$SORTED_MASTER_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
- case $${file} in \
- */*) args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- ${ECHO_CMD} $${args} ; \
- done; \
- fi \
- done)
-.if defined(PATCHFILES)
- @(cd ${_DISTDIR}; \
- ${_PATCH_SITES_ENV} ; \
- for _file in ${PATCHFILES}; do \
- file=`${ECHO_CMD} $$_file | ${SED} -E -e 's/:[^-:][^:]*$$//'` ; \
- if [ $$_file = $$file ]; then \
- select=''; \
- else \
- select=`${ECHO_CMD} $${_file##*:} | ${SED} -e 's/,/ /g'` ; \
- fi; \
- file=`${ECHO_CMD} $$file | ${SED} -E -e 's/:-[^:]+$$//'` ; \
- fileptn=`${ECHO_CMD} $$file | ${SED} 's|/|\\\\/|g;s/\./\\\\./g;s/\+/\\\\+/g;s/\?/\\\\?/g'` ; \
- if [ ! -z "${LISTALL}" -o ! -f $$file -a ! -f $${file##*/} ]; then \
- if [ ! -z "$$select" ] ; then \
- __PATCH_SITES_TMP= ; \
- for group in $$select; do \
- if [ ! -z \$${_PATCH_SITES_$${group}} ] ; then \
- eval ___PATCH_SITES_TMP=\$${_PATCH_SITES_$${group}} ; \
- __PATCH_SITES_TMP="$${__PATCH_SITES_TMP} $${___PATCH_SITES_TMP}" ; \
- fi \
- done; \
- ___PATCH_SITES_TMP= ; \
- SORTED_PATCH_SITES_CMD_TMP="${ECHO_CMD} ${_MASTER_SITE_OVERRIDE} `${ECHO_CMD} $${__PATCH_SITES_TMP} | ${AWK} '${MASTER_SORT_AWK:S|\\|\\\\|g}'` ${_MASTER_SITE_BACKUP}" ; \
- else \
- SORTED_PATCH_SITES_CMD_TMP="${SORTED_PATCH_SITES_DEFAULT_CMD}" ; \
- fi ; \
- for site in `eval $$SORTED_PATCH_SITES_CMD_TMP ${_RANDOMIZE_SITES}`; do \
- case $${file} in \
- */*) args="-o $${file} $${site}$${file}";; \
- *) args=$${site}$${file};; \
- esac; \
- ${ECHO_CMD} $${args} ; \
- done; \
- fi \
- done)
-.endif
-.endif
-
-.if !target(fetch-urlall-list)
-fetch-urlall-list:
- @cd ${.CURDIR} && LISTALL=yes ${MAKE} fetch-url-list-int
-.endif
-
-.if !target(fetch-url-list)
-fetch-url-list: fetch-url-list-int
-.endif
-
# Generates patches.
update-patches:
@@ -4153,132 +3902,62 @@ update-patches:
# Checksumming utilities
-check-checksum-algorithms:
- @ \
- ${checksum_init} \
- \
- for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
- eval alg_executable=\$$$$alg; \
- if [ -z "$$alg_executable" ]; then \
- ${ECHO_MSG} "Checksum algorithm $$alg: Couldn't find the executable."; \
- ${ECHO_MSG} "Set $$alg=/path/to/$$alg in /etc/make.conf and try again."; \
- exit 1; \
- fi; \
- done; \
-
-checksum_init=\
- SHA256=${SHA256};
+# List all algorithms here, all the variables name must begin with dp_
+_CHECKSUM_INIT_ENV= \
+ dp_SHA256=${SHA256}
.if !target(makesum)
-makesum: check-checksum-algorithms
- @cd ${.CURDIR} && ${MAKE} fetch NO_CHECKSUM=yes \
- DISABLE_SIZE=yes
- @if [ -f ${DISTINFO_FILE} ]; then \
- if ${GREP} -q "^TIMESTAMP " ${DISTINFO_FILE}; then \
- ${GREP} -v "^TIMESTAMP " ${DISTINFO_FILE} > ${DISTINFO_FILE}.sav; \
- fi; \
- fi
- @( \
- cd ${DISTDIR}; \
- \
- ${checksum_init} \
- \
- for file in ${_CKSUMFILES}; do \
- for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
- eval alg_executable=\$$$$alg; \
- \
- if [ $$alg_executable != "NO" ]; then \
- $$alg_executable $$file >> ${DISTINFO_FILE}.new; \
- fi; \
- done; \
- ${ECHO_CMD} "SIZE ($$file) = `${STAT} -f \"%z\" $$file`" >> ${DISTINFO_FILE}.new; \
- done; \
- if [ ! -f ${DISTINFO_FILE}.sav ] || ! cmp -s ${DISTINFO_FILE}.sav ${DISTINFO_FILE}.new; then \
- ${ECHO_CMD} "TIMESTAMP = `date '+%s'`" > ${DISTINFO_FILE} ; \
- ${CAT} ${DISTINFO_FILE}.new >> ${DISTINFO_FILE} ; \
- fi ; \
- rm -f ${DISTINFO_FILE}.new ${DISTINFO_FILE}.sav ; \
- )
+# Some port change the options with OPTIONS_*_FORCE when make(makesum) to be
+# able to add all distfiles in one go.
+# For this to work, we need to call the do-fetch script directly here so that
+# the options consistent when fetching and when makesum'ing.
+# As we're fetching new distfiles, that are not in the distinfo file, disable
+# checksum and sizes checks.
+makesum:
+.if !empty(DISTFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
+ dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
+ dp_SITE_FLAVOR=MASTER \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
+.endif
+.if defined(PATCHFILES) && !empty(PATCHFILES)
+ @${SETENV} \
+ ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
+ dp_NO_CHECKSUM=yes dp_DISABLE_SIZE=yes \
+ dp_SITE_FLAVOR=PATCH \
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
+.endif
+ @${SETENV} \
+ ${_CHECKSUM_INIT_ENV} \
+ dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
+ dp_CKSUMFILES='${_CKSUMFILES}' \
+ dp_DISTDIR='${DISTDIR}' \
+ dp_DISTINFO_FILE='${DISTINFO_FILE}' \
+ dp_ECHO_MSG='${ECHO_MSG}' \
+ dp_SCRIPTSDIR='${SCRIPTSDIR}' \
+ ${SH} ${SCRIPTSDIR}/makesum.sh ${DISTFILES:C/.*/'&'/}
.endif
.if !target(checksum)
-checksum: fetch check-checksum-algorithms
- @set -e ; \
- ${checksum_init} \
- if [ -f ${DISTINFO_FILE} ]; then \
- cd ${DISTDIR}; OK="";\
- for file in ${_CKSUMFILES}; do \
- ignored="true"; \
- _file=$${file#${DIST_SUBDIR}/*}; \
- for alg in ${CHECKSUM_ALGORITHMS:tu}; do \
- ignore="false"; \
- eval alg_executable=\$$$$alg; \
- \
- if [ $$alg_executable != "NO" ]; then \
- MKSUM=`$$alg_executable < $$file`; \
- CKSUM=`file=$$_file; ${DISTINFO_DATA}`; \
- else \
- ignore="true"; \
- fi; \
- \
- if [ $$ignore = "false" -a -z "$$CKSUM" ]; then \
- ${ECHO_MSG} "=> No $$alg checksum recorded for $$file."; \
- ignore="true"; \
- fi; \
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-ports-all
mailing list