[arch-general] PyPI2PKGBUILD: Automated PKGBUILD creation for PyPI packages
I'd like to present PyPI2PKGBUILD (https://github.com/anntzer/pypi2pkgbuild), a new tool for automated PKGBUILD creation for PyPI packages. It is similar in spirit to the venerable pip2arch ( https://github.com/bluepeppers/pip2arch), but with a few improvements: - Python dependencies are found by installation in a temporary virtualenv (as far as I know, this is the simplest way to handle environment markers correctly (https://www.python.org/dev/peps/pep-0496/)); moreover, PyPI2PKGBUILD calls itself recursively for dependencies that are not available as official packages (i.e., you can call `pypi2pkgbuild.py $pkgname` and get all the necessary packages created and built for you). Many packages do not correctly declare `cython` and `numpy` as dependencies so special handling is provided for them. - Non-python (binary) dependencies that are dynamically linked are resolved via `namcap` and `pkgfile`, and added to the `depends` array. Say, for example, that you want to create a package for `pyfftw`, which needs to link against `fftw`, which is provided by the official `fftw` package. You can run `pacman -S --asdeps fftw`, then run `pypi2pkgbuild.py pyfftw`; the PKGBUILD will correctly declare `fftw` as `depends`. - Missing license files are retrieved from Github/Bitbucket if possible. The general intent is to 1) allow one to install packages that are not available on the Arch (official or AUR) repos (I don't think the proliferation of "trivial" PKGUBILDs that simply do `python setup.py build` / `python setup.py install --root="$pkgdir"` on the AUR is a particularly good thing) and 2) allow one to update packages for which a new version is present on PyPI but not on the arch repos yet (by default, the packages are built with a pkgrel of 00, so that they'd be upgraded to official/AUR packages when those become available). Antony PS: Original announcement on the forum at https://bbs.archlinux.org/viewtopic.php?id=213740.
participants (1)
-
Antony Lee