[Reproducible-builds] [strip-nondeterminism] 06/06: Normalize Javadoc files inside Jars
Andrew Ayer
agwa at andrewayer.name
Sun Sep 14 05:14:42 UTC 2014
This is an automated email from the git hooks/post-receive script.
agwa-guest pushed a commit to branch master
in repository strip-nondeterminism.
commit 0faf9c5a8d54936afe70772a880e308db4881fb8
Author: Andrew Ayer <agwa at andrewayer.name>
Date: Sat Sep 13 21:29:38 2014 -0700
Normalize Javadoc files inside Jars
---
TODO | 2 +-
lib/StripNondeterminism/handlers/jar.pm | 17 ++++++++++++++++-
lib/StripNondeterminism/handlers/zip.pm | 5 +++--
3 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/TODO b/TODO
index d0b21a1..ade8392 100644
--- a/TODO
+++ b/TODO
@@ -4,7 +4,7 @@ Write handlers for:
[DONE] ar
[DONE] zip
[DONE] jar
- javadoc embedded inside jar file
+ [DONE] javadoc embedded inside jar file
...
[DONE] Write main strip-nondeterminism command
diff --git a/lib/StripNondeterminism/handlers/jar.pm b/lib/StripNondeterminism/handlers/jar.pm
index f18d9fa..d795ec4 100644
--- a/lib/StripNondeterminism/handlers/jar.pm
+++ b/lib/StripNondeterminism/handlers/jar.pm
@@ -23,6 +23,7 @@ use warnings;
use Archive::Zip;
use StripNondeterminism::handlers::zip;
+use StripNondeterminism::handlers::javadoc;
sub _jar_filename_cmp ($$) {
my ($a, $b) = @_;
@@ -35,9 +36,23 @@ sub _jar_filename_cmp ($$) {
return $a cmp $b;
}
+sub _jar_normalize_member {
+ my ($member) = @_; # $member is a ref to an Archive::Zip::Member
+ return if $member->isDirectory();
+
+ if ($member->fileName() =~ /\.html$/ &&
+ StripNondeterminism::handlers::zip::peek_member($member, 1024) =~ /\<!-- Generated by javadoc/) {
+ # javadoc header should be within first 1kb of file
+ StripNondeterminism::handlers::zip::normalize_member($member,
+ \&StripNondeterminism::handlers::javadoc::normalize);
+ }
+}
+
sub normalize {
my ($jar_filename) = @_;
- return StripNondeterminism::handlers::zip::normalize($jar_filename, \&_jar_filename_cmp);
+ return StripNondeterminism::handlers::zip::normalize($jar_filename,
+ filename_cmp => \&_jar_filename_cmp,
+ member_normalizer => \&_jar_normalize_member);
}
1;
diff --git a/lib/StripNondeterminism/handlers/zip.pm b/lib/StripNondeterminism/handlers/zip.pm
index faf5a94..4baa0d4 100644
--- a/lib/StripNondeterminism/handlers/zip.pm
+++ b/lib/StripNondeterminism/handlers/zip.pm
@@ -63,13 +63,14 @@ sub normalize_member {
}
sub normalize {
- my ($zip_filename, $filename_cmp) = @_;
- $filename_cmp ||= sub { $a cmp $b };
+ my ($zip_filename, %options) = @_;
+ my $filename_cmp = $options{filename_cmp} || sub { $a cmp $b };
my $zip = Archive::Zip->new($zip_filename);
my @filenames = sort $filename_cmp $zip->memberNames();
for my $filename (@filenames) {
my $member = $zip->removeMember($filename);
$zip->addMember($member);
+ $options{member_normalizer}->($member) if exists $options{member_normalizer};
$member->setLastModFileDateTimeFromUnix(SAFE_EPOCH);
}
$zip->overwrite();
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/strip-nondeterminism.git
More information about the Reproducible-builds
mailing list