From eff9931ef8ba4f26a3551c8a1c076918b0deb54c Mon Sep 17 00:00:00 2001 From: Osama Rebach Date: Sun, 18 Sep 2022 10:00:46 +0100 Subject: [PATCH] package-build: don't use mtime when creating tarballs --- pkgs/build-support/emacs/melpa.nix | 23 ++++++++--- .../emacs/package-build-dont-use-mtime.patch | 40 +++++++++++++++++++ 2 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 pkgs/build-support/emacs/package-build-dont-use-mtime.patch diff --git a/pkgs/build-support/emacs/melpa.nix b/pkgs/build-support/emacs/melpa.nix index 53cfa8e75bd3..85bc8aa37b3a 100644 --- a/pkgs/build-support/emacs/melpa.nix +++ b/pkgs/build-support/emacs/melpa.nix @@ -35,11 +35,24 @@ import ./generic.nix { inherit lib stdenv emacs texinfo writeText gcc; } ({ then pname else ename; - packageBuild = fetchFromGitHub { - owner = "melpa"; - repo = "package-build"; - rev = "c3c535e93d9dc92acd21ebc4b15016b5c3b90e7d"; - sha256 = "17z0wbqdd6fspbj43yq8biff6wfggk74xgnaf1xx6ynsp1i74is5"; + packageBuild = stdenv.mkDerivation { + name = "package-build"; + src = fetchFromGitHub { + owner = "melpa"; + repo = "package-build"; + rev = "c3c535e93d9dc92acd21ebc4b15016b5c3b90e7d"; + sha256 = "17z0wbqdd6fspbj43yq8biff6wfggk74xgnaf1xx6ynsp1i74is5"; + }; + + patches = [ ./package-build-dont-use-mtime.patch ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = " + mkdir -p $out + cp -r * $out + "; }; elpa2nix = ./elpa2nix.el; diff --git a/pkgs/build-support/emacs/package-build-dont-use-mtime.patch b/pkgs/build-support/emacs/package-build-dont-use-mtime.patch new file mode 100644 index 000000000000..fe94de57a300 --- /dev/null +++ b/pkgs/build-support/emacs/package-build-dont-use-mtime.patch @@ -0,0 +1,40 @@ +diff --git a/package-build.el b/package-build.el +index e572045..9eb0f82 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 + ;; https://reproducible-builds.org/docs/archives. + "--sort=name" +- (format "--mtime=@%d" mtime) ++ "--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 +