summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/makepkgbuild41
-rwxr-xr-xbin/metas/perl7
-rwxr-xr-xbin/metas/perl.d/perl-dist28
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;
}