Fwd: pysolid | Failed pipeline for master | 6803a875

Sebastiaan Couwenberg sebastic at xs4all.nl
Mon Jul 1 09:48:34 BST 2024


On 7/1/24 8:44 AM, Antonio Valentino wrote:
> pysolid has changed build system so scikit-build-core + cmake and it is 
> now fully compatible with Python 3.12 (see #1069217).
> 
> Unfortunately now the reproducibility test fails because of the lintian 
> error tagged "file-references-package-build-path".

To help troubleshoot the reprotest failure you can enable diffoscope in 
debian/.gitlab-ci.yml:

  variables:
    SALSA_CI_REPROTEST_ENABLE_DIFFOSCOPE: 1

> I looked into the binary package and the issue is indeed there.
> I did several attempts to fix it and, in particular, I ensured that the 
> "-ffile-prefix-map=" build flag is properly set at all levels.

Using strings on the library we find:

  $ strings 
/tmp/pysolid/usr/lib/python3/dist-packages/pysolid/solid.*.so | grep 
'/build/'
  /build/pysolid-0.3.3/src/pysolid/solid.for
  /build/pysolid-0.3.3/src/pysolid/solid.for

objdump -s shows the path in the .rodata section of the binary.

The solid.for file seems to be used to convert Fortran code to Python as 
the buildlog contains:

  /usr/bin/python3.11 -m numpy.f2py 
/build/pysolid-0.3.3/src/pysolid/solid.for -m solid --lower

The solidmodule.c and solid-f2pywrappers.f files it generates don't 
include the build path, which suggests its embedded in the binary by the 
python_add_library call:

  python_add_library(
    solid MODULE "${CMAKE_CURRENT_BINARY_DIR}/solidmodule.c"
    "${CMAKE_CURRENT_BINARY_DIR}/solid-f2pywrappers.f"
    "${CMAKE_CURRENT_SOURCE_DIR}/src/pysolid/solid.for" WITH_SOABI)

Reordering the source files to specify solid.for first causes the path 
to show up at the start of the .rodata section instead of later on.

> I have no other idea about how to fix it.
> Do you have any hint for me?
I don't see where the source path gets turned into a constant for the 
binary in the cmake sources, the reproducible builds people might have 
some suggestions.

For now, I'd just include a lintian override and allow the reprotest CI 
job to fail.


Something unrelated I noticed, the test suite is missing dependencies:

  /build/pysolid/tests/grid.py
  PYSOLID: ----------------------------------------
  PYSOLID: datetime: 2020-12-25T14:07:44
  PYSOLID: SNWE: (33.4666668, 33.8, -118.2, -117.7833335)
  SOLID  : calculate solid Earth tides in east/north/up direction
  SOLID  : shape: (36, 45), step size: -0.0092 by 0.0092 deg
  PYSOLID: resize data to the shape of (400, 500) using order-1 spline 
interpolation
  save figure to /build/pysolid/tests/pic/grid.png
  sh: 1: display: not found

The display executable is provided by imagemagick or 
graphicsmagick-imagemagick-compat, but installing imagemagick causes the 
build to hang on the display command.

Kind Regards,

Bas

-- 
  GPG Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1




More information about the Pkg-grass-devel mailing list