zfs
zfs copied to clipboard
OpenZFS 2.2.4 build fail on Debian 12
System information
Type | Version/Name |
---|---|
Distribution Name | Debian |
Distribution Version | 12 |
Kernel Version | 6.1.0-20-amd64 |
Architecture | x86_64 |
OpenZFS Version | 2.2.4 |
Describe the problem you're observing
I tried to compile version 2.2.4 exactly the same as versions 2.2.x before it
sh autogen.sh
./configure
make -j$(nproc) deb-utils
In the end I get the error
RPM build errors:
File not found: /tmp/zfs-build-root-A9VcYovo/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/libzfs_core/*
File not found: /tmp/zfs-build-root-A9VcYovo/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/pyzfs*
make[1]: *** [Makefile:14373: rpm-common] Error 1
make[1]: Leaving directory '/usr/src/zfs/2.2.4/6.1.0-20/zfs-2.2.4'
make: *** [Makefile:14327: rpm-utils-initramfs] Error 2
At the same time, in the directory /tmp/zfs-build-root-A9VcYovo/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/ there is python3.11, but not python3 as indicated in the error
# ls -la /tmp/zfs-build-root-A9VcYovo/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3.11/site-packages/
total 0
drwxr-xr-x 4 root root 80 May 3 06:39 .
drwxr-xr-x 3 root root 60 May 3 06:39 ..
drwxr-xr-x 5 root root 240 May 3 06:39 libzfs_core
drwxr-xr-x 2 root root 160 May 3 06:39 pyzfs-2.2.4-py3.11.egg-info
Versions 2.2.1, 2.2.2, 2.2.3 - compiled previously without this problem.
All these packages are installed:
build-essential autoconf automake libtool gawk alien fakeroot dkms libblkid-dev uuid-dev libudev-dev libssl-dev zlib1g-dev libaio-dev libattr1-dev libelf-dev linux-headers-generic python3 python3-dev python3-setuptools python3-cffi libffi-dev python3-packaging git libcurl4-openssl-dev debhelper-compat dh-python po-debconf python3-all-dev python3-sphinx parallel
Describe how to reproduce the problem
Build OpenZFS 2.2.4 on Debian 12 from scratch
Include any warning/errors/backtraces from the system logs
Confirmed. Quick fix: revert 71216b91d281e7e58f5e29ca4d4553945e080fe9 (#16126 #16129).
(My Python skills are nonexistent, so I'm not much use on a fix).
I have the same output as above. Note also dist-packages
vs site-packages
.
Here the Python bits of config.log
, if they're useful:
configure:18082: checking for python version
configure:18090: result: 3.11
configure:18095: checking for python platform
configure:18103: result: linux
configure:18164: checking for GNU default python prefix
configure:18166: result: ${prefix}
configure:18232: checking for GNU default python exec_prefix
configure:18234: result: ${exec_prefix}
configure:18265: checking for python script directory (pythondir)
configure:18307: result: ${PYTHON_PREFIX}/lib/python3.11/site-packages
configure:18315: checking for python extension module directory (pyexecdir)
configure:18357: result: ${PYTHON_EXEC_PREFIX}/lib/python3.11/site-packages
configure:18479: checking for python3 module: packaging
configure:18484: result: yes
configure:18563: checking for python3.11
configure:18598: result: /usr/bin/python3
configure:18620: checking for a version of Python >= '2.1.0'
configure:18660: result: yes
configure:18673: checking for a version of Python >= '3.6.0'
configure:18700: result: yes
configure:18728: checking for the sysconfig Python package
configure:18732: result: yes
configure:18766: checking for Python include path
configure:18791: result: -I/usr/include/python3.11
configure:18798: checking for Python library path
configure:18885: result: -L/usr/lib/x86_64-linux-gnu -lpython3.11
configure:18892: checking for Python site-packages path
configure:18916: result: /usr/lib/python3.11/site-packages
configure:18923: checking for Python platform specific site-packages path
configure:18947: result: /usr/lib/python3.11/site-packages
configure:18954: checking python extra libraries
configure:18961: result: -ldl -lm
configure:18968: checking python extra linking flags
configure:18977: result: -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
configure:18984: checking consistency of all components of python development environment
configure:19012: gcc -o conftest -O2 -g -I/usr/include/python3.11 -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions conftest.c -L/usr/lib/x86_64-linux-gnu -lpython3.11 -ldl -lm >&5
configure:19012: $? = 0
configure:19031: result: yes
configure:19610: checking for python3 module: setuptools
configure:19615: result: yes
configure:19648: checking for python3 module: cffi
configure:19653: result: yes
Even Debian sid (unstable) doesn't use python 3.12. Only Debian experimental contains python 3.12.
At the moment I'm just using
./configure --disable-pyzfs
Same issue for me on Ubuntu 22.04.04 which has python 3.10.12
I bet I even know why.
IIRC Debian does evil nonsense to some but not all of the override mechanisms for where packages go, so after 71216b91d281e7e58f5e29ca4d4553945e080fe9, we probably hit one of the ones where it doesn't override it, and things end up in site-packages
not dist-packages
. (See also).
This explains the insanity. So basically, Debian monkeypatches only distutils for this, and not relying on distutils thereby produces unexpected results.
We just ran into this internally, and @rincebrain's analysis is correct. The proper fix here probably involves tweaking ax_python_devel.m4 to use a scheme that puts the file in the right place on debian (the 'posix_local' or maybe 'deb_system' scheme appears to work), and then to have zfs.spec.in use the $PYTHON_SITE_PKG variable to define where it expects the file to end up. That may require some more tweaking, though, because the installation process uses the --prefix
flag to setup.py to tweak the install location further.
https://gist.github.com/pcd1193182/f177c2899219ad874fa45e61a6cf3d3b Might be a starting point for a fix?
https://gist.github.com/pcd1193182/f177c2899219ad874fa45e61a6cf3d3b Might be a starting point for a fix?
@pcd1193182: Applying the above patch as-is inside an Ubuntu Focal/20.04 build container (followed by ./autogen.sh; ./configure; make deb
) changes the resulting errors from
RPM build errors:
File not found: /tmp/zfs-build-root-q0ionx4M/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/libzfs_core/*
File not found: /tmp/zfs-build-root-q0ionx4M/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/pyzfs*
make[1]: *** [Makefile:14374: rpm-common] Error 1
make[1]: Leaving directory '/tmp/zfs_focal'
make: *** [Makefile:14328: rpm-utils-initramfs] Error 2
to
RPM build errors:
File not found: /tmp/zfs-build-root-d6NFk0pc/BUILDROOT/zfs-2.2.4-1.x86_64/usr/local/lib/python3.8/site-packages/libzfs_core/*
File not found: /tmp/zfs-build-root-d6NFk0pc/BUILDROOT/zfs-2.2.4-1.x86_64/usr/local/lib/python3.8/site-packages/pyzfs*
make[1]: *** [Makefile:14374: rpm-common] Error 1
make[1]: Leaving directory '/tmp/zfs_focal'
make: *** [Makefile:14328: rpm-utils-initramfs] Error 2
Are you sure this is supposed to read /usr/local/
? python3-pyzfs
v2.2.3-1 previously used /usr/
(which is what I'd expect).
I have a simple change which makes it successfully build (though it uses site-packages not dist-packages), which I'll post when home.
I personally am not incredibly concerned about sticking to dist-packages for Debian when the only way we could know that's correct from the current API surfaces is, afaict, "hardcode it", but others may disagree.
On Mon, May 6, 2024, 12:09 PM Markus Ueberall @.***> wrote:
https://gist.github.com/pcd1193182/f177c2899219ad874fa45e61a6cf3d3b Might be a starting point for a fix?
@pcd1193182 https://github.com/pcd1193182: Applying the above patch as-is inside an Ubuntu Focal/20.04 build container (followed by ./autogen.sh; ./configure; make deb) changes the resulting errors from
RPM build errors: File not found: /tmp/zfs-build-root-q0ionx4M/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/libzfs_core/* File not found: /tmp/zfs-build-root-q0ionx4M/BUILDROOT/zfs-2.2.4-1.x86_64/usr/lib/python3/dist-packages/pyzfs* make[1]: *** [Makefile:14374: rpm-common] Error 1 make[1]: Leaving directory '/tmp/zfs_focal' make: *** [Makefile:14328: rpm-utils-initramfs] Error 2
to
RPM build errors: File not found: /tmp/zfs-build-root-d6NFk0pc/BUILDROOT/zfs-2.2.4-1.x86_64/usr/local/lib/python3.8/site-packages/libzfs_core/* File not found: /tmp/zfs-build-root-d6NFk0pc/BUILDROOT/zfs-2.2.4-1.x86_64/usr/local/lib/python3.8/site-packages/pyzfs* make[1]: *** [Makefile:14374: rpm-common] Error 1 make[1]: Leaving directory '/tmp/zfs_focal' make: *** [Makefile:14328: rpm-utils-initramfs] Error 2
Are you sure this is supposed to read /usr/local/? python3-pyzfs v2.2.3-1 previously used /usr/ (which is what I'd expect).
— Reply to this email directly, view it on GitHub https://github.com/openzfs/zfs/issues/16155#issuecomment-2096408383, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABUI7PMFT2RAIFC7XX3IJTZA6TLPAVCNFSM6AAAAABHE2KKNSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJWGQYDQMZYGM . You are receiving this because you were mentioned.Message ID: @.***>
the same error on ubuntu 24.04 ,python 3.12
Edit: looks like it's fixed in mainline 24.01 now
Just tried to build 2.2.5 on debian bookworm
and still get this error.
Had to use the workaround:
./configure --disable-pyzfs --enable-systemd