Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 177912 Details for
Bug 231331
FreeHEP libraries
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
make-maven-ebuild.pl
make-maven-ebuild.pl (text/plain), 4.58 KB, created by
Andrey Kislyuk (RETIRED)
on 2009-01-09 22:12:17 UTC
(
hide
)
Description:
make-maven-ebuild.pl
Filename:
MIME Type:
Creator:
Andrey Kislyuk (RETIRED)
Created:
2009-01-09 22:12:17 UTC
Size:
4.58 KB
patch
obsolete
>#!/usr/bin/env perl > >use strict; >use File::Path; >use XML::Parser; > >die("Usage: $0 maven-repo group-id package-name\n") if @ARGV < 3; > >my ($repo, $group_id, $pkg_name) = @ARGV; >my $group_path = $group_id; $group_path =~ s/\./\//; >my $portdir = "."; >my $group_desc = "High Energy Physics Java library"; > >my $proto_ebuild = `cat $portdir/maven-proto.ebuild` or die; > >my (@deps, @portage_dep_atoms, @portage_env_pkgs); >warn "$0: parsing $pkg_name\n"; > >my @versions; >my $pkg_parser = new XML::Parser(Style=>'Tree'); >my $pkg_tree = $pkg_parser->parse(scalar(`wget -q -O - $repo/$group_path/$pkg_name/maven-metadata.xml`)); >foreach my $i (0..$#{$pkg_tree->[1]}) { > next if $pkg_tree->[1]->[$i] ne 'versioning'; > my @v = @{$pkg_tree->[1]->[$i+1]}; > foreach my $j (0..$#v) { > next if $v[$j] ne 'versions'; > my @vers = @{$v[$j+1]}; > foreach my $k (0..$#vers) { > next if $vers[$k] ne 'version'; > my $version = $vers[$k+1]->[2]; > @versions = ($version) if $version =~ /^(\d\.)+\d$/; > } > } >} > >foreach my $version (@versions) { > my ($pkg_desc, $pkg_url); > my $parser = new XML::Parser(Style=>'Tree'); > my $tree = $parser->parse(scalar(`wget -q -O - $repo/$group_path/$pkg_name/$version/$pkg_name-$version.pom`)); > foreach my $i (0..$#{$tree->[1]}) { > if ($tree->[1]->[$i] eq 'description') { > $pkg_desc = $tree->[1]->[$i+1]->[2]; > } elsif ($tree->[1]->[$i] eq 'url') { > $pkg_url = $tree->[1]->[$i+1]->[2]; > } > next if $tree->[1]->[$i] ne 'dependencies'; > my @d = @{$tree->[1]->[$i+1]}; > foreach my $j (0..$#d) { > next if $d[$j] ne 'dependency'; > my @dep = @{$d[$j+1]}; > my %dep_info; > foreach my $k (0..$#dep) { > next if $dep[$k] !~ /groupId|artifactId|version/; > my $value = $dep[$k+1]->[2]; > $dep_info{$dep[$k]} = $value; > } > push(@deps, \%dep_info); > } > } > > print "$pkg_name-$version:\n"; > foreach my $dep (@deps) { > my ($portage_atom, $env_pkg); > if ($$dep{artifactId} eq 'kxml2') { > $portage_atom = '>=dev-java/kxml-2.3.0'; $env_pkg = 'kxml'; > } elsif ($$dep{artifactId} eq 'cernlib') { > $portage_atom = 'sci-physics/cernlib'; # needs runtime testing with higher cernlib version > } elsif ($$dep{artifactId} eq 'aida') { > $portage_atom = 'dev-java/hep-aida'; $env_pkg = 'aida'; > } elsif ($$dep{artifactId} =~ /^(openide-lookup|pawdemo|JAS|jas-plotter|rowwise)$/) { > $portage_atom = 'dev-java/freehep-misc-deps'; $env_pkg = 'freehep-misc-deps'; > } elsif ($$dep{artifactId} eq 'cernlib') { > $portage_atom = 'sci-physics/cernlib'; > } elsif ($$dep{groupId} =~ /^(org.freehep|junit|commons-codec|jdom|bcel|org.apache.bcel|org.codehaus.plexus|org.apache.maven)$/) { > if ($$dep{artifactId} ne 'fortran') { > $portage_atom = "dev-java/$$dep{artifactId}"; > $portage_atom = ">=$portage_atom-$$dep{version}" if $$dep{version}; > $env_pkg = $$dep{artifactId} if $$dep{artifactId} =~ /^(junit|bcel|commons-codec)$/ or $$dep{groupId} =~ /^(org.freehep)$/; > $env_pkg = 'jdom-1.0' if $$dep{artifactId} eq 'jdom'; > } > } > > push(@portage_dep_atoms, $portage_atom) if $portage_atom; > push(@portage_env_pkgs, $env_pkg) if $env_pkg; > warn "\tUNRESOLVED: $$dep{groupId}\t$$dep{artifactId}\t$$dep{version}\n" unless $portage_atom; > } > > # freehep internal dependency matrix is incomplete. stupid. > if ($pkg_name eq 'freehep-export') { > push(@portage_dep_atoms, 'dev-java/freehep-util'); > push(@portage_env_pkgs, 'freehep-util'); > } elsif ($pkg_name eq 'freehep-graphicsio') { > push(@portage_dep_atoms, 'dev-java/freehep-util'); > push(@portage_env_pkgs, 'freehep-util'); > push(@portage_dep_atoms, 'dev-java/freehep-swing'); > push(@portage_env_pkgs, 'freehep-swing'); > } elsif ($pkg_name =~ /^freehep-graphicsio-(tests|java|ps|pdf)$/) { > (push(@portage_dep_atoms, "dev-java/$_"), > push(@portage_env_pkgs, $_)) > for qw(freehep-util freehep-swing freehep-graphics2d freehep-io freehep-export); > } > > print "\t".join("\n\t", @portage_dep_atoms)."\n"; > > $proto_ebuild =~ s/DESCRIPTION=".*?"/DESCRIPTION="$group_desc - $pkg_desc"/s; > $proto_ebuild =~ s/HOMEPAGE=".*?"/HOMEPAGE="$pkg_url"/s; > my $deps_string = join("\n\t", @portage_dep_atoms); > $proto_ebuild =~ s/CDEPEND=".*?"/CDEPEND="$deps_string"/s; > my $env_pkgs_string = join(",", @portage_env_pkgs); > $proto_ebuild =~ s/JAVA_GENTOO_CLASSPATH=".*?"/JAVA_GENTOO_CLASSPATH="$env_pkgs_string"/s; > $proto_ebuild =~ s/GROUP_ID=".*?"/GROUP_ID="$group_id"/s; > $proto_ebuild =~ s/MAVEN2_REPOSITORIES=".*?"/MAVEN2_REPOSITORIES="$repo"/s; > > mkdir "$portdir/$pkg_name"; > open(OUT, '>', "$portdir/$pkg_name/$pkg_name-$version.ebuild") or die; > print OUT $proto_ebuild; > close OUT; > system("ebuild $portdir/$pkg_name/$pkg_name-$version.ebuild digest"); die if $?; >} > >warn "Ebuild generated ;)\n";
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 231331
:
177542
|
177543
|
177545
|
177547
|
177608
|
177610
|
177912
|
177913
|
177972