ThKattanek / emu64

C64 Emulator
https://www.thorsten-kattanek.de/index.php/projekte/emu64
GNU General Public License v2.0
38 stars 6 forks source link

"make install" ruft "strip" bei allen files auf #221

Closed mrdudz closed 2 years ago

mrdudz commented 2 years ago

sicher nur ein kosmetisches problem, aber auch nicht die feine englische Art :)

ThKattanek commented 2 years ago

Stimmt jetzt wo du es sagst. :) Verstehe ich gar nicht, sollte ja nur beim bin file Sinn machen. Muss ich mal schauen wie ich qmake dazu bringe das nicht bei allen Dateien zu machen. Muss ich mir mal die pro Datei genauer anschauen.

Zirias commented 2 years ago

Das war durch Verkettung seltsamer Umstände sogar schon mal ein Problem beim Testen des FreeBSD ports. Das strip tool hinterlässt temporäre Files im Fehlerfall, und die sorgen dann für Fehler wenn der Inhalt der staging-area mit den Angaben in pkg-plist (wo die Dateien drin stehen, die ins Package gehören) verglichen wird.

Hab es bisher ignoriert, weil es tatsächlich mehr ein "Schönheitsfehler" ist. Aber ein Fix wäre in der Tat nett ;)

ThKattanek commented 2 years ago

Ich schaue es mir gerade an und durchstöber die qmake Manual :)

ThKattanek commented 2 years ago

Am Ende hat es gereicht in der emu64.pro zu CONFIG "nostrip" hinzuzufügen. Nun wird bei make install kein strip mehr ausgeführt.

ThKattanek commented 2 years ago

Erledigt!

Zirias commented 2 years ago

Öh, Sekunde. Binaries sollten gestrippt sein. Funktioniert das noch?

Zirias commented 2 years ago

BTW, will niemanden nerven. Es gibt (leider) mehr als genug Projekte, die das Thema komplett ignorieren, dann kümmert sich halt der jeweilige Mainteiner eines Linux-Package oder BSD-Ports darum, dass die binaries gestrippt werden. Aber schöner/richtiger ist es, wenn das upstream Buildsystem das macht.

Einfach testbar ist das Resultat mit dem Tool file -- das gibt bei binaries unter anderem stripped oder non-stripped aus :)

ThKattanek commented 2 years ago

Wie kann ich das überprüfen? Ich dachte wenn man ein release erstellt sind ja eh keine Symbole mit bei. Also würde ja srip eh nichts mehr entfernen können. Ich hatte geschaut und die binarys sind unter linux und windows kleiner als die debug varianten.

ThKattanek commented 2 years ago

Antwort kam mal wieder schneller wie ich sie gestellt habe :)

ThKattanek commented 2 years ago
file ./emu64
./emu64: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7070518c20504a6f5a0ceb8691ee3758debb269d, for GNU/Linux 3.2.0, not stripped
Zirias commented 2 years ago

Symbole für Funktionen und "static" data sind leider immer da ;) Weitergehende Symbole (Referenzen zur source-line, Namen lokaler variablen, usw) sind nur in "debug" builds da. Aber alle diese Symbole sind überflüssig wenn man nicht debuggen will ;)

Deshalb ist "strippen" best practice ....

Und ja, in deiner Ausgabe steht am Ende "not stripped", das heißt die Symbols für Funktionen etc sind noch drin...

ThKattanek commented 2 years ago

Wer richtig lesen kann ist klar im Vorteil ;)

ThKattanek commented 2 years ago

Ich schaue mal, ich glaube man kann das speziell für ein File angeben. Meld mich wenn ich es gefunden habe. :)

Zirias commented 2 years ago

Übrigens erinnere ich mich, dass ich damals, als ich über dieses Problem gestolpert bin, nach kurzer Recherche kein Bock hatte herauszufinden, wie man das mit "qmake" richtig macht :-D Naja, viel Spaß, und danke fürs analysieren.

ThKattanek commented 2 years ago

Hab's rausgefunden und funktioniert jetzt. Der Trick ist "nostrip" nicht Global in CONFIG zu setzen sondern nur für die jeweilige Resource:

Bsp.: roms.CONFIG += nostrip

Hier mein Ergebnis bei make install


make install
cd src/ && ( test -e Makefile || /usr/lib/qt5/bin/qmake -o Makefile /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/src/src.pro -spec linux-g++ PREFIX=/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux ) && make -f Makefile install
make[1]: Verzeichnis „/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/Desktop_Qt_5_12_4_GCC_64bit_System/Release/src“ wird betreten
/usr/lib/qt5/bin/qmake -install qinstall -exe emu64 /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/bin/emu64
strip /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/bin/emu64
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/1541.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/1541.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/basic.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/basic.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/char.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/char.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/roms/kernal.rom /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/roms/kernal.rom
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/anschlag.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/anschlag.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/hinweis.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/hinweis.txt
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor_off.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor_off.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/motor_on.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/motor_on.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/stepper_dec.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/stepper_dec.raw
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/floppy_sounds/stepper_inc.raw /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/floppy_sounds/stepper_inc.raw
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/kreis0.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/kreis0.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/kreis1.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/kreis1.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/pfeil0.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/pfeil0.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/pfeil1.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/pfeil1.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/sdl_icon.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/gfx/sdl_icon.png
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/kommandozeilenparameter.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/kommandozeilenparameter.txt
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/hotkeys.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/hotkeys.txt
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/LICENSE /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/LICENSE
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/änderungen.txt /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/doc/emu64/änderungen.txt
install -m 644 -p .qm/emu64_de.qm /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages; install -m 644 -p .qm/emu64_en.qm /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages;
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/flaggen/emu64_de.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages/emu64_de.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/flaggen/emu64_en.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/emu64/languages/emu64_en.png
/usr/lib/qt5/bin/qmake -install qinstall /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/grafik/emu64.png /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/icons/hicolor/64x64/apps/emu64.png
/usr/lib/qt5/bin/qmake -install qinstall -exe /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/src/emu64.desktop /home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/install_linux/share/applications/emu64.desktop
make[1]: Verzeichnis „/home/thorsten/Programmierung/Aktuelle_Projekte/emu64/build/Desktop_Qt_5_12_4_GCC_64bit_System/Release/src“ wird verlassen`
ThKattanek commented 2 years ago

file ./emu64
./emu64: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7070518c20504a6f5a0ceb8691ee3758debb269d, for GNU/Linux 3.2.0, stripped
Zirias commented 2 years ago

Cool. Ist emu64 das einzige binary? Also keine shared libs / plugins und dergleichen? Wenn ja: fixed!

Wird mir definitiv helfen beim nächsten update des FreeBSD ports, danke ;)

ThKattanek commented 2 years ago

emu64 ist die einzige Binary die erzeugt wird. :)

ThKattanek commented 2 years ago

Fixed!