#!/usr/bin/make -f #### -*- makefile-gmake -*- A minimalist package manager. #### ### Try to be helpful output when called without arguments. help:: @echo "Usage: twb-get PACKAGE ..." ### Always try to update packages that have already been checked out. .PHONY:: default $(wildcard *) $(wildcard */) $(wildcard */): %/: % # Allow running "twb-get -k -j 4 */" ### Used by wget rule executable-find = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH))))) ### SCM rules. Called with $(call ,) below. wget = $(if $(call executable-find,wget),wget -O $@ $1,curl -fLRo $@ $1) svn = $(if $(wildcard $@),svn up $@,svn co $1 $@) hg = $(if $(wildcard $@),cd $@ && hg fetch $1,hg clone $1 $@) bzr = $(if $(wildcard $@),bzr update $@,bzr branch $1 $@) darcs = $(if $(wildcard $@),darcs pull -a --repodir $@ $1,darcs get $1 $@ $(if $2,&& echo 'push remote-repo $2' >$@/_darcs/prefs/defaults)) cvs = $(if $(wildcard $@),cd $@ && cvs -z9 up -dAP,cvs -d $1 login && cvs -z9 -d$1 co -d $@ $(or $2,$(notdir $1))) git = $(if $(wildcard $@),cd $@ && git pull,git clone $1 $@) Preferences:: $(call git,http://cyber.com.au/~twb/.git) alloc:: # WRONG URL??? $(call git,https://github.com/cyberitsolutions/alloc) ansible ansible-examples: $(call git,git://github.com/ansible/$@) bash-completion debhelper:: $(call git,git://git.debian.org/git/$@/$@) pyhyphen rst2pdf waf chromium:: $(call svn,http://$@.googlecode.com/svn/trunk) bootchart:: $(call git,git://github.com/mmeeks/$@) buildroot:: $(call git,git://git.$@.net/$@) busybox:: $(call git,git://git.busybox.net/$@) dosage:: $(call git,https://github.com/webcomics/$@) bzr-fastimport nxhtml:: bzr lp-login $(USER) $(call bzr,lp:$@) cabal:: $(call darcs,http://darcs.haskell.org/$@) camp:: $(call darcs,http://code.haskell.org/$@/devel/src/) cinit:: $(call git,git://git.schottelius.org/cLinux/$@.git) collectd collection4:: $(call git,git://git.verplant.org/$@) compton:: # stand-along compositing manager (cf. compiz) $(call git,git://github.com/chjj/$@) conkeror:: $(call git,git://repo.or.cz/$@) crawl fofix:: $(call git,git://github.com/$@/$@) cruft:: $(call git,git://github.com/porridge/$@) hl-todo:: $(call git,https://github.com/tarsius/$@) darcs:: $(call darcs,http://darcs.net/) darcsum:: $(call darcs,http://joyful.com/repos/$@) danbooru:: $(call git,git://github.com/r888888888/$@) dired-details.el oddmuse.el scheme48.el teco.el:: $(call wget,http://emacswiki.org/wiki/download/$@) dry.c:: # dhrystone 2.2 benchmark $(call wget,http://homepages.cwi.nl/~steven/$@) elim ratpoison screen stumpwm bash grep:: $(call git,git://git.sv.gnu.org/$@) elpa:: $(call git,git://git.sv.gnu.org/emacs/$@) emacs:: # You can't use the official repo, because it doesn't run the # bzr "smart server" and is thus unbearably slow. #$(call bzr,http://bzr.sv.gnu.org/r/$@/trunk) # Launchpad has a mirror, but you can't use ITS smart server # unless you log in. Sigh! Note: this requires my private # (non-Cyber) SSH key, so it'll only work on Dali. #bzr lp-login $(USER) #$(call bzr,lp:$@) # But that was STILL really slow, and eventually ran out of # memory on my 1GB netbook. So go back to the git mirror. $(call git,git://git.sv.gnu.org/$@) # bzzr checkouts are a lot faster if you add "+nosmart" to the URL scheme. # You can then edit the URL later to use smarts for subsequent fetches. emacs-snapshot:: # the Debian git mirror of same $(call git,git://anonscm.debian.org/users/acid/$@.git) emacspeak:: $(call git,git://github.com/tvraman/$@) evercookie:: $(call git,git://github.com/samyk/$@) fim:: $(call svn,http://code.autistici.org/svn/$@/trunk) gargoyle:: $(call git,https://github.com/garglk/garglk) ghostpdl:: # ghostscript $(call git,git://git.ghostscript.com/$@) git:: $(call git,git://github.com/$@/$@) gitit pandoc:: $(call git,git://github.com/jgm/$@) gnus:: $(call git,http://git.gnus.org/gnus.git) hurd gnumach:: $(call git,git://git.sv.gnu.org/hurd/$@) imaplib2:: $(call git,git://github.com/bcoe/$@) ipxe:: $(call git,git://git.ipxe.org/$@) hashed-storage:: $(call darcs,http://repos.mornfall.net/$@) hostap:: # also includes wpa_supplicant $(call git,git://w1.fi/srv/git/$@) hlint:: $(call darcs,http://community.haskell.org/~ndm/darcs/$@) hs-lint.el:: $(call wget,http://community.haskell.org/~ndm/darcs/hlint/data/$@) internode-quota-check:: $(call wget,http://zwitterion.org/software/$@/$@) initramfs-tools:: $(call git,git://git.debian.org/git/kernel/$@.git) ledger:: $(call git,git://github.com/jwiegley/$@) Kobo-Reader Kobo-Arc Kobo-Vox epub-spec:: $(call git,git://github.com/kobolabs/$@) koha:: $(call git,git://git.$@-community.org/$@.git) linux:: # the "mainline" branch $(call git,git://git.kernel.org/pub/scm/$@/kernel/git/torvalds/$@) lisppaste.el:: xml-rpc.el $(call wget,http://purl.org/NET/wence/$@) live-boot live-build live-config live-manual:: # $(call git,git://live.debian.net/git/$@) $(call git,git://git.debian.org/debian-live/$@) lugaru:: $(call hg,http://hg.icculus.org/icculus/$@) lxc msmtp shinken pam-mount:: $(call git,git://git.code.sf.net/p/$@/$@) magit:: # $(call git,git://github.com/philjackson/$@) $(call git,git://github.com/$@/$@) malyon.el:: $(call wget,http://mirror.ifarchive.org/if-archive/infocom/interpreters/emacs/$@) markdown-mode.el:: $(call wget,http://jrblevin.freeshell.org/software/$(basename $@)/$@) mg/debian:: mkdir -p $(@D) $(call darcs,http://darcs.debian.org/collab-maint/$(@D),darcs.debian.org:/darcs/collab-maint/$(@D)) check-all-the-things: $(call git,git://git.debian.org/collab-maint/$@) midori:: $(call git,git://git.xfce.org/apps/$@) mplayer:: $(call svn,svn://svn.mplayerhq.hu/$@/trunk --ignore-externals) mutt:: $(call hg,http://dev.$@.org/hg/$@) nagios:: #FIXME UNTESTED $(call svn,https://nagios.svn.sourceforge.net/svnroot/nagios/nagioscore/trunk/) nfs-utils:: $(call git,git://git.linux-nfs.org/projects/steved/nfs-utils.git) nss-pam-ldapd:: $(call git,http://arthurdejong.org/git/$@) openldap:: $(call git,git://git.$@.org/$@.git) openwrt-%:: $(call svn,svn://svn.openwrt.org/openwrt/branches/$*) package-install.el package.el:: $(call wget,http://tromey.com/elpa/$@) paredit:: $(call git,http://mumble.net/~campbell/git/$@.git) pkipplib pykota:: $(call svn,http://svn.pykota.com/$@/trunk) rcs-fast-export:: $(call git,git://git.oblomov.eu/$@) reportlab:: $(call svn,http://svn.$@.com/svn/public/$@/trunk/src/$@) roundup:: $(call svn,https://$@.svn.sourceforge.net/svnroot/$@/$@/trunk) rsync:: $(call git,git://git.samba.org/$@.git) rudybot:: $(call git,git://github.com/offby1/rudybot.git) s2n:: $(call git,git://github.com/awslabs/$@) s48 s48-stable:: $(call hg,http://www.s48.org/cgi-bin/hgwebdir.cgi/$@) samba:: $(call git,git://git.$@.org/$@) scheme-voodoo.el:: $(call wget,http://paste.lisp.org/display/18404/raw) slime48:: $(call darcs,http://mumble.net/~campbell/darcs/$@) darcs pull -a --repodir $@ http://mumble.net/~campbell/darcs/$@-sprof darcs pull -a --repodir $@ http://mumble.net/~campbell/darcs/$@-thread-browser darcs pull -a --repodir $@ http://mumble.net/~campbell/darcs/$@-teledebugging swftools:: $(call git,git://github.com/matthiaskramm/swftools) syslinux:: $(call git,git://git.kernel.org/pub/scm/boot/$@/$@) kexec-tools:: $(call git,git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools) ssh-audit:: $(call git,https://github.com/arthepsy/$@) squashfs-tools:: $(call git,git://github.com/plougher/$@) systemd:: $(call git,git://github.com/$@/$@) udisks:: $(call git,git://anongit.freedesktop.org/$@) thunar xfwm4 xfdesktop exo mousepad xfburn ristretto xfconf xfce4-settings:: $(call git,git://git.xfce.org/xfce/$@) tidy-html5:: $(call git,git://github.com/w3c/$@.git) tmux:: # this is actually a mirror of the sf.net CVS repo. $(call git,git://github.com/ThomasAdam/$@) u-boot mini_fo:: $(call git,git://git.denx.de/$@) unbound-block-hosts:: $(call git,https://github.com/jodrell/$@) uzbl:: $(call git,git://github.com/Dieterbe/$@) v4l-utils:: $(call git,git://git.linuxtv.org/$@) vlc:: $(call git,https://git.videolan.org/git/$@.git) vlc-bindings-python:: $(call git,https://git.videolan.org/git/vlc/bindings/python.git) vc-darcs:: $(call darcs,http://www.pps.jussieu.fr/~jch/software/repos/$@) webkit:: @echo "Disabled, because this is a HUGE (gigabytes) checkout." false $(call svn,http://svn.$@.org/repository/$@/trunk) xdarcs.el:: $(call wget,http://chumsley.org/download/$@) xml-rpc.el:: $(call wget,http://cvs.sv.gnu.org/viewcvs/%2acheckout%2a/emacsweblogs/weblogger/lisp/$@) xmonad XMonadContrib yi:: $(call darcs,http://code.haskell.org/$@) xzgv:: $(call svn,https://$@.svn.sourceforge.net/svnroot/$@/trunk/$@) emacs-w3m:: ## NB: this is a mirror of the real CVS repo. Fuck CVS. ## NB: this mirror is MANUALLY UPDATED, and NOT UP TO DATE. $(call git,https://github.com/ecbrown/$@) # This is a useful thing for reverse-engineering how to pretend to be ReadItLater ("Pocket"), # so as to add things as "articles" instead of "books" to kobo. wallabako: $(call git,https://gitlab.com/anarcat/wallabako)