PlotPyStack / PlotPy

Curve and image plotting tools for Python/Qt applications
BSD 3-Clause "New" or "Revised" License
26 stars 2 forks source link

test_benchmarks.py Fatal Python error: Aborted #11

Closed yuzibo closed 2 months ago

yuzibo commented 3 months ago

Hi,

There is one ftbfs issue on Debian:

...
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_plotpy/build; python3.12 -m pytest 
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.1.2, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_plotpy/build
configfile: pyproject.toml
collected 253 items

plotpy/tests/benchmarks/test_benchmarks.py Fatal Python error: Aborted

Current thread 0x00007fc4fce9d040 (most recent call first):
  File "/usr/lib/python3/dist-packages/guidata/__init__.py", line 31 in qapplication
  File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_plotpy/build/plotpy/tests/benchmarks/test_benchmarks.py", line 133 in test_benchmarks
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 195 in pytest_pyfunc_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1779 in runtest
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 172 in pytest_runtest_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
...

The full log is here and I tested it on 2.3.2 failed also.

PierreRaybaut commented 3 months ago

Can't reproduce on all my test platforms (CentOS, Ubuntu, ...).

See here for example.

What would you recommend as the easiest way of reproducing this?

yuzibo commented 3 months ago

Thanks for your reply.

First I am not the maintainer of the package but just as a member of Debian Python Team to try to fix the ftbfs issue.

Because the original maintainer of the package did not create a repo for it, so I just create its' debian repo to debug the issue easily for us.:)

Before your deep debug on Debian build environment, I suspect the build dependences of plotpy that has issue.

For 2.2.0, the debian/control has the build dependences is below:

Build-Depends: debhelper-compat (= 13),
               dh-python,
               cython3,
               python3-all,
               python3-guidata,
               python3-numpy,
               python3-scipy,
               python3-qwt,
               python3-pytest,
               python3-all-dev,

Using the same B-D, the 2.3.2 will be failed with the same reason.

As I update the debian/control, now it will be hang without anything output.

I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_plotpy/build; python3.12 -m pytest
============================= test session starts ==============================
platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_plotpy/build
configfile: pyproject.toml
plugins: xvfb-3.0.0
collected 287 items

E: ABORT: Received INT signal (requesting cleanup and shutdown)
...
PierreRaybaut commented 3 months ago

Thanks for the additional details. Investigating this will require some time as we can't do it with any of out current platforms (we will have to create a Debian VM dedicated to this and try to reproduce the issue).

I'm adding this task to the to-do list with the highest priority.

PierreRaybaut commented 2 months ago

Hi @yuzibo ,

Could you please help me reproduce this issue?

I have created a VM based on the latest Debian Unstable ISO.

Here is what I've done. And it's working without any error....

# At this point, this is a fresh install of Debian Unstable
nano /etc/apt/sources.list  # to add `deb http://deb.debian.org/debian/ unstable main non-free-firmware`
sudo apt-get update
git clone https://github.com/PlotPyStack/PlotPy.git
cd PlotPy/
sudo apt-get install dh-python cython3 python3-all python3-guidata python3-numpy python3-scipy python3-qwt python3-pytest python3-all-dev
python3 setup.py build_ext --inplace
pytest
yuzibo commented 2 months ago

Hi @PierreRaybaut, thanks for your work here, appreciate it!

To reproduce this issue, we have to setup Debian packaging env, let me try simply to setup it.

On Debian unstable:

sudo apt install sbuild mmdebstrap

sudo sbuild-createchroot --debootstrap=mmdebstrap --arch=amd64 \
        --include=ca-certificates  \
        --make-sbuild-tarball=/srv/sid-amd64-sbuild.tgz \
        sid /tmp/chroots/sid-amd64-sbuild/ \
         http://deb.debian.org/debian/

Once got the log, the schroot was created successfully.

...
Next, copy the example sbuildrc file to the home directory of each user and
set the variables for your system:

cp /usr/share/doc/sbuild/examples/example.sbuildrc /home/vimer/.sbuildrc

Now try a build:

cd /path/to/source
sbuild-update -ud <distribution>
(or "sbuild-apt <distribution> apt-get -f install"
first if the chroot is broken)

sbuild -d <distribution> <package>_<version>

If target for 2.2.0, see #1071775, just

# first put deb-src URL into your `/etc/apt/sources.list` on VM host to get Debian source code
# deb-src http://deb.debian.org/debian/  sid main
apt source
apt source plotpy
 $: ls
plotpy-2.2.0  plotpy_2.2.0-3.debian.tar.xz  plotpy_2.2.0-3.dsc  plotpy_2.2.0.orig.tar.gz
cd plotpy-2.2.0
sudo sbuild -c sid-amd64-sbuild 

Then you should see the result was the same with #1071775.

If target for 2.3.2, please git clone my repo salsa first:

git clone https://salsa.debian.org/vimerbf-guest/plotpy
(add your pubkey into gitlab)

cd plotpy
git checkout upstream && git checkout master

 gbp buildpackage --git-tarball-dir=../ --git-upstream-tree=upstream --git-upstream-branch=upstream  --git-builder=sbuild  -c sid-amd64-sbuild --no-clean-source --source  --git-debian-branch=debian/main --git-export-dir=../build-area/ --git-ignore-new  --verbose

you will have to install some gbp something here.

If debug the package env during packaging, you can:

 sudo schroot -c sid-amd64-sbuild
apt update
apt install devscripts 
 mk-build-deps --install (to install depences from debian/control file)
dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot (to build the package again)

Sorry, maybe there are too many Debian stuff for you. Thank you very much for this again. Please let me know if any issue and next two days I should have some time on this.

eamanu commented 2 months ago

Hi,

Seems to be that iterator is deprecated. Similar issue here https://github.com/iree-org/iree/commit/88b1d4dbe2f4d9804d0782140af659ef5dda4ad2

PierreRaybaut commented 2 months ago

Hi,

Seems to be that iterator is deprecated. Similar issue here iree-org/iree@88b1d4d

Thanks for the feedback. (But I'll try and reproduce the issue before going further.)

PierreRaybaut commented 2 months ago

Hi @PierreRaybaut, thanks for your work here, appreciate it!

To reproduce this issue, we have to setup Debian packaging env, let me try simply to setup it.

On Debian unstable:

sudo apt install sbuild mmdebstrap

sudo sbuild-createchroot --debootstrap=mmdebstrap --arch=amd64 \
        --include=ca-certificates  \
        --make-sbuild-tarball=/srv/sid-amd64-sbuild.tgz \
        sid /tmp/chroots/sid-amd64-sbuild/ \
         http://deb.debian.org/debian/

Once got the log, the schroot was created successfully.

...
Next, copy the example sbuildrc file to the home directory of each user and
set the variables for your system:

cp /usr/share/doc/sbuild/examples/example.sbuildrc /home/vimer/.sbuildrc

Now try a build:

cd /path/to/source
sbuild-update -ud <distribution>
(or "sbuild-apt <distribution> apt-get -f install"
first if the chroot is broken)

sbuild -d <distribution> <package>_<version>

If target for 2.2.0, see #1071775, just

# first put deb-src URL into your `/etc/apt/sources.list` on VM host to get Debian source code
# deb-src http://deb.debian.org/debian/  sid main
apt source
apt source plotpy
 $: ls
plotpy-2.2.0  plotpy_2.2.0-3.debian.tar.xz  plotpy_2.2.0-3.dsc  plotpy_2.2.0.orig.tar.gz
cd plotpy-2.2.0
sudo sbuild -c sid-amd64-sbuild 

Then you should see the result was the same with #1071775.

If target for 2.3.2, please git clone my repo salsa first:

git clone https://salsa.debian.org/vimerbf-guest/plotpy
(add your pubkey into gitlab)

cd plotpy
git checkout upstream && git checkout master

 gbp buildpackage --git-tarball-dir=../ --git-upstream-tree=upstream --git-upstream-branch=upstream  --git-builder=sbuild  -c sid-amd64-sbuild --no-clean-source --source  --git-debian-branch=debian/main --git-export-dir=../build-area/ --git-ignore-new  --verbose

you will have to install some gbp something here.

If debug the package env during packaging, you can:

 sudo schroot -c sid-amd64-sbuild
apt update
apt install devscripts 
 mk-build-deps --install (to install depences from debian/control file)
dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot (to build the package again)

Sorry, maybe there are too many Debian stuff for you. Thank you very much for this again. Please let me know if any issue and next two days I should have some time on this.

Hey @yuzibo ,

So I've tried to follow the steps of the first part of your instructions. But I'm stuck here:

pierre@DebianTesting:~/plotpy-2.2.0$ sudo sbuild -c sid-amd64-sbuild --no-clean
dpkg-source: info: using options from plotpy-2.2.0/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
dpkg-source: info: using options from plotpy-2.2.0/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building plotpy using existing ./plotpy_2.2.0.orig.tar.gz
dpkg-source: info: building plotpy in plotpy_2.2.0-3.debian.tar.xz
dpkg-source: info: building plotpy in plotpy_2.2.0-3.dsc
dpkg-source: info: using options from plotpy-2.2.0/debian/source/options: --extend-diff-ignore=^[^/]+.(egg-info|dist-info)/
sbuild (Debian sbuild) 0.85.10 (30 May 2024) on DebianTesting.myguest.virtualbox.org

+==============================================================================+
| plotpy 2.2.0-3 (amd64)                       Tue, 18 Jun 2024 08:39:13 +0000 |
+==============================================================================+

Package: plotpy
Version: 2.2.0-3
Source Version: 2.2.0-3
Distribution: unstable
Machine Architecture: amd64
Host Architecture: amd64
Build Architecture: amd64
Build Type: binary

I: NOTICE: Log filtering will replace 'var/run/schroot/mount/sid-amd64-sbuild-23cfc17d-90c9-4035-a1fe-3ee1e560c658' with '<<CHROOT>>'
I: NOTICE: Log filtering will replace 'build/plotpy-qHDBUm/resolver-0Sj5LE' with '<<RESOLVERDIR>>'

+------------------------------------------------------------------------------+
| Update chroot                                                                |
+------------------------------------------------------------------------------+

Get:1 http://deb.debian.org/debian sid InRelease [198 kB]
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
/usr/bin/apt-key: 95: cannot create /dev/null: Permission denied
E: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Sub-process apt-key returned an error code (29)Err:1 http://deb.debian.org/debian sid InRelease
  gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
Reading package lists...
W: GPG error: http://deb.debian.org/debian sid InRelease: gpgv, gpgv2 or gpgv1 required for verification, but neither seems installed
E: The repository 'http://deb.debian.org/debian sid InRelease' is not signed.
E: apt-get update failed

+------------------------------------------------------------------------------+
| Summary                                                                      |
+------------------------------------------------------------------------------+

Build Architecture: amd64
Build Type: binary
Build-Space: 0
Build-Time: 0
Distribution: unstable
Fail-Stage: apt-get-update
Host Architecture: amd64
Install-Time: 0
Job: /home/pierre/plotpy_2.2.0-3.dsc
Machine Architecture: amd64
Package: plotpy
Package-Time: 0
Source-Version: 2.2.0-3
Space: 0
Status: failed
Version: 2.2.0-3
--------------------------------------------------------------------------------
Finished at 2024-06-18T08:39:13Z
Build needed 00:00:00, 0k disk space
E: apt-get update failed

Any idea? (I've tried a lot of things, without success) (My VM is quite clean: fresh Debian 12 install, sources.list with only "sid main" (deb and deb-src))

yuzibo commented 2 months ago

hi,

Could you try it with the instructions?

From man null:

   These devices are typically created by:

          mknod -m 666 /dev/null c 1 3
          mknod -m 666 /dev/zero c 1 5
          chown root:root /dev/null /dev/zero
These commands would have to be executed in the chroot environment.

To enter into chroot env, we have to

 sudo sbuild-shell  sid-amd64-sbuild

In fact, I do not remember I have faced the issue on my physical host. but maybe we can try it.

PierreRaybaut commented 2 months ago

Just did it:

pierre@DebianTesting:~/plotpy-2.2.0$ sudo sbuild-shell  sid-amd64-sbuild
[sudo] password for pierre: 
I: /bin/sh
# mknod -m 666 /dev/null c 1 3
mknod: /dev/null: File exists
# mknod -m 666 /dev/zero c 1 5
# chown root:root /dev/null /dev/zero
# exit

But, unfortunately, same result as before.

PierreRaybaut commented 2 months ago

There may be an issue with the permissions of /dev/null, but I don't know how to fix this permanently:

pierre@DebianTesting:~/plotpy-2.2.0$ sudo sbuild-shell  sid-amd64-sbuild
I: /bin/sh
# ls -l /dev/null     
-rw-r--r-- 1 root root 0 Jun 18 07:52 /dev/null
yuzibo commented 2 months ago

I think we can change permissions of /dev/null just like we do on a normal system then exit.

Under chroot with sbuild-shell, we can save the change I understand.

vimer@dev:~/dev$ sudo sbuild-shell  sid-amd64-sbuild
I: /bin/sh
# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Apr  2 01:10 /dev/null
#
PierreRaybaut commented 2 months ago

Sorry, my bad, that's because I needed to remove and recreate it to change the first "-" into "c" in permissions:

pierre@DebianTesting:~/plotpy-2.2.0$ sudo sbuild-shell  sid-amd64-sbuild
I: /bin/sh
# ls -l /dev/null     
-rw-r--r-- 1 root root 0 Jun 18 07:52 /dev/null
# rm -f /dev/null
# mknod /dev/null c 1 3
# chmod 666 /dev/null
# ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Jun 18 12:31 /dev/null
# exit

So now, the building process is running smoothly... (in progress)

PierreRaybaut commented 2 months ago

OK, so now I have exactly the same output as you first posted.

Now I'm wondering how I could debug this. Is there a way to execute any given Python script from the repository inside that environment, in order to reproduce the failure and debug it?

yuzibo commented 2 months ago

Maybe we try it with the below . see the later of the comment :

# If debug the package env during packaging, you can:
(cd plotpy-2.2.0)
sudo schroot -c sid-amd64-sbuild
apt update
apt install devscripts 
 mk-build-deps --install (to install depences from debian/control file)
dpkg-buildpackage --sanitize-env -us -uc -b -rfakeroot (to build the package again)

It will fail again at the same place with the same dependences from Debian packaging. But because we are undering the chroot, so we can do anything we want to debug. Sorry, I have little knowledge about Python debug, so this is my goal to ask for help from you here.:)

PierreRaybaut commented 2 months ago

Quick question, when I'm under chroot environment, I loose my user home directory:

pierre@DebianTesting:~/plotpy-2.2.0$ sudo schroot -c sid-amd64-sbuild
[sudo] password for pierre: 
W: Failed to change to directory ‘/home/pierre/plotpy-2.2.0’: No such file or directory
I: The directory does not exist inside the chroot.  Use the --directory option to run the command in a different directory.
W: Falling back to directory ‘/root’
(sid-amd64-sbuild)root@DebianTesting:~# ls -l /home
total 0

Is it normal? Do I have to mount it manually?

yuzibo commented 2 months ago

hmm, maybe I forget to mention it.

vim /etc/schroot/chroot.d/sid-amd64-sbuild-xxx

change to profile=default from profile=sbuild to try it?

PierreRaybaut commented 2 months ago

OK, so here is the real traceback: (that was hidden somehow in the build log)

sid-amd64-sbuild)root@DebianTesting:/home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build# python3.11 plotpy/tests/benchmarks/test_benchmarks.py 
PlotPy plot benchmark [Python 3.11.9 64 bits, Qt 5.15.13, PyQt 5.15.10 on Linux]
--------------------------------------------------------------------------------

qt.qpa.xcb: could not connect to display 
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted

This xcb issue is a classic.

On Ubuntu, I usually do the following to fix this: (but I'm not sure it applies to Debian)

sudo apt install libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 x11-utils
PierreRaybaut commented 2 months ago

So basically, I think that solving this whole issue will simply be done by installing the right (missing) Debian package(s).

PierreRaybaut commented 2 months ago

Now, that I have the VM configured, I may test any additional package install to check if that solves the issue.

yuzibo commented 2 months ago

Great.

apt-cache search package-name to grap one package was available on Debian or not. But I think they have been there.

PierreRaybaut commented 2 months ago

OK, everything works after doing this:

apt install x11-utils  # the other "xcb"-related packages were already installed actually
export QT_QPA_PLATFORM=offscreen

Here is the output of pytest:

(sid-amd64-sbuild)root@DebianTesting:/home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build# pytest
=============================================================== test session starts ===============================================================
platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build
configfile: pyproject.toml
collected 253 items                                                                                                                               

plotpy/tests/benchmarks/test_benchmarks.py .                                                                                                [  0%]
plotpy/tests/benchmarks/test_bigimages.py .                                                                                                 [  0%]
plotpy/tests/features/test_auto_curve_image.py .                                                                                            [  1%]
plotpy/tests/features/test_autoscale_shapes.py .                                                                                            [  1%]
plotpy/tests/features/test_builder.py .                                                                                                     [  1%]
plotpy/tests/features/test_colormap_editor.py .                                                                                             [  2%]
plotpy/tests/features/test_colormap_manager.py .                                                                                            [  2%]
plotpy/tests/features/test_computations.py .                                                                                                [  3%]
plotpy/tests/features/test_contrast.py .                                                                                                    [  3%]
plotpy/tests/features/test_cursors.py .                                                                                                     [  3%]
plotpy/tests/features/test_dicom_image.py s                                                                                                 [  4%]
plotpy/tests/features/test_fit.py .                                                                                                         [  4%]
plotpy/tests/features/test_image_coords.py .                                                                                                [  5%]
plotpy/tests/features/test_imagefilter.py .                                                                                                 [  5%]
plotpy/tests/features/test_imagesuperp.py .                                                                                                 [  5%]
plotpy/tests/features/test_loadsaveitems_hdf5.py .                                                                                          [  6%]
plotpy/tests/features/test_loadsaveitems_json.py .                                                                                          [  6%]
plotpy/tests/features/test_loadsaveitems_pickle.py .                                                                                        [  7%]
plotpy/tests/features/test_manager.py ..                                                                                                    [  7%]
plotpy/tests/features/test_no_auto_tools.py .                                                                                               [  8%]
plotpy/tests/features/test_plot_log.py .                                                                                                    [  8%]
plotpy/tests/features/test_plot_types.py .                                                                                                  [  9%]
plotpy/tests/features/test_plot_yreverse.py .                                                                                               [  9%]
plotpy/tests/features/test_pyplot.py s                                                                                                      [  9%]
plotpy/tests/features/test_resize.py .                                                                                                      [ 10%]
plotpy/tests/items/test_annotations.py .                                                                                                    [ 10%]
plotpy/tests/items/test_curves.py .                                                                                                         [ 11%]
plotpy/tests/items/test_hist2d.py ..                                                                                                        [ 11%]
plotpy/tests/items/test_histogram.py .                                                                                                      [ 12%]
plotpy/tests/items/test_image.py .                                                                                                          [ 12%]
plotpy/tests/items/test_image_contour.py .                                                                                                  [ 13%]
plotpy/tests/items/test_image_masked.py .                                                                                                   [ 13%]
plotpy/tests/items/test_image_masked_xy.py .                                                                                                [ 13%]
plotpy/tests/items/test_image_rgb.py .                                                                                                      [ 14%]
plotpy/tests/items/test_image_xy.py .                                                                                                       [ 14%]
plotpy/tests/items/test_mandelbrot.py .                                                                                                     [ 15%]
plotpy/tests/items/test_pcolor.py ..                                                                                                        [ 15%]
plotpy/tests/items/test_polygons.py .                                                                                                       [ 16%]
plotpy/tests/items/test_svgshapes.py .                                                                                                      [ 16%]
plotpy/tests/items/test_transform.py ..                                                                                                     [ 17%]
plotpy/tests/tools/test_actiontool.py .                                                                                                     [ 17%]
plotpy/tests/tools/test_cross_section.py .                                                                                                  [ 18%]
plotpy/tests/tools/test_cross_section_line.py .                                                                                             [ 18%]
plotpy/tests/tools/test_cross_section_oblique.py .                                                                                          [ 18%]
plotpy/tests/tools/test_customize_shape_tool.py .                                                                                           [ 19%]
plotpy/tests/tools/test_downsample_curve.py .                                                                                               [ 19%]
plotpy/tests/tools/test_edit_point.py .                                                                                                     [ 20%]
plotpy/tests/tools/test_get_point.py .                                                                                                      [ 20%]
plotpy/tests/tools/test_get_points.py .                                                                                                     [ 20%]
plotpy/tests/tools/test_get_rectangle.py .                                                                                                  [ 21%]
plotpy/tests/tools/test_get_rectangle_with_svg.py .                                                                                         [ 21%]
plotpy/tests/tools/test_get_segment.py .                                                                                                    [ 22%]
plotpy/tests/tools/test_image_plot_tools.py .                                                                                               [ 22%]
plotpy/tests/unit/test_aspect_ratio_tool.py .                                                                                               [ 22%]
plotpy/tests/unit/test_baseplot.py .                                                                                                        [ 23%]
plotpy/tests/unit/test_builder_annotation.py .....                                                                                          [ 25%]
plotpy/tests/unit/test_builder_curve.py ..................................................................                                  [ 51%]
plotpy/tests/unit/test_builder_image.py ..........................                                                                          [ 61%]
plotpy/tests/unit/test_builder_shape.py ......                                                                                              [ 64%]
plotpy/tests/unit/test_contour.py ....                                                                                                      [ 65%]
plotpy/tests/unit/test_display_coords_tool.py ..                                                                                            [ 66%]
plotpy/tests/unit/test_fontparam.py .                                                                                                       [ 66%]
plotpy/tests/unit/test_geometry.py ...                                                                                                      [ 67%]
plotpy/tests/unit/test_highprecisionxy.py .                                                                                                 [ 68%]
plotpy/tests/unit/test_io.py ......s.                                                                                                       [ 71%]
plotpy/tests/unit/test_line.py ......                                                                                                       [ 73%]
plotpy/tests/unit/test_line_cross_section_tool.py .                                                                                         [ 74%]
plotpy/tests/unit/test_multiline_tools.py ..                                                                                                [ 75%]
plotpy/tests/unit/test_oblique_cross_section_tool.py .                                                                                      [ 75%]
plotpy/tests/unit/test_plot_curve.py ..                                                                                                     [ 76%]
plotpy/tests/unit/test_plot_image.py ..........                                                                                             [ 80%]
plotpy/tests/unit/test_point_tools.py ....                                                                                                  [ 81%]
plotpy/tests/unit/test_rect_zoom.py ..                                                                                                      [ 82%]
plotpy/tests/unit/test_seg_dist.py ....                                                                                                     [ 84%]
plotpy/tests/unit/test_shape_tools.py ................                                                                                      [ 90%]
plotpy/tests/unit/test_styles.py ........                                                                                                   [ 93%]
plotpy/tests/unit/test_tools_export.py .                                                                                                    [ 94%]
plotpy/tests/widgets/test_dotarraydemo.py .                                                                                                 [ 94%]
plotpy/tests/widgets/test_filtertest1.py .                                                                                                  [ 94%]
plotpy/tests/widgets/test_filtertest2.py .                                                                                                  [ 95%]
plotpy/tests/widgets/test_fliprotate.py .                                                                                                   [ 95%]
plotpy/tests/widgets/test_qtdesigner.py .                                                                                                   [ 96%]
plotpy/tests/widgets/test_resize_dialog.py .....                                                                                            [ 98%]
plotpy/tests/widgets/test_rotatecrop.py .                                                                                                   [ 98%]
plotpy/tests/widgets/test_simple_dialog.py .                                                                                                [ 98%]
plotpy/tests/widgets/test_simple_window.py .                                                                                                [ 99%]
plotpy/tests/widgets/test_syncplot.py ..                                                                                                    [100%]

================================================================ warnings summary =================================================================
plotpy/items/shape/range.py:8
  /home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build/plotpy/items/shape/range.py:8: DeprecationWarning: guidata.dataset.io module is deprecated and will be removed in a future release. Please use guidata.io instead.
    import guidata.dataset.io

plotpy/tests/unit/test_line_cross_section_tool.py: 2 warnings
plotpy/tests/unit/test_shape_tools.py: 8 warnings
  /home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build/plotpy/items/curve/errorbar.py:258: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
    xmax = np.float64(xmax)

plotpy/tests/unit/test_line_cross_section_tool.py: 2 warnings
plotpy/tests/unit/test_shape_tools.py: 8 warnings
  /home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build/plotpy/items/curve/errorbar.py:259: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
    ymax = np.float64(ymax)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================================================== 250 passed, 3 skipped, 21 warnings in 44.55s ===================================================
(sid-amd64-sbuild)root@DebianTesting:/home/pierre/plotpy-2.2.0/.pybuild/cpython3_3.11_plotpy/build# 
yuzibo commented 2 months ago

Okay, I can test it my side.

Could you try on a clean build env?

# 1. exit from debug chroot
# 2. add x11-utils in debian/control
# 3. add `export QT_QPA_PLATFORM=offscreen` to debian/rules
4. sbuild -c sid-amd64-sbuild --no-clean

It passed python3.12 but not python3.11:

...
plotpy/tests/widgets/test_qtdesigner.py .                                [ 96%]
plotpy/tests/widgets/test_resize_dialog.py .....                         [ 98%]
plotpy/tests/widgets/test_rotatecrop.py .                                [ 98%]
plotpy/tests/widgets/test_simple_dialog.py Fatal Python error: Aborted
PierreRaybaut commented 2 months ago

Oh, by the way, I should have mentioned it earlier but plotpy is derived from guiqwt, so it may be useful to check out the guiqwt Debian package (build looks OK).

(...actually it appears that pytest was not executed, so, ...)

PierreRaybaut commented 2 months ago

It passed python3.12 but not python3.11:

...
plotpy/tests/widgets/test_qtdesigner.py .                                [ 96%]
plotpy/tests/widgets/test_resize_dialog.py .....                         [ 98%]
plotpy/tests/widgets/test_rotatecrop.py .                                [ 98%]
plotpy/tests/widgets/test_simple_dialog.py Fatal Python error: Aborted

I'm looking into it.

PierreRaybaut commented 2 months ago

OK, I can reproduce it. Then, I go under chroot environment to debug. I see the failure with exactly the same log. As expected.

But then, when I echo the QT_QPA_PLATFORM, it seems to be undefined. So, I'm setting QT_QPA_PLATFORM to "offscreen" and everything runs fine... I'm not sure what to conclude.

PierreRaybaut commented 2 months ago

🎉 I just found out where it comes from!

(this is a teaser 😉)

PierreRaybaut commented 2 months ago

@yuzibo : Great news, I was able to fix the problem, and all tests are now OK.

The problem was coming from a cache mechanism in the dependency PythonQwt. It is now fixed in PythonQwt V0.12.3 that was just released.

So I guess that you have everything you need to finalize the Debian package?

yuzibo commented 2 months ago

\o/.

That is really good news. yeah, I can backport the commit to Debian side or just waiting new release.

And I am waiting for the original maintainer of the Debian package to allow me to create salsa repo under Debian Python Team, then I can do more things for this package. But fixing bug with upstream is always good things.:)

Cheers, Bo

PierreRaybaut commented 2 months ago

@yuzibo : FYI, I just found another segfault issue (#13) - it is also fixed upstream in PythonQwt v0.12.4 (a new, new release!)

rolandmas commented 2 months ago

Hi guys, one of the Debian maintainers for both plotpy and python-qwt here. I updated the package for python-qwt to v0.12.5, but I still see the Fatal Python error: Aborted error when building plotpy with it. Even updating plotpy to 2.3.5 doesn't seem to help.

PierreRaybaut commented 2 months ago

Hi @rolandmas, how can I reproduce this to help figure out what's going on?

rolandmas commented 2 months ago

@yuzibo Please use the https://salsa.debian.org/python-team/packages/plotpy repository for collaboration :-)

rolandmas commented 2 months ago

Ah, it seems I missed some info. Let me retry with your QT_QPA_PLATFORM trick.

PierreRaybaut commented 2 months ago

I sure hope that it works... I was so glad to finally fix this (and it took quite some time to figure it out).

rolandmas commented 2 months ago

Nope, still fails:

============================= test session starts ==============================
platform linux -- Python 3.12.4, pytest-8.2.2, pluggy-1.5.0
PlotPy 2.3.5, guidata 3.4.1, PythonQwt 0.12.5, PyQt5 5.15.10 [Qt version: 5.15.13]
NumPy 1.26.4, SciPy 1.12.0, h5py 3.11.0, Pillow 10.3.0, tifffile 2024.6.18
rootdir: /build/plotpy-2.3.5/.pybuild/cpython3_3.12_plotpy/build
configfile: pyproject.toml
plugins: xvfb-3.0.0
collected 288 items

plotpy/tests/benchmarks/test_benchmarks.py s                             [  0%]
plotpy/tests/benchmarks/test_bigimages.py s                              [  0%]
plotpy/tests/benchmarks/test_loadtest.py s                               [  1%]
plotpy/tests/features/test_auto_curve_image.py Fatal Python error: Aborted

Current thread 0x00007f6bf29d9040 (most recent call first):
  File "/usr/lib/python3/dist-packages/guidata/__init__.py", line 31 in qapplication
  File "/usr/lib/python3/dist-packages/guidata/qthelpers.py", line 500 in qt_app_context
  File "/usr/lib/python3.12/contextlib.py", line 137 in __enter__
  File "/build/plotpy-2.3.5/.pybuild/cpython3_3.12_plotpy/build/plotpy/tests/features/test_auto_curve_image.py", line 28 in test_auto_curve_image
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 162 in pytest_pyfunc_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1632 in runtest
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 173 in pytest_runtest_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 241 in <lambda>
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341 in from_call
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 240 in call_and_report
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 135 in runtestprotocol
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 116 in pytest_runtest_protocol
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 364 in pytest_runtestloop
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 339 in _main
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 285 in wrap_session
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 332 in pytest_cmdline_main
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 178 in main
  File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 206 in console_main
  File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 7 in <module>
  File "<frozen runpy>", line 88 in _run_code
  File "<frozen runpy>", line 198 in _run_module_as_main

Extension modules: h5py._debian_h5py_serial._errors, h5py._debian_h5py_serial.defs, h5py._debian_h5py_serial._objects, h5py._debian_h5py_serial.h5, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, h5py._debian_h5py_serial.utils, h5py._debian_h5py_serial.h5t, h5py._debian_h5py_serial.h5s, h5py._debian_h5py_serial.h5ac, h5py._debian_h5py_serial.h5p, h5py._debian_h5py_serial.h5r, h5py._debian_h5py_serial._proxy, h5py._debian_h5py_serial._conv, h5py._debian_h5py_serial.h5z, h5py._debian_h5py_serial.h5a, h5py._debian_h5py_serial.h5d, h5py._debian_h5py_serial.h5ds, h5py._debian_h5py_serial.h5g, h5py._debian_h5py_serial.h5i, h5py._debian_h5py_serial.h5f, h5py._debian_h5py_serial.h5fd, h5py._debian_h5py_serial.h5pl, h5py._debian_h5py_serial.h5o, h5py._debian_h5py_serial.h5l, h5py._debian_h5py_serial._selector, h5py.atexit, h5py._errors, h5py.defs, h5py._objects, h5py.h5, h5py.utils, h5py.h5t, h5py.h5s, h5py.h5ac, h5py.h5p, h5py.h5r, h5py._proxy, h5py._conv, h5py.h5z, h5py.h5a, h5py.h5d, h5py.h5ds, h5py.h5g, h5py.h5i, h5py.h5f, h5py.h5fd, h5py.h5pl, h5py.h5o, h5py.h5l, h5py._selector, PyQt5.QtCore, PyQt5.QtGui, PyQt5.QtWidgets, PyQt5.QtSvg, PyQt5.QtPrintSupport, scipy._lib._ccallback_c, plotpy._scaler, contour2d, plotpy.contour2d, PIL._imaging, histogram2d, plotpy.histogram2d, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._flinalg, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.special._ellip_harm_2, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.optimize._minpack2, scipy.optimize._group_columns, scipy._lib.messagestream, scipy.optimize._trlib._trlib, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize._highs.cython.src._highs_wrapper, scipy.optimize._highs._highs_wrapper, scipy.optimize._highs.cython.src._highs_constants, scipy.optimize._highs._highs_constants, scipy.linalg._interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.spatial._ckdtree, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.spatial.transform._rotation, scipy.optimize._direct, scipy.ndimage._nd_image, _ni_label, scipy.ndimage._ni_label, mandelbrot, plotpy.mandelbrot, scipy.signal._sigtools, scipy._lib._uarray._uarray, scipy.signal._max_len_seq_inner, scipy.signal._upfirdn_apply, scipy.signal._spline, scipy.interpolate._fitpack, scipy.interpolate.dfitpack, scipy.interpolate._bspl, scipy.interpolate._ppoly, scipy.interpolate.interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, scipy.signal._sosfilt, scipy.signal._spectral, scipy.special.cython_special, scipy.stats._stats, scipy.stats.beta_ufunc, scipy.stats._boost.beta_ufunc, scipy.stats.binom_ufunc, scipy.stats._boost.binom_ufunc, scipy.stats.nbinom_ufunc, scipy.stats._boost.nbinom_ufunc, scipy.stats.hypergeom_ufunc, scipy.stats._boost.hypergeom_ufunc, scipy.stats.ncf_ufunc, scipy.stats._boost.ncf_ufunc, scipy.stats.ncx2_ufunc, scipy.stats._boost.ncx2_ufunc, scipy.stats.nct_ufunc, scipy.stats._boost.nct_ufunc, scipy.stats.skewnorm_ufunc, scipy.stats._boost.skewnorm_ufunc, scipy.stats.invgauss_ufunc, scipy.stats._boost.invgauss_ufunc, scipy.stats._biasedurn, scipy.stats._levy_stable.levyst, scipy.stats._stats_pythran, scipy.stats._ansari_swilk_statistics, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._mvn, scipy.stats._rcont.rcont, scipy.stats._unuran.unuran_wrapper, scipy.signal._peak_finding_utils, PyQt5.QtDesigner (total: 183)
Aborted
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=134: cd /build/plotpy-2.3.5/.pybuild/cpython3_3.12_plotpy/build; python3.12 -m pytest 
I: pybuild base:311: cd /build/plotpy-2.3.5/.pybuild/cpython3_3.11_plotpy/build; python3.11 -m pytest 
============================= test session starts ==============================
platform linux -- Python 3.11.9, pytest-8.2.2, pluggy-1.5.0
PlotPy 2.3.5, guidata 3.4.1, PythonQwt 0.12.5, PyQt5 5.15.10 [Qt version: 5.15.13]
NumPy 1.26.4, SciPy 1.12.0, h5py 3.11.0, Pillow 10.3.0, tifffile 2024.6.18
rootdir: /build/plotpy-2.3.5/.pybuild/cpython3_3.11_plotpy/build
configfile: pyproject.toml
plugins: xvfb-3.0.0
collected 288 items

plotpy/tests/benchmarks/test_benchmarks.py s                             [  0%]
plotpy/tests/benchmarks/test_bigimages.py s                              [  0%]
plotpy/tests/benchmarks/test_loadtest.py s                               [  1%]
plotpy/tests/features/test_auto_curve_image.py Fatal Python error: Aborted

Current thread 0x00007f59762f6040 (most recent call first):
  File "/usr/lib/python3/dist-packages/guidata/__init__.py", line 31 in qapplication
  File "/usr/lib/python3/dist-packages/guidata/qthelpers.py", line 500 in qt_app_context
  File "/usr/lib/python3.11/contextlib.py", line 137 in __enter__
  File "/build/plotpy-2.3.5/.pybuild/cpython3_3.11_plotpy/build/plotpy/tests/features/test_auto_curve_image.py", line 28 in test_auto_curve_image
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 162 in pytest_pyfunc_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/python.py", line 1632 in runtest
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 173 in pytest_runtest_call
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 241 in <lambda>
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 341 in from_call
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 240 in call_and_report
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 135 in runtestprotocol
  File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 116 in pytest_runtest_protocol
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 364 in pytest_runtestloop
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 339 in _main
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 285 in wrap_session
  File "/usr/lib/python3/dist-packages/_pytest/main.py", line 332 in pytest_cmdline_main
  File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 103 in _multicall
  File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120 in _hookexec
  File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 513 in __call__
  File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 178 in main
  File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 206 in console_main
  File "/usr/lib/python3/dist-packages/pytest/__main__.py", line 7 in <module>
  File "<frozen runpy>", line 88 in _run_code
  File "<frozen runpy>", line 198 in _run_module_as_main

Extension modules: h5py._debian_h5py_serial._errors, h5py._debian_h5py_serial.defs, h5py._debian_h5py_serial._objects, h5py._debian_h5py_serial.h5, numpy.core._multiarray_umath, numpy.core._multiarray_tests, numpy.linalg._umath_linalg, numpy.fft._pocketfft_internal, numpy.random._common, numpy.random.bit_generator, numpy.random._bounded_integers, numpy.random._mt19937, numpy.random.mtrand, numpy.random._philox, numpy.random._pcg64, numpy.random._sfc64, numpy.random._generator, h5py._debian_h5py_serial.utils, h5py._debian_h5py_serial.h5t, h5py._debian_h5py_serial.h5s, h5py._debian_h5py_serial.h5ac, h5py._debian_h5py_serial.h5p, h5py._debian_h5py_serial.h5r, h5py._debian_h5py_serial._proxy, h5py._debian_h5py_serial._conv, h5py._debian_h5py_serial.h5z, h5py._debian_h5py_serial.h5a, h5py._debian_h5py_serial.h5d, h5py._debian_h5py_serial.h5ds, h5py._debian_h5py_serial.h5g, h5py._debian_h5py_serial.h5i, h5py._debian_h5py_serial.h5f, h5py._debian_h5py_serial.h5fd, h5py._debian_h5py_serial.h5pl, h5py._debian_h5py_serial.h5o, h5py._debian_h5py_serial.h5l, h5py._debian_h5py_serial._selector, h5py.atexit, h5py._errors, h5py.defs, h5py._objects, h5py.h5, h5py.utils, h5py.h5t, h5py.h5s, h5py.h5ac, h5py.h5p, h5py.h5r, h5py._proxy, h5py._conv, h5py.h5z, h5py.h5a, h5py.h5d, h5py.h5ds, h5py.h5g, h5py.h5i, h5py.h5f, h5py.h5fd, h5py.h5pl, h5py.h5o, h5py.h5l, h5py._selector, PyQt5.QtCore, PyQt5.QtGui, PyQt5.QtWidgets, PyQt5.QtSvg, PyQt5.QtPrintSupport, scipy._lib._ccallback_c, plotpy._scaler, contour2d, plotpy.contour2d, PIL._imaging, histogram2d, plotpy.histogram2d, scipy.special._ufuncs_cxx, scipy.special._ufuncs, scipy.special._specfun, scipy.special._comb, scipy.linalg._fblas, scipy.linalg._flapack, scipy.linalg.cython_lapack, scipy.linalg._cythonized_array_utils, scipy.linalg._solve_toeplitz, scipy.linalg._flinalg, scipy.linalg._decomp_lu_cython, scipy.linalg._matfuncs_sqrtm_triu, scipy.linalg.cython_blas, scipy.linalg._matfuncs_expm, scipy.linalg._decomp_update, scipy.sparse._sparsetools, _csparsetools, scipy.sparse._csparsetools, scipy.sparse.linalg._dsolve._superlu, scipy.sparse.linalg._eigen.arpack._arpack, scipy.sparse.csgraph._tools, scipy.sparse.csgraph._shortest_path, scipy.sparse.csgraph._traversal, scipy.sparse.csgraph._min_spanning_tree, scipy.sparse.csgraph._flow, scipy.sparse.csgraph._matching, scipy.sparse.csgraph._reordering, scipy.special._ellip_harm_2, scipy.integrate._odepack, scipy.integrate._quadpack, scipy.integrate._vode, scipy.integrate._dop, scipy.integrate._lsoda, scipy.optimize._minpack2, scipy.optimize._group_columns, scipy._lib.messagestream, scipy.optimize._trlib._trlib, scipy.optimize._lbfgsb, _moduleTNC, scipy.optimize._moduleTNC, scipy.optimize._cobyla, scipy.optimize._slsqp, scipy.optimize._minpack, scipy.optimize._lsq.givens_elimination, scipy.optimize._zeros, scipy.optimize._highs.cython.src._highs_wrapper, scipy.optimize._highs._highs_wrapper, scipy.optimize._highs.cython.src._highs_constants, scipy.optimize._highs._highs_constants, scipy.linalg._interpolative, scipy.optimize._bglu_dense, scipy.optimize._lsap, scipy.spatial._ckdtree, scipy.spatial._qhull, scipy.spatial._voronoi, scipy.spatial._distance_wrap, scipy.spatial._hausdorff, scipy.spatial.transform._rotation, scipy.optimize._direct, scipy.ndimage._nd_image, _ni_label, scipy.ndimage._ni_label, mandelbrot, plotpy.mandelbrot, scipy.signal._sigtools, scipy._lib._uarray._uarray, scipy.signal._max_len_seq_inner, scipy.signal._upfirdn_apply, scipy.signal._spline, scipy.interpolate._fitpack, scipy.interpolate.dfitpack, scipy.interpolate._bspl, scipy.interpolate._ppoly, scipy.interpolate.interpnd, scipy.interpolate._rbfinterp_pythran, scipy.interpolate._rgi_cython, scipy.signal._sosfilt, scipy.signal._spectral, scipy.special.cython_special, scipy.stats._stats, scipy.stats.beta_ufunc, scipy.stats._boost.beta_ufunc, scipy.stats.binom_ufunc, scipy.stats._boost.binom_ufunc, scipy.stats.nbinom_ufunc, scipy.stats._boost.nbinom_ufunc, scipy.stats.hypergeom_ufunc, scipy.stats._boost.hypergeom_ufunc, scipy.stats.ncf_ufunc, scipy.stats._boost.ncf_ufunc, scipy.stats.ncx2_ufunc, scipy.stats._boost.ncx2_ufunc, scipy.stats.nct_ufunc, scipy.stats._boost.nct_ufunc, scipy.stats.skewnorm_ufunc, scipy.stats._boost.skewnorm_ufunc, scipy.stats.invgauss_ufunc, scipy.stats._boost.invgauss_ufunc, scipy.stats._biasedurn, scipy.stats._levy_stable.levyst, scipy.stats._stats_pythran, scipy.stats._ansari_swilk_statistics, scipy.stats._sobol, scipy.stats._qmc_cy, scipy.stats._mvn, scipy.stats._rcont.rcont, scipy.stats._unuran.unuran_wrapper, scipy.signal._peak_finding_utils, PyQt5.QtDesigner (total: 183)
Aborted

I noticed guidata in there, so tried to update guidata to a more recent version too, but… building guidata 3.5.2 also fails (in the testsuite) with a similar error, on a similar with qt_app_context() line.

PierreRaybaut commented 2 months ago

That is not the same issue because it's failing when executing the very first test which shows a Qt widget. Have you also added the missing dependency x11-utils?

PierreRaybaut commented 2 months ago

@rolandmas : to clarify my previous comment, if tests are failing (for guidata or plotpy) when qt_app_context() is called, it means that your building environment is not capable of showing any Qt-based GUI. It's not a bug of guidata or plotpy. It's just an incomplete configuration.

If it persists after having done the following, please get back to me with some instructions to reproduce the issue and I will gladly help:

apt install x11-utils
export QT_QPA_PLATFORM=offscreen
yuzibo commented 2 months ago

Hi all, Sorry for I am late working on this continually.

It seems @rolandmas has fixed the issue from the repo he has pushed. I just built it.:)

So I think we can close the issue again.

BR, Bo

PierreRaybaut commented 2 months ago

Great. Thanks @yuzibo .

FYI, @rolandmas, the whole stack was updated: PythonQwt v0.12.5 → guidata v3.5.1 → PlotPy v2.3.5 → DataLab v0.16.1

I would be nice if the Debian packages could follow 😊.

rolandmas commented 2 months ago

Even with both workarounds (export QT_QPA_PLATFORM=offscreen + x11-utils), plotpy 2.3.5 and guidata 3.5.2 still fail for me (in a clean, up-to-date, unstable cowbuilder chroot).

(datalab 0.16.1 also seems to fail, but apparently for another reason; I'll open a ticket in the appropriate place once I get the full build log)

rolandmas commented 2 months ago

For some reason, installing dbus fixes the build for plotpy (even without x11-utils and the environment variable). So plotpy 2.3.5-1 is on its way to Debian :-)

The guidata testsuite fails differently with that addition, but I'll investigate further.

rolandmas commented 2 months ago

…and guidata also works with dbus, provided the packaging is updated to reflect the renaming of the GUIDATA_UNATTENDED_TESTS variable to GUIDATA_UNATTENDED. So guidata 3.5.2-1 is on its way to unstable.

This ticket can be closed as far as I'm concerned :-)

PierreRaybaut commented 2 months ago

@rolandmas : regarding guidata, you shouldn't need to set the GUIDATA_UNATTENDED environment variable if pytest was executed with the right command line options (pytest guidata instead of only pytest). I've added an option in pyproject.toml so that it won't be needed in the next release (see ebd87cebada17e6ca29d6aa26699d5d98a34fafa).