APKBUILD examples:Python: Difference between revisions
(Update examples and add example for py2/py3 package) |
(Add depends and arch to the snippet) |
||
| Line 23: | Line 23: | ||
<pre> | <pre> | ||
pkgname="py-foo" | pkgname="py-foo" | ||
_pkgname=" | _pkgname="PyFoo" | ||
... | ... | ||
arch="noarch" | |||
depends="" | depends="" | ||
makedepends="python2-dev python3-dev" | makedepends="python2-dev python3-dev" | ||
| Line 42: | Line 43: | ||
_py2() { | _py2() { | ||
replaces="$pkgname" | replaces="$pkgname" | ||
depends="py2-bar" | |||
_py python2 | _py python2 | ||
} | } | ||
_py3() { | _py3() { | ||
depends="py3-bar" | |||
_py python3 | _py python3 | ||
} | } | ||
| Line 52: | Line 55: | ||
local python="$1" | local python="$1" | ||
pkgdesc="$pkgdesc (for $python)" | pkgdesc="$pkgdesc (for $python)" | ||
depends="$depends $python" | depends="$depends $python" | ||
install_if="$pkgname=$pkgver-r$pkgrel $python" | install_if="$pkgname=$pkgver-r$pkgrel $python" | ||
| Line 60: | Line 62: | ||
} | } | ||
</pre> | </pre> | ||
* If the package contains some compiled code (native extensions), then add <tt>arch="all"</tt> into the <tt>_py()</tt> function (between pkgdesc and depends). | |||
* If the package doesn’t have any dependencies, then omit <tt>depends=""</tt> in the <tt>_py2()</tt> and <tt>_py3()</tt> functions. | |||
Source located at [http://pypi.python.org PyPi] | Source located at [http://pypi.python.org PyPi] | ||
Revision as of 09:23, 1 September 2016
A lot of Python packages use the setuptools or distutils framework. This mean that the build() and the package() section looks a bit different compared to an application which uses make.
pkgname="py3-foo"
...
depends="python3"
makedepends="python3-dev"
...
build() {
cd "$builddir"
python3 setup.py build
}
package() {
cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
If Python package support both Python 2 and Python 3, then the Alpine package should provide both variants as py2- and py3- subpackages.
pkgname="py-foo"
_pkgname="PyFoo"
...
arch="noarch"
depends=""
makedepends="python2-dev python3-dev"
subpackages="py2-${pkgname#py-}:_py2 py3-${pkgname#py-}:_py3"
...
build() {
cd "$builddir"
python2 setup.py build || return 1
python3 setup.py build || return 1
}
package() {
mkdir -p "$pkgdir"
}
_py2() {
replaces="$pkgname"
depends="py2-bar"
_py python2
}
_py3() {
depends="py3-bar"
_py python3
}
_py() {
local python="$1"
pkgdesc="$pkgdesc (for $python)"
depends="$depends $python"
install_if="$pkgname=$pkgver-r$pkgrel $python"
cd "$builddir"
$python setup.py install --prefix=/usr --root="$subpkgdir"
}
- If the package contains some compiled code (native extensions), then add arch="all" into the _py() function (between pkgdesc and depends).
- If the package doesn’t have any dependencies, then omit depends="" in the _py2() and _py3() functions.
Source located at PyPi
_pkgname=ShortName
...
source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"