# -*-mode:Makefile;truncate-lines:t;-*- noop: @echo You need to specify a target. For example \"make update\", or \"make clean\". LOGCMD = (echo '+++$(coname)'; $(2)) 2>&1 | tee -a "$(logdir)/$(dirname)--$$(date +%Y-%m-%d--$(1).log)" #-- Check Out ------------------------------------------------------------------ COCMD = cd $(codir) && (test -d '$(codir)/$(dirname)' || $(call LOGCMD,co,$(1))) checkout-cvs: $(codir) $(logdir) $(call COCMD,CVS_RSH=ssh cvs -z9 -d'$(url)' co '$(dirname)') checkout-svn: $(codir) $(logdir) $(call COCMD,CVS_RSH=ssh svn co '$(url)' '$(dirname)') checkout-bk: $(codir) $(logdir) $(call COCMD,bk clone '$(url)' '$(dirname)') checkout-tla: $(codir) $(logdir) $(call COCMD,tla register-archive --present-ok '$(url)'; tla get -A '$(archive)' '$(coname)--$(branch)' '$(dirname)') checkout-tarball: $(codir) $(logdir) $(call COCMD,curl --silent '$(url)' | tar $(taropts) -xv) checkout-srcrpm: $(call COCMD,curl --silent '$(url)' | rpm2cpio - | cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time && tar -jvxf '$(dirname).tar.bz2' && rm -f '$(dirname).tar.bz2' '$(coname).spec') #-- Update --------------------------------------------------------------------- UPCMD = $(call LOGCMD,update,cd '$(codir)/$(dirname)' && $(1)) update-cvs: $(codir)/$(dirname) $(logdir) $(call UPCMD,cvs -z9 update -dAP) update-svn: $(codir)/$(dirname) $(logdir) $(call UPCMD,svn update) update-bk: $(codir)/$(dirname) $(logdir) $(call UPCMD,bk pull) update-tla: $(codir)/$(dirname) $(logdir) $(call UPCMD,tla replay) #-- Init ----------------------------------------------------------------------- init-simple: $(builddir) $(codir)/$(dirname) -rm -rf '$(builddir)/$(dirname)' rsync -a '$(codir)/$(dirname)/' '$(builddir)/$(dirname)' #-- Build ---------------------------------------------------------------------- build-simple: init $(logdir) $(call LOGCMD,working,$(MAKE) -C '$(builddir)/$(dirname)' -f '$(makedir)/$(coname).mk' buildpackage) #-- Clean ---------------------------------------------------------------------- clean-simple: $(builddir) $(pooldir) -mv '$(builddir)'/*deb '$(pooldir)' -rm -rf '$(builddir)/$(dirname)' -cd '$(builddir)' && rm -f *.asc *.build *.changes *.dsc *.tar.gz -rmdir '$(builddir)' clean-bulk: $(builddir) $(pooldir) test -z '$(wildcard $(builddir)/*deb)' || mkdir '$(pooldir)/$(coname)--$(shell date -I)' -mv '$(builddir)'/*deb '$(pooldir)/$(coname)--$(shell date -I)' -rm -rf '$(builddir)/$(dirname)' -cd '$(builddir)' && rm -f *.asc *.build *.changes *.dsc *.tar.gz -rmdir '$(builddir)' distclean-simple: clean -rm -rf '$(codir)/$(dirname)' #-- Miscellaneous -------------------------------------------------------------- # co and logdir are the same, so make bitches about duplicate rules. Grr. $(codir) $(builddir) $(patchdir) $(pooldir): # $(logdir) mkdir '$@' # Never call make this target directly! buildpackage: dpkg-trent patch 1 '$(patchdir)/$(coname)--%s.patch' $(patches) dpkg-trent touch-changelog '$(debname)' '$(version)' $(autogen) dpkg-buildpackage -rfakeroot .PHONY: noop buildpackage .PHONY: checkout-cvs checkout-svn checkout-bk checkout-tla checkout-tarball .PHONY: update-cvs update-svn update-bk update-tla .PHONY: init-simple .PHONY: build-simple .PHONY: clean-simple clean-bulk # Use this expression to simplify update logs: # for i in *--update.log; do if grep -v '^+++\|^cvs.\(update\|server\):.' < $i > $i.tmp; then mv $i.tmp $i; else rm -f $i.tmp $i; fi; done # http://twb.ath.cx/~twb/src/scripts/dpkg-trent.sh