summaryrefslogtreecommitdiff
path: root/mk/fetch.mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk/fetch.mk')
-rw-r--r--mk/fetch.mk80
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))))