Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F171601880
D59475.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
D59475.diff
View Options
diff --git a/i/Mk/Scripts/checksum.sh b/Mk/Scripts/checksum.sh
--- a/i/Mk/Scripts/checksum.sh
+++ b/Mk/Scripts/checksum.sh
@@ -7,9 +7,9 @@
. "${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
+validate_env dp_CHECKSUM_ALGORITHMS dp_CKSUMFILES_FILE 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
@@ -21,7 +21,7 @@
cd "${dp_DISTDIR}"
OK=
refetchlist=
- for file in "${@}"; do
+ while read -r file ; do
ignored="true"
for alg in ${dp_CHECKSUM_ALGORITHMS}; do
ignore="false"
@@ -69,7 +69,7 @@
${dp_ECHO_MSG} "=> No suitable checksum found for $file."
OK=false
fi
- done
+ done < ${dp_CKSUMFILES_FILE}
if [ "${OK:=true}" = "retry" ] && [ "${dp_FETCH_REGET}" -gt 0 ]; then
${dp_ECHO_MSG} "===> Refetch for ${dp_FETCH_REGET} more times files: $refetchlist"
diff --git a/i/Mk/Scripts/do-fetch.sh b/Mk/Scripts/do-fetch.sh
--- a/i/Mk/Scripts/do-fetch.sh
+++ b/Mk/Scripts/do-fetch.sh
@@ -8,16 +8,21 @@
. "${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_TARGET
+ dp_DIST_SUBDIR dp_DISTFILES_FILE 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_SITES_FILE \
+ dp_MASTER_SITE_OVERRIDE dp_MASTER_SORT_AWK dp_NO_CHECKSUM \
+ dp_RANDOMIZE_SITES dp_SITE_FLAVOR dp_TARGET
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_DO_FETCH}" ] && set -x
set -u
case ${dp_TARGET} in
+ makesum-fetch)
+ dp_NO_CHECKSUM=yes
+ dp_DISABLE_SIZE=yes
+ ;&
do-fetch|makesum)
if [ ! -d "${dp_DISTDIR}" ]; then
mkdir -p "${dp_DISTDIR}"
@@ -26,7 +31,11 @@
;;
esac
-for _file in "${@}"; do
+. $dp_MASTER_SITES_FILE
+
+# Read the list of files to fetch from stdin, one per line, instead of
+# from the command line to workatound ARG_MAX limits.
+while IFS= read -r _file; do
file=${_file%%:*}
# If this files has groups
@@ -68,7 +77,7 @@
fi
fi
case ${dp_TARGET} in
- do-fetch|makesum)
+ do-fetch|makesum|makesum-fetch)
${dp_ECHO_MSG} "=> $file doesn't seem to exist in ${dp_DISTDIR}."
if [ ! -w "${dp_DISTDIR}" ]; then
${dp_ECHO_MSG} "=> ${dp_DISTDIR} is not writable by you; cannot fetch."
@@ -87,7 +96,7 @@
__MASTER_SITES_TMP="${__MASTER_SITES_TMP} ${___MASTER_SITES_TMP}"
else
case ${dp_TARGET} in
- do-fetch|makesum)
+ do-fetch|makesum|makesum-fetch)
if [ -n "${dp_DEVELOPER}" ]; then
${dp_ECHO_MSG} "===> /!\\ Error /!\\"
else
@@ -147,7 +156,7 @@
fi
_fetch_cmd="${_fetch_cmd} ${args} ${dp_FETCH_AFTER_ARGS}"
case ${dp_TARGET} in
- do-fetch|makesum)
+ do-fetch|makesum|makesum-fetch)
${dp_ECHO_MSG} "=> Attempting to fetch ${site}${file}"
if env -S "${dp_FETCH_ENV}" ${_fetch_cmd}; then
actual_size=$(stat -f %z "${file}")
@@ -171,7 +180,7 @@
esac
done
case ${dp_TARGET} in
- do-fetch|makesum)
+ do-fetch|makesum|makesum-fetch)
${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
@@ -180,5 +189,5 @@
echo "echo \"${file}\" not fetched; }"
;;
esac
-done
+done < $dp_DISTFILES_FILE
diff --git a/i/Mk/Scripts/makesum.sh b/Mk/Scripts/makesum.sh
--- a/i/Mk/Scripts/makesum.sh
+++ b/Mk/Scripts/makesum.sh
@@ -7,8 +7,8 @@
. "${dp_SCRIPTSDIR}/functions.sh"
-validate_env dp_CHECKSUM_ALGORITHMS dp_CKSUMFILES dp_DISTDIR dp_DISTINFO_FILE \
- dp_ECHO_MSG
+validate_env dp_CHECKSUM_ALGORITHMS dp_CKSUMFILES_FILE dp_DISTDIR \
+ dp_DISTINFO_FILE dp_ECHO_MSG
[ -n "${DEBUG_MK_SCRIPTS}" -o -n "${DEBUG_MK_SCRIPTS_MAKESUM}" ] && set -x
@@ -31,7 +31,7 @@
grep -v "^TIMESTAMP " ${dp_DISTINFO_FILE} > ${DISTINFO_OLD} || true
fi
-for file in ${dp_CKSUMFILES}; do
+while read -r file ; do
for alg in ${dp_CHECKSUM_ALGORITHMS}; do
eval "alg_executable=\$dp_$alg"
@@ -40,7 +40,7 @@
fi
done
echo "SIZE ($file) = $(stat -f %z "$file")" >> "${DISTINFO_NEW}"
-done
+done < ${dp_CKSUMFILES_FILE}
# 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
diff --git a/i/Mk/bsd.port.mk b/Mk/bsd.port.mk
--- a/i/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -3111,57 +3111,50 @@
# Fetch
-. if !target(do-fetch)
-do-fetch:
-. 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)
+_MASTER_SITES_FILE=${WRKDIR}/.master_sites
+_DISTFILES_FILE=${WRKDIR}/.distfiles
+_PATCH_SITES_FILE=${WRKDIR}/.patch_sites
+_PATCHFILES_FILE=${WRKDIR}/.patchfiles
-. if !target(fetch-list)
-fetch-list:
-. if !empty(DISTFILES)
+# do-fetch does the fetching
+# fetch-list Prints out a list of files to fetch (useful to do a batch fetch)
+# fetch-url-list-int Used by fetch-urlall-list and fetch-url-list
+. for _target in do-fetch fetch-list fetch-url-list-int makesum-fetch
+. if !target(${_target})
+${_target}:
+ @${MKDIR} ${WRKDIR}
+. if !empty(DISTFILES)
+ @${RM} ${_MASTER_SITES_FILE} ${_DISTFILES_FILE}
+. for site in ${_MASTER_SITES_ENV}
+ @printf '%s\n' "${site}" >> ${_MASTER_SITES_FILE}
+. endfor
+. for file in ${DISTFILES}
+ @printf '%s\n' "${file}" >> ${_DISTFILES_FILE}
+. endfor
@${SETENV} \
- ${_DO_FETCH_ENV} ${_MASTER_SITES_ENV} \
+ ${_DO_FETCH_ENV} \
+ dp_MASTER_SITES_FILE=${_MASTER_SITES_FILE} \
+ dp_DISTFILES_FILE=${_DISTFILES_FILE} \
dp_SITE_FLAVOR=MASTER \
- ${SH} ${SCRIPTSDIR}/do-fetch.sh ${DISTFILES:C/.*/'&'/}
-. endif
-. if defined(PATCHFILES) && !empty(PATCHFILES)
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh
+. endif
+. if defined(PATCHFILES) && !empty(PATCHFILES)
+ @${RM} ${_PATCH_SITES_FILE} ${_PATCHFILES_FILE}
+. for site in ${_PATCH_SITES_ENV}
+ @printf '%s\n' "${site}" >> ${_PATCH_SITES_FILE}
+. endfor
+. for file in ${PATCHFILES}
+ @printf '%s\n' "${file}" >> ${_PATCHFILES_FILE}
+. endfor
@${SETENV} \
- ${_DO_FETCH_ENV} ${_PATCH_SITES_ENV} \
+ ${_DO_FETCH_ENV} \
+ dp_PATCH_SITES_FILE=${_PATCH_SITES_FILE} \
+ dp_PATCHFILES_FILE=${_PATCHFILES_FILE} \
dp_SITE_FLAVOR=PATCH \
- ${SH} ${SCRIPTSDIR}/do-fetch.sh ${PATCHFILES:C/:-p[0-9]//:C/.*/'&'/}
+ ${SH} ${SCRIPTSDIR}/do-fetch.sh
+. endif
. 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
+. endfor
. if !target(fetch-url-recursive-list-int)
fetch-url-recursive-list-int: fetch-url-list-int
@@ -3936,6 +3929,7 @@
dp_SHA256=${SHA256}
. if !target(makesum)
+_CKSUMFILES_FILE=${WRKDIR}/.cksumfiles
# 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
@@ -3943,28 +3937,35 @@
# As we're fetching new distfiles, that are not in the distinfo file, disable
# checksum and sizes checks.
makesum: check-sanity
- @cd ${.CURDIR} && ${MAKE} fetch NO_CHECKSUM=yes \
- DISABLE_SIZE=yes DISTFILES="${DISTFILES}" \
- MASTER_SITES="${MASTER_SITES}" \
- MASTER_SITE_SUBDIR="${MASTER_SITE_SUBDIR}" \
- PATCH_SITES="${PATCH_SITES}"
+ @cd ${.CURDIR} && ${MAKE} makesum-fetch
+ @${MKDIR} ${WRKDIR}
+ @${RM} ${_CKSUMFILES_FILE}
+. for file in ${_CKSUMFILES}
+ @printf '%s\n' "${file}" >> ${_CKSUMFILES_FILE}
+. endfor
@${SETENV} \
${_CHECKSUM_INIT_ENV} \
dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
- dp_CKSUMFILES='${_CKSUMFILES}' \
+ dp_CKSUMFILES_FILE='${_CKSUMFILES_FILE}' \
dp_DISTDIR='${DISTDIR}' \
dp_DISTINFO_FILE='${DISTINFO_FILE}' \
dp_ECHO_MSG='${ECHO_MSG}' \
dp_SCRIPTSDIR='${SCRIPTSDIR}' \
- ${SH} ${SCRIPTSDIR}/makesum.sh ${DISTFILES:C/.*/'&'/}
+ ${SH} ${SCRIPTSDIR}/makesum.sh
. endif
. if !target(checksum)
checksum: fetch
. if !empty(_CKSUMFILES) && !defined(NO_CHECKSUM)
+ @${MKDIR} ${WRKDIR}
+ @${RM} ${_CKSUMFILES_FILE}
+. for file in ${_CKSUMFILES}
+ @printf '%s\n' "${file}" >> ${_CKSUMFILES_FILE}
+. endfor
@${SETENV} \
${_CHECKSUM_INIT_ENV} \
dp_CHECKSUM_ALGORITHMS='${CHECKSUM_ALGORITHMS:tu}' \
+ dp_CKSUMFILES_FILE='${_CKSUMFILES_FILE}' \
dp_CURDIR='${.CURDIR}' \
dp_DISTDIR='${DISTDIR}' \
dp_DISTINFO_FILE='${DISTINFO_FILE}' \
@@ -3976,7 +3977,7 @@
dp_SCRIPTSDIR='${SCRIPTSDIR}' \
dp_DISABLE_SIZE='${DISABLE_SIZE}' \
dp_NO_CHECKSUM='${NO_CHECKSUM}' \
- ${SH} ${SCRIPTSDIR}/checksum.sh ${_CKSUMFILES:C/.*/'&'/}
+ ${SH} ${SCRIPTSDIR}/checksum.sh
. endif
. endif
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Sep 13, 1:49 AM (2 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38724585
Default Alt Text
D59475.diff (9 KB)
Attached To
Mode
D59475: Mk/Scripts/do-fetch.sh: read distfiles from stdin to avoid ARG_MAX
Attached
Detach File
Event Timeline
Log In to Comment