--- cpan2rpm 2011-11-18 11:35:56.000000000 +0200 +++ cpan2rpm 2011-11-18 12:45:19.000000000 +0200 @@ -44,12 +44,12 @@ init(); # initialise stuff -for (@ARGV) { - get_mod(); # retrieve a module to work with - get_meta(); # get metadata from tarball - mk_spec(); # create a custom spec file - mk_rpm(); # build the RPM - inst_rpm(); # install it if requested +for my $arg (@ARGV) { + my $ret=get_mod($arg); # retrieve a module to work with + get_meta($ret); # get metadata from tarball + mk_spec($ret); # create a custom spec file + mk_rpm($ret); # build the RPM + inst_rpm($ret); # install it if requested } # --- support functionality --------------------------------------------------- @@ -244,6 +244,7 @@ # check directory permissions + $RPMDIR{TOP} = getrpm_macdef("_topdir"); $RPMDIR{BUILD} = getrpm_macdef("_builddir"); $RPMDIR{SOURCES} = getrpm_macdef("_sourcedir"); $RPMDIR{RPMS} = getrpm_macdef("_rpmdir"); @@ -333,7 +334,7 @@ # if (isurl($ret{dist})) { - $ret{tarball} = write_url($RPMDIR{SOURCES}, $ret{dist}) + $ret{tarball} = write_url($RPMDIR{TOP}.'/SOURCES', $ret{dist}) || die "Unable to retrieve tarball"; push @{$ret{source}}, $ret{dist}; } @@ -343,7 +344,7 @@ # elsif (istarball($ret{dist}, 1)) { - cp($ret{dist}, $RPMDIR{SOURCES}) + cp($ret{dist}, $RPMDIR{TOP}.'/SOURCES') || die "get_mod(): cp [$ret{dist}] - $!" ; ($ret{tarball} = $ret{dist}) =~ s|.*/||; @@ -378,7 +379,7 @@ # extract tarball unless (-d ($info->{evaldir} = $info->{dist})) { - my $f = "$RPMDIR{SOURCES}/$info->{tarball}"; + my $f = "$RPMDIR{TOP}/SOURCES/$info->{tarball}"; print "Tarball extraction: [$f]\n"; $info->{evaldir} = untar($f); } @@ -589,7 +590,7 @@ # refix all macro dirs for %name, %version - chkdirs(); + chkdirs($info); $info->{spec} ||= "$RPMDIR{SPECS}/perl-$info->{name}.spec"; ($info->{tardir} = $info->{evaldir}) =~ s|.*/||; @@ -726,6 +727,9 @@ $info->{"no-requires"}{"install"} ||= ""; $info->{"no-requires"}{"clean"} ||= ""; + # copy tarball to %_sourcedir + cp("$RPMDIR{TOP}/SOURCES/$info->{tarball}",$RPMDIR{SOURCES}) if $RPMDIR{TOP}.'/SOURCES' ne $RPMDIR{SOURCES}; + # fix patch info my $i = 0; @@ -1351,6 +1355,8 @@ } sub chkdirs { + my $info=shift; + $info||=\%info; my @dirserr; for my $k (keys %RPMDIR) { next if $k eq "ARCH"; @@ -1358,8 +1364,8 @@ # e.g. %_specdir = "%{name}-%{version}" my $x = $_; - s/%{?name?}/$info{name}/i if $info{name}; - s/%{?version?}/$info{version}/i if $info{version}; + s/%\{?name\}?/perl-$info->{name}/i if $info->{name}; + s/%\{?version\}?/$info->{version}/i if $info->{version}; mkdir($_, 0755) unless $x eq $_ || -d $_; $RPMDIR{$k} = $_;