X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=rpm-perl-macros.patch;h=1d09638388873b813cebea16cf0c88c90b1798ad;hp=847592e50c53e98d985dfc9ec6377c4170a696be;hb=95f0c2a;hpb=49deaedf1fd55170469ffc318a23b049ddc8ef4c diff --git a/rpm-perl-macros.patch b/rpm-perl-macros.patch index 847592e..1d09638 100644 --- a/rpm-perl-macros.patch +++ b/rpm-perl-macros.patch @@ -1,24 +1,17 @@ -diff -urN rpm-4.3.org/configure.ac rpm-4.3/configure.ac ---- rpm-4.3.org/configure.ac 2004-01-07 01:51:35.251160244 +0100 -+++ rpm-4.3/configure.ac 2004-01-07 01:55:53.198560246 +0100 -@@ -1196,6 +1196,7 @@ - AC_CONFIG_SUBDIRS(popt beecrypt zlib elfutils file db3) +--- rpm-5.3.1/configure.ac.wiget 2010-05-22 17:15:11.000000000 +0200 ++++ rpm-5.3.1/configure.ac 2010-05-30 16:37:59.526924459 +0200 +@@ -1100,7 +1100,7 @@ AC_CONFIG_FILES([ po/Makefile.in - AC_CONFIG_FILES([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec -+ scripts/perl.req scripts/perl.prov - rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile - scripts/Makefile scripts/brp-redhat - scripts/macros.perl scripts/macros.php scripts/macros.python -diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req ---- rpm-4.3.org/scripts/perl.req 2004-01-07 01:51:04.911464416 +0100 -+++ rpm-4.3/scripts/perl.req 2004-01-07 01:55:17.030076058 +0100 -@@ -1,4 +1,4 @@ --#!/usr/bin/perl -+#!@__PERL@ - - # RPM (and it's source code) is covered under two separate licenses. - -@@ -41,7 +41,11 @@ + AC_CONFIG_FILES([Makefile + rpmio/Makefile lib/Makefile build/Makefile sign/Makefile +- po/Makefile.in scripts/Makefile fileattrs/Makefile ++ po/Makefile.in scripts/Makefile scripts/perl.req scripts/perl.prov fileattrs/Makefile + misc/Makefile + doc/Makefile + python/Makefile +--- rpm-5.3.1/scripts/perl.req.wiget 2008-10-26 10:50:53.000000000 +0100 ++++ rpm-5.3.1/scripts/perl.req 2010-05-30 16:35:36.999438206 +0200 +@@ -45,7 +45,11 @@ if ("@ARGV") { foreach (@ARGV) { @@ -30,10 +23,10 @@ diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req + } } } else { - -@@ -49,14 +53,22 @@ + +@@ -53,7 +57,11 @@ # contents of the file. - + foreach (<>) { - process_file($_); + if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) { @@ -44,25 +37,65 @@ diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req } } +@@ -261,19 +269,41 @@ - foreach $module (sort keys %require) { - if (length($require{$module}) == 0) { -- print "perl($module)\n"; -+ if ($module =~ /^[0-9._]+$/) { -+ print "perl >= $module\n"; -+ } else { -+ print "perl($module)\n"; -+ } - } else { + $module =~ s/\(\s*\)$//; + +- if ( $module =~ m/^v?([0-9._]+)$/ ) { ++ if ( $module =~ m/^(v?)([0-9._]+)$/ ) { + # if module is a number then both require and use interpret that + # to mean that a particular version of perl is specified - # I am not using rpm3.0 so I do not want spaces arround my -@@ -219,7 +231,31 @@ +- my $ver = $1; +- if ($ver =~ /5.00/) { +- $perlreq{"0:$ver"} = 1; +- next; +- } +- else { +- $perlreq{"1:$ver"} = 1; +- next; +- } ++ my $ver=$2; ++ if (($1 eq 'v') or ($ver =~ /[0-9]+\.[0-9]+\.[0-9]+/)) { ++ # $V-style ++ if ($ver =~ m/5\.([0-5])(\.([0-9]+))?$/) { ++ if (defined $3) { ++ print "perl-base >= 0:5.00$1_$3\n"; ++ } else { ++ print "perl-base >= 0:5.00$1\n"; ++ } ++ } else { ++ print "perl-base >= 1:$ver\n"; ++ } ++ } else { ++ # $]-style ++ if ($ver =~ m/5\.(00[0-5])_?([0-9]+)?$/) { ++ if (defined $2) { ++ print "perl-base >= 0:5.$1_$2\n"; ++ } else { ++ print "perl-base >= 0:5.$1\n"; ++ } ++ } else { ++ # expand to M.NNN_nnn form ++ $ver =~ s/^([0-9])$/$1./; ++ $ver =~ s/^([0-9]\.[0-9]{0,5}|[0-9]\.[0-9]{3}_[0-9]{0,2})$/${1}000000/; ++ $ver =~ s/^([0-9]\.[0-9]{3})_?([0-9]{3})0*$/$1_$2/; ++ # match trimming leading 0s ++ $ver =~ m/^([0-9])\.0*([1-9][0-9]*|0)_0*([1-9][0-9]*|0)$/; ++ print "perl-base >= 1:$1.$2.$3\n"; ++ } ++ } ++ next; + + }; + +@@ -290,7 +320,31 @@ # will be included with the name sys/systeminfo.ph so only use the # basename of *.ph files -- ($module =~ m/\.ph$/) && next; +- ($module =~ m/\.ph$/) && next; + # ($module =~ m/\.ph$/) && ($module =~ s!.*/!!g ); -+ ++ + # there is no need to generate dependencies for ph, pl or test files + # so let's just skip them. + @@ -87,243 +120,5 @@ diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req + + $module =~ s/\(\s*\)$//; - $require{$module}=$version; - $line{$module}=$_; -diff -urN rpm-4.3.org/scripts/perl.req.orig rpm-4.3/scripts/perl.req.orig ---- rpm-4.3.org/scripts/perl.req.orig 1970-01-01 01:00:00.000000000 +0100 -+++ rpm-4.3/scripts/perl.req.orig 2004-01-04 03:13:09.000000000 +0100 -@@ -0,0 +1,234 @@ -+#!/usr/bin/perl -+ -+# RPM (and it's source code) is covered under two separate licenses. -+ -+# The entire code base may be distributed under the terms of the GNU -+# General Public License (GPL), which appears immediately below. -+# Alternatively, all of the source code in the lib subdirectory of the -+# RPM source code distribution as well as any code derived from that -+# code may instead be distributed under the GNU Library General Public -+# License (LGPL), at the choice of the distributor. The complete text -+# of the LGPL appears at the bottom of this file. -+ -+# This alternatively is allowed to enable applications to be linked -+# against the RPM library (commonly called librpm) without forcing -+# such applications to be distributed under the GPL. -+ -+# Any questions regarding the licensing of RPM should be addressed to -+# Erik Troan . -+ -+# a simple makedepends like script for perl. -+ -+# To save development time I do not parse the perl grammmar but -+# instead just lex it looking for what I want. I take special care to -+# ignore comments and pod's. -+ -+# It would be much better if perl could tell us the dependencies of a -+# given script. -+ -+# The filenames to scan are either passed on the command line or if -+# that is empty they are passed via stdin. -+ -+# If there are strings in the file which match the pattern -+# m/^\s*\$RPM_Requires\s*=\s*["'](.*)['"]/i -+# then these are treated as additional names which are required by the -+# file and are printed as well. -+ -+# I plan to rewrite this in C so that perl is not required by RPM at -+# build time. -+ -+# by Ken Estes Mail.com kestes@staff.mail.com -+ -+if ("@ARGV") { -+ foreach (@ARGV) { -+ process_file($_); -+ } -+} else { -+ -+ # notice we are passed a list of filenames NOT as common in unix the -+ # contents of the file. -+ -+ foreach (<>) { -+ process_file($_); -+ } -+} -+ -+ -+foreach $module (sort keys %require) { -+ if (length($require{$module}) == 0) { -+ print "perl($module)\n"; -+ } else { -+ -+ # I am not using rpm3.0 so I do not want spaces arround my -+ # operators. Also I will need to change the processing of the -+ # $RPM_* vairable when I upgrage. -+ -+ print "perl($module) >= $require{$module}\n"; -+ } -+} -+ -+exit 0; -+ -+ -+ -+sub process_file { -+ -+ my ($file) = @_; -+ chomp $file; -+ -+ open(FILE, "<$file") || return; -+ -+ while () { -+ -+ # skip the "= <<" block -+ -+ if ( ( m/^\s*\$(.*)\s*=\s*<<\s*["'](.*)['"]/i) || -+ ( m/^\s*\$(.*)\s*=\s*<<\s*(.*);/i) ) { -+ $tag = $2; -+ while () { -+ ( $_ =~ /^$tag/) && last; -+ } -+ } -+ -+ # skip the documentation -+ -+ # we should not need to have item in this if statement (it -+ # properly belongs in the over/back section) but people do not -+ # read the perldoc. -+ -+ if ( (m/^=(head1|head2|pod|item)/) .. (m/^=(cut)/) ) { -+ next; -+ } -+ -+ if ( (m/^=(over)/) .. (m/^=(back)/) ) { -+ next; -+ } -+ -+ # skip the data section -+ if (m/^__(DATA|END)__$/) { -+ last; -+ } -+ -+ # Each keyword can appear multiple times. Don't -+ # bother with datastructures to store these strings, -+ # if we need to print it print it now. -+ -+ if ( m/^\s*\$RPM_Requires\s*=\s*["'](.*)['"]/i) { -+ foreach $_ (split(/\s+/, $1)) { -+ print "$_\n"; -+ } -+ } -+ -+ if ( -+ -+# ouch could be in a eval, perhaps we do not want these since we catch -+# an exception they must not be required -+ -+# eval { require Term::ReadLine } or die $@; -+# eval "require Term::Rendezvous;" or die $@; -+# eval { require Carp } if defined $^S; # If error/warning during compilation, -+ -+ -+ (m/^(\s*) # we hope the inclusion starts the line -+ (require|use)\s+(?!\{) # do not want 'do {' loops -+ # quotes around name are always legal -+ [\'\"]?([^\;\ \'\"\t]*)[\'\"]?[\t\;\ ] -+ # the syntax for 'use' allows version requirements -+ \s*([.0-9]*) -+ /x) -+ ) { -+ my ($whitespace, $statement, $module, $version) = ($1, $2, $3,$4); -+ -+ # we only consider require statements that are flush against -+ # the left edge. any other require statements give too many -+ # false positives, as they are usually inside of an if statement -+ # as a fallback module or a rarely used option -+ -+ ($whitespace ne "" && $statement eq "require") && next; -+ -+ # if there is some interpolation of variables just skip this -+ # dependency, we do not want -+ # do "$ENV{LOGDIR}/$rcfile"; -+ -+ ($module =~ m/\$/) && next; -+ -+ # skip if the phrase was "use of" -- shows up in gimp-perl, et al -+ next if $module eq 'of'; -+ -+ # if the module ends in a comma we probaly caught some -+ # documentation of the form 'check stuff,\n do stuff, clean -+ # stuff.' there are several of these in the perl distribution -+ -+ ($module =~ m/[,>]$/) && next; -+ -+ # if the module name starts in a dot it is not a module name. -+ # Is this necessary? Please give me an example if you turn this -+ # back on. -+ -+ # ($module =~ m/^\./) && next; -+ -+ # if the module ends with .pm strip it to leave only basename. -+ # starts with /, which means its an absolute path to a file -+ if ($module =~ m(^/)) { -+ print "$module\n"; -+ next; -+ } -+ -+ # sometimes people do use POSIX qw(foo), or use POSIX(qw(foo)) etc -+ # we can strip qw.*$, as well as (.*$: -+ $module =~ s/qw.*$//; -+ $module =~ s/\(.*$//; -+ -+ $module =~ s/\.pm$//; -+ -+ # some perl programmers write 'require URI/URL;' when -+ # they mean 'require URI::URL;' -+ -+ $module =~ s/\//::/; -+ -+ # trim off trailing parenthesis if any. Sometimes people pass -+ # the module an empty list. -+ -+ $module =~ s/\(\s*\)$//; -+ -+ if ( $module =~ m/^[0-9._]+$/ ) { -+ # if module is a number then both require and use interpret that -+ # to mean that a particular version of perl is specified -+ -+ if ($module =~ /5.00/) { -+ print "perl >= 0:$module\n"; -+ next; -+ } -+ else { -+ print "perl >= 1:$module\n"; -+ next; -+ } -+ -+ }; -+ -+ # ph files do not use the package name inside the file. -+ # perlmodlib documentation says: -+ -+ # the .ph files made by h2ph will probably end up as -+ # extension modules made by h2xs. -+ -+ # so do not expend much effort on these. -+ -+ -+ # there is no easy way to find out if a file named systeminfo.ph -+ # will be included with the name sys/systeminfo.ph so only use the -+ # basename of *.ph files -+ -+ ($module =~ m/\.ph$/) && next; -+ -+ $require{$module}=$version; -+ $line{$module}=$_; -+ } -+ -+ } -+ -+ close(FILE) || -+ die("$0: Could not close file: '$file' : $!\n"); -+ -+ return ; -+} + # use base|parent qw(Foo) dependencies + if ($statement eq "use" && ($module eq "base" || $module eq "parent")) {