-## 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)