[strip-nondeterminism] 04/05: jar.pm, zip.pm: Allow $options{member_normalizer} callback to support specifying the timestamp.

Chris Lamb chris at chris-lamb.co.uk
Tue Oct 3 13:56:15 UTC 2017


This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository strip-nondeterminism.

commit dec86231ce51db87d28db35fbedb9c887db569fd
Author: Chris Lamb <lamby at debian.org>
Date:   Tue Oct 3 14:53:15 2017 +0100

    jar.pm, zip.pm: Allow $options{member_normalizer} callback to support specifying the timestamp.
---
 lib/File/StripNondeterminism/handlers/jar.pm | 8 ++++----
 lib/File/StripNondeterminism/handlers/zip.pm | 8 +++++---
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/File/StripNondeterminism/handlers/jar.pm b/lib/File/StripNondeterminism/handlers/jar.pm
index 1162c03..80cbfad 100644
--- a/lib/File/StripNondeterminism/handlers/jar.pm
+++ b/lib/File/StripNondeterminism/handlers/jar.pm
@@ -69,9 +69,9 @@ sub _jar_normalize_manifest($) {
 	return $modified;
 }
 
-sub _jar_normalize_member($) {
-	my ($member) = @_; # $member is a ref to an Archive::Zip::Member
-	return if $member->isDirectory();
+sub _jar_normalize_member($$) {
+	my ($member, $timestamp) = @_; # $member is a ref to an Archive::Zip::Member
+	return $timestamp if $member->isDirectory();
 
 	if ($member->fileName() =~ /\.html$/
 		&&File::StripNondeterminism::handlers::zip::peek_member($member, 1024)
@@ -97,7 +97,7 @@ sub _jar_normalize_member($) {
 			\&normalize);
 	}
 
-	return 1;
+	return $timestamp;
 }
 
 sub _jar_archive_filter($) {
diff --git a/lib/File/StripNondeterminism/handlers/zip.pm b/lib/File/StripNondeterminism/handlers/zip.pm
index 34164ca..8b6a8c7 100644
--- a/lib/File/StripNondeterminism/handlers/zip.pm
+++ b/lib/File/StripNondeterminism/handlers/zip.pm
@@ -198,9 +198,11 @@ sub normalize {
 	for my $filename (@filenames) {
 		my $member = $zip->removeMember($filename);
 		$zip->addMember($member);
-		$options{member_normalizer}->($member)
-		  if exists $options{member_normalizer};
-		$member->setLastModFileDateTimeFromUnix($canonical_time);
+		# member_normalizer returns the timestamp to use.
+		my $timestamp = exists $options{member_normalizer}
+		  ? $options{member_normalizer}->($member, $canonical_time)
+		  : $canonical_time;
+		$member->setLastModFileDateTimeFromUnix($timestamp);
 		if ($member->fileAttributeFormat() == FA_UNIX) {
 			$member->unixFileAttributes(
 				($member->unixFileAttributes() & oct(100))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/strip-nondeterminism.git



More information about the Reproducible-commits mailing list