]> code.delx.au - gnu-emacs-elpa/blob - Makefile
Implement archive deployment functionality directly, instead of calling admin script.
[gnu-emacs-elpa] / Makefile
1 # Makefile for GNU Emacs Lisp Package Archive.
2
3 EMACS=emacs
4
5 ARCHIVE_TMP=archive-tmp
6 PACKAGE_SITE_DIR=site
7
8 ## Set up the source files for direct usage, by pointing
9 ## `package-directory-list' to site/
10 site: packages
11 mkdir -p $(PACKAGE_SITE_DIR)
12
13 .PHONY: archive-tmp process-archive archive-full org-fetch
14
15 ## Deploy the package archive to archive/, with packages in
16 ## archive/packages/:
17 archive: archive-tmp
18 $(MAKE) $(MFLAGS) process-archive
19
20 archive-tmp: packages
21 mkdir -p $(ARCHIVE_TMP)
22 cp -r packages $(ARCHIVE_TMP)
23
24 process-archive:
25 cd $(ARCHIVE_TMP)/packages; $(EMACS) -batch -l $(CURDIR)/admin/archive-contents.el -f batch-make-archive
26 @cd $(ARCHIVE_TMP)/packages; \
27 for pt in *; do \
28 if [ -d $$pt ]; then \
29 echo "Creating tarball $${pt}.tar" && \
30 tar -cf $${pt}.tar $$pt --remove-files; \
31 fi; \
32 done
33 mkdir -p archive/packages
34 mv archive/packages archive/packages-old
35 mv $(ARCHIVE_TMP)/packages archive/packages
36 chmod -R a+rX archive/packages
37 rm -rf archive/packages-old
38 rm -rf $(ARCHIVE_TMP)
39
40 ## Deploy the package archive to archive/ including the Org daily and
41 ## admin scripts:
42 archive-full: archive-tmp org-fetch
43 $(MAKE) $(MFLAGS) process-archive
44 mkdir -p archive/admin
45 cp admin/* archive/admin/
46
47 org-fetch: archive-tmp
48 cd archive-tmp/packages; \
49 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"}'`; \
50 wget http://orgmode.org/pkg/daily/$${pkgname}.tar -O $${pkgname}.tar; \
51 if [ -f $${pkgname}.tar ]; then \
52 tar xf $${pkgname}.tar; \
53 rm -f $${pkgname}.tar; \
54 mv $${pkgname} org; \
55 fi