Discussion:
pybuild: Build-testing with the package installed
Add Reply
Matthias Urlichs
2024-11-14 13:20:01 UTC
Reply
Permalink
Hi,

I'm trying to locally build a fixed version of a buggy package which
happens to be installed on the system.

"debuild -b -us -uc" reports:

Successfully built moat_lib_codec-0.2.2-py3-none-any.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module
   dh_auto_test -O--buildsystem=pybuild
dh_auto_test: warning: Use of debian/compat is deprecated and will be removed in debhelper (>=14~).
I: pybuild base:311: cd /src/moat/lib/codec/.pybuild/cpython3_3.12_moat-lib-codec/build; python3.12 -m pytest tests

Note the nonexistence of "PYTHONPATH=." in this command line, which
causes the test suite to use the installed version, which subsequently
fails (that's the whole point of having a comprehensive test suite,
after all 
).

Is it possible to teach pybuild to do this the right way? I could always
add a "override_dh_auto_test" stanza that calls pytest manually, but the
whole point of standardized packaging is not having to do stuff like that.

The package is at https://github.com/M-o-a-T/moat-lib-codec/tree/deb
(sorry, moving to Codeberg+Salsa hasn't quite reached the top of my TODO
list 
) if anybody wants to take a closer look.

--
-- regards,
--
-- Matthias Urlichs
Andrey Rakhmatullin
2024-11-14 13:30:01 UTC
Reply
Permalink
Hi,
I'm trying to locally build a fixed version of a buggy package which happens
to be installed on the system.
Successfully built moat_lib_codec-0.2.2-py3-none-any.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module
   dh_auto_test -O--buildsystem=pybuild
dh_auto_test: warning: Use of debian/compat is deprecated and will be removed in debhelper (>=14~).
I: pybuild base:311: cd /src/moat/lib/codec/.pybuild/cpython3_3.12_moat-lib-codec/build; python3.12 -m pytest tests
Note the nonexistence of "PYTHONPATH=." in this command line
python -m does that for you, doesn't it?
which causes the test suite to use the installed version
I expect the problem to be caused by something else.
--
WBR, wRAR
Stefano Rivera
2024-11-14 14:00:01 UTC
Reply
Permalink
Hi Matthias (2024.11.14_12:38:29_+0000)
Post by Matthias Urlichs
Successfully built moat_lib_codec-0.2.2-py3-none-any.whl
I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module
   dh_auto_test -O--buildsystem=pybuild
dh_auto_test: warning: Use of debian/compat is deprecated and will be removed in debhelper (>=14~).
I: pybuild base:311: cd /src/moat/lib/codec/.pybuild/cpython3_3.12_moat-lib-codec/build; python3.12 -m pytest tests
What I don't see there is what's failing. The package should have been
installed into build directory. But it won't have a .dist-info there, if
that matters.

What's not working? Where's the rest of this log?

Stefano
--
Stefano Rivera
http://tumbleweed.org.za/
+1 415 683 32
Matthias Urlichs
2024-11-17 11:20:01 UTC
Reply
Permalink
Hello,
Post by Stefano Rivera
Post by Matthias Urlichs
I: pybuild base:311: cd /src/moat/lib/codec/.pybuild/cpython3_3.12_moat-lib-codec/build; python3.12 -m pytest tests
What I don't see there is what's failing.
Well neither did I. The rest of the log showed a perfectly normal, if failing, test run;
the fact that it happened to use the system packages didn't even show up in the traceback.

I had to intentionally break a /usr/lib/python3/dist-packages/moat/lib/codec/__init__.py
in order to even prove that this happened, and posting the backtrace (in addition
to writing about it) didn't seem to add any useful information, thus I didn't.
Post by Stefano Rivera
The package should have been installed into build directory.
Yes, the package itself has been installed there. Looking into this further, the problem is the files that are *not* in the package.
Specifically, "moat/__init__.py" and "moat/lib/__init__.py" are not copied in from the source tree,
and without them Python refuses to recognize the copy.

Ugh.

Do we have any other namespaced packages in the archive? How do *they* handle this?

--
-- regards
--
-- Matthias Urlichs

Loading...