# 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]#