root/trunk/freewrt/mk/fetch.mk

Revision 3818, 2.2 kB (checked in by tg, 1 month ago)

prefix paxmirabilis tools, WFM

Line 
1 # $FreeWRT$
2 #-
3 # This file is part of the FreeWRT project. FreeWRT is copyrighted
4 # material, please see the LICENCE file in the top-level directory
5 # or at http://www.freewrt.org/licence for details.
6 #-
7
8 ifneq ($(strip ${DIST_SUBDIR}),)
9 FULLDISTDIR?=           ${DISTDIR}/${DIST_SUBDIR}
10 else
11 FULLDISTDIR?=           ${DISTDIR}
12 endif
13
14 FULLDISTFILES=          $(patsubst %,${FULLDISTDIR}/%,${DISTFILES})
15
16 FETCH_STYLE?=           auto
17 #pre-fetch:
18 do-fetch:
19 #post-fetch:
20 fetch:
21 #       @${MAKE} pre-fetch
22 ifneq ($(filter auto,${FETCH_STYLE}),)
23         ${MAKE} ${FULLDISTFILES}
24 else
25         ${MAKE} do-fetch
26 endif
27 #       @${MAKE} post-fetch
28
29 refetch:
30         -rm -f ${FULLDISTFILES}
31         ${MAKE} fetch
32
33 # XXX for now
34 _CHECKSUM_COOKIE?=      ${WRKDIR}/.checksum_done
35 checksum: ${_CHECKSUM_COOKIE}
36 ifeq ($(strip ${NO_CHECKSUM}),)
37 ${_CHECKSUM_COOKIE}: ${FULLDISTFILES}
38         rm -rf ${WRKDIR}
39         @OK=n; \
40         (md5sum ${FULLDISTFILES}; echo exit) | while read sum name; do \
41                 if [[ $$sum = exit ]]; then \
42                         [[ $$OK = n ]] && echo >&2 "==> No distfile found!" || :; \
43                         [[ $$OK = 1 ]] || exit 1; \
44                         break; \
45                 fi; \
46                 if [[ $$sum = "$(strip ${PKG_MD5SUM})" ]]; then \
47                         echo >&2 "==> Checksum ok for $${name##*/} (MD5)"; \
48                         [[ $$OK = 0 ]] || OK=1; \
49                         continue; \
50                 fi; \
51                 echo >&2 "==> Checksum mismatch for $${name##*/} (MD5)"; \
52                 echo >&2 ":---> should be '$(strip ${PKG_MD5SUM})'"; \
53                 echo >&2 ":---> really is '$$sum'"; \
54                 OK=0; \
55         done
56         mkdir -p ${WRKDIR}
57         touch ${_CHECKSUM_COOKIE}
58 endif
59
60 # GNU make's poor excuse for loops
61 define FETCH_template
62 $(1):
63         @fullname='$(1)'; \
64         subname=$$$${fullname##$${DISTDIR}/}; \
65         filename=$$$${fullname##*/}; \
66         i='$${LOCAL_DISTDIR}'; \
67         if [[ -n $$$$i && -e $$$$i/$$$$subname ]]; then \
68                 cd "$$$$i"; \
69                 echo mirpax -rw "$$$$subname" '$${DISTDIR}/'; \
70                 exec mirpax -rw "$$$$subname" '$${DISTDIR}/'; \
71         fi; \
72         mkdir -p "$$$${fullname%%/$$$$filename}"; \
73         cd "$$$${fullname%%/$$$$filename}"; \
74         for site in $${MASTER_SITES} $${MASTER_SITE_BACKUP}; do \
75                 echo "==> Attempting to fetch $$$$subname from $$$$site"; \
76                 : echo "$${FETCH_CMD} $$$$site$$$$filename"; \
77                 rm -f "$$$$filename"; \
78                 if $${FETCH_CMD} $$$$site$$$$filename; then \
79                         : check the size here; \
80                         [[ ! -e $$$$filename ]] || exit 0; \
81                 fi; \
82         done; \
83         exit 1
84 endef
85
86 $(foreach distfile,${FULLDISTFILES},$(eval $(call FETCH_template,$(distfile))))
Note: See TracBrowser for help on using the browser.