-# Makefile for emacs-lisp package
-
-# Copyright (C) 1998, 1999, 2004, 2007, 2010 Stefan Monnier <monnier@gnu.org>
-
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 3, or (at your option) any
-# later version.
-
-# This file is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-# for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with GNU Emacs; see the file COPYING. If not, write to
-# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-# load the package-specific settings
-include makefile.pkg
-
-# set up the usual installation paths
-prefix = /usr/local
-datadir = $(prefix)/share
-
-# the directory where you install third-party emacs packges
-lispdir = $(datadir)/emacs/site-lisp
-
-# the directory where the .elc files will be installed
-elcdir = $(lispdir)/$(PACKAGE)
-# the directory where the .el files will be installed
-eldir = $(elcdir)
-
-# the file where the initialization goes.
-#startupfile = $(HOME/.emacs
-startupfile = $(lispdir)/site-start.el
-
-# the directory where you installed the elib .elc files.
-# This is only needed if your site-start.el (or default.el) does not
-# set up elib correctly.
-elibdir = $(lispdir)/elib
-
-# the directory where you install the info doc
-infodir = $(prefix)/info
-docdir = $(prefix)/doc
-
-EMACS = emacs
-MAKEINFO= makeinfo
-TEXI2DVI= texi2dvi
-SHELL = /bin/sh
-DVIPS = dvips
-CP = cp
-RM = rm -f
-MKDIR = mkdir -p
-ETAGS = etags
-
-######################################################################
-### No changes below this line should be necessary ###
-######################################################################
-
-ELFLAGS = --eval '(setq load-path (append (list "." "$(elibdir)" "$(lispdir)") load-path))'
-ELC = $(EMACS) -batch $(ELFLAGS) -f batch-byte-compile
-
-ELCFILES = $(ELFILES:.el=.elc)
-
-TEXEXTS = *.cps *.fns *.kys *.vr *.tp *.pg *.log *.aux *.toc *.cp *.ky *.fn
-
-.SUFFIXES: .elc .el .info .ps .dvi .texi
-.PHONY: elcfiles info clean distclean default
-.PHONY: install_startup install_elc install install_el install_info
-.PHONY: dvi postscript
-
-.el.elc:
- $(ELC) $<
-
-.texi.info:
- $(MAKEINFO) $<
-
-.texi.dvi:
- $(TEXI2DVI) $<
-
-.dvi.ps:
- $(DVIPS) -f $< >$@
-
-######################################################################
-
-default: elcfiles
-
-elcfiles: $(ELCFILES)
-info: $(PACKAGE).info
-
-install_elc: $(ELCFILES) $(PACKAGE)-startup.el
- $(MKDIR) $(elcdir)
- for f in $(ELCFILES) $(PACKAGE)-startup.el; do \
- $(CP) $$f $(elcdir)/$$f ;\
- done
-
-install_el:
- $(MKDIR) $(eldir)
- for f in $(ELFILES); do \
- $(CP) $$f $(eldir)/$$f ;\
+# Makefile for GNU Emacs Lisp Package Archive.
+
+EMACS=emacs
+
+ARCHIVE_TMP=archive-tmp
+SITE_DIR=site
+
+.PHONY: archive-tmp process-archive archive-full org-fetch clean all do-it
+
+## Set up the source files for direct usage, by pointing
+## `package-directory-list' to the site/ directory.
+site: packages
+ mkdir -p $(SITE_DIR)
+ $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el \
+ --eval "(batch-make-site-dir \"packages\" \"$(SITE_DIR)\")"
+
+site/%: do-it
+ $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el \
+ --eval "(progn (setq debug-on-error t) (batch-make-site-package \"$@\"))"
+
+## Deploy the package archive to archive/, with packages in
+## archive/packages/:
+archive: archive-tmp
+ $(MAKE) $(MFLAGS) process-archive
+
+archive-tmp: packages
+ -rm -r $(ARCHIVE_TMP)
+ mkdir -p $(ARCHIVE_TMP)
+ cp -a packages/. $(ARCHIVE_TMP)/packages
+
+process-archive:
+ # First, refresh the ChangeLog files. This needs to be done in
+ # the source tree, because it needs the Bzr data!
+ cd packages; \
+ $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el \
+ -f batch-prepare-packages
+ # FIXME, we could probably speed this up significantly with
+ # rules like "%.tar: ../%/ChangeLog" so we only rebuild the packages
+ # that have indeed changed.
+ cd $(ARCHIVE_TMP)/packages; $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el -f batch-make-archive
+ @cd $(ARCHIVE_TMP)/packages; \
+ for pt in *; do \
+ if [ -d $$pt ]; then \
+ echo "Creating tarball $${pt}.tar" && \
+ tar -cf $${pt}.tar $$pt --remove-files; \
+ fi; \