diff options
Diffstat (limited to 'mk/fetch.mk')
| -rw-r--r-- | mk/fetch.mk | 80 |
1 files changed, 61 insertions, 19 deletions
diff --git a/mk/fetch.mk b/mk/fetch.mk index a2590d467..bc6838256 100644 --- a/mk/fetch.mk +++ b/mk/fetch.mk @@ -2,39 +2,36 @@ # material, please see the LICENCE file in the top-level directory. ifneq ($(strip ${DIST_SUBDIR}),) -FULLDISTDIR?= ${DISTDIR}/${DIST_SUBDIR} +FULLDISTDIR?= ${DL_DIR}/${DIST_SUBDIR} else -FULLDISTDIR?= ${DISTDIR} +FULLDISTDIR?= ${DL_DIR} endif FULLDISTFILES= $(patsubst %,${FULLDISTDIR}/%,${DISTFILES}) FETCH_STYLE?= auto -#pre-fetch: do-fetch: -#post-fetch: fetch: -# @${MAKE} pre-fetch ifneq ($(filter auto,${FETCH_STYLE}),) ${MAKE} ${FULLDISTFILES} else ${MAKE} do-fetch endif -# @${MAKE} post-fetch refetch: -rm -f ${FULLDISTFILES} ${MAKE} fetch -# XXX for now _CHECKSUM_COOKIE?= ${WRKDIR}/.checksum_done checksum: ${_CHECKSUM_COOKIE} -ifeq ($(strip ${NO_CHECKSUM}),) +ifeq ($(strip ${PKG_NOCHECKSUM}),) ${_CHECKSUM_COOKIE}: ${FULLDISTFILES} -rm -rf ${WRKDIR} - @OK=n; \ - allsums="$(strip ${PKG_MD5SUM})"; \ - (md5sum ${FULLDISTFILES}; echo exit) | while read sum name; do \ +ifneq ($(ADK_DISABLE_CHECKSUM),y) + @if [ ! -e $(firstword ${FULLDISTFILES}).nohash ]; then \ + OK=n; \ + allsums="$(strip ${PKG_HASH})"; \ + ($${SHA256} ${FULLDISTFILES}; echo exit) | while read sum name; do \ if [[ $$sum = exit ]]; then \ [[ $$OK = n ]] && echo >&2 "==> No distfile found!" || :; \ [[ $$OK = 1 ]] || exit 1; \ @@ -46,11 +43,13 @@ ${_CHECKSUM_COOKIE}: ${FULLDISTFILES} [[ $$OK = 0 ]] || OK=1; \ continue; \ fi; \ - echo >&2 "==> Checksum mismatch for $${name##*/} (MD5)"; \ + echo >&2 "==> Checksum mismatch for $${name##*/} (SHA256)"; \ echo >&2 ":---> should be '$$cursum'"; \ echo >&2 ":---> really is '$$sum'"; \ OK=0; \ - done + done; \ + fi +endif mkdir -p ${WRKDIR} touch ${_CHECKSUM_COOKIE} endif @@ -62,15 +61,58 @@ $(1): filename=$$$${fullname##*/}; \ mkdir -p "$$$${fullname%%/$$$$filename}"; \ cd "$$$${fullname%%/$$$$filename}"; \ - for site in $${PKG_SITES} $${MASTER_SITE_BACKUP}; do \ - : echo "$${FETCH_CMD} $$$$site$$$$filename"; \ - rm -f "$$$$filename"; \ - if $${FETCH_CMD} $$$$site$$$$filename; then \ + for url in "${PKG_SITES}"; do case $$$$url in \ + file://*|git://*|*.git) \ + echo "Trying to downloading from backup site first"; \ + if $${FETCHCMD} $$$$filename $${MASTER_SITE_BACKUP}/$$$$filename $(DL_TRACE); then \ + touch $$$$filename.nohash; \ : check the size here; \ [[ ! -e $$$$filename ]] || exit 0; \ fi; \ - done; \ - exit 1 + rm -rf $${PKG_NAME}-$${PKG_VERSION}; \ + if [ ! -z "$${PKG_GIT}" ]; then \ + echo "Using git ${PKG_GIT}: $${PKG_VERSION}" $(DL_TRACE); \ + case "$${PKG_GIT}" in \ + tag|branch) \ + git clone --progress --depth 1 --branch $${PKG_VERSION} $${PKG_SITES} $${PKG_NAME}-$${PKG_VERSION} $(DL_TRACE); \ + if [ $$$$? -ne 0 ]; then echo "git clone error"; exit 1; fi; \ + ;; \ + hash) \ + git clone --progress $${PKG_SITES} $${PKG_NAME}-$${PKG_VERSION} $(DL_TRACE); \ + if [ $$$$? -ne 0 ]; then echo "git clone error"; exit 1; fi; \ + (cd $${PKG_NAME}-$${PKG_VERSION}; git checkout $${PKG_VERSION}) $(DL_TRACE); \ + if [ $$$$? -ne 0 ]; then echo "git checkout error"; exit 1; fi; \ + ;; \ + esac ;\ + else \ + git clone --progress --depth 1 $${PKG_SITES} $${PKG_NAME}-$${PKG_VERSION} $(DL_TRACE); \ + if [ $$$$? -ne 0 ]; then echo "git clone error"; exit 1; fi; \ + fi; \ + if [ ! -z "$${PKG_GIT_SUBMODULE}" ]; then \ + (cd $${PKG_NAME}-$${PKG_VERSION}; git submodule update --init --recursive) $(DL_TRACE); \ + fi; \ + rm -rf $${PKG_NAME}-$${PKG_VERSION}/.git; \ + PATH='$(HOST_PATH)' tar czf $${PKG_NAME}-$${PKG_VERSION}.tar.gz $${PKG_NAME}-$${PKG_VERSION}; \ + touch $$$${filename}.nohash; \ + rm -rf $${PKG_NAME}-$${PKG_VERSION}; \ + : check the size here; \ + [[ ! -e $$$$filename ]] || exit 0; \ + ;; \ + http://*|https://*|ftp://*) \ + for site in $${PKG_SITES} $${MASTER_SITE_BACKUP}; do \ + echo "$${FETCHCMD} $$$$site$$$$filename" $(DL_TRACE); \ + rm -f "$$$$filename"; \ + if $${FETCHCMD} $$$$filename $$$$site$$$$filename $(DL_TRACE); then \ + : check the size here; \ + [[ ! -e $$$$filename ]] || exit 0; \ + fi; \ + done; \ + ;; \ + *) \ + echo url schema not known; \ + false ;; \ + esac; \ + done endef $(foreach distfile,${FULLDISTFILES},$(eval $(call FETCH_template,$(distfile)))) |
