This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT".
The branch, master has been updated via 54d5dbd09bd131717d06e219c951169d8efc2bca (commit) via e8a615e3e0767dd3a69c52516d4dcd81d3649d9d (commit) via 0c0f34fc594bd61964af0a83de5aa41fe856cb40 (commit) via a61ba8636021e1e9a94f897e84ed981b528be751 (commit) via 60a029166df4c0e42fa55e814783a4e208e72aff (commit) from cca85591cfe04e192b5dfd99f683868da0681abc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 54d5dbd09bd131717d06e219c951169d8efc2bca Author: Niels Thykier <ni...@thykier.net> Date: Sun Mar 20 17:47:01 2011 +0100 Fixed a typo in jh_compilefeatures commit e8a615e3e0767dd3a69c52516d4dcd81d3649d9d Author: Niels Thykier <ni...@thykier.net> Date: Sun Mar 20 17:44:14 2011 +0100 Renamed subs for case consistency commit 0c0f34fc594bd61964af0a83de5aa41fe856cb40 Author: Niels Thykier <ni...@thykier.net> Date: Sun Mar 20 17:41:38 2011 +0100 Removed useless interpolization, s/die/error and renamed a sub commit a61ba8636021e1e9a94f897e84ed981b528be751 Author: Niels Thykier <ni...@thykier.net> Date: Sun Mar 20 17:29:03 2011 +0100 Fixed typo in jh_generateorbitdir commit 60a029166df4c0e42fa55e814783a4e208e72aff Author: Niels Thykier <ni...@thykier.net> Date: Sun Mar 20 17:27:02 2011 +0100 Migrate jh_generatorbitdir to the perl manifest handler ----------------------------------------------------------------------- Summary of changes: debian/changelog | 2 + jh_compilefeatures | 2 +- jh_generateorbitdir | 101 +++++++++++++++++++++------------------------------ jh_installeclipse | 8 ++-- 4 files changed, 48 insertions(+), 65 deletions(-) diff --git a/debian/changelog b/debian/changelog index 8d2927f..159b046 100644 --- a/debian/changelog +++ b/debian/changelog @@ -20,6 +20,8 @@ javatools (0.33) unreleased; urgency=low * Made jh_installlibs respect its --tmpdir option. Previously it was silently ignored. * Added missing B-D-I on perl (for pod2man). + * Migrated jh_generateorbitdir to the perl Manifest handler. + * Fixed typo in jh_generateorbitdir and in jh_compilefeatures. -- Matthew Johnson <mj...@debian.org> Sat, 12 Mar 2011 12:58:50 +0000 diff --git a/jh_compilefeatures b/jh_compilefeatures index 5f7c585..b3e79eb 100755 --- a/jh_compilefeatures +++ b/jh_compilefeatures @@ -178,7 +178,7 @@ sub compile{ my @deps = (); DEP_LOOP: foreach my $d (@_){ # Check if we just built this feature. - foreach my $s qw(. .zip .ZIP) { + foreach my $s ('', '.zip', '.ZIP') { my $zip = "$pdebdir/$d$s"; if( -e $zip ){ install_zipped_feature($zip, "$pdebdir/build/SDK"); diff --git a/jh_generateorbitdir b/jh_generateorbitdir index 6f6f8e6..22c0a40 100755 --- a/jh_generateorbitdir +++ b/jh_generateorbitdir @@ -7,8 +7,12 @@ jh_generateorbitdir - Creates and populates an orbit dir used by pde-build for t =cut use strict; +use warnings; + +use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); use Debian::Debhelper::Dh_Lib; use Debian::Javahelper::Eclipse; +use Debian::Javahelper::Manifest( qw(MAIN_SECTION) ); =head1 SYNOPSIS @@ -91,35 +95,38 @@ $SIG{'INT'} = \&sighandler; $SIG{'TERM'} = \&sighandler; if( ! $dh{NO_ACT}){ - open(ORBIT_CACHE, ">>", $cachefile) or error("$cachefile: $!"); + open(ORBIT_CACHE, '>>', $cachefile) or error("$cachefile: $!"); } -doit("mkdir", "-p", $orbitdir); +doit('mkdir', '-p', $orbitdir); -foreach my $jar (findJars(@orbitdeps)){ - my $fields = readFields($jar, EOB_SYM_NAME, EOB_BUNDLE_VERSION); - my $symName = $fields->{${\EOB_SYM_NAME}}; - my $version = $fields->{${\EOB_BUNDLE_VERSION}}; - if($dh{NO_ACT} ){ - $symName = '<bundle-name>'; - $version = '<bundle-version>'; - } - error("$jar did not have any OSGi metadata") unless(defined($symName) && defined($version)); +foreach my $jar (find_jars(@orbitdeps)){ + my $manifest = read_manifest($jar); + my $msect = $mainfest->get_section(MAIN_SECTION); + my $symName = $msect->get_value(${\EOB_SYM_NAME}, 1); + my $version = $msect->get_value(${\EOB_BUNDLE_VERSION}, 1); + error("$jar did not have any OSGi metadata") + unless(defined($symName) && defined($version)); if( -l "$orbitdir/${symName}_${version}.jar"){ my $ltarget = readlink("$orbitdir/${symName}_${version}.jar"); if(defined($ltarget)){ #Use target - print ORBIT_CACHE "$ltarget, $symName, $version\n" unless($dh{NO_ACT}); + print ORBIT_CACHE "$ltarget, $symName, $version\n" + unless($dh{NO_ACT}); } else { - warning("Cannot determine target of $orbitdir/${symName}_${version}.jar; jh_installeclipse will not be able to replace this post-install." ); + warning('Cannot determine target of ' . + "$orbitdir/${symName}_${version}.jar; jh_installeclipse " . + 'will not be able to replace this post-install.' ); } # skip if already linked next; } - error("No touching $orbitdir/${symName}_${version}.jar - it is a dir") if( -d "$orbitdir/${symName}_${version}.jar"); - doit("rm", "-f", "$orbitdir/${symName}_${version}.jar") if( -e "$orbitdir/${symName}_${version}.jar"); + error("No touching $orbitdir/${symName}_${version}.jar - it is a dir") + if( -d "$orbitdir/${symName}_${version}.jar"); + doit('rm', '-f', "$orbitdir/${symName}_${version}.jar") + if( -e "$orbitdir/${symName}_${version}.jar"); print ORBIT_CACHE "$jar, $symName, $version\n" unless($dh{NO_ACT}); - doit("ln", "-s", $jar, "$orbitdir/${symName}_${version}.jar"); + doit('ln', '-s', $jar, "$orbitdir/${symName}_${version}.jar"); } if( ! $dh{NO_ACT}){ @@ -128,56 +135,30 @@ if( ! $dh{NO_ACT}){ exit 0; -sub readFields { +sub read_manifest { my $jar = shift; - my $fields = {}; - if(! $dh{NO_ACT} ){ - chomp($tmpdir = `mktemp -d`); - } else { - $tmpdir = '<tmpdir>'; - } - eval { - doit("unzip", "-qq", "-n", "-d", $tmpdir, $jar); - my $findmancmd = "find $tmpdir -iwholename '*/META-INF/MANIFEST.MF' 2>/dev/null"; - if( ! $dh{NO_ACT} ){ - my $manifest; - verbose_print($findmancmd); - chomp($manifest = `$findmancmd`); - if( $manifest eq '' or ! -e $manifest){ - error("Cannot find the MANIFEST in $jar"); - } - foreach my $f (@_) { - my $cmd = "bash -c \". /usr/share/javahelper/jh_lib.sh && extractline $manifest $f\" 2>/dev/null"; - my $val; - verbose_print($cmd); - error("Could not read the MANIFEST of $jar") if($? != 0); - chomp($val = `$cmd`); - $fields->{$f} = $val; - } - } else { - # print what we would have done. - verbose_print($findmancmd); - foreach my $f (@_) { - verbose_print("bash -c \". /usr/share/javahelper/jh_lib.sh && extractline <manifest> $f\" 2>/dev/null"); - } - } - }; - doit("rm", "-fr", $tmpdir); - $tmpdir = undef; - if($@){ - #propagate the error. - error($@); - } - return $fields; + my $zip = Archive::Zip->new(); + my ($con, $stat); + my $fd; + my $manifest; + $zip->read( "$jar" ) == AZ_OK or error("Could not read $jar: $!"); + ($con, $stat) = $zip->contents( 'META-INF/MANIFEST.MF' ); + error("Could not read manifest from $jar ($stat): $!") + unless(!defined($stat) or $stat == AZ_OK); + error("$jar has no manifest") unless(defined($stat)); + open($fd, '<', \$con) or error("open read string: $!"); + $manifest = parse_manifest_fd($fd, $jar); + close($fd); + return $manifest; } sub sighandler { my $sig = shift; - doit("rm", "-fr", $tmpdir) if(defined($tmpdir)); + doit('rm', '-fr', $tmpdir) if(defined($tmpdir)); error("Caught signal $sig"); } -sub findJars{ +sub find_jars{ my @inc = ('.', '/usr/share/java'); my @res = (); foreach my $globpattern (@_){ @@ -186,7 +167,7 @@ sub findJars{ # Only use inc-path if there is no path. @i = ('') if($globpattern =~ m@/@o); glob_loop: foreach my $p (@inc){ - foreach my $s (''. '.jar') { + foreach my $s ('', '.jar') { my @matches; if($p eq ''){ @matches = glob("$globpattern$s"); @@ -200,7 +181,7 @@ sub findJars{ last glob_loop; } } - die("Could not find any matches for $globpattern") unless($found); + error("Could not find any matches for $globpattern") unless($found); } return @res; } diff --git a/jh_installeclipse b/jh_installeclipse index ef4bb0c..ef49370 100755 --- a/jh_installeclipse +++ b/jh_installeclipse @@ -109,7 +109,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { my @infiles; next if($installfile eq ''); $defdname = $1 if($package =~ m/^eclipse-(.+)/o); - $dropins = getDropinsPath($package); + $dropins = get_dropins_path($package); @infiles = filedoublearray($installfile); if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) { push @infiles, [@ARGV]; @@ -132,7 +132,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } } while ( my ($sysjar, $users) = each(%needed) ){ - my ($pkg, $ver) = findDependency($sysjar); + my ($pkg, $ver) = find_dependency($sysjar); if(!defined($pkg)){ warning("Cannot determine the package providing $sysjar."); next; @@ -154,14 +154,14 @@ foreach my $package (@{$dh{DOPACKAGES}}){ exit(0); # Determines where to install something for a given package. -sub getDropinsPath{ +sub get_dropins_path{ my $package = shift; my $prefix = tmpdir($package) . "/usr/"; $prefix .= exists($archpackages{$package})?"lib":"share"; return "$prefix/eclipse/dropins"; } -sub findDependency{ +sub find_dependency{ my $sysjar = shift; my $deppkg = undef; my $depver = undef; hooks/post-receive -- UNNAMED PROJECT _______________________________________________ pkg-java-commits mailing list pkg-java-comm...@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/pkg-java-commits