Skip to content

Commit

Permalink
[bot] "built_in_updates" Thu Jun 2 13:08:50 UTC 2022
Browse files Browse the repository at this point in the history
  • Loading branch information
SpacemacsBot authored and smile13241324 committed Jun 2, 2022
1 parent 771bb6c commit 1bb3ebf
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 60 deletions.
95 changes: 44 additions & 51 deletions core/libs/package-build.el
Original file line number Diff line number Diff line change
Expand Up @@ -195,42 +195,21 @@ Otherwise do nothing. FORMAT-STRING and ARGS are as per that function."
version)))

(defun package-build-get-timestamp-version (rcp)
(let ((rev (and (cl-typep rcp 'package-git-recipe)
(or (oref rcp commit)
(when-let ((branch (oref rcp branch)))
(concat "origin/" branch))
"origin/HEAD"))))
(let* ((rev (and (cl-typep rcp 'package-git-recipe)
(or (oref rcp commit)
(when-let ((branch (oref rcp branch)))
(concat "origin/" branch))
"origin/HEAD")))
(time (package-build--get-timestamp rcp rev)))
(cons (package-build--get-commit rcp rev)
(package-build--parse-time
(package-build--get-timestamp rcp rev)
(oref rcp time-regexp)))))
;; We remove zero-padding of the HH portion, as
;; that is lost when stored in archive-contents.
(concat (format-time-string "%Y%m%d." time t)
(format "%d" (string-to-number
(format-time-string "%H%M" time t)))))))

;;;; Internal

(defun package-build--parse-time (str &optional regexp)
"Parse STR as a time, and format as a YYYYMMDD.HHMM string.
Always use Coordinated Universal Time (UTC) for output string.
If REGEXP is provided, it is applied to STR and the function
parses the first match group instead of STR."
(unless str
(error "No valid timestamp found"))
(setq str (substring-no-properties str))
(when regexp
(if (string-match regexp str)
(setq str (match-string 1 str))
(error "No valid timestamp found")))
;; We remove zero-padding the HH portion, as it is lost
;; when stored in the archive-contents
(let ((time (date-to-time
(if (string-match "\
^\\([0-9]\\{4\\}\\)/\\([0-9]\\{2\\}\\)/\\([0-9]\\{2\\}\\) \
\\([0-9]\\{2\\}:[0-9]\\{2\\}:[0-9]\\{2\\}\\)$" str)
(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 t)
(format "%d" (string-to-number (format-time-string "%H%M" time t))))))

(defun package-build--find-version-newest (tags &optional regexp)
"Find the newest version in TAGS matching REGEXP.
If optional REGEXP is nil, then `package-build-version-regexp'
Expand Down Expand Up @@ -353,9 +332,11 @@ is used instead."
(let ((default-directory (package-recipe--working-tree rcp)))
;; `package-build-expand-files-spec' expects REV to be checked out.
(package-build--checkout-1 rcp rev)
(car (apply #'process-lines
"git" "log" "--first-parent" "-n1" "--pretty=format:'\%ci'" rev
"--" (mapcar #'car (package-build-expand-files-spec rcp))))))
(string-to-number
(car (apply #'process-lines
"git" "log" "-n1" "--first-parent"
"--pretty=format:%cd" "--date=unix"
rev "--" (mapcar #'car (package-build-expand-files-spec rcp)))))))

(cl-defmethod package-build--used-url ((rcp package-git-recipe))
(let ((default-directory (package-recipe--working-tree rcp)))
Expand Down Expand Up @@ -401,10 +382,13 @@ is used instead."

(cl-defmethod package-build--get-timestamp ((rcp package-hg-recipe) rev)
(let ((default-directory (package-recipe--working-tree rcp)))
(car (apply #'process-lines
"hg" "log" "--style" "compact" "-l1"
`(,@(and rev (list "--rev" rev))
,@(mapcar #'car (package-build-expand-files-spec rcp)))))))
(string-to-number
(car (split-string ; "hgdate" is "<unix-date> <timezone>"
(car (apply #'process-lines
"hg" "log" "--limit" "1" "--template" "{date|hgdate}\n"
`(,@(and rev (list "--rev" rev))
,@(mapcar #'car (package-build-expand-files-spec rcp)))))
" ")))))

(cl-defmethod package-build--used-url ((rcp package-hg-recipe))
(let ((default-directory (package-recipe--working-tree rcp)))
Expand Down Expand Up @@ -444,20 +428,28 @@ is used instead."
(princ ";; Local Variables:\n;; no-byte-compile: t\n;; End:\n"
(current-buffer)))))

(defun package-build--create-tar (name version directory)
"Create a tar file containing the contents of VERSION of package NAME."
(defun package-build--create-tar (name version directory mtime)
"Create a tar file containing the contents of VERSION of package NAME.
DIRECTORY is a temporary directory that contains the directory
that is put in the tarball. MTIME is used as the modification
time of all files, making the tarball reproducible."
(let ((tar (expand-file-name (concat name "-" version ".tar")
package-build-archive-dir))
(dir (concat name "-" version)))
(when (eq system-type 'windows-nt)
(setq tar (replace-regexp-in-string "^\\([a-z]\\):" "/\\1" tar)))
(let ((default-directory directory))
(process-file package-build-tar-executable nil
(get-buffer-create "*package-build-checkout*") nil
"-cvf" tar
"--exclude=.git"
"--exclude=.hg"
dir))
(process-file
package-build-tar-executable nil
(get-buffer-create "*package-build-checkout*") nil
"-cf" tar dir
;; Arguments that are need to strip metadata that
;; prevent a reproducable tarball as described at
;; https://reproducible-builds.org/docs/archives.
"--sort=name"
(format "--mtime=@%d" mtime)
"--owner=0" "--group=0" "--numeric-owner"
"--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"))
(when (and package-build-verbose noninteractive)
(message "Created %s containing:" (file-name-nondirectory tar))
(dolist (line (sort (process-lines package-build-tar-executable
Expand Down Expand Up @@ -683,8 +675,8 @@ be returned. If ASSERT and `files' are both non-nil and using
`files' results in the same set of files as the default spec,
then show a warning.
A file specification SPEC is a list. Its elements are processes
in order and can have the following form:
A files specification is a list. Its elements are processed in
order and can have the following form:
- :default
Expand Down Expand Up @@ -863,11 +855,12 @@ in `package-build-archive-dir'."
(package-build--desc-from-library
name version commit files 'tar)
(error "%s[-pkg].el matching package name is missing"
name)))))
name))))
(mtime (package-build--get-timestamp rcp commit)))
(package-build--copy-package-files files source-dir target)
(package-build--write-pkg-file desc target)
(package-build--generate-info-files files source-dir target)
(package-build--create-tar name version tmp-dir)
(package-build--create-tar name version tmp-dir mtime)
(package-build--write-pkg-readme name files source-dir)
(package-build--write-archive-entry desc))
(delete-directory tmp-dir t nil))))
Expand Down
11 changes: 2 additions & 9 deletions core/libs/package-recipe.el
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
(defclass package-recipe ()
((url-format :allocation :class :initform nil)
(repopage-format :allocation :class :initform nil)
(time-regexp :allocation :class :initform nil)
(stable-p :allocation :class :initform nil)
(name :initarg :name :initform nil)
(url :initarg :url :initform nil)
Expand Down Expand Up @@ -72,10 +71,7 @@

;;;; Git

(defclass package-git-recipe (package-recipe)
((time-regexp :initform "\
\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} \
[0-9]\\{2\\}:[0-9]\\{2\\}:[0-9]\\{2\\}\\( [+-][0-9]\\{4\\}\\)?\\)")))
(defclass package-git-recipe (package-recipe) ())

(defclass package-github-recipe (package-git-recipe)
((url-format :initform "https://github.com/%s.git")
Expand All @@ -87,10 +83,7 @@

;;;; Mercurial

(defclass package-hg-recipe (package-recipe)
((time-regexp :initform "\
\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} \
[0-9]\\{2\\}:[0-9]\\{2\\}\\( [+-][0-9]\\{4\\}\\)?\\)")))
(defclass package-hg-recipe (package-recipe) ())

;;; Interface

Expand Down

0 comments on commit 1bb3ebf

Please sign in to comment.