diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/makepkgbuild | 41 | ||||
-rwxr-xr-x | bin/metas/perl | 7 | ||||
-rwxr-xr-x | bin/metas/perl.d/perl-dist | 28 |
3 files changed, 55 insertions, 21 deletions
diff --git a/bin/makepkgbuild b/bin/makepkgbuild index 9ecfb80..9f64088 100755 --- a/bin/makepkgbuild +++ b/bin/makepkgbuild @@ -2,7 +2,26 @@ prog=makepkgbuild -if ! [ -f PKGMETA ] +appendpb() +{ + txt=$(awk -v f=$1 'BEGIN { FS = "\n"; RS = "" } + $1 == f "()" { for (i = 2; i <= NF; i++) print $i }' PKGMETA \ + | sed 's/^/ /') + + case "$txt" in + '') return 0 ;; + *) echo '/^ *'"${func}"'()[ \\n]*{ +/^} +i +'"$txt"' +. +wq +' | ed PKGBUILD >/dev/null 2>&1 + return $? ;; + esac +} + +if ! [ -r PKGMETA ] then echo "$prog: PKGMETA could not be read." 1>&2 exit 1 @@ -15,21 +34,29 @@ esac tcmd=$(awk ' BEGIN { FS = "\n"; RS = "" } - $1 == "template" { for (i = 2; i <= NF; i++) print $i }' PKGMETA | \ - while read line + $1 == "template" { for (i = 2; i <= NF; i++) print $i }' PKGMETA \ + | while read line do set -- $line cmd="$TDIR/$1" if ! [ -x $cmd ] then - echo "$prog: Unknown template command: $cmd" \ - 1>&2 + echo "$prog: Unknown template command: $cmd" 1>&2 exit 2 fi echo "$TDIR/$*" - done | tr '\n' '|' | sed 's/\|$//') + done \ + | tr '\n' '|' | sed 's/\|$//') -echo "\$tcmd = $tcmd" 1>&2 "$TDIR/pbfields" <PKGMETA >PKGBUILD $tcmd <PKGMETA >>PKGBUILD +for func in package check build +do + if ! appendpb $func + then + echo "$prog: failed to append to the ${func}() function in PKGBUILD" 1>&2 + exit 2 + fi +done + diff --git a/bin/metas/perl b/bin/metas/perl index a4ace7e..c1ca14e 100755 --- a/bin/metas/perl +++ b/bin/metas/perl @@ -44,6 +44,10 @@ sub fetchdist { my ($cpath) = @_; my $file = $cpath; $file =~ s{^.*/}{}; + if (-f $file) { + print STDERR "$file already downloaded.\n"; + return; + } my $mirror = $ENV{'CPANMIRROR'} || 'ftp://cpan.pair.com'; my $url = "${mirror}/authors/id/${cpath}"; @@ -58,7 +62,8 @@ sub main { my $pkg = shift or die "Usage: $PROG [package name]\n"; my $dist = $pkg; - return 1 unless $dist =~ s/^perl-// > 0; + + $dist = "app-$dist" if $dist =~ s/^perl-// == 0; STDERR->autoflush(1); my ($realname, $cpath) = distsearch($dist); diff --git a/bin/metas/perl.d/perl-dist b/bin/metas/perl.d/perl-dist index b371d27..c916a95 100755 --- a/bin/metas/perl.d/perl-dist +++ b/bin/metas/perl.d/perl-dist @@ -175,7 +175,7 @@ sub _reqs2deps my ($prereqs) = @_; my %pkgdeps; - + CPAN_DEP_LOOP: while (my ($name, $ver) = each %$prereqs) { # Sometimes a perl version is given as a prerequisite @@ -206,7 +206,7 @@ sub _reqs2deps # Avoid parsing a bundled version of 0. Is this possible? my $bundle_vobj = version->parse($bundled_version); - my $dep_vobj = version->parse($ver); + my $dep_vobj = version->parse($ver); next CPAN_DEP_LOOP if $bundle_vobj >= $dep_vobj; } @@ -223,7 +223,7 @@ sub _reqs2deps # are 0) $pkgdeps{$pkgname} ||= ($ver ? dist_pkgver($ver) : 0); } - + return \%pkgdeps; } @@ -233,20 +233,20 @@ sub prereqs # maps perl names for different dependencies to ArchLinux's names my %namemap = ('configure' => 'makedepends', - 'build' => 'makedepends', - 'test' => 'checkdepends', - 'runtime' => 'depends'); + 'build' => 'makedepends', + 'test' => 'checkdepends', + 'runtime' => 'depends'); my %pkgdeps; while (my ($perl, $arch) = each %namemap) { my $reqs = $prereqs->{$perl}{'requires'}; - my $deps = _reqs2deps($reqs) if $reqs; + my $deps; $deps = _reqs2deps($reqs) if $reqs; next unless keys %$deps; if ($pkgdeps{$arch}) { _merge($pkgdeps{$arch}, $deps); } else { $pkgdeps{$arch} = $deps; } } - + # ArchLinux now has a separate array for dependencies that we only # need for checking (aka "testing"). Older perl METAs do not # have this separated. Force any test modules to be checkdepends. @@ -263,7 +263,7 @@ sub prereqs } _mergedups(@pkgdeps{qw/makedepends checkdepends/}); - _mergedups(@pkgdeps{qw/depends makedepends/}); + _mergedups(@pkgdeps{qw/depends makedepends/}); # Convert all deps into arrays of strings. for my $deptype (keys %pkgdeps) { @@ -364,10 +364,13 @@ sub chsrcdir { my ($srcdir, $distfile) = @_; - mkdir $srcdir or die "mkdir $srcdir: $!"; + unless (-d $srcdir) { + mkdir $srcdir or die "mkdir $srcdir: $!"; + } chdir $srcdir or die "chdir $srcdir: $!"; - symlink catfile('..', $distfile), $distfile - or die "symlink $distfile: $!"; + unless (-f $distfile) { + symlink catfile('..', $distfile), $distfile or die "symlink $distfile: $!"; + } return $srcdir; } @@ -536,7 +539,6 @@ sub _readmedesc chomp; next unless /\ANAME/ ... /\A[A-Z]+/ and / \A \s* ${modname} [\s\-]+ (.+) \z /x; - print STDERR qq{Found description "$1" in README}; return $1; } |