summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2016-06-03 17:09:14 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-12-12 09:57:44 +0000
commit0f0cf78408fbb79c989de9780aa3590b3336aac6 (patch)
tree39e3bcfb8c892946b5d7102b507b5f76097bcf81
parentUpdated core (diff)
downloadcore-libreoffice-5-0.tar.gz
core-libreoffice-5-0.zip
remove use of Archive::Zip libreoffice-5-0
For -5-0, also use old tempdir function. Cherry-picked from 4e3dc8c141c2efd037c1f214b5edff071812b6a8 Change-Id: Ie0abe09f8696ce3f00be87c819280cf061a818f4 Reviewed-on: https://gerrit.libreoffice.org/31637 Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--README.Solaris2
-rw-r--r--configure.ac6
-rw-r--r--solenv/bin/packimages.pl85
3 files changed, 49 insertions, 44 deletions
diff --git a/README.Solaris b/README.Solaris
index 3b005a0dd4d6..40f7f526e3c2 100644
--- a/README.Solaris
+++ b/README.Solaris
@@ -20,8 +20,6 @@ sudo -s
pkg install git make gcc-45 autoconf autogen automake-110 gnu-m4
-perl -MCPAN -e 'install Archive::Zip::Archive'
-
pkg install pkg:/system/header@0.5.11-0.175.0.0.0.2.1
pkg install pkg:/developer/gperf@3.0.3-0.175.0.0.0.2.537
pkg install pkg:/developer/parser/bison@2.3-0.175.0.0.0.2.537
diff --git a/configure.ac b/configure.ac
index 1c175c0245a7..d1d82ea28cad 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5009,15 +5009,11 @@ dnl Testing for required Perl modules
dnl ===================================================================
AC_MSG_CHECKING([for required Perl modules])
-if `$PERL -e 'use Archive::Zip; use Cwd; use Digest::MD5'>/dev/null 2>&1`; then
+if `$PERL -e 'use Cwd; use Digest::MD5'>/dev/null 2>&1`; then
AC_MSG_RESULT([all modules found])
else
AC_MSG_RESULT([failed to find some modules])
# Find out which modules are missing.
- missing_perl_modules=
- if ! `$PERL -e 'use Archive::Zip;'>/dev/null 2>&1`; then
- missing_perl_modules=Archive::Zip
- fi
if ! `$PERL -e 'use Cwd;'>/dev/null 2>&1`; then
missing_perl_modules="$missing_perl_modules Cwd"
fi
diff --git a/solenv/bin/packimages.pl b/solenv/bin/packimages.pl
index 0e985662e398..434dffe82747 100644
--- a/solenv/bin/packimages.pl
+++ b/solenv/bin/packimages.pl
@@ -27,9 +27,10 @@ use strict;
use Getopt::Long;
use File::Find;
use File::Basename;
+use File::Copy qw(copy);
+use File::Path qw(mkpath);
require File::Temp;
-use File::Temp ();
-use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
+use File::Temp qw(tempdir);
#### globals ####
@@ -91,7 +92,8 @@ remove_links_from_zip_list($zip_hash_ref, \%links);
$do_rebuild = is_file_newer($zip_hash_ref) if $do_rebuild == 0;
if ( $do_rebuild == 1 ) {
- create_zip_archive($zip_hash_ref, \%links);
+ my $tmpdir = copy_images($zip_hash_ref);
+ create_zip_archive($zip_hash_ref, \%links, $tmpdir);
replace_file($tmp_out_file, $out_file);
print_message("packing $out_file finished.") if $verbose;
} else {
@@ -354,40 +356,50 @@ sub optimize_zip_layout($)
return @sorted;
}
-sub create_zip_archive
+sub copy_images($)
{
- my $zip_hash_ref = shift;
- my $links_hash_ref = shift;
+ my ($zip_hash_ref) = @_;
+ my $dir = tempdir( CLEANUP => 1);
+ foreach (keys %$zip_hash_ref) {
+ my $path = $zip_hash_ref->{$_} . "/$_";
+ my $outpath = $dir . "/$_";
+ print_message("copying '$path' to '$outpath' ...") if $extra_verbose;
+ if ( -e $path) {
+ my $dirname = dirname($outpath);
+ if (!-d $dirname) {
+ mkpath($dirname);
+ }
+ copy($path, $outpath)
+ or print_error("can't add file '$path' to image dir: $!", 5);
+ }
+ }
+ return $dir;
+}
+
+sub create_zip_archive($$$)
+{
+ my ($zip_hash_ref, $links_hash_ref, $image_dir_ref) = @_;
print_message("creating image archive ...") if $verbose;
- my $zip = Archive::Zip->new();
- my $linktmp;
+ chdir $image_dir_ref;
+
if (keys %{$links_hash_ref}) {
- $linktmp = write_links($links_hash_ref);
- my $member = $zip->addFile($linktmp->filename, "links.txt", COMPRESSION_DEFLATED);
- if (!$member) {
- print_error("failed to add links file: $!", 5);
- }
+ write_links($links_hash_ref, $image_dir_ref);
+ system "zip $tmp_out_file links.txt";
+ # print_error("failed to add links file: $!", 5);
}
-# FIXME: test - $member = addfile ... $member->desiredCompressionMethod( COMPRESSION_STORED );
-# any measurable performance win/loss ?
- foreach ( optimize_zip_layout($zip_hash_ref) ) {
- my $path = $zip_hash_ref->{$_} . "/$_";
- print_message("zipping '$path' ...") if $extra_verbose;
- if ( -e $path) {
- my $member = $zip->addFile($path, $_, COMPRESSION_STORED);
- if ( !$member ) {
- print_error("can't add file '$path' to image zip archive: $!", 5);
- }
- }
+ my @sorted_list = optimize_zip_layout($zip_hash_ref);
+ my $sorted_file = File::Temp->new();
+ foreach my $item (@sorted_list) {
+ print $sorted_file "$item\n";
}
- my $status = $zip->writeToFileNamed($tmp_out_file);
- if ( $status != AZ_OK ) {
- print_error("write image zip archive '$tmp_out_file' failed. Reason: $status", 6);
- }
- return;
+ binmode $sorted_file; # flush
+
+ system "cat $sorted_file | zip -0 -@ $tmp_out_file";
+ # print_error("write image zip archive '$tmp_out_file' failed. Reason: $!", 6);
+ chdir; # just go out of the temp dir
}
sub replace_file
@@ -489,18 +501,17 @@ sub read_links($$)
close ($fh);
}
-# write out the links to a tmp file
-sub write_links($)
+# write out the links
+sub write_links($$)
{
- my $links = shift;
- my $tmp = File::Temp->new( TEMPLATE => "linksXXXXXXX" );
- $tmp || die "can't create tmp: $!";
+ my ($links, $out_dir_ref) = @_;
+ open (my $fh, ">", "$out_dir_ref/links.txt")
+ || die "can't create links.txt";
for my $missing (sort keys %{$links}) {
my $line = $missing . " " . $links->{$missing} . "\n";
- print $tmp $line;
+ print $fh $line;
}
- binmode $tmp; # force flush
- return $tmp;
+ close $fh;
}
# Ensure that no link points to another link