[Libreoffice-commits] core.git: 2 commits - configure.ac README.Solaris solenv/bin

David Tardon dtardon at redhat.com
Sat Jun 4 06:11:09 UTC 2016


 README.Solaris           |    2 -
 configure.ac             |    6 ---
 solenv/bin/packimages.pl |   86 +++++++++++++++++++++++++----------------------
 3 files changed, 48 insertions(+), 46 deletions(-)

New commits:
commit 4e3dc8c141c2efd037c1f214b5edff071812b6a8
Author: David Tardon <dtardon at redhat.com>
Date:   Fri Jun 3 17:09:14 2016 +0200

    remove use of Archive::Zip
    
    Change-Id: I7c1e0057c3c1c0b6be524d1e9ad37357259ebd7c

diff --git a/README.Solaris b/README.Solaris
index ce460d9..a9ad888 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 at 0.5.11-0.175.0.0.0.2.1
 pkg install pkg:/developer/gperf at 3.0.3-0.175.0.0.0.2.537
 pkg install pkg:/developer/parser/bison at 2.3-0.175.0.0.0.2.537
diff --git a/configure.ac b/configure.ac
index 0a1e137..3f2744f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5122,15 +5122,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 e2f7af6..dc33dde 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(make_path);
 require File::Temp;
 use File::Temp ();
-use Archive::Zip qw(:ERROR_CODES :CONSTANTS);
 
 #### 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 {
@@ -351,40 +353,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 = File::Temp->newdir();
+    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) {
+                make_path($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
@@ -486,18 +498,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
commit c3393443b4b08b0999d10150125fa4737d5848f4
Author: David Tardon <dtardon at redhat.com>
Date:   Fri Jun 3 15:31:54 2016 +0200

    drop unused option
    
    Change-Id: I317160ca6ffc0ff1c7db443f844f02f91fad5929

diff --git a/solenv/bin/packimages.pl b/solenv/bin/packimages.pl
index b05b83f..e2f7af6 100644
--- a/solenv/bin/packimages.pl
+++ b/solenv/bin/packimages.pl
@@ -107,7 +107,6 @@ sub parse_options
     my $opt_help;
     my $p = Getopt::Long::Parser->new();
     my @custom_path_list;
-    my $custom_path_extended;
     my $success =$p->getoptions(
                              '-h' => \$opt_help,
                              '-o=s' => \$out_file,
@@ -115,12 +114,10 @@ sub parse_options
                  '-s=s' => \$sort_file,
                              '-m=s' => \$module_path,
                              '-c=s' => \@custom_path_list,
-                             '-e=s' => \$custom_path_extended,
                              '-l=s' => \@imagelist_path,
                              '-v'   => \$verbose,
                              '-vv'  => \$extra_verbose
                             );
-    push @custom_path_list, $custom_path_extended if ($custom_path_extended);
     if ( $opt_help || !$success || !$out_file || !$global_path
         || !$module_path || !@custom_path_list || !@imagelist_path )
     {


More information about the Libreoffice-commits mailing list