apkbuild-cpan: run perltidy over the source

it was a mismatch of mixed indents
This commit is contained in:
psykose 2023-07-03 21:52:43 +00:00
parent 0e555d58a7
commit d4b2415fb1
1 changed files with 503 additions and 426 deletions

View File

@ -70,7 +70,7 @@ EOF
our $ua = LWP::UserAgent->new();
our $json = JSON->new;
$ua->env_proxy;
$ua->conn_cache(LWP::ConnCache->new());
$ua->conn_cache( LWP::ConnCache->new() );
sub read_file {
my ($filename) = @_;
@ -81,13 +81,15 @@ sub read_file {
sub read_assignments_from_file {
my ($filename) = @_;
return () if ( ! -e $filename );
return () if ( !-e $filename );
my $text = read_file($filename);
my %sline = $text =~ /^(\w+)\s*=\s*([^\"\n]*)$/mg;
my %mline = $text =~ /^(\w+)\s*=\s*\"([^\"]*)\"$/mg;
my %hash = ( %sline, %mline );
my $authors = join("\n", $text =~ /^# Contributor: .*$/mg, $text =~ /^# Maintainer: .*$/mg);
my $authors = join( "\n",
$text =~ /^# Contributor: .*$/mg,
$text =~ /^# Maintainer: .*$/mg );
$hash{'authors'} = $authors if length($authors) > 1;
my $provides = $text =~ m/^provides=\"(.*)\"".*$/mg;
@ -101,7 +103,9 @@ sub read_assignments_from_file {
sub map_cpan_to_apk {
my ($cpan_distrib) = @_;
return $package_mappings->{$cpan_distrib} if exists $package_mappings->{$cpan_distrib};
return $package_mappings->{$cpan_distrib}
if exists $package_mappings->{$cpan_distrib};
# most packages are named according to the
# distribution name
return 'perl-' . lc $cpan_distrib;
@ -112,21 +116,22 @@ sub read_apkbuild {
}
sub write_apkbuild {
my ($distdata, $apkbuild, $moddata) = @_;
my ( $distdata, $apkbuild, $moddata ) = @_;
my $cpanid = $distdata->{id};
$cpanid = substr($cpanid, 0, 1) . "/" . substr($cpanid, 0, 2) . "/$cpanid";
$cpanid =
substr( $cpanid, 0, 1 ) . "/" . substr( $cpanid, 0, 2 ) . "/$cpanid";
my $authors = undef;
my $replaces = undef;
my $provides = undef;
my $pkgrel = 0;
if (defined $apkbuild) {
if ( defined $apkbuild ) {
$authors = $apkbuild->{authors};
$provides = $apkbuild->{provides};
$replaces = $apkbuild->{replaces};
$pkgrel = $apkbuild->{pkgrel};
if ($apkbuild->{pkgver} eq $moddata->{version}) {
if ( $apkbuild->{pkgver} eq $moddata->{version} ) {
$pkgrel++;
}
}
@ -134,23 +139,28 @@ sub write_apkbuild {
my $builddir;
my $pkgver = $moddata->{version} =~ s/^[^0-9]+//r;
if ($pkgver ne $moddata->{version}) {
if ( $pkgver ne $moddata->{version} ) {
# Appears to only be needed for Class::DBI
$builddir = "\$srcdir/\$_pkgreal-" . $moddata->{version};
} else {
}
else {
$builddir = "\$srcdir/\$_pkgreal-\$pkgver";
}
my %repl = (
authors => ($authors or "# Contributor: $packager\n# Maintainer: $packager"),
pkgname => map_cpan_to_apk($moddata->{distribution}),
authors => (
$authors
or "# Contributor: $packager\n# Maintainer: $packager"
),
pkgname => map_cpan_to_apk( $moddata->{distribution} ),
pkgreal => $moddata->{distribution},
pkgver => $moddata->{version} =~ s/^[^0-9]+//r,
pkgrel => $pkgrel,
source => $moddata->{download_url},
pkgdesc => $distdata->{abstract},
provides => ($provides or ''),
replaces => ($replaces or ''),
provides => ( $provides or '' ),
replaces => ( $replaces or '' ),
builddir => $builddir,
);
$repl{source} =~ s/-$repl{pkgver}/-\$pkgver/g;
@ -172,35 +182,38 @@ sub parse_deps {
#Get list of unique required modules from all parameters
foreach $reqs (@_) {
for my $module ($reqs->required_modules) {
for my $module ( $reqs->required_modules ) {
$reqmodlist .= "$module " unless $reqmodlist =~ m/^$module$/;
}
}
# Check add the require module to $dep if not part of core perl
foreach my $module (split " ", $reqmodlist) {
foreach my $module ( split " ", $reqmodlist ) {
next if $module eq 'perl';
if (Module::CoreList->is_core($module)) {
if ( Module::CoreList->is_core($module) ) {
my $perlver = Module::CoreList->first_release($module);
say " $module is part of core perl since $perlver.";
next;
}
# map module name to package name
$response = $ua->get("https://fastapi.metacpan.org/module/$module");
$response->is_success or die $response->status_line;
my $moddata = $json->decode($response->decoded_content);
$moddata->{error} and die "Error trying to locate $module: $moddata->{error}\n";
my $moddata = $json->decode( $response->decoded_content );
$moddata->{error}
and die "Error trying to locate $module: $moddata->{error}\n";
$distfiles->{$module} = $moddata->{distribution};
}
# map package names to alpine packages
foreach ( keys %{ $distfiles } ) {
foreach ( keys %{$distfiles} ) {
$response = $ua->get("https://fastapi.metacpan.org/module/$_");
$response->is_success or die $response->status_line;
my $distdata = $json->decode($response->decoded_content);
$distdata->{error} and die "Error trying to locate $_: $distdata->{error}\n";
my $distdata = $json->decode( $response->decoded_content );
$distdata->{error}
and die "Error trying to locate $_: $distdata->{error}\n";
my $pkgname = map_cpan_to_apk($distdata->{distribution});
my $pkgname = map_cpan_to_apk( $distdata->{distribution} );
$deps .= "$pkgname " unless $deps =~ m/^$pkgname$/;
}
$deps =~ s/\h+/ /g;
@ -210,19 +223,20 @@ sub parse_deps {
}
sub prepare_tree {
system("abuild checksum unpack prepare") == 0 or
die "abuild checksum failed";
system("abuild checksum unpack prepare") == 0
or die "abuild checksum failed";
}
sub update_functions {
my $apkbuild = read_apkbuild;
my $metaprefix = "src/" . $apkbuild->{'_pkgreal'} . "-" . $apkbuild->{'pkgver'} . "/";
my $metaprefix =
"src/" . $apkbuild->{'_pkgreal'} . "-" . $apkbuild->{'pkgver'} . "/";
my $build_func;
my $check_func;
my $package_func;
my $text = read_file "APKBUILD";
if (-e "$metaprefix/Build.PL" ) {
if ( -e "$metaprefix/Build.PL" ) {
$build_func = <<'EOF';
build() {
export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}')
@ -241,7 +255,8 @@ check() {
./Build test
}
EOF
} else {
}
else {
$build_func = <<'EOF';
build() {
export CFLAGS=$(perl -MConfig -E 'say $Config{ccflags}')
@ -263,12 +278,12 @@ check() {
EOF
}
$text =~ s/^build\(\) \{.*?^\}\n/$build_func/smg or
die "Can't replace build function APKBUILD";
$text =~ s/^package\(\) \{.*?^\}\n/$package_func/smg or
die "Can't replace package function APKBUILD";
$text =~ s/^check\(\) \{.*?^\}\n/$check_func/smg or
die "Can't replace check function APKBUILD";
$text =~ s/^build\(\) \{.*?^\}\n/$build_func/smg
or die "Can't replace build function APKBUILD";
$text =~ s/^package\(\) \{.*?^\}\n/$package_func/smg
or die "Can't replace package function APKBUILD";
$text =~ s/^check\(\) \{.*?^\}\n/$check_func/smg
or die "Can't replace check function APKBUILD";
open my $fh, '>', "APKBUILD" or die;
print $fh $text;
@ -277,9 +292,10 @@ EOF
sub sort_pkgs_by_orig {
my $sort_order = shift;
my @array_to_sort = split / /, shift;;
my @array_to_sort = split / /, shift;
s/[\t\n\r\f]/ /g for $sort_order; # remove embedded new lines from sort order
s/[\t\n\r\f]/ /g
for $sort_order; # remove embedded new lines from sort order
s/\h+/ /g for $sort_order; # remove embedded spaces from sort order
my @sort_order = split / /, $sort_order;
@ -293,25 +309,27 @@ sub sort_pkgs_by_orig {
foreach (@array_to_sort) {
my $pos = $position_of{$_};
if (!defined $pos) {
if ( !defined $pos ) {
# not found in sort order so add to the end
$sorted{$_} = $count;
$count++;
} else {
}
else {
$sorted{$_} = $pos;
}
}
my @tmp; # hold array of sorted in position order
foreach my $name (sort { $sorted{$a} <=> $sorted{$b} } keys %sorted) {
foreach my $name ( sort { $sorted{$a} <=> $sorted{$b} } keys %sorted ) {
push @tmp, $name;
}
# remove any duplicates
uniq @tmp;
return join(" ", @tmp);
return join( " ", @tmp );
}
sub format_depends {
@ -323,12 +341,12 @@ sub format_depends {
$deps =~ s/^\s//g;
$deps =~ s/\s$//g;
if (length($deps) >= $columns) {
$deps = wrap("\t", "\t", $deps);
if ( length($deps) >= $columns ) {
$deps = wrap( "\t", "\t", $deps );
}
$deps =~ s/\s$//g;
if (length($deps) >= $columns) {
if ( length($deps) >= $columns ) {
$deps = "\n" . $deps . "\n\t";
}
return $deps;
@ -354,13 +372,15 @@ sub do_depends {
$metaprefix = "src/" . $apkbuild->{'_name'} . "-" . $modver . "/";
}
elsif ( exists $apkbuild->{'_realpkgname'} ) {
$metaprefix = "src/" . $apkbuild->{'_realpkgname'} . "-" . $modver . "/";
$metaprefix =
"src/" . $apkbuild->{'_realpkgname'} . "-" . $modver . "/";
}
elsif ( exists $apkbuild->{'_pkg_real'} ) {
$metaprefix = "src/" . $apkbuild->{'_pkg_real'} . "-" . $modver . "/";
}
else {
die "Unable to find meta file directory - check APKBUILD Perl Module Name";
die
"Unable to find meta file directory - check APKBUILD Perl Module Name";
}
$metaprefix =~ s/-\$pkgver//g;
@ -368,8 +388,10 @@ sub do_depends {
my $meta;
foreach my $metafile ("MYMETA.json", "META.json", "MYMETA.yml", "META.yml") {
if (-e "$metaprefix$metafile") {
foreach
my $metafile ( "MYMETA.json", "META.json", "MYMETA.yml", "META.yml" )
{
if ( -e "$metaprefix$metafile" ) {
say "Using meta information from $metafile";
$meta = CPAN::Meta->load_file("$metaprefix$metafile");
last;
@ -380,109 +402,132 @@ sub do_depends {
my $abstract = $meta->abstract;
say "Abstract: $abstract";
my $license = join " OR ", map {$license_mappings->{$_} or $_} $meta->license;
my $license = join " OR ",
map { $license_mappings->{$_} or $_ } $meta->license;
say "License: $license";
my $deps = parse_deps( $meta->effective_prereqs->requirements_for('runtime', 'requires') );
my $deps = parse_deps(
$meta->effective_prereqs->requirements_for( 'runtime', 'requires' ) );
if (defined $oldapkbuild->{'depends'}){
if (defined $oldapkbuild->{'cpandepends'}) {
$oldapkbuild->{'depends'} =~ s/\$cpandepends/$oldapkbuild->{'cpandepends'}/g;
if ( defined $oldapkbuild->{'depends'} ) {
if ( defined $oldapkbuild->{'cpandepends'} ) {
$oldapkbuild->{'depends'} =~
s/\$cpandepends/$oldapkbuild->{'cpandepends'}/g;
}
my $libs = $oldapkbuild->{'depends'};
$libs =~ s/perl\-\w+[-\w+]+//g;
$libs =~ s/perl//g;
if ($libs ne '') {
$deps = $deps . " " .$libs;
if ( $libs ne '' ) {
$deps = $deps . " " . $libs;
}
$deps = sort_pkgs_by_orig ($oldapkbuild->{'depends'}, $deps);
$deps = sort_pkgs_by_orig( $oldapkbuild->{'depends'}, $deps );
}
if ($deps eq '') {
if ( $deps eq '' ) {
$deps = "perl";
} else {
$deps = format_depends("perl " . $deps);
}
else {
$deps = format_depends( "perl " . $deps );
}
say "CPAN runtime Required: $deps";
say "CPAN runtime Recommended: " . parse_deps( $meta->effective_prereqs->requirements_for('runtime', 'recommends'));
say "CPAN runtime Recommended: "
. parse_deps(
$meta->effective_prereqs->requirements_for( 'runtime', 'recommends' ) );
my $makedeps = parse_deps(
$meta->effective_prereqs->requirements_for('configure', 'requires'),
$meta->effective_prereqs->requirements_for('configure', 'recommends'),
$meta->effective_prereqs->requirements_for('build', 'requires'),
$meta->effective_prereqs->requirements_for('build', 'recommends')
$meta->effective_prereqs->requirements_for( 'configure', 'requires' ),
$meta->effective_prereqs->requirements_for( 'configure', 'recommends' ),
$meta->effective_prereqs->requirements_for( 'build', 'requires' ),
$meta->effective_prereqs->requirements_for( 'build', 'recommends' )
);
if (-e "$metaprefix/Build.PL" ) {
$makedeps = "$makedeps perl-module-build" unless $makedeps =~ m/^perl-module-build$/;
if ( -e "$metaprefix/Build.PL" ) {
$makedeps = "$makedeps perl-module-build"
unless $makedeps =~ m/^perl-module-build$/;
}
if (defined $oldapkbuild->{'makedepends'}){
if (defined $oldapkbuild->{'cpanmakedepends'}) {
$oldapkbuild->{'makedepends'} =~ s/\$cpanmakedepends/$oldapkbuild->{'cpanmakedepends'}/g;
if ( defined $oldapkbuild->{'makedepends'} ) {
if ( defined $oldapkbuild->{'cpanmakedepends'} ) {
$oldapkbuild->{'makedepends'} =~
s/\$cpanmakedepends/$oldapkbuild->{'cpanmakedepends'}/g;
}
my $libs = $oldapkbuild->{'makedepends'};
$libs =~ s/perl\-\w+[-\w+]+//g;
$makedeps = $makedeps . " " .$libs;
$makedeps = sort_pkgs_by_orig ($oldapkbuild->{'makedepends'}, $makedeps);
$makedeps = $makedeps . " " . $libs;
$makedeps =
sort_pkgs_by_orig( $oldapkbuild->{'makedepends'}, $makedeps );
}
if ($makedeps eq '') {
if ( $makedeps eq '' ) {
$makedeps = "perl-dev";
} else {
$makedeps = format_depends("perl-dev " . $makedeps);
}
else {
$makedeps = format_depends( "perl-dev " . $makedeps );
}
$makedeps =~ s/ +$//g;
say "CPAN build deps: $makedeps";
say " CPAN build requires: " . parse_deps($meta->effective_prereqs->requirements_for('configure', 'requires'), $meta->effective_prereqs->requirements_for('build', 'requires'));
say " CPAN build recommends: " . parse_deps($meta->effective_prereqs->requirements_for('configure', 'recommends'), $meta->effective_prereqs->requirements_for('build', 'recommends'));
say " CPAN build requires: "
. parse_deps(
$meta->effective_prereqs->requirements_for( 'configure', 'requires' ),
$meta->effective_prereqs->requirements_for( 'build', 'requires' )
);
say " CPAN build recommends: "
. parse_deps(
$meta->effective_prereqs->requirements_for( 'configure', 'recommends' ),
$meta->effective_prereqs->requirements_for( 'build', 'recommends' )
);
my $checkdeps = parse_deps($meta->effective_prereqs->requirements_for('test', 'requires'), $meta->effective_prereqs->requirements_for('test', 'recommends'));
my $checkdeps = parse_deps(
$meta->effective_prereqs->requirements_for( 'test', 'requires' ),
$meta->effective_prereqs->requirements_for( 'test', 'recommends' )
);
if (defined $oldapkbuild->{'checkdepends'}){
if (defined $oldapkbuild->{'cpancheckdepends'}) {
$oldapkbuild->{'checkdepends'} =~ s/\$cpancheckdepends/$oldapkbuild->{'cpancheckdepends'}/g;
if ( defined $oldapkbuild->{'checkdepends'} ) {
if ( defined $oldapkbuild->{'cpancheckdepends'} ) {
$oldapkbuild->{'checkdepends'} =~
s/\$cpancheckdepends/$oldapkbuild->{'cpancheckdepends'}/g;
}
my $libs = $oldapkbuild->{'checkdepends'};
$libs =~ s/perl\-\w+[-\w+]+//g;
if ($libs ne "") {
$checkdeps = $checkdeps . " " .$libs;
if ( $libs ne "" ) {
$checkdeps = $checkdeps . " " . $libs;
}
$checkdeps = sort_pkgs_by_orig ($oldapkbuild->{'checkdepends'}, $checkdeps);
$checkdeps =
sort_pkgs_by_orig( $oldapkbuild->{'checkdepends'}, $checkdeps );
}
$checkdeps = format_depends($checkdeps);
say "CPAN check deps: $checkdeps";
my $text = read_file "APKBUILD";
if ($abstract && $abstract ne 'unknown') {
$text =~ s/^pkgdesc=\"([^\"]*)\"$/pkgdesc=\"$abstract\"/mg or
die "Can't find pkgdesc line in APKBUILD";
if ( $abstract && $abstract ne 'unknown' ) {
$text =~ s/^pkgdesc=\"([^\"]*)\"$/pkgdesc=\"$abstract\"/mg
or die "Can't find pkgdesc line in APKBUILD";
}
if (length(`find $metaprefix -name '*.xs'`)) {
if (!exists $oldapkbuild->{'arch'}) {
$text =~ s/^arch=\"([^\"]*)\"$/arch="all"/mg or
die "Can't find arch line in APKBUILD";
if ( length(`find $metaprefix -name '*.xs'`) ) {
if ( !exists $oldapkbuild->{'arch'} ) {
$text =~ s/^arch=\"([^\"]*)\"$/arch="all"/mg
or die "Can't find arch line in APKBUILD";
}
}
if ($license ne 'unknown') {
$text =~ s/^license=\"([^\"]*)\"$/license=\"$license\"/mg or
die "Can't find license line in APKBUILD";
if ( $license ne 'unknown' ) {
$text =~ s/^license=\"([^\"]*)\"$/license=\"$license\"/mg
or die "Can't find license line in APKBUILD";
}
$text =~ s/^depends=\"([^\"]*)\"$/depends=\"$deps\"/mg or
$text =~ s/(license=.*\n)/$1depends=\"$deps\"/gm or
die "Can't insert depends line in APKBUILD";
$text =~ s/^depends=\"([^\"]*)\"$/depends=\"$deps\"/mg
or $text =~ s/(license=.*\n)/$1depends=\"$deps\"/gm
or die "Can't insert depends line in APKBUILD";
$text =~ s/^makedepends=\"([^\"]*)\"$/makedepends=\"$makedeps\"/mg or
$text =~ s/(depends=.*\n)/$1makedepends=\"$makedeps\"/gm or
die "Can't insert makedepends line in APKBUILD";
$text =~ s/^makedepends=\"([^\"]*)\"$/makedepends=\"$makedeps\"/mg
or $text =~ s/(depends=.*\n)/$1makedepends=\"$makedeps\"/gm
or die "Can't insert makedepends line in APKBUILD";
$text =~ s/^checkdepends=\"([^\"]*)\"$/checkdepends=\"$checkdeps\"/mg or
$text =~ s/(makedepends=.*\n)/$1checkdepends=\"$checkdeps\"/gm or
die "Can't insert checkdepends line in APKBUILD";
$text =~ s/^checkdepends=\"([^\"]*)\"$/checkdepends=\"$checkdeps\"/mg
or $text =~ s/(makedepends=.*\n)/$1checkdepends=\"$checkdeps\"/gm
or die "Can't insert checkdepends line in APKBUILD";
# remove empty variables
$text =~ s/.*=""\n//g;
@ -496,36 +541,47 @@ sub get_data {
my $apkbuild = read_apkbuild;
my $pkgreal = '';
if (exists $apkbuild->{_realname}) {
if ( exists $apkbuild->{_realname} ) {
$pkgreal = $apkbuild->{_realname};
} elsif (exists $apkbuild->{_pkgreal}) {
}
elsif ( exists $apkbuild->{_pkgreal} ) {
$pkgreal = $apkbuild->{_pkgreal};
} elsif (exists $apkbuild->{_pkgname}) {
}
elsif ( exists $apkbuild->{_pkgname} ) {
$pkgreal = $apkbuild->{_pkgname};
} elsif (exists $apkbuild->{_name}) {
}
elsif ( exists $apkbuild->{_name} ) {
$pkgreal = $apkbuild->{_name};
} elsif (exists $apkbuild->{_realpkgname}) {
}
elsif ( exists $apkbuild->{_realpkgname} ) {
$pkgreal = $apkbuild->{_realpkgname};
} elsif (exists $apkbuild->{_pkg_real}) {
}
elsif ( exists $apkbuild->{_pkg_real} ) {
$pkgreal = $apkbuild->{_pkg_real};
} else {
}
else {
my $module = '';
my $distribution = '';
while ((my $key, my $value ) = each (%$apkbuild)) {
while ( ( my $key, my $value ) = each(%$apkbuild) ) {
# Do not parse any depends lines to not find incorrect module
if ($key =~ m/.*depends.*/) {
if ( $key =~ m/.*depends.*/ ) {
next;
}
# Try to find a perl module name in APKBUILD
if ($value=~m/((\w+::)+\w+)/g) {
if ( $value =~ m/((\w+::)+\w+)/g ) {
# Match Perl Module names containing ::
$module .= "$1 " unless $module =~ m/$1/;
}
elsif ($value =~ m/(([A-Z]\w+-)+\w+)/) {
elsif ( $value =~ m/(([A-Z]\w+-)+\w+)/ ) {
# Match possible distribution names with -
$distribution .= "$1 " unless $distribution =~ m/ *$1 /;
}
elsif ( $value =~ m/.*release\/([A-Z]\w+).*/ ) {
# Match Single Word Perl Module Name after release in URL?
$distribution .= "$1 " unless $distribution =~ m/ *$1 /;
}
@ -533,18 +589,19 @@ sub get_data {
# Want to try the traditional Module::Name first
my $list = $module . $distribution;
foreach (split / /, $list) {
foreach ( split / /, $list ) {
my $type = '';
if( $_ =~ m/::/ ) {
if ( $_ =~ m/::/ ) {
$type = 'module';
} else {
}
else {
$type = 'release';
}
my $response = $ua->get("https://fastapi.metacpan.org/$type/$_");
$response->is_success or next;;
$response->is_success or next;
my $moddata = $json->decode($response->decoded_content);
my $moddata = $json->decode( $response->decoded_content );
$moddata->{error} and next;
$pkgreal = $moddata->{distribution};
@ -555,72 +612,86 @@ sub get_data {
$pkgreal =~ s/-\$pkgver//g;
my $response = $ua->get("https://fastapi.metacpan.org/release/$pkgreal");
$response->is_success or
die $response->status_line . " unable to find $pkgreal verify Perl Module name in APKBUILD\n";
my $distdata = $json->decode($response->decoded_content);
$distdata->{error} and die "Error trying to locate $pkgreal: $distdata->{error}\n";
$response->is_success
or die $response->status_line
. " unable to find $pkgreal verify Perl Module name in APKBUILD\n";
my $distdata = $json->decode( $response->decoded_content );
$distdata->{error}
and die "Error trying to locate $pkgreal: $distdata->{error}\n";
$response = $ua->get("https://fastapi.metacpan.org/module/$distdata->{main_module}");
$response =
$ua->get("https://fastapi.metacpan.org/module/$distdata->{main_module}");
$response->is_success or die $response->status_line;
my $moddata = $json->decode($response->decoded_content);
$moddata->{error} and die "Error trying to locate $distdata->{main_module}: $moddata->{error}\n";
my $moddata = $json->decode( $response->decoded_content );
$moddata->{error}
and die
"Error trying to locate $distdata->{main_module}: $moddata->{error}\n";
return ($apkbuild, $distdata, $moddata);
return ( $apkbuild, $distdata, $moddata );
}
my $abuild_conf = read_assignments_from_file("/etc/abuild.conf");
$packager = $abuild_conf->{PACKAGER} if $abuild_conf->{PACKAGER};
my $user_abuild_conf = read_assignments_from_file($ENV{"HOME"} . "/.abuild/abuild.conf");
my $user_abuild_conf =
read_assignments_from_file( $ENV{"HOME"} . "/.abuild/abuild.conf" );
$packager = $user_abuild_conf->{PACKAGER} if $user_abuild_conf->{PACKAGER};
my $command = $ARGV[0];
if ($command eq "create") {
if ( $command eq "create" ) {
my $module = $ARGV[1];
$module or die "Module name is a mandatory argument";
my $response = $ua->get("https://fastapi.metacpan.org/module/$module");
$response->is_success or die $response->status_line;
my $moddata = $json->decode($response->decoded_content);
$moddata->{error} and die "Error trying to locate $module: $moddata->{error}\n";
my $moddata = $json->decode( $response->decoded_content );
$moddata->{error}
and die "Error trying to locate $module: $moddata->{error}\n";
$response = $ua->get("https://fastapi.metacpan.org/release/$moddata->{distribution}");
$response =
$ua->get("https://fastapi.metacpan.org/release/$moddata->{distribution}");
$response->is_success or die $response->status_line;
my $distdata = $json->decode($response->decoded_content);
$distdata->{error} and die "Error trying to locate $module: $distdata->{error}\n";
my $distdata = $json->decode( $response->decoded_content );
$distdata->{error}
and die "Error trying to locate $module: $distdata->{error}\n";
my $apkname = map_cpan_to_apk $distdata->{metadata}{name};
mkdir $apkname;
chdir $apkname;
write_apkbuild($distdata, undef, $moddata);
write_apkbuild( $distdata, undef, $moddata );
prepare_tree;
update_functions;
do_depends $moddata->{version};
} elsif ($command eq "recreate" ) {
}
elsif ( $command eq "recreate" ) {
#TODO: likely should keep pkgrel the same on recreate
my ($apkbuild, $distdata, $moddata) = get_data;
my ( $apkbuild, $distdata, $moddata ) = get_data;
my $pkgver = $moddata->{version} =~ s/^[^0-9]+//r;
if ($pkgver ne $apkbuild->{pkgver}) {
if ( $pkgver ne $apkbuild->{pkgver} ) {
#Reset pkgrel on upgrade on recreate
say "Upgrading CPAN module from $apkbuild->{pkgver} to $pkgver";
$apkbuild->{pkgrel}=0;
$apkbuild->{pkgrel} = 0;
}
write_apkbuild($distdata, $apkbuild, $moddata);
write_apkbuild( $distdata, $apkbuild, $moddata );
prepare_tree;
update_functions;
do_depends($moddata->{version}, $apkbuild);
} elsif ($command eq "upgrade") {
my ($apkbuild, $distdata, $moddata) = get_data;
do_depends( $moddata->{version}, $apkbuild );
}
elsif ( $command eq "upgrade" ) {
my ( $apkbuild, $distdata, $moddata ) = get_data;
my $pkgver = $moddata->{version} =~ s/^[^0-9]+//r;
if ($pkgver ne $apkbuild->{pkgver}) {
if ( $pkgver ne $apkbuild->{pkgver} ) {
say "Upgrading CPAN module from $apkbuild->{pkgver} to $pkgver";
my $text = read_file "APKBUILD";
$text =~ s/^pkgver=(.*)$/pkgver=$pkgver/mg or
die "Can't find pkgver line in APKBUILD";
$text =~ s/^pkgver=(.*)$/pkgver=$pkgver/mg
or die "Can't find pkgver line in APKBUILD";
$text =~ s/^pkgrel=(.*)$/pkgrel=0/mg;
#FIXME: review whether this works over time
# It deletes the blank line before the checksum
# So prepare_tree does not insert extra blank line
@ -629,21 +700,27 @@ if ($command eq "create") {
say $fh $text;
close $fh;
prepare_tree;
do_depends ($moddata->{version}, $apkbuild);
} else {
do_depends( $moddata->{version}, $apkbuild );
}
else {
say "Up-to-data with CPAN";
}
} elsif ($command eq "check") {
my ($apkbuild, $distdata, $moddata) = get_data;
}
elsif ( $command eq "check" ) {
my ( $apkbuild, $distdata, $moddata ) = get_data;
my $pkgver = $moddata->{version} =~ s/^[^0-9]+//r;
say "$apkbuild->{pkgname}: Latest version: $pkgver Packaged version: $apkbuild->{pkgver}";
if ($pkgver ne $apkbuild->{pkgver}) {
say
"$apkbuild->{pkgname}: Latest version: $pkgver Packaged version: $apkbuild->{pkgver}";
if ( $pkgver ne $apkbuild->{pkgver} ) {
exit(1);
}
} elsif ($command eq "update") {
}
elsif ( $command eq "update" ) {
prepare_tree;
do_depends;
} else {
say "Usage: apkbuild-cpan [create <Module::Name> | check | recreate | update | upgrade]";
}
else {
say
"Usage: apkbuild-cpan [create <Module::Name> | check | recreate | update | upgrade]";
exit;
}