apkbuild-pypi.in: Updates to fix some issues
This commit is contained in:
parent
7e754436f1
commit
82b4d9bf43
|
@ -4,6 +4,7 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use autodie qw(:all);
|
use autodie qw(:all);
|
||||||
use feature qw(:5.14);
|
use feature qw(:5.14);
|
||||||
|
use experimental 'switch';
|
||||||
use LWP::UserAgent;
|
use LWP::UserAgent;
|
||||||
use LWP::ConnCache;
|
use LWP::ConnCache;
|
||||||
use JSON;
|
use JSON;
|
||||||
|
@ -13,20 +14,22 @@ my %pkgmap = ();
|
||||||
my %licenses = ();
|
my %licenses = ();
|
||||||
|
|
||||||
my $template = <<'EOF';
|
my $template = <<'EOF';
|
||||||
|
# Automatically generated by apkbuild-pypi, template 3
|
||||||
[% authors %]
|
[% authors %]
|
||||||
pkgname=[% pkgname %]
|
pkgname=[% pkgname %]
|
||||||
|
#_pkgreal is used by apkbuild-pypi to find modules at PyPI
|
||||||
_pkgreal=[% pkgreal %]
|
_pkgreal=[% pkgreal %]
|
||||||
pkgver=[% pkgver %]
|
pkgver=[% pkgver %]
|
||||||
pkgrel=0
|
pkgrel=[% pkgrel %]
|
||||||
pkgdesc="[% pkgdesc %]"
|
pkgdesc="[% pkgdesc %]"
|
||||||
|
provides="[% provides %]"
|
||||||
|
replaces="[% replaces %]"
|
||||||
url="http://packages.python.org/pypi/[% pkgreal %]"
|
url="http://packages.python.org/pypi/[% pkgreal %]"
|
||||||
arch="noarch"
|
arch="noarch"
|
||||||
license="[% license %]"
|
license="[% license %]"
|
||||||
pydepends=""
|
depends="python3"
|
||||||
pymakedepends=""
|
|
||||||
depends="python3 $pydepends"
|
|
||||||
checkdepends="python3-dev"
|
checkdepends="python3-dev"
|
||||||
makedepends="py3-setuptools $pymakedepends"
|
makedepends="py3-setuptools"
|
||||||
subpackages=""
|
subpackages=""
|
||||||
source="[% source %]"
|
source="[% source %]"
|
||||||
builddir="$srcdir/$_pkgreal-$pkgver"
|
builddir="$srcdir/$_pkgreal-$pkgver"
|
||||||
|
@ -35,6 +38,10 @@ build() {
|
||||||
python3 setup.py build
|
python3 setup.py build
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
python3 setup.py test
|
||||||
|
}
|
||||||
|
|
||||||
package() {
|
package() {
|
||||||
PYTHONPATH=$pkgdir`python3 -c "import site; print(site.getsitepackages()[0])"` \
|
PYTHONPATH=$pkgdir`python3 -c "import site; print(site.getsitepackages()[0])"` \
|
||||||
python3 setup.py install \
|
python3 setup.py install \
|
||||||
|
@ -43,10 +50,6 @@ package() {
|
||||||
--single-version-externally-managed
|
--single-version-externally-managed
|
||||||
}
|
}
|
||||||
|
|
||||||
check() {
|
|
||||||
python3 setup.py test
|
|
||||||
}
|
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
my $ua = LWP::UserAgent->new();
|
my $ua = LWP::UserAgent->new();
|
||||||
|
@ -67,12 +70,18 @@ sub read_assignments_from_file {
|
||||||
return () if ( ! -e $filename );
|
return () if ( ! -e $filename );
|
||||||
my $text = read_file($filename);
|
my $text = read_file($filename);
|
||||||
my %sline = $text =~ /^(\w+)\s*=\s*([^\"\n]*)$/mg;
|
my %sline = $text =~ /^(\w+)\s*=\s*([^\"\n]*)$/mg;
|
||||||
my %mline = $text =~ /^(\w+)\s*=\s*\"([^\"]*)\"$/mg;
|
my %mline = $text =~ /^(\w+)\s*=\s*\"([^\"]*)\".*$/mg;
|
||||||
my %hash = ( %sline, %mline );
|
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;
|
$hash{'authors'} = $authors if length($authors) > 1;
|
||||||
|
|
||||||
|
my $provides = $text =~ m/provides=\"(.*)\"".*/mg;
|
||||||
|
$hash{'provides'} = $1 if length($provides) >= 1;
|
||||||
|
|
||||||
|
my $requires = $text =~ m/^requires=\"(.*)\"".*$/mg;
|
||||||
|
$hash{'requires'} = $1 if length($requires) >= 1;
|
||||||
|
|
||||||
return \%hash;
|
return \%hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,16 +113,35 @@ sub read_apkbuild {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub write_apkbuild {
|
sub write_apkbuild {
|
||||||
my ($distdata, $authors) = @_;
|
my ($distdata, $apkbuild) = @_;
|
||||||
|
|
||||||
|
my $replaces = undef;
|
||||||
|
my $provides = undef;
|
||||||
|
my $authors = undef;
|
||||||
|
my $pkgrel = 0;
|
||||||
|
|
||||||
|
if (defined $apkbuild) {
|
||||||
|
$authors = $apkbuild->{authors};
|
||||||
|
$provides = $apkbuild->{provides};
|
||||||
|
$replaces = $apkbuild->{replaces};
|
||||||
|
$pkgrel = $apkbuild->{pkgrel};
|
||||||
|
|
||||||
|
if ($apkbuild->{pkgver} eq $distdata->{info}{version}) {
|
||||||
|
$pkgrel++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
my %repl = (
|
my %repl = (
|
||||||
authors => ($authors or "# Contributor: $packager\n# Maintainer: $packager"),
|
authors => ($authors or "# Contributor: $packager\n# Maintainer: $packager"),
|
||||||
pkgname => map_pypi_to_apk($distdata->{info}{name}),
|
pkgname => map_pypi_to_apk($distdata->{info}{name}),
|
||||||
pkgreal => $distdata->{info}{name},
|
pkgreal => $distdata->{info}{name},
|
||||||
pkgver => $distdata->{info}{version},
|
pkgver => $distdata->{info}{version},
|
||||||
|
pkgrel => $pkgrel,
|
||||||
source => get_source($distdata),
|
source => get_source($distdata),
|
||||||
license => map_license($distdata->{info}{license}),
|
license => map_license($distdata->{info}{license}),
|
||||||
pkgdesc => $distdata->{info}{summary},
|
pkgdesc => $distdata->{info}{summary},
|
||||||
|
provides => ($provides or ''),
|
||||||
|
replaces => ($replaces or ''),
|
||||||
);
|
);
|
||||||
$template =~ s/\[% (.*?) %\]/$repl{$1}/g;
|
$template =~ s/\[% (.*?) %\]/$repl{$1}/g;
|
||||||
|
|
||||||
|
@ -130,6 +158,34 @@ sub prepare_tree {
|
||||||
system('abuild checksum unpack prepare');
|
system('abuild checksum unpack prepare');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub find_package_name {
|
||||||
|
my ($apkbuild) = @_;
|
||||||
|
|
||||||
|
my $pkgreal = '';
|
||||||
|
|
||||||
|
if (exists $apkbuild->{_realname}) {
|
||||||
|
$pkgreal = $apkbuild->{_realname};
|
||||||
|
} elsif (exists $apkbuild->{_pkgreal}) {
|
||||||
|
$pkgreal = $apkbuild->{_pkgreal};
|
||||||
|
} elsif (exists $apkbuild->{_pkgname}) {
|
||||||
|
$pkgreal = $apkbuild->{_pkgname};
|
||||||
|
} elsif (exists $apkbuild->{_name}) {
|
||||||
|
$pkgreal = $apkbuild->{_name};
|
||||||
|
} elsif (exists $apkbuild->{_realpkgname}) {
|
||||||
|
$pkgreal = $apkbuild->{_realpkgname};
|
||||||
|
} elsif (exists $apkbuild->{_pkg_real}) {
|
||||||
|
$pkgreal = $apkbuild->{_pkg_real};
|
||||||
|
} elsif (exists $apkbuild->{source}) {
|
||||||
|
$pkgreal = $apkbuild->{source};
|
||||||
|
$pkgreal =~ m/(\w+)-/;
|
||||||
|
$pkgreal = $1;
|
||||||
|
} else {
|
||||||
|
print "No pkg real found\n";
|
||||||
|
die;
|
||||||
|
}
|
||||||
|
return $pkgreal;
|
||||||
|
}
|
||||||
|
|
||||||
sub get_data {
|
sub get_data {
|
||||||
my ($package) = @_;
|
my ($package) = @_;
|
||||||
my $response = $ua->get("https://pypi.python.org/pypi/$package/json");
|
my $response = $ua->get("https://pypi.python.org/pypi/$package/json");
|
||||||
|
@ -205,13 +261,27 @@ given ($ARGV[0]) {
|
||||||
get_deps($data);
|
get_deps($data);
|
||||||
} when ('recreate') {
|
} when ('recreate') {
|
||||||
my $apkbuild = read_apkbuild;
|
my $apkbuild = read_apkbuild;
|
||||||
|
if (! defined $apkbuild->{_pkgreal}) {
|
||||||
|
$apkbuild->{_pkgreal} = find_package_name($apkbuild);
|
||||||
|
}
|
||||||
my $distdata = get_data($apkbuild->{_pkgreal});
|
my $distdata = get_data($apkbuild->{_pkgreal});
|
||||||
my $data = write_apkbuild($distdata, $apkbuild->{authors});
|
my $pkgver = $distdata->{info}{version} =~ s/^[^0-9]+//r;
|
||||||
|
if ($pkgver ne $apkbuild->{pkgver}) {
|
||||||
|
#Reset pkgrel on upgrade on recreate
|
||||||
|
say "Upgrading PyPI module from $apkbuild->{pkgver} to $pkgver";
|
||||||
|
$apkbuild->{pkgrel}=0;
|
||||||
|
}
|
||||||
|
my $data = write_apkbuild($distdata, $apkbuild);
|
||||||
|
|
||||||
prepare_tree;
|
prepare_tree;
|
||||||
get_deps($data);
|
get_deps($data);
|
||||||
} when ('upgrade') {
|
} when ('upgrade') {
|
||||||
my $apkbuild = read_apkbuild;
|
my $apkbuild = read_apkbuild;
|
||||||
|
|
||||||
|
if (! defined $apkbuild->{_pkgreal}) {
|
||||||
|
$apkbuild->{_pkgreal} = find_package_name($apkbuild);
|
||||||
|
}
|
||||||
|
|
||||||
my $distdata = get_data($apkbuild->{_pkgreal});
|
my $distdata = get_data($apkbuild->{_pkgreal});
|
||||||
|
|
||||||
my $pkgver = $distdata->{info}{version};
|
my $pkgver = $distdata->{info}{version};
|
||||||
|
@ -234,10 +304,15 @@ given ($ARGV[0]) {
|
||||||
}
|
}
|
||||||
} when ('check') {
|
} when ('check') {
|
||||||
my $apkbuild = read_apkbuild;
|
my $apkbuild = read_apkbuild;
|
||||||
|
|
||||||
|
if (! defined $apkbuild->{_pkgreal}) {
|
||||||
|
$apkbuild->{_pkgreal} = find_package_name($apkbuild);
|
||||||
|
}
|
||||||
my $distdata = get_data($apkbuild->{_pkgreal});
|
my $distdata = get_data($apkbuild->{_pkgreal});
|
||||||
|
|
||||||
my $pkgver = $distdata->{info}{version};
|
my $pkgver = $distdata->{info}{version};
|
||||||
|
|
||||||
|
|
||||||
say "$apkbuild->{pkgname}: Latest version: $pkgver Packaged version: $apkbuild->{pkgver}";
|
say "$apkbuild->{pkgname}: Latest version: $pkgver Packaged version: $apkbuild->{pkgver}";
|
||||||
if ($pkgver ne $apkbuild->{pkgver}) {
|
if ($pkgver ne $apkbuild->{pkgver}) {
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
Loading…
Reference in New Issue