summaryrefslogtreecommitdiff
path: root/dev-python/cysignals/files/cysignals-1.11.4-helper.patch
blob: 0c09f236eccbdad4abd40dafa615e3510e10df0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
From 2abd7ef94775b3320b6f1954b55168e06da0e6b3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 6 Jul 2024 13:06:49 +0200
Subject: [PATCH] Install cysignals-CSI-helper as package data for better
 portability

Rather than installing `cysignals-CSI-helper.py` into a `share`
directory and then trying to figure out the correct path to it, install
it as Python package data and use the standard `importlib.resources`
API to access it.  For Python versions older than 3.9,
the `importlib_resources` backport is used instead.

Fixes #200
---
 setup.py                                      |  4 +++-
 .../cysignals-CSI-helper.py                   |  0
 src/scripts/cysignals-CSI                     | 20 ++++++++++---------
 3 files changed, 14 insertions(+), 10 deletions(-)
 rename src/{scripts => cysignals}/cysignals-CSI-helper.py (100%)

diff --git a/setup.py b/setup.py
index 7953170..7154a4a 100755
--- a/setup.py
+++ b/setup.py
@@ -215,7 +215,6 @@ setup(
     packages=["cysignals"],
     package_dir={"": "src"},
     package_data={"cysignals": ["*.pxd", "*.h"]},
-    data_files=[(opj("share", "cysignals"), [opj("src", "scripts", "cysignals-CSI-helper.py")])],
     scripts=glob(opj("src", "scripts", "cysignals-CSI")),
     cmdclass=dict(
         configure=configure,
@@ -223,4 +222,7 @@ setup(
         build_ext=build_ext,
         bdist_egg=no_egg
     ),
+    install_requires=[
+        "importlib_resources; python_version < '3.9'",
+    ],
 )
diff --git a/src/scripts/cysignals-CSI-helper.py b/src/cysignals/cysignals-CSI-helper.py
similarity index 100%
rename from src/scripts/cysignals-CSI-helper.py
rename to src/cysignals/cysignals-CSI-helper.py
diff --git a/src/scripts/cysignals-CSI b/src/scripts/cysignals-CSI
index dd8b4e6..3896dca 100755
--- a/src/scripts/cysignals-CSI
+++ b/src/scripts/cysignals-CSI
@@ -41,6 +41,11 @@ from argparse import ArgumentParser
 from datetime import datetime
 from distutils.spawn import find_executable
 
+if sys.version_info >= (3, 9):
+    import importlib.resources as importlib_resources
+else:
+    import importlib_resources
+
 
 def pid_exists(pid):
     """
@@ -65,15 +70,12 @@ def gdb_commands(pid, color):
     cmds += b'import sys; sys.stdout.flush()\n'
     cmds += b'end\n'
     cmds += b'bt full\n'
-    cysignals_share = os.path.join(os.path.dirname(sys.argv[0]), '..',
-                                   'share', 'cysignals')
-    script = os.path.join(cysignals_share, 'cysignals-CSI-helper.py')
-    with open(script, 'rb') as f:
-        cmds += b'python\n'
-        cmds += b'color = %r; ' % color
-        cmds += b'sys_path = %r; ' % sys.path
-        cmds += f.read()
-        cmds += b'end\n'
+    script = importlib_resources.files('cysignals') / 'cysignals-CSI-helper.py'
+    cmds += b'python\n'
+    cmds += b'color = %r; ' % color
+    cmds += b'sys_path = %r; ' % sys.path
+    cmds += script.read_bytes()
+    cmds += b'end\n'
     cmds += b'detach inferior 1\n'
     cmds += b'quit\n'
     return cmds
-- 
2.45.2