[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] elpa-admin bb6e65a165: (elpaa--make-one-tarball-1): Refresh metad
From: |
Stefan Monnier |
Subject: |
[elpa] elpa-admin bb6e65a165: (elpaa--make-one-tarball-1): Refresh metadata |
Date: |
Mon, 24 Oct 2022 17:46:08 -0400 (EDT) |
branch: elpa-admin
commit bb6e65a1654c6c75657db12845e86b8d429ed303
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
(elpaa--make-one-tarball-1): Refresh metadata
The metadata passed to `elpaa--make-one-tarball` is read from
the HEAD revision, so it can contain incorrect info (e.g. pre-requisites
that only apply to the not-yet-released code). Refresh it when needed.
* elpa-admin.el (elpaa--keep-max): Use `defvar`, it's not a constant.
(elpaa--make-one-tarball): Rename `metadata` arg according to its new use.
(elpaa--make-one-tarball-1): Rename `metadata` arg and recompute the
metadata if requested after we selected the revision.
(elpaa--make-one-package): Tell `elpaa--make-one-tarball-1` to
recompute the metadata for the release tarballs.
---
elpa-admin.el | 39 ++++++++++++++++++++++++++++-----------
1 file changed, 28 insertions(+), 11 deletions(-)
diff --git a/elpa-admin.el b/elpa-admin.el
index a1eec9c448..064fc2dd7f 100644
--- a/elpa-admin.el
+++ b/elpa-admin.el
@@ -394,7 +394,7 @@ returns. Return the selected revision."
(elpaa--call t "git" "checkout" "--" "."))
(elpaa--message "%s" (buffer-string)))))))))
-(defconst elpaa--keep-max 20)
+(defvar elpaa--keep-max 20)
(defun elpaa--keep-old (oldtarballs n)
"Select N tarballs to keep among those in OLDTARBALLS."
@@ -551,7 +551,7 @@ returns. Return the selected revision."
(setf (cdr oldtarball) (concat file ".lz"))))))
oldtarballs)
-(defun elpaa--make-one-tarball ( tarball dir pkg-spec metadata
+(defun elpaa--make-one-tarball ( tarball dir pkg-spec metadata-or-version
&optional revision-function tarball-only)
"Create file TARBALL for PKG-SPEC if not done yet.
Return non-nil if a new tarball was created. Also create some
@@ -580,7 +580,7 @@ auxillary files unless TARBALL-ONLY is non-nil ."
(unwind-protect
(condition-case-unless-debug err
(setq res (elpaa--make-one-tarball-1
- tarball dir pkg-spec metadata
+ tarball dir pkg-spec metadata-or-version
revision-function tarball-only))
(error (message "Build error for %s: %S" tarball err)
nil))
@@ -588,7 +588,7 @@ auxillary files unless TARBALL-ONLY is non-nil ."
"######## Build of package %s FAILED!!")
tarball)))))
-(defun elpaa--make-one-tarball-1 ( tarball dir pkg-spec metadata
+(defun elpaa--make-one-tarball-1 ( tarball dir pkg-spec metadata-or-version
&optional revision-function tarball-only)
(elpaa--with-temp-files
dir
@@ -596,8 +596,20 @@ auxillary files unless TARBALL-ONLY is non-nil ."
(pkgname (car pkg-spec))
(_ (when (and destdir (not (file-directory-p destdir)))
(make-directory destdir)))
- (vers (nth 1 metadata))
(revision (elpaa--select-revision dir pkg-spec revision-function))
+ (metadata
+ (if (stringp metadata-or-version)
+ ;; Re-read the metadata after `elpaa--select-revision'.
+ (let ((metadata (elpaa--metadata dir pkg-spec)))
+ (unless (equal metadata-or-version (nth 1 metadata))
+ ;; It's probably an error if it happens, but let's
+ ;; see first when it happens.
+ (elpaa--message "Error: version disagreement at %S: %S"
+ metadata-or-version metadata))
+ ;; Use the arg-provided version in case of disagreement.
+ `(nil ,metadata-or-version . ,(nthcdr 2 metadata)))
+ metadata-or-version))
+ (vers (nth 1 metadata))
(elpaignore (expand-file-name ".elpaignore" dir))
(ignores (elpaa--spec-get pkg-spec :ignored-files))
(renames (elpaa--spec-get pkg-spec :renames))
@@ -669,10 +681,10 @@ auxillary files unless TARBALL-ONLY is non-nil ."
;; many tarballs.
(if revision-function elpaa--keep-max
(/ elpaa--keep-max 2))))
- (elpaa--prune-old-tarballs tarball oldtarballs destdir
- ;; Keep release versions at
- ;; least 2 years.
- (if revision-function
+ (elpaa--prune-old-tarballs tarball oldtarballs destdir
+ ;; Keep release versions at
+ ;; least 2 years.
+ (if revision-function
(* 60 60 24 365 2)))))
(let ((default-directory (expand-file-name destdir)))
;; This also creates <pkg>-readme.txt and <pkg>.svg.
@@ -969,14 +981,18 @@ place the resulting tarball into the file named
TARBALL-ONLY."
(if (not last-rel)
(elpaa--message "Package %s not released yet!" pkgname)
(when (elpaa--make-one-tarball
- tarball dir pkg-spec metadata
+ tarball dir pkg-spec (car last-rel)
(lambda () (cdr last-rel)))
+ ;; FIXME: This `metadata' reflects that of the HEAD rather
+ ;; than that of the release commit. It might actually be
+ ;; beneficial in case the `Maintainer:' was updated after
+ ;; the release commit, but it can probably bite us :-(
(elpaa--release-email pkg-spec metadata dir)))))))
(t
(let ((tarball (concat elpaa--release-subdir
(format "%s-%s.tar" pkgname vers))))
(when (elpaa--make-one-tarball
- tarball dir pkg-spec metadata
+ tarball dir pkg-spec vers
(lambda ()
(elpaa--get-release-revision
dir pkg-spec vers
@@ -1042,6 +1058,7 @@ Signal an error if the command did not finish with exit
code 0."
;; Some packages use version numbers which `version-to-list' doesn't
;; recognize out of the box. So here we help.
+;; (defvar version-regexp-alist version-regexp-alist) ;; Make it writable!
(add-to-list 'version-regexp-alist '("^[-.+ ]*beta-?$" . -2)) ;"1.0.0-beta-3"
(add-to-list 'version-regexp-alist '("^[-.+ ]*dev$" . -4)) ;2.5-dev
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] elpa-admin bb6e65a165: (elpaa--make-one-tarball-1): Refresh metadata,
Stefan Monnier <=