[bot] "built_in_updates" Wed Oct 5 18:21:45 UTC 2022 (#15761)

This commit is contained in:
SpacemacsBot 2022-10-05 22:38:49 +03:00 committed by GitHub
parent fe01603df9
commit 2ad413c8e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 62 additions and 38 deletions

View File

@ -286,13 +286,25 @@ if no action is necessary (like when the package is installed
already and should not be upgraded etc)."
(let* ((name (car rcp))
(build-dir (expand-file-name (symbol-name name) quelpa-build-dir))
(version (quelpa-checkout rcp build-dir)))
(ver-type (plist-get (cdr rcp) :version-type))
(files (quelpa-build--config-file-list (cdr rcp)))
(melpa-ver (quelpa-checkout rcp build-dir))
(version
(cond
((or (not (equal ver-type 'elpa)) quelpa-stable-p) melpa-ver)
(t
(let ((base-ver
(if-let ((info (quelpa-build--pkg-info (symbol-name name) files build-dir)))
(aref info 3)
'(0 0 0))))
(while (< (length base-ver) 3) (setq base-ver (append base-ver '(0))))
(concat (package-version-join base-ver) "." melpa-ver))))))
(prog1
(if version
(quelpa-archive-file-name
(quelpa-build-package (symbol-name name)
version
(quelpa-build--config-file-list (cdr rcp))
files
build-dir
quelpa-packages-dir))
(quelpa-build--message "Newer package has been installed. Not upgrading.")
@ -411,9 +423,8 @@ and return TIME-STAMP, otherwise return OLD-TIME-STAMP."
"When non-nil, then print additional progress information."
:type 'boolean)
(defcustom quelpa-build-stable nil
"When non-nil, then try to build packages from versions-tagged code."
:type 'boolean)
(defvar quelpa-build-stable nil
"When non-nil, then try to build packages from versions-tagged code.")
(defcustom quelpa-build-timeout-executable
(let ((prog (or (executable-find "timeout")
@ -509,7 +520,7 @@ or nil if the version cannot be parsed."
(ignore-errors (version-to-list str)))
(defun quelpa-build--parse-time (str)
"Parse STR as a time, and format as a YYYYMMDD.HHMM string."
"Parse STR as a time, and format as a YYYYMMDD.HHMMSS string."
;; We remove zero-padding the HH portion, as it is lost
;; when stored in the archive-contents
(setq str (substring-no-properties str))
@ -520,8 +531,9 @@ or nil if the version cannot be parsed."
(concat (match-string 1 str) "-" (match-string 2 str) "-"
(match-string 3 str) " " (match-string 4 str))
str))))
(concat (format-time-string "%Y%m%d." time)
(format "%d" (string-to-number (format-time-string "%H%M" time))))))
(replace-regexp-in-string
"\\.0+" "."
(format-time-string "%Y%m%d.%H%M%S" time))))
(defun quelpa-build--find-parse-time (regexp &optional bound)
"Find REGEXP in current buffer and format as a time-based version string.
@ -1272,18 +1284,21 @@ Tests and sets variable `quelpa--tar-type' if not already set."
(insert trailer)
(newline)))))
(defun quelpa-build--get-package-info (file-path)
"Get a vector of package info from the docstrings in FILE-PATH."
(defun quelpa-build--get-package-info (file-path &optional keep-version)
"Get a vector of package info from the docstrings in FILE-PATH.
If KEEP-VERSION is set, don't override with version 0."
(when (file-exists-p file-path)
(ignore-errors
(with-temp-buffer
(insert-file-contents file-path)
;; next few lines are a hack for some packages that aren't
;; commented properly.
(quelpa-build--update-or-insert-version "0")
(quelpa-build--ensure-ends-here-line file-path)
(cl-flet ((package-strip-rcs-id (str) "0"))
(quelpa-build--package-buffer-info-vec))))))
(if keep-version
(quelpa-build--package-buffer-info-vec)
(quelpa-build--update-or-insert-version "0")
(cl-flet ((package-strip-rcs-id (str) "0"))
(quelpa-build--package-buffer-info-vec)))))))
(defun quelpa-build--get-pkg-file-info (file-path)
"Get a vector of package info from \"-pkg.el\" file FILE-PATH."
@ -1292,6 +1307,7 @@ Tests and sets variable `quelpa--tar-type' if not already set."
(if (eq 'define-package (car package-def))
(let* ((pkgfile-info (cdr package-def))
(descr (nth 2 pkgfile-info))
(ver (nth 1 pkgfile-info))
(rest-plist (cl-subseq pkgfile-info (min 4 (length pkgfile-info))))
(extras (let (alist)
(while rest-plist
@ -1315,7 +1331,7 @@ Tests and sets variable `quelpa--tar-type' if not already set."
(list (car elt) (version-to-list (cadr elt))))
(eval (nth 3 pkgfile-info)))
descr
(nth 1 pkgfile-info)
(if (stringp ver) (version-to-list ver) ver)
extras))
(error "No define-package found in %s" file-path)))))
@ -1480,30 +1496,18 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
(car (rassoc target files)))
(defun quelpa-build--package-buffer-info-vec ()
"Return a vector of package info.
`package-buffer-info' returns a vector in older Emacs versions,
and a cl struct in Emacs HEAD. This wrapper normalises the results."
(let ((desc (package-buffer-info))
(keywords (lm-keywords-list)))
(if (fboundp 'package-desc-create)
(let ((extras (package-desc-extras desc)))
(when (and keywords (not (assq :keywords extras)))
;; Add keywords to package properties, if not already present
(push (cons :keywords keywords) extras))
(vector (package-desc-name desc)
(package-desc-reqs desc)
(package-desc-summary desc)
(package-desc-version desc)
extras))
(let ((homepage (lm-homepage))
extras)
(when keywords (push (cons :keywords keywords) extras))
(when homepage (push (cons :url homepage) extras))
(vector (aref desc 0)
(aref desc 1)
(aref desc 2)
(aref desc 3)
extras)))))
"Return a vector of package info."
(let* ((desc (package-buffer-info))
(keywords (lm-keywords-list))
(extras (package-desc-extras desc)))
(when (and keywords (not (assq :keywords extras)))
;; Add keywords to package properties, if not already present
(push (cons :keywords keywords) extras))
(vector (package-desc-name desc)
(package-desc-reqs desc)
(package-desc-summary desc)
(package-desc-version desc)
extras)))
;;; Building
@ -1543,6 +1547,26 @@ Returns the archive entry for the package."
package-name version files source-dir target-dir))
(t (error "Unable to find files matching recipe patterns")))))
(defun quelpa-build--pkg-info (package-name files source-dir)
(pcase files
(`(,file)
(thread-first (expand-file-name file source-dir)
(quelpa-build--get-package-info :keep-version)))
(_
(let* ((default-directory source-dir)
(pkg-file (concat package-name "-pkg.el"))
(pkg-file-source (or (quelpa-build--find-source-file pkg-file files)
pkg-file))
(file-source (concat package-name ".el"))
(pkg-source (or (quelpa-build--find-source-file file-source files)
file-source)))
(or (quelpa-build--get-pkg-file-info pkg-file-source)
;; some packages (like magit) provide name-pkg.el.in
(quelpa-build--get-pkg-file-info
(expand-file-name (concat pkg-file ".in")
(file-name-directory pkg-source)))
(quelpa-build--get-package-info pkg-source :keep-version))))))
(defun quelpa-build--build-single-file-package
(package-name version file source-dir target-dir)
(let* ((pkg-source (expand-file-name file source-dir))