]> code.delx.au - gnu-emacs-elpa/commitdiff
Fixes to archive-contents.el and package-update.sh.
authorChong Yidong <cyd@stupidchicken.com>
Fri, 22 Apr 2011 03:12:40 +0000 (23:12 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 22 Apr 2011 03:12:40 +0000 (23:12 -0400)
* admin/archive-contents.el (archive-contents-subdirectory-regexp):
New var, from package.el.
(archive-contents--convert-require): New function.
(batch-make-archive-contents): Handle package requirements.

* admin/package-update.sh: Run archive-contents.el from package
directory.  Handle org package.

admin/archive-contents.el
admin/package-update.sh

index a26e2cc5eef33133851b2011248272d7a77edb13..fb610eb82164a9de0e02dc01d71ef674062d847d 100644 (file)
 
 (require 'lisp-mnt)
 
+(defconst archive-contents-subdirectory-regexp
+  "\\([^.].*?\\)-\\([0-9]+\\(?:[.][0-9]+\\|\\(?:pre\\|beta\\|alpha\\)[0-9]+\\)*\\)")
+
+(defun archive-contents--convert-require (elt)
+  (list (car elt)
+       (version-to-list (car (cdr elt)))))
+
 (defun batch-make-archive-contents ()
   (let ((packages '(1))) ; format-version.
     (dolist (file (directory-files default-directory))
       (pcase file
        ((or `"." `".." `"elpa.rss" `"archive-contents") nil)
        ((pred file-directory-p)
-        (if (not (string-match "-[0-9.]+\\'" file))
+        (if (not (string-match (concat archive-contents-subdirectory-regexp "\\'")
+                              file))
             (message "Unknown package directory name format %s" file)
-          (let* ((pkg (substring file 0 (match-beginning 0)))
-                 (vers (substring file (1+ (match-beginning 0))))
+          (let* ((pkg  (match-string 1 file))
+                 (vers (match-string 2 file))
                  (exp
                   (with-temp-buffer
                     (insert-file-contents
                      (expand-file-name (concat pkg "-pkg.el") file))
                     (goto-char (point-min))
-                    (read (current-buffer)))))
-            (copy-file (expand-file-name "README" file)
-                       (concat pkg "-readme.txt")
-                       'ok-if-already-exists)
+                    (read (current-buffer))))
+                (req (mapcar 'archive-contents--convert-require
+                             (nth 4 exp)))
+                (readme (expand-file-name "README" file)))
+           (when (file-exists-p readme)
+             (copy-file readme
+                        (concat pkg "-readme.txt")
+                        'ok-if-already-exists))
             (unless (equal (nth 1 exp) pkg)
               (message "Package name %s doesn't match file name %s"
                        (nth 1 exp) file))
                        (nth 2 exp) file))
             (push (cons (intern pkg)
                         (vector (version-to-list vers)
-                                nil     ;??
+                                req
                                 (nth 3 exp)
                                 'tar))
                   packages))))
+       ;; Simple package
        ((pred (string-match "\\.el\\'"))
         (if (not (string-match "-\\([0-9.]+\\)\\.el\\'" file))
             (message "Unknown package file name format %s" file)
                                           (looking-at "[ \t]*\n"))
                               (delete-region (match-beginning 0)
                                              (match-end 0)))
-                            (save-buffer))))))))
+                            (save-buffer)))))))
+                (requires-str (lm-header "package-requires"))
+                (req (if requires-str
+                         (mapcar 'archive-contents--convert-require
+                                 (car (read-from-string requires-str))))))
             (push (cons (intern pkg)
                         (vector (version-to-list vers)
-                                nil     ;??
+                               req
                                 desc
                                 'single))
                   packages))))
index 36e7213c1921b5b323ceb479ec5edbe6e5630ada..95c389a76310b844408a3a31ca312b9d2b71b03b 100755 (executable)
 ##     DEST/packages/emacs-packages-latest.tgz
 ##   - the Org mode daily package
 
-PATH=/bin:/usr/bin:/usr/local/bin
+PATH="/bin:/usr/bin:/usr/local/bin:${PATH}"
 DEST=${1%/}
 FULL=$2
 
 EMACS=emacs
 BZR=bzr
+TAR=tar
 
 LOG=$DEST/update-log
 PKGROOT=$DEST/packages
@@ -29,7 +30,7 @@ REPO_PACKAGES=packages
 
 ## Parse arguments
 if [ -z $DEST ]; then
-    echo "Syntax: $0 HOMEDIR [fetch-extras-boolean]"
+    echo "Syntax: $0 DEST [fetch-extras-boolean]"
     exit 1
 elif [ -d $DEST ]; then
     echo "Installing into '$DEST', log is '$LOG'"
@@ -81,12 +82,14 @@ fi
 
 ## Generate archive-contents and the readme files.
 
+cd $TMP_PKGROOT
+$TAR xf *.tar
+rm -f *.tar
 $EMACS -batch -l $REPO_ROOT_DIR/admin/archive-contents.el -f batch-make-archive-contents
 
 ## Tar up the multi-file packages.
 
 echo "Creating multi-file package tarballs in $TMP_PKGROOT" >> $LOG
-cd $TMP_PKGROOT
 for pt in *; do
     if [ -d $pt ]; then
        echo "Creating tarball $TMP_PKGROOT/$pt.tar" >> $LOG