You are not logged in.
Hello everyone,
as I am pretty new to PKGBUILD and python package in general, I would like to get some feedbacks before I try to push my PKGBUILD. The current AUR version of python-julia is outdated and seems to be broken. Following is my attempt
# Maintainer: SchaengJuan
# Contributor: j605
_name="julia"
pkgname="python-${_name}"
pkgver=0.6.2
pkgrel=1
pkgdesc="python interface to julia"
arch=('any')
url="https://github.com/JuliaPy/pyjulia"
license=('MIT')
depends=('python' 'julia-bin')
checkdepends=(python-tox)
makedepends=('python-pypandoc' 'pandoc' 'python-setuptools')
source=("$pkgname-$pkgver.tar.gz::https://github.com/JuliaPy/pyjulia/archive/v$pkgver.tar.gz")
sha256sums=('ca2291bd5560535215f544ec44825a6435462a8c55820c253555b43648bc098d')
build() {
cd "pyjulia-$pkgver"
python setup.py build
}
check() {
cd "pyjulia-$pkgver"
# install PyCall is necessary to pass the test; change the python env might not be necessary
julia -e 'using Pkg; ENV["PYTHON"]="/usr/bin/python"; Pkg.add("PyCall")'
tox
}
package() {
cd "pyjulia-$pkgver"
python setup.py install --root="$pkgdir" --prefix=/usr -O1 --skip-build
install -Dm 644 LICENSE.md "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.md"
}
Other than changing the package version and checksum and add python-setuptools as dependency, I added
julia -e 'using Pkg; ENV["PYTHON"]="/usr/bin/python"; Pkg.add("PyCall")'
. Otherwise, the test will not be passed with the following error
PyCall is not installed or built. Run the following code in Python REPL:
>>> import julia
>>> julia.install()
See:
https://pyjulia.readthedocs.io/en/latest/installation.html
Exit: PyCall not built
!!!!!!!!!!!!!!!!!!! _pytest.outcomes.Exit: PyCall not built !!!!!!!!!!!!!!!!!!!!
Installing the PyCall is just a quick workaround and as a result I need to put julia-bin as a dependence as well. Setting the python path to the system python might be unnecessary, but without it there might be some problems if one has used python-julia in some virtualenv.
So basically, I am not sure about if adding the julia commands is reasonable in the PKGBUILD. Any thoughts?
Last edited by SchaengJuan (2024-01-05 21:36:34)
Offline
Either add python-pycall to the AUR or skip the tests. You're missing the other test requirements as well.
Upstream installs PyCall via their own CI script. I neither recommend doing it that way nor the way you attempted. That should only be run in a chroot or CI.
I don't know where PyPandoc and Pandoc are coming from, they're not used at all.
Why are you using julia-bin from the AUR instead of julia in the extra repo?
Something like this:
pkgname=python-julia
_name=pyjulia
pkgver=0.6.2
pkgrel=1
pkgdesc="Python interface to julia"
arch=('any')
url="https://github.com/JuliaPy/pyjulia"
license=('MIT')
depends=('julia' 'python')
makedepends=('python-build' 'python-installer' 'python-setuptools' 'python-wheel')
checkdepends=('ipython' 'python-mock' 'python-numpy' 'python-pycall' 'python-pytest-cov' 'python-tox')
source=("$_name-$pkgver.tar.gz::https://github.com/JuliaPy/pyjulia/archive/v$pkgver.tar.gz")
sha256sums=('ca2291bd5560535215f544ec44825a6435462a8c55820c253555b43648bc098d')
build() {
cd "$_name-$pkgver"
python -m build --wheel --no-isolation
}
check() {
cd "$_name-$pkgver"
python -m tox -- --verbose --cov=julia
}
package() {
cd "$_name-$pkgver"
python -m installer --destdir="$pkgdir" dist/*.whl
install -Dm644 LICENSE.md -t "$pkgdir/usr/share/licenses/$pkgname/"
}
Last edited by yochananmarqos (2024-01-06 17:29:17)
Offline
Thanks for the reply Your make and check dependencies make more sense. However, I tried my PKGBUILD with clean chroot without problems due to these packages. I thought it is what clean chroot is for, prevent missing deps?
Either add python-pycall to the AUR or skip the tests. You're missing the other test requirements as well.
PyCall.jl is a julia package and julia packages are usually controlled by julia's package manager. There is no python-pycall (well this pycall is something else). Can you elaborate on "missing other test requirements"?
Upstream installs PyCall via their own CI script. I neither recommend doing it that way nor the way you attempted. That should only be run in a chroot or CI.
Why are these not recommended? After all, PyCall.jl must be installed for python-julia to work properly, see the official installation guide.
I don't know where PyPandoc and Pandoc are coming from, they're not used at all.
You are correct, these are left by the current maintainer.
Why are you using julia-bin from the AUR instead of julia in the extra repo?
julia is compiled against system libs and julia-bin is against patched: see the wiki page of julia. Basically, in order to make julia "usable", it is probably a good idea to use julia-bin.
Last edited by SchaengJuan (2024-01-07 20:33:41)
Offline
There's no way the tests passed without the required dependencies. See the upstream test requirements.
Last edited by yochananmarqos (2024-01-07 21:01:47)
Offline
I think you may have seen my reply before I corrected it. See my most recent edit.
Offline
Yes, absolutely. For whatever reason the setup.py doesn't say that some deps are misisng. This leads to another question, in the repo, there is no toml file for build and installer. Why does your PKGBUILD still work?
Also do you still think using the CI script or julia to install PyCall is ok in this case? Thanks
Offline