--- cpan2rpm.orig 2005-02-07 20:25:27 +0300 +++ cpan2rpm 2005-06-06 12:53:55 +0400 @@ -3,6 +3,7 @@ # # cpan2rpm - CPAN module RPM maker # Copyright (C) 2001-2003 Erick Calder +# Modified by Vitaly Lipatov , 2005 # # 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,9 +79,10 @@ %info = ( url => "http://www.cpan.org", packager => "Arix International ", - group => "Applications/CPAN", + group => "Development/Perl", license => "Artistic", - release => 1, + author => "unknown", + release => "alt1", buildroot => "%{_tmppath}/%{name}-%{version}-%(id -u -n)", defattr => "-,root,root", description => "None.", @@ -197,6 +199,7 @@ exit; } + if (defined $info{"sign-setup"}) { sign_setup(); exit; @@ -231,6 +234,9 @@ # deal with newer versions chkupgrade(); + # set packager + $info{packager} = getrpm_macdef("packager"); + # check directory permissions $RPMDIR{BUILD} = getrpm_macdef("_builddir"); @@ -242,7 +248,7 @@ 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 @@ -385,7 +391,7 @@ 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(): $!"; @@ -579,7 +585,7 @@ 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 @@ -624,7 +630,6 @@ $info->{description} = $meta{DESCRIPTION} if $meta{DESCRIPTION}; push @{$info->{source}}, $info->{tarball} unless $info->{source}; - $info->{changelog} = changelog(); $info->{"find-provides"} &&= qq/%define __find_provides $info->{"find-provides"}/; @@ -636,9 +641,9 @@ # 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/ @@ -743,6 +748,7 @@ sub mk_spec { my $info = shift || $_; local $_; + my $pkgname = $info->{name}; print "Generating spec file\n"; @@ -757,15 +763,14 @@ $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 @@ -810,27 +815,26 @@ # prepend string to separate module from usual namespace - my $pkgname = $info->{name}; $info->{name} = "perl-" . $info->{name} unless $info->{"no-prfx"}; my $spec = <{module} - # This spec file was automatically generated by cpan2rpm [ver: $VERSION] + # (ALT Linux revision) ZZ my $me; ($me = $0) =~ s|.*/||; $spec .= <{module} eq $me; # The following arguments were used: # $ARGS -ZZ - $spec .= <{maketest} + %define module $pkgname + %define m_distro $pkgname + %define m_name $info->{module} + %define m_author_id $info->{author} + %define $info->{maketest} ZZ $spec .= <{"define-list"}; # user definitions @@ -849,11 +853,12 @@ $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 @@ -866,133 +871,50 @@ $spec .= "\n" . q/%description/ . "\n$info->{description}\n"; - $_ = <{'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"}; - - $_ = <{"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; + $spec .= < %filelist - - [ -z %filelist ] && { - echo "ERROR: empty %files listing" - exit -1 - } +%files +%perl_vendor_privlib/* +%perl_vendor_man3dir/* 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}; + # where is the broken thing? + #$info->{changelog} = changelog(); + my @dow = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); + my @mon = ("Jan", "Feb", "Mar", "Apr", "May", "Jun" + , "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" + ); + $info->{changelog} = sprintf("%s %s %02d %d %s" + , $dow[(localtime)[6]] + , $mon[(localtime)[4]] + , (localtime)[3] + , 1900 + (localtime)[5] + , sprintf("%s %s-%s", $info->{packager}, $info->{version}, $info->{release}) + ); $spec .= mksec($info, "changelog" - => "* $info->{changelog}\n- Initial build." + => "* $info->{changelog}\n- first build for ALT Linux Sisyphus" ); writefile($info->{spec}, $spec); print("SPEC: $info->{spec}\n"); + system("cleanup_spec $info->{spec}"); + system("buildreq $info->{spec}"); exit if $info->{"spec-only"}; } @@ -1014,11 +936,11 @@ } $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} @@ -1478,7 +1400,7 @@ 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 $_: $!"; @@ -1553,7 +1475,7 @@ 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; } @@ -1640,13 +1562,12 @@ 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}) ); }