Tack #1
Write script to download and patch FreeBSD sources.
#!/bin/bash function getfiles () { for fname in $FILES ; do echo "GETTING ----- $fname -----" case ${fname##*.} in bz2) echo "GETTING ----- $fname ----- using bunzip " curl ftp://ftp2.freebsd.org/pub/FreeBSD/distfiles/$fname |bunzip2 -dc|tar -xf - ;; gz|tgz) echo "GETTING ----- $fname ----- using gunzip " curl ftp://ftp2.freebsd.org/pub/FreeBSD/distfiles/$fname |gzip -dc|tar -xf - ;; esac done } function patchfiles () { PORTNAME=`cat $port/Makefile |grep ^PORTNAME|cut -f2` PORTVERSION=`cat $port/Makefile |grep ^PORTVERSION|cut -f2` ocd=`pwd` cd $PORTNAME-$PORTVERSION* echo "-------- PATCHING HERE `pwd` ------" for p in $ocd/$port/files/patch* ; do patch -p0 -u <$p done cd $ocd } function makeit () { PREFIX=/usr/local LOCALBASE=/usr/local CONFIGURE_ARGS=`cat $port/Makefile |grep ^CONFIGURE_ARGS|sed 's/^CONFIGURE_ARGS=t//'` MAKE_ARGS=`cat $port/Makefile |grep ^MAKE_ARGS|sed 's/^MAKE_ARGS=t//'` PORTNAME=`cat $port/Makefile |grep ^PORTNAME|cut -f2` PORTVERSION=`cat $port/Makefile |grep ^PORTVERSION|cut -f2` ocd=`pwd` cd $PORTNAME-$PORTVERSION* echo "-------- CONFIGURING HERE `pwd` ------" echo "$CONFIGURE_ENV ./configure $CONFIGURE_ARGS " export `cat $port/Makefile |grep ^CONFIGURE_ENV|sed 's/t/ /g'|sed 's/^CONFIGURE_ENV=//'` ./configure $CONFIGURE_ARGS >config.out echo "$MAKE_ENV make $MAKE_FLAGS && $MAKE_ENV make $MAKE_FLAGS install" export `cat $port/Makefile |grep ^MAKE_ENV|sed 's/t/ /g'|sed 's/^MAKE_ENV=//'` make $MAKE_FLAGS && make $MAKE_FLAGS install # make $MAKE_FLAGS distclean cd $ocd } for port in avr-binutils avr-gcc avr-libc avr-gdb avarice simulavr ; do curl "http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/$port/$port.tar.gz?tarball=1"|gzip -dc|tar -xvf - export FILES=`grep MD5 $port/distinfo|cut -d( -f2|cut -d) -f1` getfiles "$FILES" patchfiles "$port" "$FILES" makeit "$port" "$FILES" done
Tack #2
Work with the ports tree, bsdmake and the .mk files to try to get the download, build and packaging to work as they do in the ports.