Skip to content

Commit 914c082

Browse files
committed
Add support for apk packages and APKBUILD recipes
1 parent 74e4efc commit 914c082

13 files changed

+783
-13
lines changed

Build.pm

+16-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ our $do_helm;
4545
our $do_flatpak;
4646
our $do_mkosi;
4747
our $do_productcompose;
48+
our $do_apk;
4849

4950
sub import {
5051
for (@_) {
@@ -62,8 +63,9 @@ sub import {
6263
$do_flatpak = 1 if $_ eq ':flatpak';
6364
$do_mkosi = 1 if $_ eq ':mkosi';
6465
$do_productcompose = 1 if $_ eq ':productcompose';
66+
$do_apk = 1 if $_ eq ':apk';
6567
}
66-
$do_rpm = $do_deb = $do_kiwi = $do_productcompose = $do_arch = $do_collax = $do_livebuild = $do_snapcraft = $do_appimage = $do_docker = $do_fissile = $do_helm = $do_flatpak = $do_mkosi = 1 if !$do_rpm && !$do_deb && !$do_kiwi && !$do_arch && !$do_collax && !$do_livebuild && !$do_snapcraft && !$do_appimage && !$do_docker && !$do_fissile && !$do_helm && !$do_flatpak && !$do_mkosi && !$do_productcompose;
68+
$do_rpm = $do_deb = $do_kiwi = $do_productcompose = $do_arch = $do_collax = $do_livebuild = $do_snapcraft = $do_appimage = $do_docker = $do_fissile = $do_helm = $do_flatpak = $do_mkosi = $do_apk = 1 if !$do_rpm && !$do_deb && !$do_kiwi && !$do_arch && !$do_collax && !$do_livebuild && !$do_snapcraft && !$do_appimage && !$do_docker && !$do_fissile && !$do_helm && !$do_flatpak && !$do_mkosi && !$do_productcompose && !$do_apk;
6769

6870
if ($do_deb) {
6971
require Build::Deb;
@@ -104,6 +106,9 @@ sub import {
104106
if ($do_productcompose) {
105107
require Build::ProductCompose;
106108
}
109+
if ($do_apk) {
110+
require Build::Apk;
111+
}
107112
}
108113

109114
package Build::Features;
@@ -570,13 +575,16 @@ sub read_config {
570575
$config->{'type'} = 'dsc';
571576
} elsif (grep {$_ eq 'pacman'} @{$config->{'preinstall'} || []}) {
572577
$config->{'type'} = 'arch';
578+
} elsif (grep {$_ eq 'apk-tools'} @{$config->{'preinstall'} || []}) {
579+
$config->{'type'} = 'apk';
573580
}
574581
$config->{'type'} ||= 'UNDEFINED';
575582
}
576583
if (!$config->{'binarytype'}) {
577584
$config->{'binarytype'} = 'rpm' if $config->{'type'} eq 'spec';
578585
$config->{'binarytype'} = 'deb' if $config->{'type'} eq 'dsc' || $config->{'type'} eq 'collax' || $config->{'type'} eq 'livebuild';
579586
$config->{'binarytype'} = 'arch' if $config->{'type'} eq 'arch';
587+
$config->{'binarytype'} = 'apk' if $config->{'type'} eq 'apk';
580588
if (grep {$_ eq $config->{'type'}} qw{snapcraft appimage docker fissile kiwi mkosi}){
581589
if (grep {$_ eq 'rpm'} @{$config->{'preinstall'} || []}) {
582590
$config->{'binarytype'} = 'rpm';
@@ -1126,6 +1134,8 @@ sub addproviders {
11261134
my $vv;
11271135
if ($binarytype eq 'deb') {
11281136
$vv = Build::Deb::verscmp($pv, $rv, 1);
1137+
} elsif ($binarytype eq 'apk') {
1138+
$vv = Build::Apk::verscmp($pv, $rv, 1);
11291139
} else {
11301140
$vv = Build::Rpm::verscmp($pv, $rv, 1);
11311141
}
@@ -1271,6 +1281,7 @@ sub recipe2buildtype {
12711281
$recipe =~ s/.*\///;
12721282
$recipe =~ s/^_service:.*://;
12731283
return 'arch' if $recipe eq 'PKGBUILD';
1284+
return 'apk' if $recipe eq 'APKBUILD';
12741285
return 'collax' if $recipe eq 'build.collax';
12751286
return 'snapcraft' if $recipe eq 'snapcraft.yaml';
12761287
return 'appimage' if $recipe eq 'appimage.yml';
@@ -1343,6 +1354,7 @@ sub parse_typed {
13431354
return Build::Fissile::parse($cf, $fn, @args) if $do_fissile && $buildtype eq 'fissile';
13441355
return parse_simpleimage($cf, $fn, @args) if $buildtype eq 'simpleimage';
13451356
return Build::Arch::parse($cf, $fn, @args) if $do_arch && $buildtype eq 'arch';
1357+
return Build::Apk::parse($cf, $fn, @args) if $do_apk && $buildtype eq 'apk';
13461358
return Build::Collax::parse($cf, $fn, @args) if $do_collax && $buildtype eq 'collax';
13471359
return parse_preinstallimage($cf, $fn, @args) if $buildtype eq 'preinstallimage';
13481360
return Build::Helm::parse($cf, $fn, @args) if $buildtype eq 'helm';
@@ -1363,6 +1375,7 @@ sub query {
13631375
return Build::Kiwi::queryiso($handle, %opts) if $do_kiwi && $binname =~ /\.iso$/;
13641376
return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/;
13651377
return Build::Arch::query($handle, %opts) if $do_arch && $binname =~ /\.arch$/;
1378+
return Build::Apk::query($handle, %opts) if $do_arch && $binname =~ /\.apk$/;
13661379
return undef;
13671380
}
13681381

@@ -1393,6 +1406,7 @@ sub queryhdrmd5 {
13931406
return Build::Kiwi::queryhdrmd5(@_) if $do_kiwi && $binname =~ /\.raw.install$/;
13941407
return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.pkg\.tar(?:\.gz|\.xz|\.zst)?$/;
13951408
return Build::Arch::queryhdrmd5(@_) if $do_arch && $binname =~ /\.arch$/;
1409+
return Build::Apk::queryhdrmd5(@_) if $do_apk && $binname =~ /\.apk$/;
13961410
return undef;
13971411
}
13981412

@@ -1401,6 +1415,7 @@ sub queryinstalled {
14011415
return Build::Rpm::queryinstalled(@args) if $binarytype eq 'rpm';
14021416
return Build::Deb::queryinstalled(@args) if $binarytype eq 'deb';
14031417
return Build::Arch::queryinstalled(@args) if $binarytype eq 'arch';
1418+
return Build::Apk::queryinstalled(@args) if $binarytype eq 'apk';
14041419
return undef;
14051420
}
14061421

0 commit comments

Comments
 (0)