** Description changed:

+ [Original Description/Impact]
+ 
  dh-python in Noble, on architectures other than amd64, renames libdnf
  binary modules and breaks them:
  
  I: dh_python3 fs:418: renaming _module.so to
  _.cpython-312-aarch64-linux-gnu.so
  
  https://launchpadlibrarian.net/722671993/buildlog_ubuntu-noble-
  arm64.libdnf_0.69.0-2.3build3_BUILDING.txt.gz
  
  https://packages.ubuntu.com/noble/arm64/python3-libdnf/filelist
  
  /usr/lib/python3/dist-packages/libdnf/_.cpython-312-aarch64-linux-gnu.so
  
  On amd64 it ships the module named as intended:
  
  https://packages.ubuntu.com/noble/amd64/python3-libdnf/filelist
  
  /usr/lib/python3/dist-packages/libdnf/_module.cpython-312-x86_64-linux-
  gnu.so
  
- 
  This causes dnf to break on arm64:
  
  Traceback (most recent call last):
-   File "/usr/bin/dnf", line 61, in <module>
-     from dnf.cli import main
-   File "/usr/lib/python3/dist-packages/dnf/__init__.py", line 30, in <module>
-     import dnf.base
-   File "/usr/lib/python3/dist-packages/dnf/base.py", line 29, in <module>
-     import libdnf.transaction
-   File "/usr/lib/python3/dist-packages/libdnf/__init__.py", line 13, in 
<module>
-     from . import module
-   File "/usr/lib/python3/dist-packages/libdnf/module.py", line 10, in <module>
-     from . import _module
+   File "/usr/bin/dnf", line 61, in <module>
+     from dnf.cli import main
+   File "/usr/lib/python3/dist-packages/dnf/__init__.py", line 30, in <module>
+     import dnf.base
+   File "/usr/lib/python3/dist-packages/dnf/base.py", line 29, in <module>
+     import libdnf.transaction
+   File "/usr/lib/python3/dist-packages/libdnf/__init__.py", line 13, in 
<module>
+     from . import module
+   File "/usr/lib/python3/dist-packages/libdnf/module.py", line 10, in <module>
+     from . import _module
  ImportError: cannot import name '_module' from partially initialized module 
'libdnf' (most likely due to a circular import) 
(/usr/lib/python3/dist-packages/libdnf/__init__.py)
  
- 
- Github Actions enable arm64 using Ubuntu 24.04 images yesterday, so this 
issue is starting to show up when building rpm-based images (fedora/centos) on 
Ubuntu 24.04 arm64 on Github as part of CI systems.
+ Github Actions enable arm64 using Ubuntu 24.04 images yesterday, so this
+ issue is starting to show up when building rpm-based images
+ (fedora/centos) on Ubuntu 24.04 arm64 on Github as part of CI systems.
  
  The issue was already fixed in Debian, but didn't make it in Noble:
  
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068255
  
  https://salsa.debian.org/python-team/tools/dh-
  python/-/commit/5406e503c4428ae3b019f2078146a1ea2dfc2fa5
  
  It would be great to update dh-python in Noble, and do a binary rebuild
  of libdnf to fix this issue.
+ 
+ [Test Plan]
+ 
+ * On a non-amd64 host running Ubuntu 24.04, install and run dnf:
+ 
+ $ dpkg --print-architecture
+ $ apt install -y dnf
+ $ dnf
+ 
+ * Without the bug, the help output should be displayed. With the bug, an
+ ImportError will be thrown.
+ 
+ * For good measure, the package contents should be listed to confirm
+ naming is correct:
+ 
+ $ dpkg -L python3-libdnf
+ 
+ [Other information]
+ 
+ The root cause of this bug is in dh-python, and is fixed in oracular and
+ newer. While the *best* fix would be to fix dh-python directly, and
+ rebuild affected packages, it seems that libdnf is the only affected
+ package. Hence, to simplify the fix, the workaround approach is
+ preferred.
+ 
+ In order for a package to be affected, it would have had to be built in
+ noble after dh-python 6.20240401 was uploaded, *AND* ship a file named
+ _module.cpython-312-*.so. On an amd64 host running noble, I see only
+ libdnf meeting this criteria:
+ 
+ nr@six:~$ apt-file search /_module.cpython
+ python3-libdnf: 
/usr/lib/python3/dist-packages/libdnf/_module.cpython-312-x86_64-linux-gnu.so
+ 
+ [Where problems could occur]
+ 
+ The patch is in d/rules, and copies the incorrectly named _.cpython-*.so
+ to _module.cpython-*.so instead. I.e., manually fixing the incorrect
+ renaming. An error in this logic would result in either (a) the build
+ failing, or (b) the bug not being fixed at all.

** Changed in: libdnf (Ubuntu)
       Status: New => Fix Released

** Changed in: dh-python (Ubuntu)
       Status: New => Fix Released

** Changed in: libdnf (Ubuntu Noble)
       Status: Confirmed => In Progress

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2095168

Title:
  dh-python: dh_python3 loses cpython module name when renaming shared
  object

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dh-python/+bug/2095168/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to