]> TLD Linux GIT Repositories - packages/rpm.git/commitdiff
- missing patches
authorMarcin Krol <hawk@tld-linux.org>
Sat, 2 Apr 2022 14:02:27 +0000 (16:02 +0200)
committerMarcin Krol <hawk@tld-linux.org>
Sat, 2 Apr 2022 14:02:27 +0000 (16:02 +0200)
no-exe-for-elf-req.patch [new file with mode: 0644]
python-3.10-abi.patch [new file with mode: 0644]

diff --git a/no-exe-for-elf-req.patch b/no-exe-for-elf-req.patch
new file mode 100644 (file)
index 0000000..3aa7b0f
--- /dev/null
@@ -0,0 +1,12 @@
+--- rpm-4.16.1.3/tools/elfdeps.c.orig  2020-05-28 12:04:25.084136944 +0200
++++ rpm-4.16.1.3/tools/elfdeps.c       2022-03-23 11:19:01.656202339 +0100
+@@ -300,7 +300,8 @@
+     if (ehdr->e_type == ET_DYN || ehdr->e_type == ET_EXEC) {
+       ei->marker = mkmarker(ehdr);
+       ei->isDSO = (ehdr->e_type == ET_DYN);
+-      ei->isExec = (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
++      //ei->isExec = (st.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH));
++      ei->isExec = 1;
+       processProgHeaders(ei, ehdr);
+       processSections(ei);
diff --git a/python-3.10-abi.patch b/python-3.10-abi.patch
new file mode 100644 (file)
index 0000000..4842b5d
--- /dev/null
@@ -0,0 +1,60 @@
+From d12e039037bf9a7d22d51bf1cc5925525a945ddf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Mon, 19 Apr 2021 20:33:33 +0200
+Subject: [PATCH] Fix python(abi) generator (the one written in Python)
+
+There were three problems:
+
+ - sys.version was not imported
+ - sys.version[:3] is not reliable on Python 3.10+
+ - distutils is deprecated on Python 3.10+
+
+We were not hit by the missing import in Fedora because we only run the script
+on .dist-info/.egg-info/.egg and not on .py files, so this if-branch never runs.
+
+But when the script was fed with a .py path, it errored:
+
+    Traceback (most recent call last):
+      File "/usr/lib/rpm/pythondistdeps.py", line 344, in <module>
+        purelib = get_python_lib(standard_lib=0, plat_specific=0).split(version[:3])[0]
+    NameError: name 'version' is not defined
+
+The sys.version[:3] thing kinda works for Python 3.10+ because *in this
+particular case* splitting on '3.1' and taking the prefix yields the same
+results as splitting on '3.10', but I consider that mere coincidence.
+
+Finally, since the distutils import happened at module-level,
+we got the Deprecation warning in all Fedora's Python packages:
+
+    /usr/lib/rpm/pythondistdeps.py:16: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12
+---
+ scripts/pythondistdeps.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/scripts/pythondistdeps.py b/scripts/pythondistdeps.py
+index 4e178c0..1f81c19 100755
+--- a/scripts/pythondistdeps.py
++++ b/scripts/pythondistdeps.py
+@@ -13,8 +13,8 @@
+ from __future__ import print_function
+ import argparse
+ from os.path import basename, dirname, isdir, sep
+-from sys import argv, stdin, version
+-from distutils.sysconfig import get_python_lib
++from sys import argv, stdin, version, version_info
++from sysconfig import get_path
+ from warnings import warn
+@@ -287,8 +287,9 @@ def get_marker_env(dist, extra):
+         if py_abi and (lower.endswith('.py') or lower.endswith('.pyc') or lower.endswith('.pyo')):
+             if name not in py_deps:
+                 py_deps[name] = []
+-            purelib = get_python_lib(standard_lib=0, plat_specific=0).split(version[:3])[0]
+-            platlib = get_python_lib(standard_lib=0, plat_specific=1).split(version[:3])[0]
++            running_python_version = '{}.{}'.format(*version_info[:2])
++            purelib = get_path('purelib').split(running_python_version)[0]
++            platlib = get_path('platlib').split(running_python_version)[0]
+             for lib in (purelib, platlib):
+                 if lib in f:
+                     spec = ('==', f.split(lib)[1].split(sep)[0])