]> git.pld-linux.org Git - packages/rpm.git/blobdiff - rpm-perl-macros.patch
- fix building python bindings (force librarries from build tree)
[packages/rpm.git] / rpm-perl-macros.patch
index 847592e50c53e98d985dfc9ec6377c4170a696be..d5c6c5fec1084e651ee772879a6d116efc68facb 100644 (file)
@@ -1,22 +1,21 @@
-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
+ 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
 @@ -1,4 +1,4 @@
 -#!/usr/bin/perl
 +#!@__PERL@
  
- # RPM (and it's source code) is covered under two separate licenses. 
+ # RPM (and its source code) is covered under two separate licenses.
  
 @@ -41,7 +41,11 @@
  
@@ -30,10 +29,10 @@ diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req
 +    }
    }
  } else {
-   
-@@ -49,14 +53,22 @@
+@@ -49,7 +53,11 @@ if ("@ARGV") {
    # contents of the file.
-   
    foreach (<>) {
 -    process_file($_);
 +     if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
@@ -44,25 +43,65 @@ diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req
    }
  }
  
+@@ -215,19 +223,41 @@ sub process_file {
  
- 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
+-      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;
  
-     # I am not using rpm3.0 so I do not want spaces arround my
-@@ -219,7 +231,31 @@
-       # will be included with the name sys/systeminfo.ph so only use the
+       };
+@@ -244,7 +274,31 @@ sub process_file {
+       #  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 +126,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 <ewt@redhat.com>.
-+
-+# 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 (<FILE>) {
-+    
-+    # skip the "= <<" block
-+
-+    if ( ( m/^\s*\$(.*)\s*=\s*<<\s*["'](.*)['"]/i) ||
-+         ( m/^\s*\$(.*)\s*=\s*<<\s*(.*);/i) ) {
-+      $tag = $2;
-+      while (<FILE>) {
-+        ( $_ =~ /^$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")) {
This page took 0.104103 seconds and 4 git commands to generate.