JuliaPy / JuliaPy/PyCall.jl

`] build PyCall` does not work on NixOS

Aperta
#952 10 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
1.5k
Fork
186
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I'm running into some unexpected hiccups building PyCall.jl on NixOS. I have successfully used PyCall.jl on NixOS in the past, so I'm a bit stumped as to why it's borked now. I get the following failure:
```
(@v1.7) pkg> build PyCall
Building Conda ─→ `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/6cdc8832ba11c7695f494c9d9a1c31e90959ce0f/build.log`
Building PyCall → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/71fd4022ecd0c6d20180e23ff1b3e05a143959c2/build.log`
ERROR: Error building `PyCall`:
PREFIX=/home/skainswo/.julia/conda/3
Unpacking payload ...
cannot execute /home/skainswo/.julia/conda/3/conda.exe: NIX_LD or NIX_LD_x86_64-linux is not set
cannot execute /home/skainswo/.julia/conda/3/conda.exe: NIX_LD or NIX_LD_x86_64-linux is not set
┌ Info: No system-wide Python was found; got the following error:
│ Base.IOError("could not spawn setenv(`/nix/store/nki9ywqzbvz68vr75kn2r7g1q84f5agy-python3-3.9.6/bin/python3 -c \"import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'))\"`,[\"CXX=g++\", \"PATH=/nix/store/79zvzq15mga6bgk5phnmw0fd2pnpim9v-bash-interactive-5.1-p8/bin:/nix/store/f1n2zyq47sjn0qfhxvrdawyzlgk4sgax-patchelf-0.13/bin:/nix/store/7wn7xx8faqirzkvh5iwj26b024jzg09p-gcc-wrapper-10.3.0/bin:/nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/bin:/nix/store/dhj23pp1sld19shjslkzw3y9pr3qpi61-glibc-2.33-59-bin/bin:/nix/store/abc8hz0v47jzsf048j1qx7m94bxfhpl7-coreutils-9.0/bin:/nix/store/gxd0gvw88wyl9bqjc03ypm5zs7qbaf74-binutils-wrapper-2.35.2/bin:/nix/store/8d30avp4xj1w8krq7zax1mlxgs28663y-binutils-2.35.2/bin:/nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/bin:/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/bin:/nix/store/abc8hz0v47jzsf048j1qx7m94bxfhpl7-coreutils-9.0/bin:/nix/store/r87rxnys39173q5nrlqq46vpa2203rmk-findutils-4.8.0/bin:/nix/store/xgqrjhz9sx8bllvayz18sql2dfd89q4g-diffutils-3.8/bin:/nix/store/aw3vgxn4fdrjqgmc94fr582hjhr2z3p3-gnused-4.8/bin:/nix/store/rvdb7057bmg3rasbqq8lzl10dffy3p31-gnugrep-3.7/bin:/nix/store/3qmgmnz3msrk0cf0qgcyja0wzyfhpxc2-gawk-5.1.1/bin:/nix/store/xc1dbg8mc8hd6bq7zizxf5nyrljk8az0-gnutar-1.34/bin:/nix/store/1wads5y31dky89hxnn5zmiri3c72kdpc-gzip-1.11/bin:/nix/store/l8d7zz3ninmgg71738q485anfjh5yd6q-bzip2-1.0.6.0.2-bin/bin:/nix/store/ba439awj33pw4l4bj95k4dy58nx69b8v-gnumake-4.3/bin:/nix/store/iqprjr5k5385bhf1dzj07zwd5p43py1n-bash-5.1-p12/bin:/nix/store/22avws4xw0chqniqym3q0w4nhdcr0hh2-patch-2.7.6/bin:/nix/store/aq0v28n1ka8m1ayg6wrpbjy00bb7fj3k-xz-5.2.5-bin/bin\", \"HOST_PATH=/nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/bin:/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/bin:/nix/store/abc8hz0v47jzsf048j1qx7m94bxfhpl7-coreutils-9.0/bin:/nix/store/r87rxnys39173q5nrlqq46vpa2203rmk-findutils-4.8.0/bin:/nix/store/xgqrjhz9sx8bllvayz18sql2dfd89q4g-diffutils-3.8/bin:/nix/store/aw3vgxn4fdrjqgmc94fr582hjhr2z3p3-gnused-4.8/bin:/nix/store/rvdb7057bmg3rasbqq8lzl10dffy3p31-gnugrep-3.7/bin:/nix/store/3qmgmnz3msrk0cf0qgcyja0wzyfhpxc2-gawk-5.1.1/bin:/nix/store/xc1dbg8mc8hd6bq7zizxf5nyrljk8az0-gnutar-1.34/bin:/nix/store/1wads5y31dky89hxnn5zmiri3c72kdpc-gzip-1.11/bin:/nix/store/l8d7zz3ninmgg71738q485anfjh5yd6q-bzip2-1.0.6.0.2-bin/bin:/nix/store/ba439awj33pw4l4bj95k4dy58nx69b8v-gnumake-4.3/bin:/nix/store/iqprjr5k5385bhf1dzj07zwd5p43py1n-bash-5.1-p12/bin:/nix/store/22avws4xw0chqniqym3q0w4nhdcr0hh2-patch-2.7.6/bin:/nix/store/aq0v28n1ka8m1ayg6wrpbjy00bb7fj3k-xz-5.2.5-bin/bin\", \"doInstallCheck=\", \"CC=gcc\", \"_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__linux_x86_64-linux-gnu\", \"outputs=out\", \"TMP=/run/user/1000\", \"OBJCOPY=objcopy\", \"nobuildPhase=echo\\necho \\\"This derivation is not meant to be built, aborting\\\";\\necho\\nexit 1\\n\", \"SSL_CERT_FILE=/nix/store/ggqkxkqjn8hf7h1kgv5qz8lwas9i5z6k-nss-cacert-3.71/etc/ssl/certs/ca-bundle.crt\", \"USER=skainswo\", \"NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1\", \"SYSTEM_CERTIFICATE_PATH=/nix/store/ggqkxkqjn8hf7h1kgv5qz8lwas9i5z6k-nss-cacert-3.71/etc/ssl/certs/ca-bundle.crt\", \"depsBuildTargetPropagated=\", \"LD=ld\", \"PYTHONHASHSEED=0\", \"NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu=1\", \"IN_NIX_SHELL=pure\", \"NM=nm\", \"STRIP=strip\", \"OBJDUMP=objdump\", \"XDG_DATA_DIRS=/nix/store/f1n2zyq47sjn0qfhxvrdawyzlgk4sgax-patchelf-0.13/share\", \"nativeBuildInputs=\", \"SHELL=/nix/store/79zvzq15mga6bgk5phnmw0fd2pnpim9v-bash-interactive-5.1-p8/bin/bash\", \"system=x86_64-linux\", \"depsBuildBuild=\", \"name=nix-shell\", \"RANLIB=ranlib\", \"TMPDIR=/run/user/1000\", \"NIX_SSL_CERT_FILE=/nix/store/ggqkxkqjn8hf7h1kgv5qz8lwas9i5z6k-nss-cacert-3.71/etc/ssl/certs/ca-bundle.crt\", \"buildInputs=/nix/store/ggqkxkqjn8hf7h1kgv5qz8lwas9i5z6k-nss-cacert-3.71 /nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1 /nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9\", \"NIX_BUILD_TOP=/run/user/1000\", \"depsHostHostPropagated=\", \"depsTargetTargetPropagated=\", \"doCheck=\", \"depsBuildTarget=\", \"SOURCE_DATE_EPOCH=315532800\", \"STRINGS=strings\", \"HOME=/home/skainswo\", \"TERM=xterm-256color\", \"TEMP=/run/user/1000\", \"PYTHONIOENCODING=UTF-8\", \"PYTHONNOUSERSITE=1\", \"_PYTHON_HOST_PLATFORM=linux-x86_64\", \"NIX_CFLAGS_COMPILE= -frandom-seed=7q7jlhbyfg -isystem /nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/include -isystem /nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/include -isystem /nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/include -isystem /nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/include\", \"DETERMINISTIC_BUILD=1\", \"patches=\", \"READELF=readelf\", \"AS=as\", \"__ETC_PROFILE_SOURCED=1\", \"depsHostHost=\", \"TEMPDIR=/run/user/1000\", \"NIX_INDENT_MAKE=1\", \"strictDeps=\", \"shell=/nix/store/iqprjr5k5385bhf1dzj07zwd5p43py1n-bash-5.1-p12/bin/bash\", \"NIX_BINTOOLS=/nix/store/gxd0gvw88wyl9bqjc03ypm5zs7qbaf74-binutils-wrapper-2.35.2\", \"SIZE=size\", \"LOGNAME=skainswo\", \"SHLVL=2\", \"NIX_CC=/nix/store/7wn7xx8faqirzkvh5iwj26b024jzg09p-gcc-wrapper-10.3.0\", \"_=/nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/bin/julia\", \"PAGER=less\", \"configureFlags=\", \"depsTargetTarget=\", \"AR=ar\", \"NIX_ENFORCE_NO_NATIVE=1\", \"PWD=/home/skainswo/dev/research/julia/permuted_sgd\", \"NIX_STORE=/nix/store\", \"NIX_BUILD_CORES=2\", \"PYTHONPATH=/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/lib/python3.9/site-packages\", \"out=/nix/store/7q7jlhbyfgim8i3w055lihzwxqlidxh6-nix-shell\", \"builder=/nix/store/iqprjr5k5385bhf1dzj07zwd5p43py1n-bash-5.1-p12/bin/bash\", \"propagatedBuildInputs=\", \"depsBuildBuildPropagated=\", \"shellHook=\", \"phases=nobuildPhase\", \"CONFIG_SHELL=/nix/store/iqprjr5k5385bhf1dzj07zwd5p43py1n-bash-5.1-p12/bin/bash\", \"NIX_LDFLAGS=-rpath /nix/store/7q7jlhbyfgim8i3w055lihzwxqlidxh6-nix-shell/lib64 -rpath /nix/store/7q7jlhbyfgim8i3w055lihzwxqlidxh6-nix-shell/lib -L/nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/lib -L/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/lib -L/nix/store/qmlbjq46nhn1v08nnb23y2myrvra8hm7-julia-bin-1.7.1/lib -L/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/lib\", \"NIX_HARDENING_ENABLE=fortify stackprotector pic strictoverflow format relro bindnow\", \"JULIA_LOAD_PATH=@:/run/user/1000/jl_h44YES\", \"propagatedNativeBuildInputs=\", \"stdenv=/nix/store/lwcfw5vyjlzrs35k1hanv21j1q2s5c5w-stdenv-linux\", \"LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:\", \"OPENBLAS_MAIN_FREE=1\"]): no such file or directory (ENOENT)", -2)
└ using the Python distribution in the Conda package
[ Info: Downloading miniconda installer ...
[ Info: Installing miniconda ...
ERROR: LoadError: failed process: Process(`/home/skainswo/.julia/conda/3/installer.sh -b -f -p /home/skainswo/.julia/conda/3`, ProcessExited(1)) [1]

Stacktrace:
[1] pipeline_error
@ ./process.jl:531 [inlined]
[2] run(::Cmd; wait::Bool)
@ Base ./process.jl:446
[3] run
@ ./process.jl:444 [inlined]
[4] _install_conda(env::String, force::Bool)
@ Conda ~/.julia/packages/Conda/1403Y/src/Conda.jl:207
[5] _install_conda(env::String)
@ Conda ~/.julia/packages/Conda/1403Y/src/Conda.jl:193
[6] runconda(args::Cmd, env::String)
@ Conda ~/.julia/packages/Conda/1403Y/src/Conda.jl:128
[7] add(pkg::String, env::String; channel::String)
@ Conda ~/.julia/packages/Conda/1403Y/src/Conda.jl:223
[8] add (repeats 2 times)
@ ~/.julia/packages/Conda/1403Y/src/Conda.jl:222 [inlined]
[9] top-level scope
@ ~/.julia/packages/PyCall/L0fLP/deps/build.jl:79
[10] include(fname::String)
@ Base.MainInclude ./client.jl:451
[11] top-level scope
@ none:5
in expression starting at /home/skainswo/.julia/packages/PyCall/L0fLP/deps/build.jl:43
```
It appears to be hung up on some aspect of the conda installation. However, building Conda.jl works without any issues:
```
(@v1.7) pkg> build Conda
Building Conda → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/6cdc8832ba11c7695f494c9d9a1c31e90959ce0f/build.log`
(@v1.7) pkg>
```
A few things are weird to me about this situation:
* Why is PyCall.jl failing to build due to issues with Conda while building Conda.jl works just fine?
* `cannot execute /home/skainswo/.julia/conda/3/conda.exe: NIX_LD or NIX_LD_x86_64-linux is not set` suggests to me that Conda.jl is smart enough to use [nix-ld](https://github.com/Mic92/nix-ld) when it's available, but I haven't been able to find anything about this in the docs or in the sources for Conda.jl or PyCall.jl. Where is this warning coming from?
* The error suggests that it's trying and failing to run `/nix/store/nki9ywqzbvz68vr75kn2r7g1q84f5agy-python3-3.9.6/bin/python3 -c \"import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'))\"`, but this is very odd since I don't even have that version of python installed! I have python 3.9.9 with a different hash entirely! How is it hallucinating this python install that does not exist?

The main thing that has changed since the last time this worked for me is that I upgraded NixOS from 21.05 to 21.11.

Here's my shell.nix for reference:
```nix
let
# Last updated: 1/3/22. From status.nixos.org.
pkgs = import (fetchTarball ("https://github.com/NixOS/nixpkgs/archive/adf7f03d3bfceaba64788e1e846191025283b60d.tar.gz")) { };
in
pkgs.mkShell {
buildInputs = with pkgs; [
# See https://github.com/NixOS/nixpkgs/issues/66716. Necessary for julia to
# be able to download packages.
cacert

julia_17-bin

# Necessary for PyPlot.jl
python3
];
}
```
and here's the version of python that's actually available:
```
[nix-shell:~/dev/research/julia/permuted_sgd]$ which python
/nix/store/rppr9s436950i1dlzknbmz40m2xqqnxc-python3-3.9.9/bin/python
```
```
julia> versioninfo()
Julia Version 1.7.1
Commit ac5cc99908 (2021-12-22 19:35 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512)
```

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.