Skip to content

Commit

Permalink
melpa2nix: update to work with Emacs HEAD
Browse files Browse the repository at this point in the history
We now use a newer version of package-build, since
previously-necessary functions have been moved/removed from package.el
Emacs 30. See melpa/package-build#87

Consequently, some changes are necessary to the corresponding patch
and to melpa2nix.el, which this commit also contains.
  • Loading branch information
purcell authored and marcusramberg committed Dec 30, 2023
1 parent 1ed732e commit 658bf72
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 46 deletions.
4 changes: 2 additions & 2 deletions pkgs/build-support/emacs/melpa.nix
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; } ({
src = fetchFromGitHub {
owner = "melpa";
repo = "package-build";
rev = "c3c535e93d9dc92acd21ebc4b15016b5c3b90e7d";
sha256 = "17z0wbqdd6fspbj43yq8biff6wfggk74xgnaf1xx6ynsp1i74is5";
rev = "c48aa078c01b4f07b804270c4583a0a58ffea1c0";
sha256 = "sha256-MzPj375upIiYXdQR+wWXv3A1zMqbSrZlH0taLuxx/1M=";
};

patches = [ ./package-build-dont-use-mtime.patch ];
Expand Down
26 changes: 13 additions & 13 deletions pkgs/build-support/emacs/melpa2nix.el
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@
;; Allow installing package tarfiles larger than 10MB
(setq large-file-warning-threshold nil)

(defun melpa2nix-build-package-1 (rcp version commit)
(let ((source-dir (package-recipe--working-tree rcp)))
(defun melpa2nix-build-package-1 (rcp)
(let* ((default-directory (package-recipe--working-tree rcp)))
(unwind-protect
(let ((files (package-build-expand-files-spec rcp t)))
(cond
((= (length files) 1)
(package-build--build-single-file-package
rcp version commit files source-dir))
((> (length files) 1)
(package-build--build-multi-file-package
rcp version commit files source-dir))
(t (error "Unable to find files matching recipe patterns")))))))
(unless files
(error "Unable to find files matching recipe patterns"))
(if (> (length files) 1)
(package-build--build-multi-file-package rcp files)
(package-build--build-single-file-package rcp files))))))

(defun melpa2nix-build-package ()
(if (not noninteractive)
(error "`melpa2nix-build-package' is to be used only with -batch"))
(unless noninteractive
(error "`melpa2nix-build-package' is to be used only with -batch"))
(pcase command-line-args-left
(`(,package ,version ,commit)
(melpa2nix-build-package-1 (package-recipe-lookup package) version commit))))
(let ((recipe (package-recipe-lookup package)))
(setf (oref recipe commit) commit)
(setf (oref recipe version) version)
(melpa2nix-build-package-1 recipe)))))
43 changes: 12 additions & 31 deletions pkgs/build-support/emacs/package-build-dont-use-mtime.patch
Original file line number Diff line number Diff line change
@@ -1,40 +1,21 @@
diff --git a/package-build.el b/package-build.el
index e572045..9eb0f82 100644
index 29cdb61..c19be1b 100644
--- a/package-build.el
+++ b/package-build.el
@@ -415,7 +415,7 @@ (defun package-build--write-pkg-file (desc dir)
(princ ";; Local Variables:\n;; no-byte-compile: t\n;; End:\n"
(current-buffer)))))

-(defun package-build--create-tar (name version directory mtime)
+(defun package-build--create-tar (name version directory)
"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
@@ -434,7 +434,7 @@ (defun package-build--create-tar (name version directory mtime)
;; prevent a reproducable tarball as described at
@@ -923,7 +923,6 @@ DIRECTORY is a temporary directory that contains the directory
that is put in the tarball."
(let* ((name (oref rcp name))
(version (oref rcp version))
- (time (oref rcp time))
(tar (expand-file-name (concat name "-" version ".tar")
package-build-archive-dir))
(dir (concat name "-" version)))
@@ -939,7 +938,7 @@ that is put in the tarball."
;; prevent a reproducible tarball as described at
;; https://reproducible-builds.org/docs/archives.
"--sort=name"
- (format "--mtime=@%d" mtime)
- (format "--mtime=@%d" time)
+ "--mtime=@0"
"--owner=0" "--group=0" "--numeric-owner"
"--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"))
(when (and package-build-verbose noninteractive)
@@ -848,12 +848,11 @@ (defun package-build--build-multi-file-package (rcp version commit files source-
(package-build--desc-from-library
name version commit files 'tar)
(error "%s[-pkg].el matching package name is missing"
- name))))
- (mtime (package-build--get-commit-time rcp commit)))
+ name)))))
(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 mtime)
+ (package-build--create-tar name version tmp-dir)
(package-build--write-pkg-readme name files source-dir)
(package-build--write-archive-entry desc))
(delete-directory tmp-dir t nil))))
--
2.37.2

0 comments on commit 658bf72

Please sign in to comment.