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 <dtar...@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@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 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 <dtar...@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 ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits