]> code.delx.au - gnu-emacs-elpa/commitdiff
Implement archive deployment functionality directly, instead of calling admin script.
authorChong Yidong <cyd@stupidchicken.com>
Fri, 1 Jul 2011 22:34:21 +0000 (18:34 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 1 Jul 2011 22:34:21 +0000 (18:34 -0400)
Makefile

index 115cbb06810bacfff93f67d471faefa76f82a2f0..71686a07d51a5df0fb684552627689eae7badcdd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,16 +1,55 @@
 # Makefile for GNU Emacs Lisp Package Archive.
 
-ARCHIVE_DIR=archive
+EMACS=emacs
 
-## Deploy the package archive to archive/
-archive: packages
-       mkdir -p $(ARCHIVE_DIR)
-       admin/package-update.sh $(ARCHIVE_DIR)
+ARCHIVE_TMP=archive-tmp
+PACKAGE_SITE_DIR=site
+
+## Set up the source files for direct usage, by pointing
+## `package-directory-list' to site/
+site: packages
+       mkdir -p $(PACKAGE_SITE_DIR)
+
+.PHONY: archive-tmp process-archive archive-full org-fetch
+
+## Deploy the package archive to archive/, with packages in
+## archive/packages/:
+archive: archive-tmp
+       $(MAKE) $(MFLAGS) process-archive
+
+archive-tmp: packages
+       mkdir -p $(ARCHIVE_TMP)
+       cp -r packages $(ARCHIVE_TMP)
+
+process-archive:
+       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; \
+       done
+       mkdir -p archive/packages
+       mv archive/packages archive/packages-old
+       mv $(ARCHIVE_TMP)/packages archive/packages
+       chmod -R a+rX archive/packages
+       rm -rf archive/packages-old
+       rm -rf $(ARCHIVE_TMP)
 
 ## Deploy the package archive to archive/ including the Org daily and
-## admin scripts.
-full-archive: .PHONY
-       mkdir -p $(ARCHIVE_DIR)
-       admin/package-update.sh $(ARCHIVE_DIR) 1
+## admin scripts:
+archive-full: archive-tmp org-fetch
+       $(MAKE) $(MFLAGS) process-archive
+       mkdir -p archive/admin
+       cp admin/* archive/admin/
 
-.PHONY:
+org-fetch: archive-tmp
+       cd archive-tmp/packages; \
+       pkgname=`curl -s http://orgmode.org/pkg/daily/|perl -ne 'push @f, $$1 if m/(org-\d{8})\.tar/; END { @f = sort @f; print "$$f[-1]\n"}'`; \
+       wget http://orgmode.org/pkg/daily/$${pkgname}.tar -O $${pkgname}.tar; \
+       if [ -f $${pkgname}.tar ]; then \
+               tar xf $${pkgname}.tar; \
+               rm -f $${pkgname}.tar; \
+               mv $${pkgname} org; \
+       fi