Immer wenn ich Paperwork (paperwork-gtk) starte, bricht das Programm mit einer Fehlermeldung ab. Hat das wer auch beobachtet? Gibt es eine Lösung?
Every time I launch Paperwork (paperwork-gtk), the program crashes with an error message. Has anyone else experienced this? Is there a solution?
[INFO ] [openpaperwork_core ] Loading plugin 'paperwork_backend.guesswork.label.sklearn' ...
Ungültiger Maschinenbefehl(Speicherabzug geschrieben) paperwork-gtk
Um die erste Frage zu beantworten: nein.
Ich habe paperwork-gtk mal fix auf einem aktuellen KDE-System installiert und weder unter X11 noch unter Wayland ein Problem beim Start. Hier mal ein Auszug der Ausgabe:
[INFO ] [openpaperwork_core ] Loading plugin 'paperwork_backend.guesswork.label.sklearn' ...
[INFO ] [openpaperwork_core ] Plugin 'paperwork_backend.guesswork.label.sklearn' loaded
[INFO ] [openpaperwork_core ] Examining dependencies of 'paperwork_backend.guesswork.label.sklearn' ...
[INFO ] [openpaperwork_core ] Initializing plugin '<class 'paperwork_backend.guesswork.label.sklearn.Plugin'>' ...
[INFO ] [paperwork_backend.guesswork.label.sklearn] Opening guesswork.label.sklearn database
[INFO ] [paperwork_backend.guesswork.label.sklearn] Transaction start: Guessing labels: False
[INFO ] [paperwork_backend.guesswork.label.sklearn] Committing
[INFO ] [paperwork_backend.guesswork.label.sklearn] Nothing to do. Training left unchanged.
[INFO ] [paperwork_backend.guesswork.label.sklearn] Pre-trained model not available. Re-training one
[INFO ] [paperwork_backend.guesswork.label.sklearn] Loading features of 1 documents for 1 labels
[INFO ] [paperwork_backend.guesswork.label.sklearn] Took 0ms to load features of 1 documents
[INFO ] [paperwork_backend.guesswork.label.sklearn] Training classifiers ...
[INFO ] [paperwork_backend.guesswork.label.sklearn] Closing guesswork.label.sklearn database
edlin
Vielen Dank für die Rückmeldung. Die Ausgabe "ungültiger Maschinenbefehl" hat mich im Nachhinein stutzig gemacht. Der Rechner ist mit einer PhenomII Cpu ausgestattet.
Ich habe hier zwei Alternativ-Systeme. Ein altes Notebook mit Core2Duo crashed ebenfalls und ist interessanterweise geschwätziger:
RuntimeError: NumPy was built with baseline optimizations:
(X86_V2) but your machine doesn't support:
(X86_V2).
Meine Interpretation: NumPy ist so compiliert, das es auf einer alten CPU nicht läuft und damit auch Paperwork nicht, das dieses Paket über die Abhängigkeiten braucht.
Die Gegenprobe mit einer Ryzen7 5800X CPU ist erfolgreich. Paperwork startet.
ärgerlich...
Die Frage nach der CPU wäre meine nächste gewesen. Der aktuelle Kernel unterstützt ja noch die Phenom II, so dass ich ebenfalls davon ausgehe, dass beim Kompilieren an den älteren CPUs vorbei optimiert wurde.
Ich würde da erst einmal noch ein paar Optionen testen. Paperwork bietet ja auch ein AppImage an. Das würde ich als erstes testen, danach das Flatpak.
Als letzte Option bleibt dann immer noch das Kompilieren aus dem Sourcecode.
Paperwork (https://www.openpaper.work/de/download/linux)
edlin
X86_V2 wird immer mehr Standard bei den Anwendungen, somit kann man solche alte HArdware mit einem Unstable bald nicht mehr sinnvoll betreiben.
@orinoco (https://forum.siduction.org/index.php?action=profile;u=658)
Ob python3-numpy die Ursache für die "illegal instruction" ist, kannst Du
folgendermaßen übeprüfen:
Folgende pakete sollten installiert sein:
$ dpkg -l|grep -e cython3 -e ninja-build -e python3-hypothesis -e meson
Falls nicht, bspw. mit
$ sudo apt-get install python3-hypothesis
nachinstallieren. Anschließend die numpy tests mit
$ python3
>>> import numpy
>>> numpy.test(label='slow')
ausführen. Ausgabe so ähnlich wie:
NumPy version 2.4.4
NumPy CPU features: X86_V2 X86_V3* X86_V4? AVX512_ICL? AVX512_SPR?
.............ss.s..................................................... [ 6%]
...
.............ss.s..................................................... [100%]
2630 passed, 187 skipped, 48337 deselected in 326.58s (0:05:26)
True
>>>
Falls es durchläuft, ist numpy nicht die Ursache, andernfalls kannst Du
python3-numpy anpassen, aber lass uns zunächst den Ausgang dieses Experiments
auf Deinen Rechnern wissen.
Das knallt schon beim Import:
$ python3
Python 3.13.12 (main, Feb 4 2026, 15:06:39) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Ungültiger Maschinenbefehl(Speicherabzug geschrieben) python3P.S.
Meine CPU ist X86_V1
@ orinoco (https://forum.siduction.org/index.php?action=profile;u=658)
> Das knallt schon beim Import: [...]
o.k. Dann exakt wo:
$ python3 -v
Zunächst kommt eine ganze Reihe von imports, die nicht weiter interessiert, anschließend nochmal:
>>> import numpy
Welche imports siehst Du noch kurz bevor numpy crashed?
Eines der Files
$ dpkg -L python3-numpy|grep 313|grep '\.so'
...
ist verantwortlich. Wechsle in das Verzeichnis /tmp und erzeuge dort ein Unterverzeichnis numpy:
$ cd /tmp; mkdir numpy; cd numpy
Hol' die Sourcen von python3-numpy:
$ apt-get source python3-numpy
$ cd numpy-2.4.4+ds
$ python3 vendored-meson/meson/meson.py setup build
$ cd build
$ ninja
$ find .|grep 313|grep '\.so'|xargs -n1 strip
Wenn das soweit funktioniert, ersetzt Du alle Files der Ausgabe
$ dpkg -L python3-numpy|grep 313|grep '\.so'
durch die von
$ find .|grep 313|grep '\.so$'|xargs -n1
Anschließend wieder ein
$ python3
>>> import numpy
Wie weit kommst Du?
Nachtrag: Ich hab' das Ganze 'mal auf einer VM ohne X86_V2 CPU support probiert.
Leider erkennt das meson Skript die fehlenden Features der CPU nicht und generiert
in Folge ein unbrauchbares Header File. Zwischen den obigen Zeilen
$ cd build
und
$ ninja
ist noch folgende Aktion erforderlich:
Die Zeilen
#define NPY_WITH_CPU_BASELINE "X86_V2"
und
#define NPY_WITH_CPU_BASELINE_N 1
in
/tmp/numpy/numpy-2.4.4+ds/build/meson_cpu/npy_cpu_dispatch_config.h
sind for dem Aufruf von ninja (und nach dem Aufruf von meson.py) noch durch
#define NPY_WITH_CPU_BASELINE "none"
und
#define NPY_WITH_CPU_BASELINE_N 0
zu ersetzen. Danach wird ">>> import numpy" auf der Machine ohne X86_V2
Support akzeptiert (Frag' mich nicht, wieso das nicht bei der Konfiguration
der Makefiles passiert, wenn es doch so leicht ist, die CPU Features zu
identifizieren und X86_V1 nach wie vor unterstützt wird).
O-Ren Ishii: "You didn't think it was gonna be that easy, did you?"
The Bride: "You know, for a second there, yeah, I kinda did."
O-Ren Ishii: "Silly rabbit."
The Bride: "Trix are..."
O-Ren Ishii: "...for kids"
Python-Shell verbose
$ python3 -v
>>> import numpy
# /usr/lib/python3/dist-packages/numpy/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/__init__.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/__init__.cpython-313.pyc'
# /usr/lib/python3/dist-packages/numpy/__pycache__/version.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/version.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/version.cpython-313.pyc'
import 'numpy.version' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c4ef0>
# /usr/lib/python3/dist-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_expired_attrs_2_0.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-313.pyc'
import 'numpy._expired_attrs_2_0' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c5130>
# /usr/lib/python3/dist-packages/numpy/__pycache__/_globals.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_globals.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_globals.cpython-313.pyc'
# /usr/lib/python3/dist-packages/numpy/_utils/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_utils/__init__.py
# code object from '/usr/lib/python3/dist-packages/numpy/_utils/__pycache__/__init__.cpython-313.pyc'
# /usr/lib/python3/dist-packages/numpy/_utils/__pycache__/_convertions.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_utils/_convertions.py
# code object from '/usr/lib/python3/dist-packages/numpy/_utils/__pycache__/_convertions.cpython-313.pyc'
import 'numpy._utils._convertions' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c5bb0>
import 'numpy._utils' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c5970>
import 'numpy._globals' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c5610>
# /usr/lib/python3/dist-packages/numpy/__pycache__/_distributor_init.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_distributor_init.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_distributor_init.cpython-313.pyc'
import 'numpy._distributor_init' # <_frozen_importlib_external.SourceFileLoader object at 0x7f06184c5730>
# /usr/lib/python3/dist-packages/numpy/__pycache__/__config__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/__config__.py
# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/__config__.cpython-313.pyc'
# /usr/lib/python3/dist-packages/numpy/_core/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_core/__init__.py
# code object from '/usr/lib/python3/dist-packages/numpy/_core/__pycache__/__init__.cpython-313.pyc'
# /usr/lib/python3/dist-packages/numpy/_core/__pycache__/multiarray.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_core/multiarray.py
# code object from '/usr/lib/python3/dist-packages/numpy/_core/__pycache__/multiarray.cpython-313.pyc'
Ungültiger Maschinenbefehl(Speicherabzug geschrieben) python3 -v
$ dpkg -L python3-numpy|grep 313|grep '\.so'
/usr/lib/python3/dist-packages/numpy/_core/_multiarray_tests.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_operand_flag_tests.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_rational_tests.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_simd.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_struct_ufunc_tests.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/_core/_umath_tests.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/fft/_pocketfft_umath.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/linalg/_umath_linalg.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/linalg/lapack_lite.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_common.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_generator.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_philox.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so
/usr/lib/python3/dist-packages/numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so
Nach Anpassung in meson_cpu/npy_cpu_dispatch_config.h
[color=#1818b2]/**[/color]
[color=#1818b2] * @def NPY_WITH_CPU_BASELINE[/color]
[color=#1818b2] * Enabled baseline features names as a single string where each is separated by a single space.[/color]
[color=#1818b2] * For example: "SSE SSE2 SSE3"[/color]
[color=#1818b2] * Required for logging purposes only.[/color]
[color=#1818b2] */[/color]
[color=#b218b2]#define NPY_WITH_CPU_BASELINE [/color][color=#b21818]"none"[/color]
[color=#1818b2]/**[/color]
[color=#1818b2] * @def NPY_WITH_CPU_BASELINE_N[/color]
[color=#1818b2] * Number of enabled baseline features.[/color]
[color=#1818b2] */[/color]
[color=#b218b2]#define NPY_WITH_CPU_BASELINE_N [/color]
Nach dem Build mit angepasster Header-Datei:
[color=#000000]$ find .|grep 313|grep '\.so'|xargs -n1 strip[/color]
[color=#000000]strip: Warning: './numpy/_core/_operand_flag_tests.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/_core/_umath_tests.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: ./numpy/_core/_umath_tests.cpython-313-x86_64-linux-gnu.so.p/_umath_tests.c: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/_core/_multiarray_tests.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_tests.cpython-313-x86_64-linux-gnu.so.p/_multiarray_tests.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_tests.cpython-313-x86_64-linux-gnu.so.p/templ_common.h: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/_core/_rational_tests.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/_core/_simd.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/matmul.h: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/funcs.inc: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/scalartypes.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/matmul.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/einsum_sumprod.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/npy_sort.h: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/arraytypes.h: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/templ_common.h: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/loops.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/loops.h: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/lowlevel_strided_loops.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/arraytypes.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/scalarmath.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/nditer_templ.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so.p/loops_utils.h: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/_core/_struct_ufunc_tests.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_sfc64.pyx.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_sfc64.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_bounded_integers.pyx.c.dep: file format not [/color]
[color=#000000]recognized[/color]
[color=#000000]strip: ./numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_bounded_integers.pyx.c: file format not reco[/color]
[color=#000000]gnized[/color]
[color=#000000]strip: Warning: './numpy/random/_philox.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_philox.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_philox.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_philox.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_philox.pyx.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_philox.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_philox.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/_generator.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_generator.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_generator.pyx.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_generator.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so.p/numpy/random/mtrand.pyx.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so.p/numpy/random/mtrand.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_pcg64.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_pcg64.pyx.c: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/_common.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_common.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_common.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_common.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_common.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_common.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_common.pyx.c: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random/bit_generator.pyx.c.dep: file format not recogniz[/color]
[color=#000000]ed[/color]
[color=#000000]strip: ./numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so.p/numpy/random/bit_generator.pyx.c: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so.p/numpy' is a directory[/color]
[color=#000000]strip: Warning: './numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so.p/numpy/random' is a directory[/color]
[color=#000000]strip: ./numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_mt19937.pyx.c: file format not recognized[/color]
[color=#000000]strip: ./numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so.p/numpy/random/_mt19937.pyx.c.dep: file format not recognized[/color]
[color=#000000]strip: Warning: './numpy/fft/_pocketfft_umath.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/linalg/lapack_lite.cpython-313-x86_64-linux-gnu.so.p' is a directory[/color]
[color=#000000]strip: Warning: './numpy/linalg/_umath_linalg.cpython-313-x86_64-linux-gnu.so.p' is a director[/color]
Nach dem Kopieren der 19 *.so Dateien
[color=#ff54ff][b]>>> [/b][/color][color=#000000]import numpy[/color]
[color=#000000]# possible namespace for /home/frank/Projekte/shell_scripts/numpy[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/__init__.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/__init__.cpython-313.pyc'[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/version.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/version.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/version.cpython-313.pyc'[/color]
[color=#000000]import 'numpy.version' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c4e90>[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_[/color]
[color=#000000]expired_attrs_2_0.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_expired_attrs_2_0.cpython-313.pyc'[/color]
[color=#000000]import 'numpy._expired_attrs_2_0' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c50d0>[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/_globals.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_globals.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_globals.cpython-313.pyc'[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/_utils/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_uti[/color]
[color=#000000]ls/__init__.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/_utils/__pycache__/__init__.cpython-313.pyc'[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/_utils/__pycache__/_convertions.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/[/color]
[color=#000000]_utils/_convertions.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/_utils/__pycache__/_convertions.cpython-313.pyc'[/color]
[color=#000000]import 'numpy._utils._convertions' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c5b50>[/color]
[color=#000000]import 'numpy._utils' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c5910>[/color]
[color=#000000]import 'numpy._globals' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c55b0>[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/_distributor_init.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_d[/color]
[color=#000000]istributor_init.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/_distributor_init.cpython-313.pyc'[/color]
[color=#000000]import 'numpy._distributor_init' # <_frozen_importlib_external.SourceFileLoader object at 0x7fc0950c56d0>[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/__pycache__/__config__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/__config_[/color]
[color=#000000]_.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/__pycache__/__config__.cpython-313.pyc'[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/_core/__pycache__/__init__.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_core[/color]
[color=#000000]/__init__.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/_core/__pycache__/__init__.cpython-313.pyc'[/color]
[color=#000000]# /usr/lib/python3/dist-packages/numpy/_core/__pycache__/multiarray.cpython-313.pyc matches /usr/lib/python3/dist-packages/numpy/_co[/color]
[color=#000000]re/multiarray.py[/color]
[color=#000000]# code object from '/usr/lib/python3/dist-packages/numpy/_core/__pycache__/multiarray.cpython-313.pyc'[/color]
[color=#000000]Ungültiger Maschinenbefehl(Speicherabzug geschrieben) python3 -[/color]
Es crashed wieder.
Bei der Ausgabe von Ninja ist mir aufgefallen
[color=#000000]Generating multi-targets for "[b]_umath_tests.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]argfunc.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]x86_simd_argsort.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3[/b][/color]
[color=#000000]Generating multi-targets for "[b]x86_simd_qsort.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3[/b][/color]
[color=#000000]Generating multi-targets for "[b]x86_simd_qsort_16bit.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]AVX512_SPR, AVX512_ICL[/b][/color]
[color=#000000]Generating multi-targets for "[b]highway_qsort.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color]
[color=#000000]Generating multi-targets for "[b]highway_qsort_16bit.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color]
[color=#000000]Generating multi-targets for "[b]loops_arithm_fp.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_arithmetic.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_comparison.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_exponent_log.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_hyperbolic.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_logical.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_minmax.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_modulo.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_trigonometric.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_umath_fp.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_unary.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_unary_fp.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_unary_fp_le.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_unary_complex.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V4, X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_autovec.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V3, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]loops_half.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]AVX512_SPR, X86_V4, baseline[/b][/color]
[color=#000000]Generating multi-targets for "[b]_simd.dispatch.h[/b]" [/color]
[color=#000000] Enabled targets: [/color][color=#54ff54][b]X86_V3, X86_V4, baseline[/b][/color]
Musste den Post wegen 20000 Zeichen-Limit splitten.
BTW weitere Programm meiner Installation, die wegen numpy nicht mehr starten:
Ein paar Sachen, die mir aufgefallen sind:
> #define NPY_WITH_CPU_BASELINE_N
sollte heißen:
#define NPY_WITH_CPU_BASELINE_N 0
> $ find .|grep 313|grep '\.so'|xargs -n1 strip
sollte heißen:
$ find .|grep 313|grep '\.so$'|xargs -n1 strip
(sonst wird versucht, nicht nur die auf ".so" endenden files zu strippen)
> Bei der Ausgabe von Ninja ist mir aufgefallen
Ist das nicht die Ausgabe von meson.py? Da ich nicht weiß, wie in meson.py
die baseline Option zu verändern ist, haben wir das halt nachträglich in der
von meson.py generierten Datei npy_cpu_dispatch_config.h manuell gemacht,
die wiederum von ninja verwendet wird, um die Compileroptionen
richtig zu setzen. Deshalb ist es nicht verwunderlich, die X86_V Optionen
in der von meson generierten header Datei noch zu sehen.
> >>> import numpy
> [...]
> Ungültiger Maschinenbefehl(Speicherabzug geschrieben) python3
Wenn ich ohne Modifikation numpy importiere (auf einer CPU ohne X86_V2 Support),
wird die Ausführung des import Befehls mit einer Fehlermeldung verweigert, während
bei Dir die Ausführung crashed. Kannst Du feststellen, ob auf Deiner anderen Maschine
ohne X86_V2 Support, die etwas gesprächiger war, sich nach obiger Prozedur
ein anderes Verhalten zeigt? Mglw. hat der ungültige Maschinenbefehl noch eine
andere Ursache, die es herauszufinden gilt (Ein Output von "$ cat /proc/cpuinfo"
(insb. die flags) ist vielleicht ebenfalls hilfreich).
Um festzustellen, ob die numpy *.so Files verantwortlich sind, kannst Du sie auch
vorübergehend mit "$ sudo mv /path/to/files/file.so /path/to/files/file.so.org" umbenennen.
Danach wieder mit "import numpy" kontrollieren, ob sich immer noch ein ungültiger
Maschinenbefehl beobachten lässt.
Soweit erst 'mal. Das Vorgehen ist zwar zeitraubend, führt uns aber nach endl. vielen
Schritten zur eigentlichen Ursache.
Ich finde es bedauerlich, dass die Entwickler ohne Vorwarnung oder Überprüfung
ein Paket wissentlich freigeben, welches zum Absturz führen muss, obwohl sich das
ohne große Anstrengung leicht verhindern ließe.
PS.:
Um die "illegale" Instruktion zu identifizieren können wir folgendes tun:
Starte python unter gdb mit dem unmodifizierten python3-numpy:
$ gdb python3
(gdb) run
>>> import numpy
Program received signal SIGILL, Illegal instruction.
0x0000555555555030 in ?? ()
(gdb) layout asm
Die erste Zeile gibt Dir das mnemo der Instruktion in assembler
Code.
(gdb) quit
Poste den Output dieser Zeilen.
Man kann sich die Modifikation der Header Datei ersparen, indem man statt
$ python3 vendored-meson/meson/meson.py setup build
einfach die Option -Dcpu-baseline="none" hintan fügt:
$ python3 vendored-meson/meson/meson.py setup build -Dcpu-baseline="none"
Außerdem sind die von Dir beobachteten "Enabled" Meldungen sogenannte dispatch
Optionen, deren Code dynamisch nur dann ausgeführt wird, wenn zur Laufzeit eine
dafür geeignete CPU erkannt wird. Auch die können für den ungültigen Machinenbefehl
nicht verantwortlich sein. Ich glaube, der gdb Versuch könnte uns weiter bringen.
Vorab: Ich habe das Numpy-Module gemäß der Beschreibung von Teriarch gebaut. Das kommt im Text unten vielleicht nicht so deutlich raus.
Ich habe jetzt das Testsystem gewechselt, weil dort die fehlenden CPU-Fähigkeiten besser abgefangen werden.
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 36 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz
CPU family: 6
Model: 23
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
Stepping: 6
Microcode version: 0x60f
Frequency boost: enabled
CPU(s) scaling MHz: 32%
CPU max MHz: 2501,0000
CPU min MHz: 800,0000
BogoMIPS: 4985,87
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse s
se2 ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl cpuid aperfmperf pni dtes6
4 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 lahf_lm pti tpr_shadow flexpriority vpid dther
m ida vnmi
Das Numpy-Modul wird anstandslos geladen. Der Test (numpy.test(label='slow') wird vom Kernel bei ca 80% gekillt, weil RAM und Swap (jeweils 8GB) aufgebraucht sind. Mein Urlaubs-Notebook halt.
Paperwork funktioniert auch. Ein paar PDFs konnten probehalber erfolgreich importiert werden.
Ich werde die Tests jetzt wieder auf dem ursprünglichen System fortsetzen.
Jetzt bin ich wieder auf dem ursprünglichen Rechner und habe Numpy wieder selbst kompiliert.
Architektur: x86_64
CPU Operationsmodus: 32-bit, 64-bit
Adressgrößen: 48 bits physical, 48 bits virtual
Byte-Reihenfolge: Little Endian
CPU(s): 6
Liste der Online-CPU(s): 0-5
Anbieterkennung: AuthenticAMD
Modellname: AMD Phenom(tm) II X6 1055T Processor
Prozessorfamilie: 16
Modell: 10
Thread(s) pro Kern: 1
Kern(e) pro Sockel: 6
Sockel: 1
Stepping: 0
Microcode-Version: 0x10000dc
Übertaktung: aktiviert
Skalierung der CPU(s): 42%
Maximale Taktfrequenz der CPU: 2800,0000
Minimale Taktfrequenz der CPU: 800,0000
BogoMIPS: 5624,76
Markierungen: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt cpb hw_pstate vmmcall npt lbrv svm_lock nrip_save pausefilter
Mit dem gdb bekomme ich folgende Ausgabe
$ gdb python3
GNU gdb (Debian 17.2-1) 17.2
Copyright (C) 2025 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python3...
(No debugging symbols found in python3)
(gdb) run
Starting program: /usr/bin/python3
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/x86_64-linux-gnu/libthread_db.so.1".
Python 3.13.12 (main, Feb 4 2026, 15:06:39) [GCC 15.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
[New Thread 0x7fffc39ff6c0 (LWP 43485)]
[New Thread 0x7fffc31fe6c0 (LWP 43486)]
[New Thread 0x7fffc29fd6c0 (LWP 43487)]
[New Thread 0x7fffc21fc6c0 (LWP 43488)]
[New Thread 0x7fffc19fb6c0 (LWP 43489)]
Thread 1 "python3" received signal SIGILL, Illegal instruction.
0x00007ffff682d07f in ?? () from /usr/lib/python3/dist-packages/numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so
(gdb)layout asm liefert
>0x7ffff682d07f pinsrq $0x1,0x87adee(%rip),%xmm0 # 0x7ffff70a7e78
0x7ffff682d08a mov %fs:0x28,%rax
0x7ffff682d093 mov %rax,0x458(%rsp)
0x7ffff682d09b xor %eax,%eax
0x7ffff682d09d mov %rsi,0x78(%rsp)
0x7ffff682d0a2 lea 0x2a6f67(%rip),%rax # 0x7ffff6ad4010
0x7ffff682d0a9 movl $0x1,0x20(%rsp)
0x7ffff682d0b1 movq $0x0,0x30(%rsp)
0x7ffff682d0ba mov %rcx,0x28(%rsp)
0x7ffff682d0bf movl $0x2,0x48(%rsp)
0x7ffff682d0c7 movq $0x0,0x58(%rsp)
0x7ffff682d0d0 mov %rdx,0x50(%rsp)
0x7ffff682d0d5 movl $0x3,0x70(%rsp)
0x7ffff682d0dd movq $0x0,0x80(%rsp)
0x7ffff682d0e9 movl $0x4,0x98(%rsp)
0x7ffff682d0f4 movq $0x0,0xa8(%rsp)
0x7ffff682d100 movups %xmm0,0x38(%rsp)
0x7ffff682d105 movaps %xmm0,0x60(%rsp)
0x7ffff682d10a movups %xmm0,0x88(%rsp)
0x7ffff682d112 mov %rdi,0xa0(%rsp)
0x7ffff682d11a mov %r14,0x168(%rsp)
0x7ffff682d122 lea 0x2a7aa7(%rip),%r14 # 0x7ffff6ad4bd0
0x7ffff682d129 mov %r14,0x190(%rsp)
0x7ffff682d131 lea 0x2a9fb8(%rip),%r14 # 0x7ffff6ad70f0
Laut AMD (https://docs.amd.com/api/khub/documents/ioQiNhSqxlMkRaU~IyGQYQ/content): PINSRQ SSE4.1
Hier fehlt wohl trotz angepasster Baseline ein weiterer Maschinenbefehl, den der C2D schon hat. Daher wohl die unterschiedlichen Fehlermeldungen beim Import. Beim C2D kommt es beim Import wenigstens noch bis zum CPU-Check. Beim PhenomII kracht es vorher schon, wegen des fehlenden SSE4.1 Befehlssatzes.
s.u.
Das ist seltsam. Laut Spezifikation ist die Instruktion pinsrq, an der es wohl scheitert Teil des
X86_V2 Befehlssatzes (da enthalten in SSE4.1), aber nicht Teil von X86_V1, der mit der Option
-Dcpu-baseline="none" ausschließlich verwendet werden sollte (alle dispatch Optionen müssen
vor ihrer Verwendung ohne Benutzung von X86_V2 überprüft werden). Hier scheint es sich wohl
um einen Bug in python3-numpy zu handeln. Schalte versuchsweise auf der ältern Maschine bei
der Übersetzung mit
$ python3 vendored-meson/meson/meson.py setup build -Dcpu-baseline="none" -Dcpu-dispatch="none"
auch noch die dispatch Optionen ab und schau', was dann passiert.
Oh, oh,
mir war ein Fehler unterlaufen. Ich hatte vergessen, die kompilierten Libs in die entsprechenden Ordner zu kopieren. Das habe ich noch nachgeholt und jetzt wird Numby importiert und der Test läuft durch:
2630 passed, 187 skipped, 49021 deselected in 1473.39s (0:24:33)
True
Und der Real-Life-Test bestätigt: Paperwork, Cura und FreeCAD starten wieder.
> Und der Real-Life-Test bestätigt: Paperwork, Cura und FreeCAD starten wieder.
Sehr gut. Ich empfehle, die Einzelschritte, die sich noch in der History der beiden Rechner
(und sich noch frisch in Deinem Kopf) befinden, zu speichern (oder in ein Shell Skript zu
verwandeln), damit beim nächsten Update von python3-numpy alles etwas schneller geht
(Ich hatte ein ähnliches Problem, da das alte Debian Sage Computer Algebra System auf die
python 3.11 Module angewiesen ist und diese in dem Standardpaket von Numpy nicht mehr
zur Verfügung gestellt werden).
Du wirst lachen...
#!/usr/bin/env bash
# CPU-Typ
lscpu > 01_cpuinfo.txt
# Abhängigkeiten installieren
dpkg -l|grep -e cython3 -e ninja-build -e python3-hypothesis -e meson
sudo apt -V install meson cython3 python3-hypothesis
# Quelltext laden
mkdir ./src
cd ./src
apt-get source python3-numpy | tee ../02_get_numpy_src.txt
cd numpy-2.4.4+ds
# compilieren
python3 vendored-meson/meson/meson.py setup build -Dcpu-baseline="none" | tee ../../03_meson_output.txt
cd build
ninja
find . | grep 313 | grep -e '\.so$' | xargs -n1 strip -v
und
#!/usr/bin/env bash
# root?
if [ "$(id -u)" != 0 ]; then
echo "Ohne root-Rechte geht nix" 2>&1
exit 1
fi
# Parameter
if [ "$1" == "do" ]; then
echo "Sichere alte Bibliotheken und kopiere die neuen"
if [ -d ./backup ]; then
echo "Es existiert noch ein Backup"
exit 3
fi
mkdir ./backup
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_multiarray_tests.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_multiarray_umath.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_operand_flag_tests.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_rational_tests.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_simd.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_struct_ufunc_tests.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/_core/_umath_tests.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/fft/_pocketfft_umath.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/linalg/lapack_lite.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/linalg/_umath_linalg.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/bit_generator.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_bounded_integers.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_common.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_generator.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_mt19937.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/mtrand.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_pcg64.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_philox.cpython-313-x86_64-linux-gnu.so ./backup/
cp -dp /usr/lib/python3/dist-packages/numpy/random/_sfc64.cpython-313-x86_64-linux-gnu.so ./backup/
find ./src -name _multiarray_tests.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _multiarray_umath.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _operand_flag_tests.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _rational_tests.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _simd.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _struct_ufunc_tests.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _umath_tests.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/_core/ \;
find ./src -name _pocketfft_umath.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/fft/ \;
find ./src -name lapack_lite.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/linalg/ \;
find ./src -name _umath_linalg.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/linalg/ \;
find ./src -name bit_generator.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _bounded_integers.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _common.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _generator.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _mt19937.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name mtrand.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _pcg64.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _philox.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
find ./src -name _sfc64.cpython-313-x86_64-linux-gnu.so -exec cp -dp {} /usr/lib/python3/dist-packages/numpy/random/ \;
elif [ "$1" == "undo" ]; then
echo "Restauriere die alten Bibliotheken"
if [ ! -d ./backup ]; then
echo "Kein Backup gefunden"
exit 4
fi
cp -dp ./backup/_multiarray_tests.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_multiarray_umath.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_operand_flag_tests.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_rational_tests.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_simd.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_struct_ufunc_tests.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_umath_tests.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/_core/
cp -dp ./backup/_pocketfft_umath.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/fft/
cp -dp ./backup/lapack_lite.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/linalg/
cp -dp ./backup/_umath_linalg.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/linalg/
cp -dp ./backup/bit_generator.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_bounded_integers.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_common.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_generator.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_mt19937.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/mtrand.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_pcg64.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_philox.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
cp -dp ./backup/_sfc64.cpython-313-x86_64-linux-gnu.so /usr/lib/python3/dist-packages/numpy/random/
else
echo "Nur do und undo sind erlaubt"
exit 2
fi
Spätestens beim dritten Eintippen schreibe ich mir immer en Skript.
Und natürlich vielen Dank für die Unterstützung.