Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37569513
en ru br
Репозитории ALT
S:2.028-alt5
5.1: 2.027-alt4
4.1: 2.027-alt2
4.0: 2.027-alt1
3.0: 2.027-alt0.3
www.altlinux.org/Changes

Группа :: Разработка/Прочее
Пакет: cpan2rpm

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: cpan2rpm-2.028-alt.patch
Скачать


diff --git a/cpan2rpm/cpan2rpm b/cpan2rpm/cpan2rpm
index 28e8b01..a378920 100755
--- a/cpan2rpm/cpan2rpm
+++ b/cpan2rpm/cpan2rpm
@@ -3,6 +3,7 @@
 #
 #   cpan2rpm - CPAN module RPM maker
 #   Copyright (C) 2001-2003 Erick Calder
+#   Modified by Vitaly Lipatov <lav@etersoft.ru>, 2005, 2008
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -78,11 +79,13 @@ sub init {
     %info = (
         url               => "http://www.cpan.org",
         packager          => "Arix International <cpan2rpm\@arix.com>",
-        group             => "Applications/CPAN",
+        group             => "Development/Perl",
         license           => "Artistic",
-        release           => 1,
+        author            => "unknown",
+        release           => "alt1",
         buildroot         => "%{_tmppath}/%{name}-%{version}-%(id -u -n)",
         defattr           => "-,root,root",
+        "rpm-args"        => "",
         );
 
     my %desc = (
@@ -119,6 +122,7 @@ sub init {
         # -- build options
         "spec-only"       => "only generates spec file",
         "spec=s"          => "specifies the name of a spec file",
+        "rpm-args=s"      => "additional rpm arguments",
         "make-maker=s"    => "arguments for makefile creation",
         "make=s"          => "arguments passed to make",
         "make-no-test"    => "suppress running test suite",
@@ -196,6 +200,7 @@ sub init {
         exit;
         }
 
+
     if (defined $info{"sign-setup"}) {
         sign_setup();
         exit;
@@ -219,6 +224,10 @@ sub init {
             );
         };
 
+	# Default behavior
+	$info{"spec-only"} = "1";
+    $info{"no-upgrade-chk"} = "1";
+
     upgrade() if defined $info{upgrade};
 
     unless ($info{"no-sign"}) {
@@ -230,6 +239,9 @@ sub init {
     #   deal with newer versions
     chkupgrade();
 
+    # set packager
+    $info{packager} = getrpm_macdef("packager");
+
     # check directory permissions
 
     $RPMDIR{BUILD} = getrpm_macdef("_builddir");
@@ -241,7 +253,7 @@ sub init {
     chkdirs();
 
     # sets empty string if not --buildarch and --spec-only
-    $info{buildarch} ||= $info{"spec-only"} ? "" : $RPMDIR{ARCH};
+    $info{BuildArch} ||= $info{"spec-only"} ? "" : $RPMDIR{ARCH};
 
     # set module download method
 
@@ -384,7 +396,7 @@ sub get_meta {
     else {
         my $xs = 0;
         find(sub { $xs = 1 if /\.(xs|c)$/i }, $info->{evaldir});
-        $info->{buildarch} = "noarch" if $xs == 0;
+        $info->{BuildArch} = "noarch" if $xs == 0;
         }
 
     chdir $info->{evaldir} || die "get_meta(): $!";
@@ -578,7 +590,7 @@ sub get_meta {
 
     chkdirs();
 
-    $info->{spec} ||= "$RPMDIR{SPECS}/$info->{name}.spec";
+    $info->{spec} ||= "$RPMDIR{SPECS}/perl-$info->{name}.spec";
     ($info->{tardir} = $info->{evaldir}) =~ s|.*/||;
 
     #   for directories, guess some of the needed values
@@ -619,11 +631,10 @@ EOF
 
     #    assemble other info
 
-    $info->{summary} = "$info->{name} - " . ($meta{ABSTRACT} || "Perl module");
+    $info->{summary} = ($meta{ABSTRACT} || "$info->{name} - " . "Perl module");
     $info->{description} ||= $meta{DESCRIPTION} || "None.";
     push @{$info->{source}}, $info->{tarball}
         unless $info->{source};
-    $info->{changelog} = changelog();
 
     $info->{"find-provides"}
         &&= qq/%define __find_provides $info->{"find-provides"}/;
@@ -635,9 +646,9 @@ EOF
     #   option lists
 
     $info->{"opts-simple"} = [qw/
-        name summary version release epoch
-        vendor packager distribution license group url
-        buildroot buildarch
+        name version release = summary = epoch
+        license group url vendor = packager = distribution
+        BuildArch
         /];
 
     $info->{"opts-agg"} = [qw/
@@ -742,6 +753,7 @@ EOF
 
 sub mk_spec {
     my $info = shift || $_; local $_;
+    my $pkgname = $info->{name};
 
     print "Generating spec file\n";
 
@@ -756,15 +768,14 @@ sub mk_spec {
     $info->{$_} =~ s/\r//g for keys %info;
 
     # generalise whenever possible
-
-    for (qw/tardir source/) {
-        $info->{$_} =~ s/$info->{name}/%{pkgname}/;
-        $info->{$_} =~ s/$info->{version}/%{version}/;
+    for (qw/tardir source source-list/) {
+        $info->{$_} =~ s/$pkgname/%m_distro/;
+        $info->{$_} =~ s/$info->{version}/%version/;
         }
 
     $info->{description} =~ s/\s+$//;
-    $info->{maketest} = $info->{"make-no-test"} ? 0 : 1;
-    $info->{vendor} = $info->{author};
+    $info->{maketest} = $info->{"make-no-test"} ? "_disable_test 1" : "_enable_test 1";
+    #$info->{vendor} = $info->{author};
 
     if ($info->{name} eq "ExtUtils-MakeMaker") {
         # MakeMaker builds itself using itself
@@ -809,27 +820,26 @@ sub mk_spec {
 
     # prepend string to separate module from usual namespace
 
-    my $pkgname = $info->{name};
     $info->{name} = "perl-" . $info->{name} unless $info->{"no-prfx"};
 
     my $spec = <<ZZ;
         #
         #   - $info->{module} -
         #   This spec file was automatically generated by cpan2rpm [ver: $VERSION]
+        #   (ALT Linux revision)
 ZZ
     my $me; ($me = $0) =~ s|.*/||;
     $spec .= <<ZZ unless $info->{module} eq $me;
         #   The following arguments were used:
         #       $ARGS
-ZZ
-    $spec .= <<ZZ;
         #   For more information on cpan2rpm please visit: http://perl.arix.com/
         #
 
-        %define pkgname $pkgname
-        %define filelist %{pkgname}-%{version}-filelist
-        %define NVR %{pkgname}-%{version}-%{release}
-        %define maketest $info->{maketest}
+        %define module $pkgname
+        %define m_distro $pkgname
+        %define m_name $info->{module}
+        %define m_author_id $info->{author}
+        %define $info->{maketest}
 ZZ
     $spec .= <<ZZ if $info->{"define-list"};
         # user definitions
@@ -848,11 +858,12 @@ ZZ
 
     $spec .= "\n";
     for (@{$info->{"opts-simple"}}) {
-        $spec .= sprintf("%-*s %s\n", $SPECCOL, "$_:", $info->{$_})
+        $spec .= "\n" if ($_ eq "=");
+        $spec .= sprintf("%-*s %s\n", $SPECCOL, ucfirst("$_:"), $info->{$_})
             if $info->{$_};
         }
 
-    $spec .= sprintf("%-*s %s\n", $SPECCOL, "prefix:", "%(echo %{_prefix})");
+    #$spec .= sprintf("%-*s %s\n", $SPECCOL, "prefix:", "%(echo %{_prefix})");
 
     #   add lists
 
@@ -865,133 +876,44 @@ ZZ
 
     $spec .= "\n" . q/%description/ . "\n$info->{description}\n";
 
-    $_ = <<ZZ;
-
-        #
-        # This package was generated automatically with the cpan2rpm
-        # utility.  To get this software or for more information
-        # please visit: http://perl.arix.com/
-        #
-ZZ
-    s/^[^\S\n]+//mg; $spec .= $_;
-
     #   handle sections
 
     $_ = "%setup -q -n $info->{tardir} $info->{create}";
     $_ .= $/ . $info->{'patch-apply'}
         if $info->{"patch-apply"};
-    $_ .= $/ . "chmod -R u+w %{_builddir}/$info->{tardir}" . $/;
+    #$_ .= $/ . "chmod -R u+w %{_builddir}/$info->{tardir}" . $/;
+    $spec .= "\n";
     $spec .= mksec($info, "prep" => $_);
 
-    $_ = ($info->{PL} =~ /^Make/)
-        ? qq/
-            $info->{fixin}
-            CFLAGS="\$RPM_OPT_FLAGS"
-            %{__perl} Makefile.PL $info->{"make-maker"}
-            %{__make} $info->{"make"}
-            %if %maketest
-                %{__make} test
-            %endif
-        / : qq/
-            $info->{fixin}
-            %{__perl} Build.PL
-            %{__perl} Build
-            %if %maketest
-                %{__perl} Build test
-            %endif
-        /;
-    s/^\s+//mg;
-    $spec .= mksec($info, "build" => $_);
-
-    my $install = ($info->{PL} =~ /^Make/)
-        ? qq/%{makeinstall} /
-        : qq/%{__perl} Build install /
-        ;
-    $install .= $info->{"make-install"};
-
-    $_ = <<ZZ;
-        [ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
-        $info->{"no-requires"}{"install"}
-        $install
-
-        cmd=/usr/share/spec-helper/compress_files
-        [ -x \$cmd ] || cmd=/usr/lib/rpm/brp-compress
-        [ -x \$cmd ] && \$cmd
-
-        # SuSE Linux
-        if [ -e /etc/SuSE-release -o -e /etc/UnitedLinux-release ]
-        then
-            %{__mkdir_p} %{buildroot}/var/adm/perl-modules
-            %{__cat} `find %{buildroot} -name "perllocal.pod"`  \\
-                | %{__sed} -e s+%{buildroot}++g                 \\
-                > %{buildroot}/var/adm/perl-modules/%{name}
-        fi
-
-        # remove special files
-        find %{buildroot} -name "perllocal.pod" \\
-            -o -name ".packlist"                \\
-            -o -name "*.bs"                     \\
-            |xargs -i rm -f {}
-
-        # no empty directories
-        find %{buildroot}%{_prefix}             \\
-            -type d -depth                      \\
-            -exec rmdir {} \\; 2>/dev/null
-
-        %{__perl} -MFile::Find -le '
-            find({ wanted => \\&wanted, no_chdir => 1}, "%{buildroot}");
-            print "$info->{doc}";
-            for my \$x (sort \@dirs, \@files) {
-                push \@ret, \$x unless indirs(\$x);
-                }
-            print join "\\n", sort \@ret;
-
-            sub wanted {
-                return if /auto\$/;
-
-                local \$_ = \$File::Find::name;
-                my \$f = \$_; s|^\\Q%{buildroot}\\E||;
-                return unless length;
-                return \$files[\@files] = \$_ if -f \$f;
-
-                \$d = \$_;
-                /\\Q\$d\\E/ && return for reverse sort \@INC;
-                \$d =~ /\\Q\$_\\E/ && return
-                    for qw|/etc %_prefix/man %_prefix/bin %_prefix/share|;
-
-                \$dirs[\@dirs] = \$_;
-                }
+    $spec .= "\n";
+    $spec .= <<ZZ;
+%build
+%perl_vendor_build
 
-            sub indirs {
-                my \$x = shift;
-                \$x =~ /^\\Q\$_\\E\\// && \$x ne \$_ && return 1 for \@dirs;
-                }
-            ' > %filelist
+%install
+%perl_vendor_install
 
-        [ -z %filelist ] && {
-            echo "ERROR: empty %files listing"
-            exit -1
-            }
+%files
 ZZ
-    s/^ {8}//mg;
-    $spec .= mksec($info, "install" => $_);
-
-    $_ = qq|[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}\n|;
-    # $_ .= qq|rm -rf %_builddir/%name-%version\n|;
-    $_ .= qq/$info->{"no-requires"}{"clean"}\n/
-        if $info->{"no-requires"}{"clean"};
-    $spec .= mksec($info, "clean" => $_);
-
-    $spec .= qq|$/%files -f %filelist|;
-    $spec .= qq|$/%defattr($info->{defattr})$/|;
-    $spec .= $info->{epilogue}{files};
-
-    $spec .= mksec($info, "changelog"
-        => "* $info->{changelog}\n- Initial build."
-        );
-
+    my $bn; ($bn = $info->{module}) =~ s!(?:-|::).*!!;
+    
+    if ($info->{BuildArch} =~ /noarch/) {
+        $spec .= <<ZZ;
+%perl_vendor_privlib/$bn/*
+ZZ
+    }
+    else {
+        $spec .= <<ZZ;
+%perl_vendor_archlib/$bn/*
+%perl_vendor_autolib/$bn/*
+ZZ
+    }
     writefile($info->{spec}, $spec);
+
     print("SPEC: $info->{spec}\n");
+    system("cleanup_spec $info->{spec}");
+    system("buildreq --args=\"$info{'rpm-args'}\" $info->{spec}");
+     system("add_changelog -e '- initial build for ALT Linux Sisyphus' $info->{spec}");
     exit if $info->{"spec-only"};
     }
 
@@ -1013,11 +935,11 @@ sub mk_rpm {
         }
 
     $info->{rpm} = sprintf("%s/%s-%s-%s.%s.rpm"
-        , "$RPMDIR{RPMS}/$info->{buildarch}"
+        , "$RPMDIR{RPMS}/$info->{BuildArch}"
         , $info->{name}
         , $info->{version}
         , $info->{release}
-        , $info->{buildarch}
+        , $info->{BuildArch}
         );
     $info->{srpm} = sprintf("%s/%s-%s-%s.src.rpm"
         , $RPMDIR{SRPMS}
@@ -1030,19 +952,19 @@ sub mk_rpm {
     if (! -r $info->{rpm} || $info->{force}) {
         print "Generating package\n";
 
-        my $bp = qx/$RPM -bp $info->{spec} 2>&1/;
-        warn("RPM test unpacking failed! [$RPM -bp $info->{spec}]\n$bp")
+        my $bp = qx/$RPM $info{"rpm-args"} -bp $info->{spec} 2>&1/;
+        warn("RPM test unpacking failed! [$RPM $info{'rpm-args'} -bp $info->{spec}]\n$bp")
             if $ret = $? >> 8;
 
         if ($ret == 0) {
-            my @cmd = ($RPM, '-ba');
+            my @cmd = ($RPM, $info{"rpm-args"}, '-ba');
             push @cmd, "--clean" unless $info->{"no-clean"};
             push @cmd, $info->{sign} if $info->{sign};
             push @cmd, $info->{spec};
             debug(join " ", @cmd);
             print "Signing package (pass phrase required)\n"
                 if $info->{sign};
-            system(@cmd);
+            system(join(" ", @cmd));
             die "RPM build failed [$ret]" if $ret = $? >> 8;
             }
         }
@@ -1479,7 +1401,7 @@ sub mk_rpm_dirs {
         BUILD SOURCES SPECS SRPMS
         RPMS RPMS/i386 RPMS/i686 RPMS/noarch
         |;
-    push @subdirs, "RPMS/$info{buildarch}" if $info{buildarch};
+    push @subdirs, "RPMS/$info{BuildArch}" if $info{BuildArch};
     for (map "$topdir/$_", "", @subdirs) {
         next if -e;
         mkdir($_, 0755) || die "Cannot make $_: $!";
@@ -1554,7 +1476,7 @@ sub optagg {
     my $nm = shift || $_;
     my @opt; push @opt, split /,/ for @{$info->{$nm}};
     my $ret = "";
-    $ret .= sprintf("%-*s %s\n", $SPECCOL, "$nm:", $_) for @opt;
+    $ret .= sprintf("%-*s %s\n", $SPECCOL, ucfirst("$nm:"), $_) for @opt;
     $ret;
     }
 
@@ -1569,7 +1491,7 @@ sub getrpm_ver {
 
 sub getrpm_macdef($) {
     my $key = shift;
-    chomp(local $_ = qx/rpm --eval \%{$key}/);
+    chomp(local $_ = qx/rpm $info{"rpm-args"} --eval \%{$key}/);
     s/^\s+//; s/\s*\n+/ /gs; s/\s+$//;
     $_;
     }
@@ -1629,7 +1551,7 @@ sub upgrade {
         }
 
     my ($f) = $url =~ m|.*/(.*)|;
-    my @ret = qx|$RPM -ta $TMPDIR/$f 2>&1|;
+    my @ret = qx|$RPM $info{"rpm-args"} -ta $TMPDIR/$f 2>&1|;
     die "upgrade(): $!" if $?;
     /Wrote:\s+(.*)$/ && ($info{rpm} = $1) && last for reverse @ret;
     inst_rpm(\%info);
@@ -1641,13 +1563,12 @@ sub changelog {
     my @mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun"
         , "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
         );
-
-    return sprintf("%s %s %d %d %s"
+    return sprintf("%s %s %02d %d %s"
           , $dow[(localtime)[6]]
         , $mon[(localtime)[4]]
         , (localtime)[3]
         , 1900 + (localtime)[5]
-        , sprintf("%s\@%s", (getpwuid($<))[0], hostname())
+        , sprintf("%s %s-%s", $info{packager}, $info{version}, $info{release})
         );
     }
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin