apkbuild-pypi.in: fix bugs, upgrade for python3 only and add to make

This commit is contained in:
Timothy Legge 2019-08-04 01:28:00 +00:00 committed by Natanael Copa
parent 0d4bb95046
commit 6310405af8
2 changed files with 33 additions and 21 deletions

View File

@ -9,7 +9,7 @@ datadir ?= $(prefix)/share/$(PACKAGE)
mandir ?= $(prefix)/share/man mandir ?= $(prefix)/share/man
SCRIPTS := abuild abuild-keygen abuild-sign newapkbuild \ SCRIPTS := abuild abuild-keygen abuild-sign newapkbuild \
abump apkgrel buildlab apkbuild-cpan checkapk \ abump apkgrel buildlab apkbuild-cpan apkbuild-pypi checkapk \
apkbuild-gem-resolver apkbuild-gem-resolver
USR_BIN_FILES := $(SCRIPTS) abuild-tar abuild-gzsplit abuild-sudo abuild-fetch abuild-rmtemp USR_BIN_FILES := $(SCRIPTS) abuild-tar abuild-gzsplit abuild-sudo abuild-fetch abuild-rmtemp
MAN_1_PAGES := newapkbuild.1 MAN_1_PAGES := newapkbuild.1

View File

@ -13,36 +13,40 @@ my %pkgmap = ();
my %licenses = (); my %licenses = ();
my $template = <<'EOF'; my $template = <<'EOF';
# Contributor: [% contributor %] [% authors %]
# Maintainer: [% maintainer %]
pkgname=[% pkgname %] pkgname=[% pkgname %]
_pkgreal=[% pkgreal %] _pkgreal=[% pkgreal %]
pkgver=[% pkgver %] pkgver=[% pkgver %]
pkgrel=0 pkgrel=0
pkgdesc=[% pkgdesc %] pkgdesc="[% pkgdesc %]"
url="http://packages.python.org/pypi/[% pkgreal %]" url="http://packages.python.org/pypi/[% pkgreal %]"
arch="noarch" arch="noarch"
license="PSF" license="[% license %]"
pydepends="" pydepends=""
pymakedepends="" pymakedepends=""
depends="python $pydepends" depends="python3 $pydepends"
makedepends="python-dev $pymakedepends" checkdepends="python3-dev"
subpackages="$pkgname-doc" makedepends="py3-setuptools $pymakedepends"
subpackages=""
source="[% source %]" source="[% source %]"
builddir="$srcdir/$_pkgreal-$pkgver" builddir="$srcdir/$_pkgreal-$pkgver"
build() { build() {
cd "$builddir" python3 setup.py build
python setup.py build
} }
package() { package() {
cd "$builddir" PYTHONPATH=$pkgdir`python3 -c "import site; print(site.getsitepackages()[0])"` \
python setup.py install \ python3 setup.py install \
--prefix=/usr \ --prefix=/usr \
--root="$pkgdir" \ --root="$pkgdir" \
--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();
@ -60,19 +64,22 @@ sub read_file {
sub read_assignments_from_file { sub read_assignments_from_file {
my ($filename) = @_; my ($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 %temp = (%sline, %mline); my $authors = join("\n", $text =~ /^# Contributor: .*$/mg, $text =~ /^# Maintainer: .*$/mg);
$hash{'authors'} = $authors if length($authors) > 1;
return \%temp; return \%hash;
} }
sub map_pypi_to_apk { sub map_pypi_to_apk {
my ($pypi) = @_; my ($pypi) = @_;
return $pkgmap{$pypi} unless !exists($pkgmap{$pypi}); return $pkgmap{$pypi} unless !exists($pkgmap{$pypi});
return 'py-'.lc($pypi); return 'py3-'.lc($pypi);
} }
sub map_license { sub map_license {
@ -97,15 +104,16 @@ sub read_apkbuild {
} }
sub write_apkbuild { sub write_apkbuild {
my ($distdata) = @_; my ($distdata, $authors) = @_;
my %repl = ( my %repl = (
packager => $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},
source => get_source($distdata), source => get_source($distdata),
license => map_license($distdata->{info}{license}), license => map_license($distdata->{info}{license}),
pkgdesc => $distdata->{info}{summary},
); );
$template =~ s/\[% (.*?) %\]/$repl{$1}/g; $template =~ s/\[% (.*?) %\]/$repl{$1}/g;
@ -124,7 +132,7 @@ sub prepare_tree {
sub get_data { sub get_data {
my ($package) = @_; my ($package) = @_;
my $response = $ua->get("http://pypi.python.org/pypi/$package/json"); my $response = $ua->get("https://pypi.python.org/pypi/$package/json");
$response->is_success or die $response->status_line; $response->is_success or die $response->status_line;
my $distdata = $json->decode($response->decoded_content); my $distdata = $json->decode($response->decoded_content);
@ -135,7 +143,7 @@ sub get_deps {
my ($data) = @_; my ($data) = @_;
chdir "src/$data->{pkgreal}-$data->{pkgver}"; chdir "src/$data->{pkgreal}-$data->{pkgver}";
my $reqs = `python ./setup.py --requires`; my $reqs = `python3 ./setup.py --requires`;
my @reqs = split /\n/, $reqs; my @reqs = split /\n/, $reqs;
@ -162,6 +170,9 @@ sub get_deps {
my $abuild_conf = read_assignments_from_file('/etc/abuild.conf'); my $abuild_conf = read_assignments_from_file('/etc/abuild.conf');
$packager = $abuild_conf->{PACKAGER} if $abuild_conf->{PACKAGER}; $packager = $abuild_conf->{PACKAGER} if $abuild_conf->{PACKAGER};
my $user_abuild_conf = read_assignments_from_file($ENV{"HOME"} . "/.abuild/abuild.conf");
$packager = $user_abuild_conf->{PACKAGER} if $user_abuild_conf->{PACKAGER};
sub usage { sub usage {
say <<'EOF'; say <<'EOF';
Usage: apkbuild-pypi [create <package> | check | recreate | upgrade | update] Usage: apkbuild-pypi [create <package> | check | recreate | upgrade | update]
@ -188,16 +199,17 @@ given ($ARGV[0]) {
mkdir $apkname; mkdir $apkname;
chdir $apkname; chdir $apkname;
my $data = write_apkbuild($distdata); my $data = write_apkbuild($distdata, undef);
prepare_tree; prepare_tree;
get_deps($data); get_deps($data);
} when ('recreate') { } when ('recreate') {
my $apkbuild = read_apkbuild; my $apkbuild = read_apkbuild;
my $distdata = get_data($apkbuild->{_pkgreal}); my $distdata = get_data($apkbuild->{_pkgreal});
my $data = write_apkbuild($distdata, $apkbuild->{authors});
prepare_tree; prepare_tree;
get_deps; get_deps($data);
} when ('upgrade') { } when ('upgrade') {
my $apkbuild = read_apkbuild; my $apkbuild = read_apkbuild;
my $distdata = get_data($apkbuild->{_pkgreal}); my $distdata = get_data($apkbuild->{_pkgreal});