Nice !

2011/8/15, Jeff Johnson <j...@rpm5.org>:
>   RPM Package Manager, CVS Repository
>   http://rpm5.org/cvs/
>
> ____________________________________________________________________________
>
>   Server: rpm5.org                         Name:   Jeff Johnson
>   Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
>   Module: rpm                              Date:   15-Aug-2011 22:26:41
>   Branch: HEAD                             Handle: 2011081520264000
>
>   Added files:
>     rpm/scripts             pom2spec
>   Modified files:
>     rpm                     CHANGES
>     rpm/scripts             Makefile.am
>
>   Log:
>     - include Pascal's pom2spec java -> *.rpm wrapper from
>       https://gitorious.org/pbleser/pbleser/blobs/raw/master/pom2spec)
>
>   Summary:
>     Revision    Changes     Path
>     1.3667      +2  -0      rpm/CHANGES
>     1.84        +2  -2      rpm/scripts/Makefile.am
>     1.1         +568 -0     rpm/scripts/pom2spec
>
> ____________________________________________________________________________
>
>   patch -p0 <<'@@ .'
>   Index: rpm/CHANGES
>
> ============================================================================
>   $ cvs diff -u -r1.3666 -r1.3667 CHANGES
>   --- rpm/CHANGES     29 Jul 2011 04:26:06 -0000      1.3666
>   +++ rpm/CHANGES     15 Aug 2011 20:26:40 -0000      1.3667
>   @@ -1,4 +1,6 @@
>    HEAD:
>   +    - jbj: include Pascal's pom2spec java -> *.rpm wrapper from
>   +   https://gitorious.org/pbleser/pbleser/blobs/raw/master/pom2spec)
>        - proyvind: add sparc64v2 arch to %sparcx.
>        - proyvind: try sanitize %sparc vs %sparcx inconsistencies, make
> %sparc
>       all 32 bit sparc archs only, with %sparcx being all 32 bit archs AND
>   @@ .
>   patch -p0 <<'@@ .'
>   Index: rpm/scripts/Makefile.am
>
> ============================================================================
>   $ cvs diff -u -r1.83 -r1.84 Makefile.am
>   --- rpm/scripts/Makefile.am 6 Jul 2011 09:30:12 -0000       1.83
>   +++ rpm/scripts/Makefile.am 15 Aug 2011 20:26:40 -0000      1.84
>   @@ -28,7 +28,7 @@
>       nix_meta \
>       osgideps.pl pkgconfigdeps.sh \
>       perldeps.pl perl.prov perl.req pythondeps.sh pythoneggs.py \
>   -   php.prov php.req rpm2cpio \
>   +   php.prov php.req pom2spec rpm2cpio \
>       rpmdb_loadcvt rpmdiff rpmdiff.cgi \
>       rpm.daily rpm.log rpm.xinetd \
>       rpmsort rt-reloc-wrapper.sh ruby-config rubygems.rb symset-table \
>   @@ -69,7 +69,7 @@
>       vcheck vpkg-provides.sh vpkg-provides2.sh
>
>    pkglibbindir =             @USRLIBRPM@/bin
>   -pkglibbin_SCRIPTS = abi-compliance-checker.pl api-sanity-autotest.pl
>   +pkglibbin_SCRIPTS = abi-compliance-checker.pl api-sanity-autotest.pl
> pom2spec
>
>    pkglibhelperdir =  @USRLIBRPM@/helpers
>    pkglibhelper_SCRIPTS =     ${HELPERS}
>   @@ .
>   patch -p0 <<'@@ .'
>   Index: rpm/scripts/pom2spec
>
> ============================================================================
>   $ cvs diff -u -r0 -r1.1 pom2spec
>   --- /dev/null       2011-08-15 22:22:00.000000000 +0200
>   +++ pom2spec        2011-08-15 22:26:40.987896775 +0200
>   @@ -0,0 +1,568 @@
>   +#!/usr/bin/perl
>   +# vim: ai:ts=4:sw=4:et
>   +#
>   +# Pulls metadata from a Maven2 POM file on Maven Central
>   +# to generate a .spec file (on STDOUT) that merely warps
>   +# the .jar file(s) into noarch RPM files.
>   +#
>   +# Note that it does *NOT* create a .spec file that builds
>   +# the upstream sources, that would just be too much awesome
>   +# magic.
>   +#
>   +# Copyright 2011 Pascal Bleser <pascal.ble...@opensuse.org>
>   +#
>   +# This file is licensed under the
>   +# GNU Lesser General Public License version 2.1 or later:
>   +# http://www.gnu.org/licenses/lgpl-2.1.html
>   +#
>   +
>   +use strict;
>   +use warnings;
>   +use LWP::UserAgent;
>   +use XML::LibXML;
>   +use Cwd;
>   +use File::Basename;
>   +use Carp;
>   +
>   +# These are the very few configuration options:
>   +
>   +my $repourl = "http://repo1.maven.org/maven2";;
>   +my $include_requires_as_buildrequires = 1;
>   +my $agent = "pom2spec/1.0";
>   +my $email = 'pascal.ble...@opensuse.org';
>   +my $max_redirect = 2;
>   +my $timeout = 20; # in seconds
>   +
>   +# Now some helper functions to reduce verbosity:
>   +
>   +# Returns either the content of the file that is specified
>   +# as parameter or undef if the file does not exist.
>   +sub r($) {
>   +    my $filename = shift;
>   +    if (-e $filename) {
>   +        open(my $fh, '<', $filename) or croak "failed to read existing
> file $filename: $!";
>   +        chomp(my $content = do { local $/; <$fh>; });
>   +        close($fh);
>   +        return $content;
>   +    } else {
>   +        return undef;
>   +    }
>   +}
>   +
>   +# "ue" = "unique element": seeks out a unique child element
>   +# under a node ($p) with a given tag name ($n) and, when
>   +# found, returns its chomped text content.
>   +# Croaks out when no matching element could be found, or when
>   +# more than one matching element could be found.
>   +sub ue($$) {
>   +    my $p = shift;
>   +    my $n = shift;
>   +    my @results = $p->getChildrenByTagName($n);
>   +    croak "invalid metadata: has more than one <${n}/> element" if
> scalar(@results) > 1;
>   +    croak "invalid metadata: has no <${n}/> element" if scalar(@results)
> < 1;
>   +    chomp(my $t = $results[0]->textContent);
>   +    return $t;
>   +}
>   +
>   +# Same as "ue", but when no matching element is found, it returns
>   +# a fallback value ($alt) instead of croaking.
>   +sub uec($$$) {
>   +    my $p = shift;
>   +    my $n = shift;
>   +    my $alt = shift;
>   +    my @results = $p->getChildrenByTagName($n);
>   +    croak "invalid metadata: has more than one <${n}/> element" if
> scalar(@results) > 1;
>   +    return $alt if scalar(@results) < 1;
>   +    chomp(my $t = $results[0]->textContent);
>   +    return $t;
>   +}
>   +
>   +# Conditionally puts a match (see ue() and uec() above) into a hash.
>   +sub ueh($$$$) {
>   +    my $p = shift;
>   +    my $n = shift;
>   +    my $h = shift;
>   +    my $k = shift;
>   +    my @results = $p->getChildrenByTagName($n);
>   +    croak "invalid metadata: has more than one <${n}/> element" if
> scalar(@results) > 1;
>   +    return undef if scalar(@results) < 1;
>   +    chomp(my $t = $results[0]->textContent);
>   +    $h->{$k} = $t if defined $t;
>   +    return $t;
>   +}
>   +
>   +# Simple and naive transliteration (replaces ${...} placeholders by
>   +# their value in a hash).
>   +sub trl($$) {
>   +    my $text = shift;
>   +    return $text unless defined $text;
>   +
>   +    my $dict = shift;
>   +
>   +    while ($text =~ /^(.*?)\$\{(.+?)\}(.*)$/) {
>   +        croak "unresolvable placeholder \${$2}" unless exists
> $dict->{$2};
>   +        $text = $1 . $dict->{$2} . $3;
>   +    }
>   +    return $text;
>   +}
>   +
>   +my $group;
>   +my $name;
>   +my $version;
>   +my $pgroup;
>   +my $path;
>   +{
>   +    if (scalar(@ARGV) == 0 or scalar(@ARGV) == 1) {
>   +        my $d = basename(cwd());
>   +        ($group, $name, $version) = $d =~ /^(.+)\.([^\.]+)(?:-(\d.?))?$/;
>   +        die "when groupId and artifactId are not specified as parameters,
> the current directory must reflect groupId.artifactId" unless defined $group
> and defined $name;
>   +        my $versionOverride = shift;
>   +        if (defined($versionOverride)) {
>   +            die "version is already specified in the name of the current
> working directory ($d -> $version)" if defined $version;
>   +            $version = $versionOverride;
>   +        }
>   +    } elsif (scalar(@ARGV) == 2 or scalar(@ARGV) == 3) {
>   +        $group = shift;
>   +        $name = shift;
>   +        $version = shift;
>   +
>   +        $group =~ s/\//./g;
>   +    }
>   +    # $version might and may be undefined at this point
>   +
>   +    ($pgroup = $group) =~ s/\./\//g;
>   +    $path = $pgroup.'/'.$name;
>   +}
>   +
>   +my $ua;
>   +{
>   +    $ua = LWP::UserAgent->new;
>   +    $ua->agent($agent);
>   +    $ua->timeout($timeout);
>   +    $ua->max_redirect($max_redirect);
>   +    $ua->from($email);
>   +}
>   +
>   +my $groupId;
>   +my $artifactId;
>   +my @versions;
>   +my $defaultVersion;
>   +{
>   +    my $url = "${repourl}/${path}/maven-metadata.xml";
>   +    my $req = HTTP::Request->new(GET => $url);
>   +    $req->content_type('text/xml');
>   +    my $res = $ua->request($req);
>   +    unless ($res->is_success) {
>   +        die "failed to get $url (".$res->status_line.")";
>   +    }
>   +
>   +    my $parser = XML::LibXML->new;
>   +    $parser->validation(0);
>   +    $parser->no_network(1);
>   +    $parser->load_ext_dtd(0);
>   +
>   +    my $doc = $parser->parse_string($res->content);
>   +    my $metadata = $doc->getDocumentElement();
>   +
>   +    $groupId = ue($metadata, 'groupId');
>   +    warn "WARNING: groupId in maven-metadata.xml file is \"$groupId\"\n"
> if $groupId ne $group;
>   +    $artifactId = ue($metadata, 'artifactId');
>   +    $defaultVersion = uec($metadata, 'version', undef);
>   +
>   +    @versions = ();
>   +    foreach my $versioning
> ($metadata->getChildrenByTagName('versioning')) {
>   +        foreach my $versions
> ($versioning->getChildrenByTagName('versions')) {
>   +            foreach my $ve ($versions->getChildrenByTagName('version')) {
>   +                chomp(my $v = $ve->textContent);
>   +                push(@versions, $v);
>   +            }
>   +        }
>   +    }
>   +
>   +    if (defined $version) {
>   +        die "requested version ${version} is not in metadata" unless
> @versions // $version;
>   +    } else {
>   +        die "call again and specify the exact version, one
> of:\n".join("\n", map { " - ".$_ } @versions)."\n";
>   +    }
>   +}
>   +
>   +
>   +$name = "${groupId}.${artifactId}-${version}";
>   +my $out = "${name}.spec";
>   +
>   +sub resolve($$$$);
>   +
>   +# global because we load once and cache
>   +my %ignoredeps;
>   +{
>   +    if (-e "_ignoredeps") {
>   +        open(my $fh, "<", "_ignoredeps") or die "failed to open
> _ignoredeps: $!";
>   +        while (<$fh>) {
>   +            chomp;
>   +            s/#.+//;
>   +            next if /^$/;
>   +            croak "invalid line \"$_\" in _ignoredeps" unless
> /^(.+?):(.+)$/;
>   +            $ignoredeps{$_} = 1;
>   +        }
>   +        close($fh);
>   +    } else {
>   +        %ignoredeps = ();
>   +    }
>   +}
>   +
>   +sub resolve($$$$) {
>   +    my $g = shift;
>   +    my $a = shift;
>   +    my $v = shift;
>   +    my $is_parent = shift;
>   +
>   +    my $r = {};
>   +
>   +    (my $p = $g) =~ s/\./\//g;
>   +
>   +    my $url = "${repourl}/${p}/${a}/${v}/${a}-${v}.pom";
>   +    my $req = HTTP::Request->new(GET => $url);
>   +    $req->content_type('text/xml');
>   +    my $res = $ua->request($req);
>   +    unless ($res->is_success) {
>   +        croak "failed to get $url (".$res->status_line.")";
>   +    }
>   +
>   +    $r->{pomurl} = $url;
>   +
>   +    my $parser = XML::LibXML->new;
>   +    $parser->validation(0);
>   +    $parser->no_network(1);
>   +    $parser->load_ext_dtd(0);
>   +
>   +    my $doc = $parser->parse_string($res->content);
>   +    my $project = $doc->getDocumentElement();
>   +
>   +    my $parent;
>   +    {
>   +        my @parentElems = $project->getChildrenByTagName('parent');
>   +        croak "invalid metadata: has more than one <parent/> element" if
> scalar(@parentElems) > 1;
>   +        if (scalar(@parentElems) > 0) {
>   +            my $parentElem = $parentElems[0];
>   +            $parent = resolve(ue($parentElem, 'groupId'), ue($parentElem,
> 'artifactId'), uec($parentElem, 'version', $v), 1);
>   +        } else {
>   +            $parent = {};
>   +        }
>   +    }
>   +
>   +    $r->{artifactId} = uec($project, 'artifactId', $name);
>   +    {
>   +        my $nameOverride = $is_parent ? undef : r("_name.override");
>   +        if (defined $nameOverride) {
>   +            $r->{name} = $nameOverride;
>   +        } else {
>   +            $r->{name} = $r->{artifactId};
>   +        }
>   +    }
>   +    {
>   +        my $groupIdOverride = $is_parent ? undef :
> r("_groupId.override");
>   +        if (defined $groupIdOverride) {
>   +            $r->{groupId} = $groupIdOverride;
>   +        } else {
>   +            $r->{groupId} = uec($project, 'groupId', $r->{artifactId});
>   +            warn "WARNING: groupId in pom file is \"$groupId\", was
> expecting \"$g\": $url\n" if $r->{groupId} ne $g;
>   +        }
>   +    }
>   +    $r->{version} = uec($project, 'version', exists $parent->{version} ?
> $parent->{version} : $v);
>   +    $r->{packaging} = uec($project, 'packaging', 'jar');
>   +    $r->{summary} = uec($project, 'name', r('_summary'));
>   +    ueh($project, 'description', $r, 'description');
>   +    ueh($project, 'url', $r, 'url');
>   +    {
>   +        my $license;
>   +        {
>   +            my @licenses;
>   +            {
>   +                my @l = ();
>   +                foreach my $licenses
> ($project->getChildrenByTagName('licenses')) {
>   +                    foreach my $licenseElem
> ($licenses->getChildrenByTagName('license')) {
>   +                        chomp(my $name = ue($licenseElem, 'name'));
>   +                        push(@l, $name);
>   +                    }
>   +                }
>   +                if (scalar(@l) > 0) {
>   +                    @licenses = @l;
>   +                } elsif (exists $parent->{license}) {
>   +                    @licenses = ($parent->{license});
>   +                } else {
>   +                    @licenses = ();
>   +                }
>   +            }
>   +            if (scalar(@licenses) > 1) {
>   +                $license = join(", ", @licenses);
>   +            } elsif (scalar(@licenses) > 0) {
>   +                $license = $licenses[0];
>   +            } else {
>   +                $license = undef;
>   +            }
>   +        }
>   +        if (defined $license) {
>   +            $r->{license} = $license;
>   +            warn "WARNING: unnecessary (and unused) file _license\n" if
> -e "_license" and $is_parent;
>   +        } else {
>   +            if (-e "_license") {
>   +                $r->{license} = '';
>   +                open(my $lf, '<', "_license") or croak "failed to open
> _license: $!";
>   +                while (<$lf>) {
>   +                    chomp;
>   +                    $r->{license} .= $_;
>   +                }
>   +                close($lf);
>   +            } else {
>   +                warn "WARNING: no license specified for ".join(":", map {
> $r->{$_} } qw(groupId artifactId version))."\n";
>   +            }
>   +        }
>   +    }
>   +
>   +    {
>   +        my @dependencies;
>   +        {
>   +            my $props;
>   +            {
>   +                $props = {};
>   +                while (my ($k, $v) = each(%{$r})) {
>   +                    $props->{"project.${k}"} = $v;
>   +                }
>   +
>   +                foreach my $properties
> ($project->getChildrenByTagName('properties')) {
>   +                    foreach my $prop (grep { $_->nodeType ==
> XML_ELEMENT_NODE } $properties->childNodes()) {
>   +                        chomp(my $k = $prop->nodeName);
>   +                        chomp(my $v = $prop->textContent);
>   +                        $props->{$k} = $v;
>   +                    }
>   +                }
>   +            }
>   +
>   +            if (exists $parent->{dependencies}) {
>   +                @dependencies = @{$parent->{dependencies}};
>   +            } else {
>   +                @dependencies = ();
>   +            }
>   +
>   +            foreach my $dependency
> ($project->getChildrenByTagName('dependencies')) {
>   +                foreach my $dependency
> ($dependency->getChildrenByTagName('dependency')) {
>   +                    my $scope = uec($dependency, 'scope', 'runtime');
>   +                    next if $scope ne 'runtime';
>   +
>   +                    my $dg = trl(ue($dependency, 'groupId'), $props);
>   +                    my $da = trl(ue($dependency, 'artifactId'), $props);
>   +                    my $dv = trl(uec($dependency, 'version', undef),
> $props);
>   +
>   +                    if (exists $ignoredeps{"$dg:$da"}) {
>   +                        warn "ignoring dependency $dg:$da\n";
>   +                        next;
>   +                    }
>   +
>   +                    my $d = {
>   +                        groupId => $dg,
>   +                        artifactId => $da,
>   +                    };
>   +                    $d->{version} = $dv if defined $dv;
>   +                    push(@dependencies, $d);
>   +                }
>   +            }
>   +        }
>   +
>   +        $r->{dependencies} = \@dependencies;
>   +    }
>   +
>   +    {
>   +        my $sources_url =
> "${repourl}/${p}/${a}/${v}/${a}-${v}-sources.jar";
>   +        my $head = HTTP::Request->new(HEAD => $sources_url);
>   +        $head->content_type('application/java-archive');
>   +        my $res = $ua->request($head);
>   +        $r->{sources} = $sources_url if $res->is_success and $res->code
> == 200;
>   +    }
>   +    if (0) {
>   +        # not sufficiently implemented, would actually need to explode
> the javadoc jar
>   +        # and strip off the package directory from it to properly install
> it
>   +        # under %{_javadocdir} in the spec file
>   +        my $javadoc_url =
> "${repourl}/${p}/${a}/${v}${a}-${v}-javadoc.jar";
>   +        my $head = HTTP::Request->new(HEAD => $javadoc_url);
>   +        $head->content_type('application/java-archive');
>   +        my $res = $ua->request($head);
>   +        $r->{javadoc} = $javadoc_url if $res->is_success;
>   +    }
>   +
>   +    return $r;
>   +}
>   +
>   +my %x = %{resolve($groupId, $artifactId, $version, 0)};
>   +
>   +{
>   +    my $tty;
>   +    {
>   +        open($tty, '>>', '/dev/tty') or $tty = undef;
>   +    }
>   +    if (defined $tty) {
>   +        say $tty "name:         $x{name}";
>   +        say $tty "groupId:      $x{groupId}";
>   +        say $tty "artifactId:   $x{artifactId}";
>   +        say $tty "version:      $x{version}";
>   +        say $tty "license:      $x{license}" if exists $x{license};
>   +        say $tty "packaging:    $x{packaging}";
>   +        say $tty "summary:      $x{summary}" if exists $x{summary};
>   +        say $tty "url:          $x{url}" if exists $x{url};
>   +        say $tty "description:  $x{description}" if exists
> $x{description};
>   +        if (scalar(@{$x{dependencies}}) > 0) {
>   +            say $tty "dependencies:";
>   +            foreach my $d (@{$x{dependencies}}) {
>   +                say $tty "    $d->{groupId}:$d->{artifactId}" . (exists
> $d->{version} ? ":".$d->{version} : "");
>   +            }
>   +        }
>   +    }
>   +}
>   +
>   +(my $uversion = $x{version}) =~ s/\./_/g;
>   +my $summary = exists $x{summary} ? $x{summary} : $x{groupId};
>   +my $description = exists $x{description} ? $x{description} : $summary;
>   +
>   +open(my $outfd, '>', $out) or die "failed to create $out: $!";
>   +my $oldselectfd = select $outfd;
>   +
>   +print<<EOF;
>   +# vim: set sw=4 ts=4 et:
>   +
>   +# POM:        $x{pomurl}
>   +# groupId:    $x{groupId}
>   +# artifactId: $x{artifactId}
>   +
>   +Name:               ${name}
>   +%define uname       %{name}-${uversion}
>   +Version:            $x{version}
>   +Release:            0
>   +Summary:            ${summary}
>   +Source0:
> ${repourl}/${path}/${version}/$x{artifactId}-$x{version}.jar
>   +EOF
>   +if (exists $x{sources}) {
>   +    print<<EOF;
>   +Source1:            $x{sources}
>   +EOF
>   +}
>   +if (exists $x{url}) {
>   +    print<<EOF;
>   +URL:                $x{url}
>   +EOF
>   +}
>   +print<<EOF;
>   +Group:              Development/Libraries/Java
>   +EOF
>   +if (exists $x{license}) {
>   +    print<<EOF;
>   +License:            $x{license}
>   +EOF
>   +}
>   +print<<EOF;
>   +BuildRoot:          %{_tmppath}/build-%{name}-%{version}
>   +BuildArch:          noarch
>   +Requires:           %{uname} = %{version}
>   +EOF
>   +if ($include_requires_as_buildrequires) {
>   +    foreach my $d (@{$x{dependencies}}) {
>   +        my $version_text = exists $d->{version} ? " = ".$d->{version} :
> "";
>   +        print<<EOF;
>   +BuildRequires:      java($d->{groupId}:$d->{artifactId})${version_text}
>   +EOF
>   +    }
>   +}
>   +print<<EOF;
>   +
>   +%description
>   +${description}
>   +
>   +%package -n %{uname}
>   +Summary:            ${summary}
>   +Group:              Development/Libraries/Java
>   +Provides:           java($x{groupId}:$x{artifactId}) = $x{version}
>   +EOF
>   +foreach my $d (@{$x{dependencies}}) {
>   +    my $version_text = exists $d->{version} ? " = ".$d->{version} : "";
>   +    print<<EOF;
>   +Requires:           java($d->{groupId}:$d->{artifactId})${version_text}
>   +EOF
>   +}
>   +print<<EOF;
>   +%description -n %{uname}
>   +${description}
>   +
>   +EOF
>   +if (exists $x{sources}) {
>   +    print<<EOF;
>   +%package -n %{name}-sources
>   +Summary:            Sources for %{name}
>   +Group:              Development/Libraries/Java
>   +Requires:           %{uname}-sources = %{version}
>   +%description -n %{name}-sources
>   +This package contains the source bundle for %{name}.
>   +
>   +%package -n %{uname}-sources
>   +Summary:            Sources for %{uname}
>   +Group:              Development/Libraries/Java
>   +Requires:           %{uname} = %{version}
>   +%description -n %{uname}-sources
>   +This package contains the source bundle for %{uname}.
>   +EOF
>   +}
>   +print<<EOF;
>   +
>   +%prep
>   +%setup -q -T -c "%{name}-%{version}"
>   +
>   +%build
>   +
>   +%install
>   +%__install -D -m0644 "%{SOURCE0}"
> "%{buildroot}%{_javadir}/%{name}-%{version}.jar"
>   +%__ln_s "%{name}-%{version}.jar" "%{buildroot}%{_javadir}/%{name}.jar"
>   +
>   +cat<<EOCP > "%{buildroot}%{_javadir}/%{name}-%{version}.classpath"
>   +EOF
>   +print join(":", map { "%{_javadir}/$_->{artifactId}".(exists
> $_->{version} ? "-$_->{version}" : "").".jar" } @{$x{dependencies}}), "\n";
>   +print<<EOF;
>   +EOCP
>   +%__ln_s "%{name}-%{version}.classpath"
> "%{buildroot}%{_javadir}/%{name}.classpath"
>   +
>   +EOF
>   +if (exists $x{sources}) {
>   +    print<<EOF;
>   +%__install -m0644 "%{SOURCE1}"
> "%{buildroot}%{_javadir}/%{name}-%{version}-sources.jar"
>   +%__ln_s "%{name}-%{version}-sources.jar"
> "%{buildroot}%{_javadir}/%{name}-sources.jar"
>   +EOF
>   +}
>   +print<<EOF;
>   +
>   +%clean
>   +%{?buildroot:%__rm -rf "%{buildroot}"}
>   +
>   +%files
>   +%defattr(-,root,root)
>   +%{_javadir}/%{name}.jar
>   +%{_javadir}/%{name}.classpath
>   +
>   +%files -n %{uname}
>   +%defattr(-,root,root)
>   +%{_javadir}/%{name}-%{version}.jar
>   +%{_javadir}/%{name}-%{version}.classpath
>   +
>   +EOF
>   +if (exists $x{sources}) {
>   +    print<<EOF;
>   +%files -n %{name}-sources
>   +%defattr(-,root,root)
>   +%{_javadir}/%{name}-sources.jar
>   +
>   +%files -n %{uname}-sources
>   +%defattr(-,root,root)
>   +%{_javadir}/%{name}-%{version}-sources.jar
>   +EOF
>   +}
>   +print<<EOF;
>   +
>   +EOF
>   +
>   +select $oldselectfd;
>   +
>   @@ .
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> CVS Sources Repository                                rpm-...@rpm5.org
>

-- 
Inviato dal mio dispositivo mobile
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
Developer Communication List                        rpm-devel@rpm5.org

Reply via email to