rendered paste body# Macro to generate download-foo rule to download and unpack a package
# FIXME - This is horrid
dest=.
download_rule= \
download-$(strip $(1)) : ; \
@what=$(strip $(1)) && suffix=$(strip $(2)) \
&& url=$(strip $(3)) && sub=$(strip $(4)) \
&& [ -d $$$$what ] \
|| { [ -n "$$$$sub" ] || sub=. \
&& temp=`mktemp /var/tmp/dl.XXXXXX` \
&& wget --passive-ftp --timeout 30 -O $$$$temp \
$$$$url$$$$what.$$$$suffix \
&& case $$$$suffix in \
*.gz|tgz) prog="gzip -d -c" ;; \
*.bz2) prog="bzcat -c" ;; \
*) prog=cat ;; \
esac \
&& { $$$$prog $$$$temp | tar -C $(dest)/$$$$sub -xvf - ; } \
&& { ["$$$$sub" == .] || ln -nsf "$$$$sub" "$$$$what" ; } \
&& { [ "$$$$sub" != . ] || [ "$(dest)" == . ] \
|| ln -sf $(dest)/$$$$what . ; } \
&& if [ "$(keep-archives)" == "1" ] ; then \
mv -f $$$$temp /var/tmp/$$$$what.$$$$suffix; \
else rm $$$$temp ; \
fi \
}
Output from 'gmake download':
[root@volund /usr/local/src/unattended-4.7/linuxboot]# gmake download
--2008-02-20 12:21:39-- http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
Resolving ftp.gnu.org... 140.186.70.20
Connecting to ftp.gnu.org|140.186.70.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2529838 (2.4M) [application/x-tar]
Saving to: `/var/tmp/dl.dcwVfL'
100%[====================================================================================================>] 2,529,838 670K/s in 3.9s
2008-02-20 12:21:43 (630 KB/s) - `/var/tmp/dl.dcwVfL' saved [2529838/2529838]
x bash-3.2/
...decompress bash *snip* ...
x bash-3.2/pathnames.h.in
[: .: unexpected operator
ln: bash-3.2/.: Operation not permitted
gmake: *** [download-bash-3.2] Error 1
[root@volund /usr/local/src/unattended-4.7/linuxboot]#