summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/bsd.pkg.mk495
-rw-r--r--mk/bsd.prefs.mk5
-rw-r--r--mk/extract/bsd.extract-vars.mk63
-rw-r--r--mk/extract/bsd.extract.mk15
-rwxr-xr-xmk/extract/extract (renamed from mk/scripts/extract)2
-rw-r--r--mk/extract/extract.mk (renamed from mk/bsd.pkg.extract.mk)203
-rw-r--r--mk/fetch/bsd.fetch-vars.mk22
-rw-r--r--mk/fetch/bsd.fetch.mk9
-rw-r--r--mk/fetch/distclean.mk26
-rw-r--r--mk/fetch/fetch.mk453
-rw-r--r--mk/fetch/sites.mk (renamed from mk/bsd.sites.mk)11
11 files changed, 694 insertions, 610 deletions
diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk
index fd791ac382e..4976dc1f39b 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.1839 2006/06/05 22:49:44 jlam Exp $
+# $NetBSD: bsd.pkg.mk,v 1.1840 2006/06/06 03:05:48 jlam Exp $
#
# This file is in the public domain.
#
@@ -89,7 +89,6 @@ PKGNAME_NOREV= ${PKGNAME}
##### Others
-_DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
BUILD_DEPENDS?= # empty
BUILD_TARGET?= all
COMMENT?= (no description)
@@ -98,7 +97,6 @@ CONFIGURE_SCRIPT?= ./configure
DEPENDS?= # empty
DESCR_SRC?= ${PKGDIR}/DESCR
DIGEST_ALGORITHMS?= SHA1 RMD160
-DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
DISTINFO_FILE?= ${PKGDIR}/distinfo
INTERACTIVE_STAGE?= none
MAINTAINER?= pkgsrc-users@NetBSD.org
@@ -430,40 +428,6 @@ ERROR_MSG?= ${ECHO_MSG} 1>&2 "ERROR:"
# do something.
DO_NADA?= ${TRUE}
-# If this host is behind a filtering firewall, use passive ftp(1)
-FETCH_BEFORE_ARGS+= ${PASSIVE_FETCH:D-p}
-
-# Include popular master sites
-.include "../../mk/bsd.sites.mk"
-
-_MASTER_SITE_BACKUP= ${MASTER_SITE_BACKUP:=${DIST_SUBDIR}${DIST_SUBDIR:D/}}
-_MASTER_SITE_OVERRIDE= ${MASTER_SITE_OVERRIDE:=${DIST_SUBDIR}${DIST_SUBDIR:D/}}
-
-# Where to put distfiles that don't have any other master site
-MASTER_SITE_LOCAL?= ${MASTER_SITE_BACKUP:=LOCAL_PORTS/}
-
-ALLFILES?= ${DISTFILES} ${PATCHFILES}
-CKSUMFILES?= ${ALLFILES}
-.for __tmp__ in ${IGNOREFILES}
-CKSUMFILES:= ${CKSUMFILES:N${__tmp__}}
-.endfor
-
-# List of all files, with ${DIST_SUBDIR} in front. Used for fetch and checksum.
-.if defined(DIST_SUBDIR)
-_CKSUMFILES?= ${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
-_DISTFILES?= ${DISTFILES:S/^/${DIST_SUBDIR}\//}
-_IGNOREFILES?= ${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
-_PATCHFILES?= ${PATCHFILES:S/^/${DIST_SUBDIR}\//}
-.else
-_CKSUMFILES?= ${CKSUMFILES}
-_DISTFILES?= ${DISTFILES}
-_IGNOREFILES?= ${IGNOREFILES}
-_PATCHFILES?= ${PATCHFILES}
-.endif
-_ALLFILES?= ${_DISTFILES} ${_PATCHFILES}
-
-BUILD_DEFS+= _DISTFILES _PATCHFILES
-
.if defined(GNU_CONFIGURE)
HAS_CONFIGURE= yes
@@ -572,9 +536,6 @@ USE_TOOLS+= tee tsort
USE_TOOLS+= shlock sleep
.endif
-# Extract
-.include "../../mk/bsd.pkg.extract.mk"
-
# Patch
.include "../../mk/bsd.pkg.patch.mk"
@@ -806,300 +767,6 @@ _build: configure
# adding pre-* or post-* targets/scripts, override these.
################################################################
-###
-### _RESUME_TRANSFER:
-###
-### Macro to resume a previous transfer, needs to have defined
-### the following options in mk.conf:
-###
-### PKG_RESUME_TRANSFERS
-### FETCH_RESUME_ARGS (if FETCH_CMD != default)
-### FETCH_OUTPUT_ARGS (if FETCH_CMD != default)
-###
-### For example if you want to use wget (pkgsrc/net/wget):
-###
-### FETCH_CMD=wget
-### FETCH_RESUME_ARGS=-c
-### FETCH_OUTPUT_ARGS=-O
-###
-### How does it work?
-###
-### FETCH_CMD downloads the file and saves it temporally into $$bfile.temp
-### if the checksum match the correct one, $$bfile.temp is renamed to
-### the original name.
-###
-
-_RESUME_TRANSFER= \
- ofile="${DISTDIR}/${DIST_SUBDIR}/$$bfile"; \
- tfile="${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp"; \
- tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \
- osize=`${WC} -c < $$ofile`; \
- \
- case "$$tsize" in \
- "") ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \
- break;; \
- esac; \
- \
- if [ "$$osize" -eq "$$tsize" ]; then \
- if [ -f "$$tfile" ]; then \
- ${RM} $$tfile; \
- fi; \
- need_fetch=no; \
- elif [ "$$osize" -lt "$$tsize" -a ! -f "$$tfile" ]; then \
- ${CP} $$ofile $$tfile; \
- dsize=`${WC} -c < $$tfile`; \
- need_fetch=yes; \
- elif [ -f "$$tfile" -a "$$dsize" -gt "$$ossize" ]; then \
- dsize=`${WC} -c < $$tfile`; \
- need_fetch=yes; \
- else \
- if [ -f "$$tfile" ]; then \
- dsize=`${WC} -c < $$tfile`; \
- fi; \
- need_fetch=yes; \
- fi; \
- if [ "$$need_fetch" = "no" ]; then \
- break; \
- elif [ -f "$$tfile" -a "$$dsize" -eq "$$tsize" ]; then \
- ${MV} $$tfile $$ofile; \
- break; \
- elif [ -n "$$ftp_proxy" -o -n "$$http_proxy" ]; then \
- ${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies."; \
- break; \
- elif [ "$$need_fetch" = "yes" -a "$$dsize" -lt "$$tsize" ]; then \
- if [ "${FETCH_CMD:T}" != "ftp" -a -z "${FETCH_RESUME_ARGS}" ]; then \
- ${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \
- break; \
- else \
- for res_site in $$sites; do \
- if [ -z "${FETCH_OUTPUT_ARGS}" ]; then \
- ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined."; \
- break; \
- fi; \
- ${ECHO_MSG} "=> $$bfile not completed, resuming:"; \
- ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize."; \
- ${ECHO_MSG}; \
- cd ${DISTDIR}; \
- ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} \
- ${FETCH_OUTPUT_ARGS} $${bfile}.temp $${res_site}$${bfile}; \
- if [ $$? -eq 0 ]; then \
- ndsize=`${WC} -c < $$tfile`; \
- if [ "$$tsize" -eq "$$ndsize" ]; then \
- ${MV} $$tfile $$ofile; \
- fi; \
- break; \
- fi; \
- done; \
- fi; \
- elif [ "$$dsize" -gt "$$tsize" ]; then \
- ${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \
- break; \
- fi
-
-#
-# Define the elementary fetch macros.
-#
-_FETCH_FILE= \
- if [ ! -f $$file -a ! -f $$bfile -a ! -h $$bfile ]; then \
- ${ECHO_MSG} "=> $$bfile doesn't seem to exist on this system."; \
- if [ ! -w ${_DISTDIR}/. ]; then \
- ${ECHO_MSG} "=> Can't download to ${_DISTDIR} (permission denied?)."; \
- exit 1; \
- fi; \
- for site in $$sites; do \
- ${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
- if [ -f ${DISTINFO_FILE} ]; then \
- ${AWK} 'NF == 5 && $$1 == "Size" && $$2 == "('$$bfile')" { printf("=> [%s %s]\n", $$4, $$5) }' ${DISTINFO_FILE}; \
- fi; \
- if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
- if [ -n "${FAILOVER_FETCH}" -a -f ${DISTINFO_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
- alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1; exit}' ${DISTINFO_FILE}`; \
- if [ -z "$$alg" ]; then \
- alg=${PATCH_DIGEST_ALGORITHM};\
- fi; \
- CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
- CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')" {print $$4; exit}' <${DISTINFO_FILE}`; \
- if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
- break; \
- else \
- ${ECHO_MSG} "=> Checksum failure - trying next site."; \
- fi; \
- elif [ ! -f ${_DISTDIR}/$$bfile ]; then \
- ${ECHO_MSG} "=> FTP didn't fetch expected file, trying next site." ; \
- else \
- break; \
- fi; \
- fi \
- done; \
- if [ ! -f ${_DISTDIR}/$$bfile ]; then \
- ${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\
- ${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \
- exit 1; \
- fi; \
- fi
-
-_CHECK_DIST_PATH= \
- if [ "X${DIST_PATH}" != "X" ]; then \
- for d in "" ${DIST_PATH:S/:/ /g}; do \
- case $$d in "" | ${DISTDIR}) continue;; esac; \
- if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then \
- ${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \
- ${RM} -f $$bfile; \
- ${LN} -s $$d/${DIST_SUBDIR}/$$bfile $$bfile; \
- break; \
- fi; \
- done; \
- fi
-
-#
-# Set up ORDERED_SITES to work out the exact list of sites for every file,
-# using the dynamic sites script, or sorting according to the master site
-# list or the patterns in MASTER_SORT or MASTER_SORT_REGEX as appropriate.
-# No actual sorting is done until ORDERED_SITES is expanded.
-#
-.if defined(MASTER_SORT) || defined(MASTER_SORT_REGEX)
-MASTER_SORT?=
-MASTER_SORT_REGEX?=
-MASTER_SORT_REGEX+= ${MASTER_SORT:S/./\\./g:C/.*/:\/\/[^\/]*&\//}
-
-MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MASTER_SORT_REGEX:S/\\/\\\\/g}"; }
-. for srt in ${MASTER_SORT_REGEX}
-MASTER_SORT_AWK+= /${srt:C/\//\\\//g}/ { good["${srt:S/\\/\\\\/g}"] = good["${srt:S/\\/\\\\/g}"] " " $$0 ; next; }
-. endfor
-MASTER_SORT_AWK+= { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
-
-SORT_SITES_CMD= ${ECHO} $$unsorted_sites | ${AWK} '${MASTER_SORT_AWK}'
-ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} `${SORT_SITES_CMD:S/\\/\\\\/g:C/"/\"/g}`
-.else
-ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} $$unsorted_sites
-.endif
-
-#
-# Associate each file to fetch with the correct site(s).
-#
-.if defined(DYNAMIC_MASTER_SITES)
-. for fetchfile in ${_ALLFILES}
-SITES_${fetchfile:T:S/=/--/}?= `${SH} ${FILESDIR}/getsite.sh ${fetchfile:T}`
-SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
-. endfor
-.endif
-.if !empty(_DISTFILES)
-. for fetchfile in ${_DISTFILES}
-SITES_${fetchfile:T:S/=/--/}?= ${MASTER_SITES}
-SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
-. endfor
-.endif
-.if !empty(_PATCHFILES)
-. for fetchfile in ${_PATCHFILES}
-SITES_${fetchfile:T:S/=/--/}?= ${PATCH_SITES}
-SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
-. endfor
-.endif
-
-# This code is only called in a batch case, to check for the presence of
-# the distfiles
-.PHONY: batch-check-distfiles
-batch-check-distfiles:
- ${_PKG_SILENT}${_PKG_DEBUG} \
- gotfiles=yes; \
- for file in "" ${_ALLFILES}; do \
- case "$$file" in \
- "") continue ;; \
- *) if [ ! -f ${DISTDIR}/$$file ]; then \
- gotfiles=no; \
- fi ;; \
- esac; \
- done; \
- case "$$gotfiles" in \
- no) ${ERROR_MSG} "This package requires user intervention to download the distfiles"; \
- ${ERROR_MSG} "Please fetch the distfiles manually and place them in"; \
- ${ERROR_MSG} "${DISTDIR}"; \
- [ ! -z "${MASTER_SITES}" ] && \
- ${ERROR_MSG} "The distfiles are available from ${MASTER_SITES}"; \
- [ ! -z "${HOMEPAGE}" ] && \
- ${ERROR_MSG} "See ${HOMEPAGE} for more details"; \
- ${ECHO}; \
- ${TOUCH} ${_INTERACTIVE_COOKIE}; \
- ${FALSE} ;; \
- esac
-
-.PHONY: do-fetch
-.if !target(do-fetch)
-do-fetch:
-. if !defined(ALLOW_VULNERABLE_PACKAGES)
- ${_PKG_SILENT}${_PKG_DEBUG} \
- if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \
- ${PHASE_MSG} "Checking for vulnerabilities in ${PKGNAME}"; \
- vul=`${MAKE} ${MAKEFLAGS} check-vulnerable`; \
- case "$$vul" in \
- "") ;; \
- *) ${ECHO} "$$vul"; \
- ${ECHO} "or define ALLOW_VULNERABLE_PACKAGES if this package is absolutely essential"; \
- ${FALSE} ;; \
- esac; \
- else \
- ${WARNING_MSG} "No ${PKGVULNDIR}/pkg-vulnerabilities file found,"; \
- ${WARNING_MSG} "skipping vulnerability checks. To fix, install"; \
- ${WARNING_MSG} "the pkgsrc/security/audit-packages package and run"; \
- ${WARNING_MSG} "'${LOCALBASE}/sbin/download-vulnerability-list'."; \
- fi
-. endif
-. if !empty(_ALLFILES)
- ${_PKG_SILENT}${_PKG_DEBUG} \
- ${TEST} -d ${_DISTDIR} || ${MKDIR} ${_DISTDIR}
-. if !empty(INTERACTIVE_STAGE:Mfetch) && defined(BATCH)
- ${_PKG_SILENT}${_PKG_DEBUG} \
- ${MAKE} ${MAKEFLAGS} batch-check-distfiles
-. else
-. for fetchfile in ${_ALLFILES}
-. if defined(FETCH_MESSAGE) && !empty(FETCH_MESSAGE)
- ${_PKG_SILENT}${_PKG_DEBUG} set -e; \
- ${TEST} -f ${DISTDIR:Q}/${fetchfile:Q} || { \
- h="==============="; h="$$h$$h$$h$$h$$h"; \
- ${ECHO} "$$h"; ${ECHO} ""; \
- for l in ${FETCH_MESSAGE}; do ${ECHO} "$$l"; done; \
- ${ECHO} ""; ${ECHO} "$$h"; \
- exit 1; \
- }
-. elif defined(_FETCH_MESSAGE)
- ${_PKG_SILENT}${_PKG_DEBUG} \
- file="${fetchfile}"; \
- if [ ! -f ${DISTDIR}/$$file ]; then \
- ${_FETCH_MESSAGE}; \
- fi
-. else
- ${_PKG_SILENT}${_PKG_DEBUG} \
- cd ${_DISTDIR}; \
- file="${fetchfile}"; \
- bfile="${fetchfile:T}"; \
- unsorted_sites="${SITES.${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"; \
- sites="${ORDERED_SITES}"; \
- ${_CHECK_DIST_PATH}; \
- if ${TEST} "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ; then \
- ${_FETCH_FILE}; ${_RESUME_TRANSFER}; \
- else \
- ${_FETCH_FILE}; \
- fi
-. endif # defined(_FETCH_MESSAGE)
-. endfor
-. endif # INTERACTIVE_STAGE == fetch
-. endif # !empty(_ALLFILES)
-.endif
-
-.PHONY: show-distfiles
-.if !target(show-distfiles)
-show-distfiles:
-. if defined(PKG_FAIL_REASON)
- ${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
-. else
- ${_PKG_SILENT}${_PKG_DEBUG} \
- for file in "" ${_CKSUMFILES}; do \
- if [ "X$$file" = "X" ]; then continue; fi; \
- ${ECHO} $$file; \
- done
-. endif
-.endif
-
# acquire-lock, release-lock are .USE macro targets for acquiring and
# release coarse-grained locks.
#
@@ -1482,6 +1149,12 @@ do-test:
# Clean
.include "../../mk/bsd.pkg.clean.mk"
+# Fetch
+.include "${PKGSRCDIR}/mk/fetch/bsd.fetch.mk"
+
+# Extract
+.include "${PKGSRCDIR}/mk/extract/bsd.extract.mk"
+
# Install
.include "${PKGSRCDIR}/mk/install/bsd.install.mk"
@@ -1513,12 +1186,6 @@ release-build-lock: release-lock
# call the necessary targets/scripts.
################################################################
-.PHONY: fetch
-.if !target(fetch)
-fetch:
- @cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-fetch PKG_PHASE=fetch
-.endif
-
.PHONY: tools
.if !target(tools)
tools: patch acquire-tools-lock ${_TOOLS_COOKIE} release-tools-lock
@@ -1636,7 +1303,6 @@ build-cookie:
test-cookie:
${_PKG_SILENT}${_PKG_DEBUG} ${TOUCH} ${TOUCH_FLAGS} ${_TEST_COOKIE}
-.ORDER: pre-fetch do-fetch post-fetch
.ORDER: tools-message tools-vars pre-tools do-tools post-tools tools-cookie
.ORDER: wrapper-message wrapper-vars pre-wrapper do-wrapper post-wrapper wrapper-cookie
.ORDER: configure-message configure-vars pre-configure pre-configure-override do-configure post-configure configure-cookie
@@ -1646,10 +1312,8 @@ test-cookie:
# Please note that the order of the following targets is important, and
# should not be modified (.ORDER is not recognised by make(1) in a serial
# make i.e. without -j n)
-.PHONY: real-fetch
.PHONY: real-tools real-wrapper
.PHONY: real-configure real-build real-test
-real-fetch: pre-fetch do-fetch post-fetch
real-tools: tools-message tools-vars pre-tools do-tools post-tools tools-cookie
real-wrapper: wrapper-message wrapper-vars pre-wrapper do-wrapper post-wrapper wrapper-cookie
real-configure: configure-message configure-vars pre-configure pre-configure-override do-configure post-configure configure-cookie
@@ -1682,7 +1346,7 @@ su-target: .USE
# Empty pre-* and post-* targets
-.for name in fetch tools wrapper configure build test
+.for name in tools wrapper configure build test
. if !target(pre-${name})
pre-${name}:
@@ -1705,139 +1369,6 @@ post-${name}:
lint:
${_PKG_SILENT}${_PKG_DEBUG}${LOCALBASE}/bin/pkglint
-# This is for the use of sites which store distfiles which others may
-# fetch - only fetch the distfile if it is allowed to be
-# re-distributed freely
-.PHONY: mirror-distfiles
-mirror-distfiles:
-.if !defined(NO_SRC_ON_FTP)
- @${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} fetch NO_SKIP=yes
-.endif
-
-
-# Cleaning up
-
-.PHONY: pre-distclean
-.if !target(pre-distclean)
-pre-distclean:
- @${DO_NADA}
-.endif
-
-.PHONY: distclean
-.if !target(distclean)
-distclean: pre-distclean clean
- @${PHASE_MSG} "Dist cleaning for ${PKGNAME}"
- ${_PKG_SILENT}${_PKG_DEBUG}if [ -d ${_DISTDIR} ]; then \
- cd ${_DISTDIR} && \
- ${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES}; \
- if [ "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ]; then \
- ${TEST} -z "${DISTFILES}.temp" || ${RM} -f ${DISTFILES}.temp; \
- fi; \
- ${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES}; \
- fi
-. if defined(DIST_SUBDIR) && exists(DIST_SUBDIR)
- -${_PKG_SILENT}${_PKG_DEBUG}${RMDIR} ${_DISTDIR}
-. endif
- -${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html
-.endif
-
-# Prints out a script to fetch all needed files (no checksumming).
-.PHONY: fetch-list
-.if !target(fetch-list)
-
-fetch-list:
- @${ECHO} '#!/bin/sh'
- @${ECHO} '#'
- @${ECHO} '# This is an auto-generated script, the result of running'
- @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"'
- @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".'
- @${ECHO} '#'
- @${MAKE} ${MAKEFLAGS} fetch-list-recursive
-.endif # !target(fetch-list)
-
-.PHONY: fetch-list-recursive
-.if !target(fetch-list-recursive)
-
-fetch-list-recursive:
- ${_PKG_SILENT}${_PKG_DEBUG} \
- for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \
- (cd ../../$$dir && \
- ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \
- | ${AWK} ' \
- /^[^#]/ { FoundSomething = 1 } \
- /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \
- /^echo/ { gsub(/;[[:space:]]+/, "\n") } \
- { block[line_c++] = $$0 } \
- END { if (FoundSomething) \
- for (line = 0; line < line_c; line++) \
- print block[line] } \
- ') \
- done
-.endif # !target(fetch-list-recursive)
-
-.PHONY: fetch-list-one-pkg
-.if !target(fetch-list-one-pkg)
-
-fetch-list-one-pkg:
-. if !empty(_ALLFILES)
- @${ECHO}
- @${ECHO} '#'
- @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \
- ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...'
-. for fetchfile in ${_ALLFILES}
-. if defined(_FETCH_MESSAGE)
- @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
- ${ECHO}; \
- filesize=`${AWK} ' \
- /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
- ' ${DISTINFO_FILE}` || true; \
- ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \
- ${ECHO} '#'; \
- ${ECHO} ${_FETCH_MESSAGE:Q}; \
- fi)
-. elif defined(DYNAMIC_MASTER_SITES)
- @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
- ${ECHO}; \
- filesize=`${AWK} ' \
- /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
- ' ${DISTINFO_FILE}` || true; \
- ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
- ${ECHO} '#'; \
- ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \
- ${CAT} ${FILESDIR}/getsite.sh; \
- ${ECHO} EOF; \
- ${ECHO} read unsorted_sites; \
- ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \
- ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
- ${ECHO} "${MKDIR} ${_DISTDIR}"; \
- ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
- ${ECHO} 'for site in $$sites; do'; \
- ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
- ${ECHO} ' ${ECHO} ${fetchfile:T} not fetched'; \
- ${ECHO} done; \
- ${ECHO} ')'; \
- fi)
-. else
- @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
- ${ECHO}; \
- filesize=`${AWK} ' \
- /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
- ' ${DISTINFO_FILE}` || true; \
- ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
- ${ECHO} '#'; \
- ${ECHO} 'unsorted_sites="${SITES.${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \
- ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
- ${ECHO} "${MKDIR} ${_DISTDIR}"; \
- ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
- ${ECHO} 'for site in $$sites; do'; \
- ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
- ${ECHO} ' ${ECHO} ${fetchfile:T} not fetched'; \
- ${ECHO} done; \
- fi)
-. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES)
-. endfor
-. endif # !empty(_ALLFILES)
-.endif # !target(fetch-list-one-pkg)
# Checksumming utilities
@@ -2456,14 +1987,13 @@ PKG_ERROR_HANDLER.${_class_}?= { \
#
.for _phase_ in ${ALL_PHASES}
${_MAKEVARS_MK.${_phase_}}: ${WRKDIR}
-. if !empty(PKG_PHASE:M${_phase_})
${_PKG_SILENT}${_PKG_DEBUG}${RM} -f ${.TARGET}.tmp
-. for _var_ in ${MAKEVARS:O:u}
-. if defined(${_var_})
+. for _var_ in ${MAKEVARS:O:u}
+. if defined(${_var_})
${_PKG_SILENT}${_PKG_DEBUG} \
${ECHO} ${_var_}"= "${${_var_}:Q} >> ${.TARGET}.tmp
-. endif
-. endfor
+. endif
+. endfor
${_PKG_SILENT}${_PKG_DEBUG} \
if ${TEST} -f ${.TARGET}.tmp; then \
( ${ECHO} ".if !defined(_MAKEVARS_MK)"; \
@@ -2475,7 +2005,6 @@ ${_MAKEVARS_MK.${_phase_}}: ${WRKDIR}
) > ${.TARGET}; \
${RM} -f ${.TARGET}.tmp; \
fi
-. endif
${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
.endfor
.undef _phase_
diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk
index e8de8101463..f15e31c7fbe 100644
--- a/mk/bsd.prefs.mk
+++ b/mk/bsd.prefs.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.prefs.mk,v 1.222 2006/06/05 17:11:37 joerg Exp $
+# $NetBSD: bsd.prefs.mk,v 1.223 2006/06/06 03:05:48 jlam Exp $
#
# Make file, included to get the site preferences, if any. Should
# only be included by package Makefiles before any .if defined()
@@ -502,7 +502,6 @@ MAKEFLAGS+= _PKGSRCDIR=${_PKGSRCDIR:Q}
.endif
PKGSRCDIR= ${_PKGSRCDIR}
-DISTDIR?= ${PKGSRCDIR}/distfiles
PACKAGES?= ${PKGSRCDIR}/packages
TEMPLATES?= ${PKGSRCDIR}/templates
@@ -559,6 +558,8 @@ PREPEND_PATH+= ${USE_X11:D${X11BASE}/bin} ${LOCALBASE}/bin
.include "${PKGSRCDIR}/mk/flavor/bsd.flavor-vars.mk"
.include "${PKGSRCDIR}/mk/check/bsd.check-vars.mk"
.include "${PKGSRCDIR}/mk/depends/bsd.depends-vars.mk"
+.include "${PKGSRCDIR}/mk/fetch/bsd.fetch-vars.mk"
+.include "${PKGSRCDIR}/mk/extract/bsd.extract-vars.mk"
.include "${PKGSRCDIR}/mk/install/bsd.install-vars.mk"
USE_TOOLS+= awk:pkgsrc cut:pkgsrc echo:pkgsrc pwd:pkgsrc \
diff --git a/mk/extract/bsd.extract-vars.mk b/mk/extract/bsd.extract-vars.mk
new file mode 100644
index 00000000000..3ff08de0e9b
--- /dev/null
+++ b/mk/extract/bsd.extract-vars.mk
@@ -0,0 +1,63 @@
+# $NetBSD: bsd.extract-vars.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+#
+# This Makefile fragment is included to bsd.prefs.mk and defines some
+# variables which must be defined earlier than where bsd.extract.mk
+# is included.
+#
+# The following variables may be set by the package Makefile and
+# specify how extraction happens:
+#
+# EXTRACT_ONLY is a list of distfiles relative to ${_DISTDIR} to
+# extract and defaults to ${DISTFILES}.
+#
+# EXTRACT_SUFX is the suffix for the default distfile to be
+# extracted. The default suffix is ".tar.gz".
+#
+
+EXTRACT_ONLY?= ${DISTFILES}
+EXTRACT_SUFX?= .tar.gz
+
+###
+### Discover which tools we need based on the file extensions of the
+### distfiles.
+###
+_EXTRACT_PATTERNS= ${EXTRACT_ONLY} ${EXTRACT_SUFX}
+
+.if !empty(_EXTRACT_PATTERNS:M*.tar) || \
+ !empty(_EXTRACT_PATTERNS:M*.tar.*) || \
+ !empty(_EXTRACT_PATTERNS:M*.tbz) || \
+ !empty(_EXTRACT_PATTERNS:M*.tbz2) || \
+ !empty(_EXTRACT_PATTERNS:M*.tgz) || \
+ !empty(_EXTRACT_PATTERNS:M*-tar.gz) || \
+ !empty(_EXTRACT_PATTERNS:M*_tar.gz)
+. if !empty(EXTRACT_USING:Mgtar)
+USE_TOOLS+= gtar
+. elif !empty(EXTRACT_USING:Mnbtar)
+USE_TOOLS+= tar
+. else
+USE_TOOLS+= pax
+. endif
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.bz2) || \
+ !empty(_EXTRACT_PATTERNS:M*.tbz) || \
+ !empty(_EXTRACT_PATTERNS:M*.tbz2)
+USE_TOOLS+= bzcat
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.zip)
+USE_TOOLS+= unzip
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.lzh) || \
+ !empty(_EXTRACT_PATTERNS:M*.lha)
+USE_TOOLS+= lha
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.gz) || \
+ !empty(_EXTRACT_PATTERNS:M*.tgz) || \
+ !empty(_EXTRACT_PATTERNS:M*.Z)
+USE_TOOLS+= gzcat
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.zoo)
+USE_TOOLS+= unzoo
+.endif
+.if !empty(_EXTRACT_PATTERNS:M*.rar)
+USE_TOOLS+= unrar
+.endif
diff --git a/mk/extract/bsd.extract.mk b/mk/extract/bsd.extract.mk
new file mode 100644
index 00000000000..3c837c7afbe
--- /dev/null
+++ b/mk/extract/bsd.extract.mk
@@ -0,0 +1,15 @@
+# $NetBSD: bsd.extract.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+#
+# This Makefile fragment is included to bsd.pkg.mk and defines the
+# relevant variables and targets for the "extract" phase.
+#
+# The following are the "public" targets provided by this module:
+#
+# extract
+#
+# The following targets may be overridden in a package Makefile:
+#
+# pre-extract, do-extract, post-extract
+#
+
+.include "${PKGSRCDIR}/mk/extract/extract.mk"
diff --git a/mk/scripts/extract b/mk/extract/extract
index 544d1f2283e..b8590dcb8ad 100755
--- a/mk/scripts/extract
+++ b/mk/extract/extract
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $NetBSD: extract,v 1.21 2006/05/30 23:51:38 wiz Exp $
+# $NetBSD: extract,v 1.1 2006/06/06 03:05:48 jlam Exp $
#
# Copyright (c) 2006 The NetBSD Foundation, Inc.
# All rights reserved.
diff --git a/mk/bsd.pkg.extract.mk b/mk/extract/extract.mk
index 19c393283cf..f4c7aac4947 100644
--- a/mk/bsd.pkg.extract.mk
+++ b/mk/extract/extract.mk
@@ -1,17 +1,8 @@
-# $NetBSD: bsd.pkg.extract.mk,v 1.25 2006/06/05 22:49:44 jlam Exp $
-#
-# This Makefile fragment is included to bsd.pkg.mk and defines the
-# relevant variables and targets for the "extract" phase.
+# $NetBSD: extract.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
#
# The following variables may be set by the package Makefile and
# specify how extraction happens:
#
-# EXTRACT_ONLY is a list of distfiles relative to ${_DISTDIR} to
-# extract and defaults to ${DISTFILES}.
-#
-# EXTRACT_SUFX is the suffix for the default distfile to be
-# extracted. The default suffix is ".tar.gz".
-#
# EXTRACT_CMD is a shell command list that extracts the contents of
# an archive named by the variable ${DOWNLOADED_DISTFILE} to the
# current working directory. The default is ${EXTRACT_CMD_DEFAULT}.
@@ -43,69 +34,97 @@
#
# EXTRACT_CMD= ${TAIL} +25 ${DOWNLOADED_DISTFILE} > foo.pl
#
-# The following targets are defined by bsd.pkg.extract.mk:
-#
-# extract is the target that is invoked by the user to perform
-# extraction.
-#
-# do-extract is the target that causes the actual extraction of
-# the distfiles to occur during the "extract" phase. This target
-# may be overridden in a package Makefile.
-#
-# {pre,post}-extract are the targets that are invoked before and after
-# do-extract, and may be overridden in a package Makefile.
-#
-EXTRACT_ONLY?= ${DISTFILES}
-EXTRACT_SUFX?= .tar.gz
-EXTRACT_USING?= nbtar
-EXTRACT_ELEMENTS?= # empty
+_EXTRACT_COOKIE= ${WRKDIR}/.extract_done
+######################################################################
+### extract (PUBLIC)
+######################################################################
+### extract is a public target to perform extraction.
###
-### Discover which tools we need based on the file extensions of the
-### distfiles.
-###
-_EXTRACT_PATTERNS= ${EXTRACT_ONLY} ${EXTRACT_SUFX}
-
-.if !empty(_EXTRACT_PATTERNS:M*.tar) || \
- !empty(_EXTRACT_PATTERNS:M*.tar.*) || \
- !empty(_EXTRACT_PATTERNS:M*.tbz) || \
- !empty(_EXTRACT_PATTERNS:M*.tbz2) || \
- !empty(_EXTRACT_PATTERNS:M*.tgz) || \
- !empty(_EXTRACT_PATTERNS:M*-tar.gz) || \
- !empty(_EXTRACT_PATTERNS:M*_tar.gz)
-. if !empty(EXTRACT_USING:Mgtar)
-USE_TOOLS+= gtar
-. elif !empty(EXTRACT_USING:Mnbtar)
-USE_TOOLS+= tar
-. else
-USE_TOOLS+= pax
-. endif
-.endif
-.if !empty(_EXTRACT_PATTERNS:M*.bz2) || \
- !empty(_EXTRACT_PATTERNS:M*.tbz) || \
- !empty(_EXTRACT_PATTERNS:M*.tbz2)
-USE_TOOLS+= bzcat
-.endif
-.if !empty(_EXTRACT_PATTERNS:M*.zip)
-USE_TOOLS+= unzip
-.endif
-.if !empty(_EXTRACT_PATTERNS:M*.lzh) || \
- !empty(_EXTRACT_PATTERNS:M*.lha)
-USE_TOOLS+= lha
-.endif
-.if !empty(_EXTRACT_PATTERNS:M*.gz) || \
- !empty(_EXTRACT_PATTERNS:M*.tgz) || \
- !empty(_EXTRACT_PATTERNS:M*.Z)
-USE_TOOLS+= gzcat
+_EXTRACT_TARGETS+= checksum
+_EXTRACT_TARGETS+= ${WRKDIR}
+_EXTRACT_TARGETS+= depends
+_EXTRACT_TARGETS+= acquire-extract-lock
+_EXTRACT_TARGETS+= ${_EXTRACT_COOKIE}
+_EXTRACT_TARGETS+= release-extract-lock
+
+.PHONY: extract
+.if !target(extract)
+extract: ${_EXTRACT_TARGETS}
.endif
-.if !empty(_EXTRACT_PATTERNS:M*.zoo)
-USE_TOOLS+= unzoo
+
+.PHONY: acquire-extract-lock release-extract-lock
+acquire-extract-lock: acquire-lock
+release-extract-lock: release-lock
+
+.if !exists(${_EXTRACT_COOKIE})
+${_EXTRACT_COOKIE}: real-extract
+.else
+${_EXTRACT_COOKIE}:
+ @${DO_NADA}
.endif
-.if !empty(_EXTRACT_PATTERNS:M*.rar)
-USE_TOOLS+= unrar
+
+######################################################################
+### real-extract (PRIVATE)
+######################################################################
+### real-extract is a helper target onto which one can hook all of the
+### targets that do the actual extraction work.
+###
+_REAL_EXTRACT_TARGETS+= extract-check-interactive
+_REAL_EXTRACT_TARGETS+= extract-message
+_REAL_EXTRACT_TARGETS+= extract-vars
+_REAL_EXTRACT_TARGETS+= pre-extract
+_REAL_EXTRACT_TARGETS+= do-extract
+_REAL_EXTRACT_TARGETS+= post-extract
+_REAL_EXTRACT_TARGETS+= extract-cookie
+
+.PHONY: real-extract
+real-extract: ${_REAL_EXTRACT_TARGETS}
+
+.PHONY: extract-message
+extract-message:
+ @${PHASE_MSG} "Extracting for ${PKGNAME}"
+
+######################################################################
+### extract-check-interactive (PRIVATE)
+######################################################################
+### extract-check-interactive checks whether we can do an interactive
+### extraction or not.
+###
+extract-check-interactive:
+.if !empty(INTERACTIVE_STAGE:Mextract) && defined(BATCH)
+ @${ERROR_MSG} "The extract stage of this package requires user interaction"
+ @${ERROR_MSG} "Please extract manually with:"
+ @${ERROR_MSG} " \"cd ${PKGSRCDIR}/${PKGPATH} && ${MAKE} extract\""
+ @${TOUCH} ${_INTERACTIVE_COOKIE}
+ @${FALSE}
+.else
+ @${DO_NADA}
.endif
+######################################################################
+### extract-cookie (PRIVATE)
+######################################################################
+### extract-cookie creates the "extract" cookie file. The contents
+### are the name of the package.
+###
+.PHONY: extract-cookie
+extract-cookie:
+ ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${_EXTRACT_COOKIE:H}
+ ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >> ${_EXTRACT_COOKIE}
+
+######################################################################
+### pre-extract, do-extract, post-extract (PUBLIC, override)
+######################################################################
+### {pre,do,post}-extract are the heart of the package-customizable
+### extract targets, and may be overridden within a package Makefile.
+###
+.PHONY: pre-extract do-extract post-extract
+
+EXTRACT_USING?= nbtar
+EXTRACT_ELEMENTS?= # empty
+
###
### Build the default extraction command
###
@@ -143,7 +162,7 @@ EXTRACT_OPTS+= ${TOOLS_PAX:D -t ${TOOLS_PAX}}
EXTRACT_CMD_DEFAULT= \
${SETENV} ${_EXTRACT_ENV} \
- ${SH} ${.CURDIR}/../../mk/scripts/extract \
+ ${SH} ${PKGSRCDIR}//mk/extract/extract \
${EXTRACT_OPTS} \
${DOWNLOADED_DISTFILE} ${EXTRACT_ELEMENTS}
@@ -151,7 +170,6 @@ EXTRACT_CMD?= ${EXTRACT_CMD_DEFAULT}
DOWNLOADED_DISTFILE= $${extract_file}
-.PHONY: do-extract
.if !target(do-extract)
do-extract: ${WRKDIR}
. for __file__ in ${EXTRACT_ONLY}
@@ -161,55 +179,6 @@ do-extract: ${WRKDIR}
. endfor
.endif
-_EXTRACT_COOKIE= ${WRKDIR}/.extract_done
-
-_EXTRACT_TARGETS+= checksum
-_EXTRACT_TARGETS+= ${WRKDIR}
-_EXTRACT_TARGETS+= depends
-_EXTRACT_TARGETS+= acquire-extract-lock
-_EXTRACT_TARGETS+= ${_EXTRACT_COOKIE}
-_EXTRACT_TARGETS+= release-extract-lock
-
-.ORDER: ${_EXTRACT_TARGETS}
-
-.PHONY: extract
-extract: ${_EXTRACT_TARGETS}
-
-.PHONY: acquire-extract-lock release-extract-lock
-acquire-extract-lock: acquire-lock
-release-extract-lock: release-lock
-
-${_EXTRACT_COOKIE}:
-.if !empty(INTERACTIVE_STAGE:Mextract) && defined(BATCH)
- @${ECHO} "*** The extract stage of this package requires user interaction"
- @${ECHO} "*** Please extract manually with \"cd ${PKGDIR} && ${MAKE} extract\""
- @${TOUCH} ${_INTERACTIVE_COOKIE}
- @${FALSE}
-.else
- ${_PKG_SILENT}${_PKG_DEBUG}cd ${.CURDIR} && ${MAKE} ${MAKEFLAGS} real-extract DEPENDS_TARGET=${DEPENDS_TARGET:Q} PKG_PHASE=extract
-.endif
-
-_REAL_EXTRACT_TARGETS+= extract-message
-_REAL_EXTRACT_TARGETS+= extract-vars
-_REAL_EXTRACT_TARGETS+= pre-extract
-_REAL_EXTRACT_TARGETS+= do-extract
-_REAL_EXTRACT_TARGETS+= post-extract
-_REAL_EXTRACT_TARGETS+= extract-cookie
-
-.ORDER: ${_REAL_EXTRACT_TARGETS}
-
-.PHONY: extract-message
-extract-message:
- @${PHASE_MSG} "Extracting for ${PKGNAME}"
-
-.PHONY: extract-cookie
-extract-cookie:
- ${_PKG_SILENT}${_PKG_DEBUG}${ECHO} ${PKGNAME} >> ${_EXTRACT_COOKIE}
-
-.PHONY: real-extract
-real-extract: ${_REAL_EXTRACT_TARGETS}
-
-.PHONY: pre-extract post-extract
.if !target(pre-extract)
pre-extract:
@${DO_NADA}
diff --git a/mk/fetch/bsd.fetch-vars.mk b/mk/fetch/bsd.fetch-vars.mk
new file mode 100644
index 00000000000..b5b6897d707
--- /dev/null
+++ b/mk/fetch/bsd.fetch-vars.mk
@@ -0,0 +1,22 @@
+# $NetBSD: bsd.fetch-vars.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+#
+# This Makefile fragment is included to bsd.prefs.mk and defines some
+# variables which must be defined earlier than where bsd.fetch.mk
+# is included.
+#
+# The following variables may be set by the user:
+#
+# DISTDIR is the top-level directory into which all original
+# distribution files are fetched.
+#
+# The following variables may be set in a package Makefile:
+#
+# DIST_SUBDIR is the subdirectory of ${DISTDIR} in which the original
+# distribution files for the package are fetched.
+#
+# DISTFILES is the list of distribution files that are fetched.
+#
+
+DISTDIR?= ${PKGSRCDIR}/distfiles
+_DISTDIR= ${DISTDIR}/${DIST_SUBDIR}
+DISTFILES?= ${DISTNAME}${EXTRACT_SUFX}
diff --git a/mk/fetch/bsd.fetch.mk b/mk/fetch/bsd.fetch.mk
new file mode 100644
index 00000000000..e311caea9bc
--- /dev/null
+++ b/mk/fetch/bsd.fetch.mk
@@ -0,0 +1,9 @@
+# $NetBSD: bsd.fetch.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+#
+# This Makefile fragment is included by bsd.pkg.mk and defines the
+# relevant variables and targets for the "fetch" step.
+#
+
+.include "${PKGSRCDIR}/mk/fetch/sites.mk"
+.include "${PKGSRCDIR}/mk/fetch/fetch.mk"
+.include "${PKGSRCDIR}/mk/fetch/distclean.mk"
diff --git a/mk/fetch/distclean.mk b/mk/fetch/distclean.mk
new file mode 100644
index 00000000000..3140e1b286b
--- /dev/null
+++ b/mk/fetch/distclean.mk
@@ -0,0 +1,26 @@
+# $NetBSD: distclean.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+
+.PHONY: pre-distclean
+.if !target(pre-distclean)
+pre-distclean:
+ @${DO_NADA}
+.endif
+
+.PHONY: distclean
+.if !target(distclean)
+distclean: pre-distclean clean
+ @${PHASE_MSG} "Dist cleaning for ${PKGNAME}"
+ ${_PKG_SILENT}${_PKG_DEBUG}if [ -d ${_DISTDIR} ]; then \
+ cd ${_DISTDIR} && \
+ ${TEST} -z "${DISTFILES}" || ${RM} -f ${DISTFILES}; \
+ if [ "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ]; then \
+ ${TEST} -z "${DISTFILES}.temp" || ${RM} -f ${DISTFILES}.temp; \
+ fi; \
+ ${TEST} -z "${PATCHFILES}" || ${RM} -f ${PATCHFILES}; \
+ fi
+. if defined(DIST_SUBDIR)
+ -${_PKG_SILENT}${_PKG_DEBUG} \
+ ${TEST} ! -d ${_DISTDIR} || ${RMDIR} ${_DISTDIR} 2>/dev/null
+. endif
+ ${_PKG_SILENT}${_PKG_DEBUG}${RM} -f README.html
+.endif
diff --git a/mk/fetch/fetch.mk b/mk/fetch/fetch.mk
new file mode 100644
index 00000000000..7f9a0176844
--- /dev/null
+++ b/mk/fetch/fetch.mk
@@ -0,0 +1,453 @@
+# $NetBSD: fetch.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+
+######################################################################
+### fetch (PUBLIC)
+######################################################################
+### fetch is a public target to fetch all of the package distribution
+### files.
+###
+.PHONY: fetch
+.if !target(fetch)
+fetch: pre-fetch do-fetch post-fetch
+.endif
+
+# If this host is behind a filtering firewall, use passive ftp(1)
+FETCH_BEFORE_ARGS+= ${PASSIVE_FETCH:D-p}
+
+_MASTER_SITE_BACKUP= ${MASTER_SITE_BACKUP:=${DIST_SUBDIR}${DIST_SUBDIR:D/}}
+_MASTER_SITE_OVERRIDE= ${MASTER_SITE_OVERRIDE:=${DIST_SUBDIR}${DIST_SUBDIR:D/}}
+
+# Where to put distfiles that don't have any other master site
+MASTER_SITE_LOCAL?= ${MASTER_SITE_BACKUP:=LOCAL_PORTS/}
+
+ALLFILES?= ${DISTFILES} ${PATCHFILES}
+CKSUMFILES?= ${ALLFILES}
+.for __tmp__ in ${IGNOREFILES}
+CKSUMFILES:= ${CKSUMFILES:N${__tmp__}}
+.endfor
+
+# List of all files, with ${DIST_SUBDIR} in front. Used for fetch and checksum.
+.if defined(DIST_SUBDIR)
+_CKSUMFILES?= ${CKSUMFILES:S/^/${DIST_SUBDIR}\//}
+_DISTFILES?= ${DISTFILES:S/^/${DIST_SUBDIR}\//}
+_IGNOREFILES?= ${IGNOREFILES:S/^/${DIST_SUBDIR}\//}
+_PATCHFILES?= ${PATCHFILES:S/^/${DIST_SUBDIR}\//}
+.else
+_CKSUMFILES?= ${CKSUMFILES}
+_DISTFILES?= ${DISTFILES}
+_IGNOREFILES?= ${IGNOREFILES}
+_PATCHFILES?= ${PATCHFILES}
+.endif
+_ALLFILES?= ${_DISTFILES} ${_PATCHFILES}
+
+BUILD_DEFS+= _DISTFILES _PATCHFILES
+
+###
+### _RESUME_TRANSFER:
+###
+### Macro to resume a previous transfer, needs to have defined
+### the following options in mk.conf:
+###
+### PKG_RESUME_TRANSFERS
+### FETCH_RESUME_ARGS (if FETCH_CMD != default)
+### FETCH_OUTPUT_ARGS (if FETCH_CMD != default)
+###
+### For example if you want to use wget (pkgsrc/net/wget):
+###
+### FETCH_CMD=wget
+### FETCH_RESUME_ARGS=-c
+### FETCH_OUTPUT_ARGS=-O
+###
+### How does it work?
+###
+### FETCH_CMD downloads the file and saves it temporally into $$bfile.temp
+### if the checksum match the correct one, $$bfile.temp is renamed to
+### the original name.
+###
+
+_RESUME_TRANSFER= \
+ ofile="${DISTDIR}/${DIST_SUBDIR}/$$bfile"; \
+ tfile="${DISTDIR}/${DIST_SUBDIR}/$$bfile.temp"; \
+ tsize=`${AWK} '/^Size/ && $$2 == '"\"($$file)\""' { print $$4 }' ${DISTINFO_FILE}` || ${TRUE}; \
+ osize=`${WC} -c < $$ofile`; \
+ \
+ case "$$tsize" in \
+ "") ${ECHO_MSG} "No size in distinfo file (${DISTINFO_FILE})"; \
+ break;; \
+ esac; \
+ \
+ if [ "$$osize" -eq "$$tsize" ]; then \
+ if [ -f "$$tfile" ]; then \
+ ${RM} $$tfile; \
+ fi; \
+ need_fetch=no; \
+ elif [ "$$osize" -lt "$$tsize" -a ! -f "$$tfile" ]; then \
+ ${CP} $$ofile $$tfile; \
+ dsize=`${WC} -c < $$tfile`; \
+ need_fetch=yes; \
+ elif [ -f "$$tfile" -a "$$dsize" -gt "$$ossize" ]; then \
+ dsize=`${WC} -c < $$tfile`; \
+ need_fetch=yes; \
+ else \
+ if [ -f "$$tfile" ]; then \
+ dsize=`${WC} -c < $$tfile`; \
+ fi; \
+ need_fetch=yes; \
+ fi; \
+ if [ "$$need_fetch" = "no" ]; then \
+ break; \
+ elif [ -f "$$tfile" -a "$$dsize" -eq "$$tsize" ]; then \
+ ${MV} $$tfile $$ofile; \
+ break; \
+ elif [ -n "$$ftp_proxy" -o -n "$$http_proxy" ]; then \
+ ${ECHO_MSG} "===> Resume is not supported by ftp(1) using http/ftp proxies."; \
+ break; \
+ elif [ "$$need_fetch" = "yes" -a "$$dsize" -lt "$$tsize" ]; then \
+ if [ "${FETCH_CMD:T}" != "ftp" -a -z "${FETCH_RESUME_ARGS}" ]; then \
+ ${ECHO_MSG} "=> Resume transfers are not supported, FETCH_RESUME_ARGS is empty."; \
+ break; \
+ else \
+ for res_site in $$sites; do \
+ if [ -z "${FETCH_OUTPUT_ARGS}" ]; then \
+ ${ECHO_MSG} "=> FETCH_OUTPUT_ARGS has to be defined."; \
+ break; \
+ fi; \
+ ${ECHO_MSG} "=> $$bfile not completed, resuming:"; \
+ ${ECHO_MSG} "=> Downloaded: $$dsize Total: $$tsize."; \
+ ${ECHO_MSG}; \
+ cd ${DISTDIR}; \
+ ${FETCH_CMD} ${FETCH_BEFORE_ARGS} ${FETCH_RESUME_ARGS} \
+ ${FETCH_OUTPUT_ARGS} $${bfile}.temp $${res_site}$${bfile}; \
+ if [ $$? -eq 0 ]; then \
+ ndsize=`${WC} -c < $$tfile`; \
+ if [ "$$tsize" -eq "$$ndsize" ]; then \
+ ${MV} $$tfile $$ofile; \
+ fi; \
+ break; \
+ fi; \
+ done; \
+ fi; \
+ elif [ "$$dsize" -gt "$$tsize" ]; then \
+ ${ECHO_MSG} "==> Downloaded file larger than the recorded size."; \
+ break; \
+ fi
+
+#
+# Define the elementary fetch macros.
+#
+_FETCH_FILE= \
+ if [ ! -f $$file -a ! -f $$bfile -a ! -h $$bfile ]; then \
+ ${ECHO_MSG} "=> $$bfile doesn't seem to exist on this system."; \
+ if [ ! -w ${_DISTDIR}/. ]; then \
+ ${ECHO_MSG} "=> Can't download to ${_DISTDIR} (permission denied?)."; \
+ exit 1; \
+ fi; \
+ for site in $$sites; do \
+ ${ECHO_MSG} "=> Attempting to fetch $$bfile from $${site}."; \
+ if [ -f ${DISTINFO_FILE} ]; then \
+ ${AWK} 'NF == 5 && $$1 == "Size" && $$2 == "('$$bfile')" { printf("=> [%s %s]\n", $$4, $$5) }' ${DISTINFO_FILE}; \
+ fi; \
+ if ${FETCH_CMD} ${FETCH_BEFORE_ARGS} $${site}$${bfile} ${FETCH_AFTER_ARGS}; then \
+ if [ -n "${FAILOVER_FETCH}" -a -f ${DISTINFO_FILE} -a -f ${_DISTDIR}/$$bfile ]; then \
+ alg=`${AWK} 'NF == 4 && $$2 == "('$$file')" && $$3 == "=" {print $$1; exit}' ${DISTINFO_FILE}`; \
+ if [ -z "$$alg" ]; then \
+ alg=${PATCH_DIGEST_ALGORITHM};\
+ fi; \
+ CKSUM=`${DIGEST} $$alg < ${_DISTDIR}/$$bfile`; \
+ CKSUM2=`${AWK} '$$1 == "'$$alg'" && $$2 == "('$$file')" {print $$4; exit}' <${DISTINFO_FILE}`; \
+ if [ "$$CKSUM" = "$$CKSUM2" -o "$$CKSUM2" = "IGNORE" ]; then \
+ break; \
+ else \
+ ${ECHO_MSG} "=> Checksum failure - trying next site."; \
+ fi; \
+ elif [ ! -f ${_DISTDIR}/$$bfile ]; then \
+ ${ECHO_MSG} "=> FTP didn't fetch expected file, trying next site." ; \
+ else \
+ break; \
+ fi; \
+ fi \
+ done; \
+ if [ ! -f ${_DISTDIR}/$$bfile ]; then \
+ ${ECHO_MSG} "=> Couldn't fetch $$bfile - please try to retrieve this";\
+ ${ECHO_MSG} "=> file manually into ${_DISTDIR} and try again."; \
+ exit 1; \
+ fi; \
+ fi
+
+_CHECK_DIST_PATH= \
+ if [ "X${DIST_PATH}" != "X" ]; then \
+ for d in "" ${DIST_PATH:S/:/ /g}; do \
+ case $$d in "" | ${DISTDIR}) continue;; esac; \
+ if [ -f $$d/${DIST_SUBDIR}/$$bfile ]; then \
+ ${ECHO} "Using $$d/${DIST_SUBDIR}/$$bfile"; \
+ ${RM} -f $$bfile; \
+ ${LN} -s $$d/${DIST_SUBDIR}/$$bfile $$bfile; \
+ break; \
+ fi; \
+ done; \
+ fi
+
+#
+# Set up ORDERED_SITES to work out the exact list of sites for every file,
+# using the dynamic sites script, or sorting according to the master site
+# list or the patterns in MASTER_SORT or MASTER_SORT_REGEX as appropriate.
+# No actual sorting is done until ORDERED_SITES is expanded.
+#
+.if defined(MASTER_SORT) || defined(MASTER_SORT_REGEX)
+MASTER_SORT?=
+MASTER_SORT_REGEX?=
+MASTER_SORT_REGEX+= ${MASTER_SORT:S/./\\./g:C/.*/:\/\/[^\/]*&\//}
+
+MASTER_SORT_AWK= BEGIN { RS = " "; ORS = " "; IGNORECASE = 1 ; gl = "${MASTER_SORT_REGEX:S/\\/\\\\/g}"; }
+. for srt in ${MASTER_SORT_REGEX}
+MASTER_SORT_AWK+= /${srt:C/\//\\\//g}/ { good["${srt:S/\\/\\\\/g}"] = good["${srt:S/\\/\\\\/g}"] " " $$0 ; next; }
+. endfor
+MASTER_SORT_AWK+= { rest = rest " " $$0; } END { n=split(gl, gla); for(i=1;i<=n;i++) { print good[gla[i]]; } print rest; }
+
+SORT_SITES_CMD= ${ECHO} $$unsorted_sites | ${AWK} '${MASTER_SORT_AWK}'
+ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} `${SORT_SITES_CMD:S/\\/\\\\/g:C/"/\"/g}`
+.else
+ORDERED_SITES= ${_MASTER_SITE_OVERRIDE} $$unsorted_sites
+.endif
+
+#
+# Associate each file to fetch with the correct site(s).
+#
+.if defined(DYNAMIC_MASTER_SITES)
+. for fetchfile in ${_ALLFILES}
+SITES_${fetchfile:T:S/=/--/}?= `${SH} ${FILESDIR}/getsite.sh ${fetchfile:T}`
+SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
+. endfor
+.endif
+.if !empty(_DISTFILES)
+. for fetchfile in ${_DISTFILES}
+SITES_${fetchfile:T:S/=/--/}?= ${MASTER_SITES}
+SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
+. endfor
+.endif
+.if !empty(_PATCHFILES)
+. for fetchfile in ${_PATCHFILES}
+SITES_${fetchfile:T:S/=/--/}?= ${PATCH_SITES}
+SITES.${fetchfile:T:S/=/--/}?= ${SITES_${fetchfile:T:S/=/--/}}
+. endfor
+.endif
+
+# This code is only called in a batch case, to check for the presence of
+# the distfiles
+.PHONY: batch-check-distfiles
+batch-check-distfiles:
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ gotfiles=yes; \
+ for file in "" ${_ALLFILES}; do \
+ case "$$file" in \
+ "") continue ;; \
+ *) if [ ! -f ${DISTDIR}/$$file ]; then \
+ gotfiles=no; \
+ fi ;; \
+ esac; \
+ done; \
+ case "$$gotfiles" in \
+ no) ${ECHO} "*** This package requires user intervention to download the distfiles"; \
+ ${ECHO} "*** Please fetch the distfiles manually and place them in"; \
+ ${ECHO} "*** ${DISTDIR}"; \
+ [ ! -z "${MASTER_SITES}" ] && \
+ ${ECHO} "*** The distfiles are available from ${MASTER_SITES}"; \
+ [ ! -z "${HOMEPAGE}" ] && \
+ ${ECHO} "*** See ${HOMEPAGE} for more details"; \
+ ${ECHO}; \
+ ${TOUCH} ${_INTERACTIVE_COOKIE}; \
+ ${FALSE} ;; \
+ esac
+
+.PHONY: do-fetch
+.if !target(do-fetch)
+do-fetch:
+. if !defined(ALLOW_VULNERABLE_PACKAGES)
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ if [ -f ${PKGVULNDIR}/pkg-vulnerabilities ]; then \
+ ${PHASE_MSG} "Checking for vulnerabilities in ${PKGNAME}"; \
+ vul=`${MAKE} ${MAKEFLAGS} check-vulnerable`; \
+ case "$$vul" in \
+ "") ;; \
+ *) ${ECHO} "$$vul"; \
+ ${ECHO} "or define ALLOW_VULNERABLE_PACKAGES if this package is absolutely essential"; \
+ ${FALSE} ;; \
+ esac; \
+ else \
+ ${WARNING_MSG} "No ${PKGVULNDIR}/pkg-vulnerabilities file found,"; \
+ ${WARNING_MSG} "skipping vulnerability checks. To fix, install"; \
+ ${WARNING_MSG} "the pkgsrc/security/audit-packages package and run"; \
+ ${WARNING_MSG} "\`\`${LOCALBASE}/sbin/download-vulnerability-list''."; \
+ fi
+. endif
+. if !empty(_ALLFILES)
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ ${TEST} -d ${_DISTDIR} || ${MKDIR} ${_DISTDIR}
+. if !empty(INTERACTIVE_STAGE:Mfetch) && defined(BATCH)
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ ${MAKE} ${MAKEFLAGS} batch-check-distfiles
+. else
+. for fetchfile in ${_ALLFILES}
+. if defined(FETCH_MESSAGE) && !empty(FETCH_MESSAGE)
+ ${_PKG_SILENT}${_PKG_DEBUG} set -e; \
+ ${TEST} -f ${DISTDIR:Q}/${fetchfile:Q} || { \
+ h="==============="; h="$$h$$h$$h$$h$$h"; \
+ ${ECHO} "$$h"; ${ECHO} ""; \
+ for l in ${FETCH_MESSAGE}; do ${ECHO} "$$l"; done; \
+ ${ECHO} ""; ${ECHO} "$$h"; \
+ exit 1; \
+ }
+. elif defined(_FETCH_MESSAGE)
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ file="${fetchfile}"; \
+ if [ ! -f ${DISTDIR}/$$file ]; then \
+ ${_FETCH_MESSAGE}; \
+ fi
+. else
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ cd ${_DISTDIR}; \
+ file="${fetchfile}"; \
+ bfile="${fetchfile:T}"; \
+ unsorted_sites="${SITES.${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"; \
+ sites="${ORDERED_SITES}"; \
+ ${_CHECK_DIST_PATH}; \
+ if ${TEST} "${PKG_RESUME_TRANSFERS:M[Yy][Ee][Ss]}" ; then \
+ ${_FETCH_FILE}; ${_RESUME_TRANSFER}; \
+ else \
+ ${_FETCH_FILE}; \
+ fi
+. endif # defined(_FETCH_MESSAGE)
+. endfor
+. endif # INTERACTIVE_STAGE == fetch
+. endif # !empty(_ALLFILES)
+.endif
+
+.PHONY: show-distfiles
+.if !target(show-distfiles)
+show-distfiles:
+. if defined(PKG_FAIL_REASON)
+ ${_PKG_SILENT}${_PKG_DEBUG}${DO_NADA}
+. else
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ for file in "" ${_CKSUMFILES}; do \
+ if [ "X$$file" = "X" ]; then continue; fi; \
+ ${ECHO} $$file; \
+ done
+. endif
+.endif
+
+.if !target(pre-fetch)
+pre-fetch:
+ @${DO_NADA}
+.endif
+.if !target(post-fetch)
+post-fetch:
+ @${DO_NADA}
+.endif
+
+# This is for the use of sites which store distfiles which others may
+# fetch - only fetch the distfile if it is allowed to be
+# re-distributed freely
+.PHONY: mirror-distfiles
+mirror-distfiles:
+.if !defined(NO_SRC_ON_FTP)
+ @${_PKG_SILENT}${_PKG_DEBUG}${MAKE} ${MAKEFLAGS} fetch NO_SKIP=yes
+.endif
+
+# Prints out a script to fetch all needed files (no checksumming).
+.PHONY: fetch-list
+.if !target(fetch-list)
+
+fetch-list:
+ @${ECHO} '#!/bin/sh'
+ @${ECHO} '#'
+ @${ECHO} '# This is an auto-generated script, the result of running'
+ @${ECHO} '# `${MAKE} fetch-list'"'"' in directory "'"`${PWD_CMD}`"'"'
+ @${ECHO} '# on host "'"`${UNAME} -n`"'" on "'"`date`"'".'
+ @${ECHO} '#'
+ @${MAKE} ${MAKEFLAGS} fetch-list-recursive
+.endif # !target(fetch-list)
+
+.PHONY: fetch-list-recursive
+.if !target(fetch-list-recursive)
+
+fetch-list-recursive:
+ ${_PKG_SILENT}${_PKG_DEBUG} \
+ for dir in `${MAKE} ${MAKEFLAGS} show-all-depends-dirs`; do \
+ (cd ../../$$dir && \
+ ${MAKE} ${MAKEFLAGS} fetch-list-one-pkg \
+ | ${AWK} ' \
+ /^[^#]/ { FoundSomething = 1 } \
+ /^unsorted/ { gsub(/[[:space:]]+/, " \\\n\t") } \
+ /^echo/ { gsub(/;[[:space:]]+/, "\n") } \
+ { block[line_c++] = $$0 } \
+ END { if (FoundSomething) \
+ for (line = 0; line < line_c; line++) \
+ print block[line] } \
+ ') \
+ done
+.endif # !target(fetch-list-recursive)
+
+.PHONY: fetch-list-one-pkg
+.if !target(fetch-list-one-pkg)
+
+fetch-list-one-pkg:
+. if !empty(_ALLFILES)
+ @${ECHO}
+ @${ECHO} '#'
+ @location=`${PWD_CMD} | ${AWK} -F / '{ print $$(NF-1) "/" $$NF }'`; \
+ ${ECHO} '# Need additional files for ${PKGNAME} ('$$location')...'
+. for fetchfile in ${_ALLFILES}
+. if defined(_FETCH_MESSAGE)
+ @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
+ ${ECHO}; \
+ filesize=`${AWK} ' \
+ /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
+ ' ${DISTINFO_FILE}` || true; \
+ ${ECHO} '# Prompt user to get ${fetchfile} ('$${filesize-???}' bytes) manually:'; \
+ ${ECHO} '#'; \
+ ${ECHO} ${_FETCH_MESSAGE:Q}; \
+ fi)
+. elif defined(DYNAMIC_MASTER_SITES)
+ @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
+ ${ECHO}; \
+ filesize=`${AWK} ' \
+ /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
+ ' ${DISTINFO_FILE}` || true; \
+ ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
+ ${ECHO} '#'; \
+ ${ECHO} '${SH} -s ${fetchfile:T} <<"EOF" |('; \
+ ${CAT} ${FILESDIR}/getsite.sh; \
+ ${ECHO} EOF; \
+ ${ECHO} read unsorted_sites; \
+ ${ECHO} 'unsorted_sites="$${unsorted_sites} ${_MASTER_SITE_BACKUP}"'; \
+ ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
+ ${ECHO} "${MKDIR} ${_DISTDIR}"; \
+ ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
+ ${ECHO} 'for site in $$sites; do'; \
+ ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
+ ${ECHO} ' ${ECHO} ${fetchfile:T} not fetched'; \
+ ${ECHO} done; \
+ ${ECHO} ')'; \
+ fi)
+. else
+ @(if [ ! -f ${_DISTDIR}/${fetchfile:T} ]; then \
+ ${ECHO}; \
+ filesize=`${AWK} ' \
+ /^Size/ && $$2 == "(${fetchfile})" { print $$4 } \
+ ' ${DISTINFO_FILE}` || true; \
+ ${ECHO} '# Fetch ${fetchfile} ('$${filesize-???}' bytes):'; \
+ ${ECHO} '#'; \
+ ${ECHO} 'unsorted_sites="${SITES.${fetchfile:T:S/=/--/}} ${_MASTER_SITE_BACKUP}"'; \
+ ${ECHO} sites='"'${ORDERED_SITES:Q}'"'; \
+ ${ECHO} "${MKDIR} ${_DISTDIR}"; \
+ ${ECHO} 'cd ${_DISTDIR} && [ -f ${fetchfile} -o -f ${fetchfile:T} ] ||'; \
+ ${ECHO} 'for site in $$sites; do'; \
+ ${ECHO} ' ${FETCH_CMD} ${FETCH_BEFORE_ARGS} "$${site}${fetchfile:T}" ${FETCH_AFTER_ARGS} && break ||'; \
+ ${ECHO} ' ${ECHO} ${fetchfile:T} not fetched'; \
+ ${ECHO} done; \
+ fi)
+. endif # defined(_FETCH_MESSAGE) || defined(DYNAMIC_MASTER_SITES)
+. endfor
+. endif # !empty(_ALLFILES)
+.endif # !target(fetch-list-one-pkg)
diff --git a/mk/bsd.sites.mk b/mk/fetch/sites.mk
index 563e051b140..8ee4cb604a3 100644
--- a/mk/bsd.sites.mk
+++ b/mk/fetch/sites.mk
@@ -1,9 +1,8 @@
-# $NetBSD: bsd.sites.mk,v 1.63 2006/05/19 02:21:24 perry Exp $
+# $NetBSD: sites.mk,v 1.1 2006/06/06 03:05:48 jlam Exp $
+#
+# This Makefile fragment defines read-only MASTER_SITE_* variables
+# representing some well-known master distribution sites for software.
#
-# Default MASTER_SITES
-
-.if !defined(BSD_SITES_MK)
-BSD_SITES_MK= 1
MASTER_SITE_XCONTRIB+= \
ftp://ftp.gwdg.de/pub/x11/x.org/contrib/ \
@@ -397,5 +396,3 @@ MASTER_SITE_BACKUP?= \
ftp://ftp.NetBSD.org/pub/NetBSD/packages/distfiles/ \
http://ftp.NetBSD.org/pub/NetBSD/packages/distfiles/ \
ftp://ftp.FreeBSD.org/pub/FreeBSD/distfiles/
-
-.endif # BSD_SITES_MK