Makefile.in:
Code:
227 # Fix configure and/or libtool scripts to prevent RPATH from being hardcoded.
228 # Based on ideas provided on http://wiki.debian.org/RpathIssue.
toolchain.in:
Code:
390 config FREETZ_RPATH
391 string "FREETZ_RPATH"
392 default "/usr/lib/freetz"
393 help
394 A run-time search path (a colon-separated list of directories) to be hard-coded
395 in all binaries/libraries compiled using Freetz toolchain.
396
397 What is this needed for?
398 Freetz provides some libraries (e.g. OpenSSL, Zlib, SQLite) which are also used
399 by AVM in the original firmware. Freetz versions of these libraries are not (always)
400 compatible with the AVM ones (Freetz might use a higher version number, a deviating
401 configuration, different compiler settings, etc.). In order to avoid collisions
402 with the AVM versions of the libraries Freetz libraries are put in a non-standard
403 directory (non-standard from the dynamic loader point of view). This option allows
404 the user to set this directory - it will be the 1st element of FREETZ_RPATH.
405
406 Note: If you do NOT plan to flash the Freetz image and use the Freetz toolchain
407 just for compiling the binaries/libraries then you can also set this option
408 to one of the standard dynamic loader search paths (/usr or /usr/lib).
409 In this case the resulting binaries/libraries won't contain an RPATH entry.
Line 409 "warnt" ja wohl ausdrücklich davor, daß bei Verwendung von "Standardpfaden" für FREETZ_RPATH gar kein RPATH-Entry im Binary landet, oder? Jedenfalls verstehe ich die Aussage so ...
Ich weiß zwar nicht (und will es auch gar nicht wissen, solange es für mich selbst keine wirkliche Bedeutung hat), was Freetz im Einzelnen mit RPATH macht. Ich weiß, daß es irgendwo im Makefile die Einträge in "FREETZ_RPATH" auseinanderpflückt und untersucht bzw. auch umbaut und ich kenne das Makro "
PREVENT_RPATH_HARDCODING" - auch wenn letzteres wohl explizit aufgerufen werden muß und nicht in "PKG_INIT_{BIN|LIB}" implizit eingeschlossen wird? Wer sich ein Makefile mit einem solchen Aufruf als Template für ein eigenes Paket ausgesucht hat, der muß dann eben auch aufpassen, daß er - sofern vorhanden - einen solchen Aufruf ebenfalls entfernt - ansonsten patcht Freetz ihm die RPATH-Option direkt aus den "autoconf"-Files (primär wohl aus "configure") heraus, wenn ich das richtig lese.
Wenn ich
ein eigenes Paket (das nicht zum Freetz-Portfolio gehört) für die Benutzung von RPATH konfiguriere (und das Paket unter der Freetz-Toolchain übersetzt werden soll, aber nichts mit "FREETZ_RPATH" am Hut hat und eine eigene Definition der Suchpfade verwendet), dann muß ich - sofern ich den "Hinweis" richtig interpretiere - unter der Freetz-Toolchain parallel noch dafür sorgen, daß FREETZ_RPATH auch auf irgendetwas "Unnormales" gesetzt ist ... ansonsten (bei /usr oder /usr/lib) entfernt der Konfigurationsprozess unter Freetz (ich würde mal annehmen, über die entsprechende Site-Konfiguration und offensichtlich "fummelt" das Makefile ja auch an "configure" bzw. "libtool" herum oder versucht es zumindest) die notwendigen Linker-Optionen wieder aus den Flags.
Wenn das nicht die Aussage des Hinweises (ab Zeile 406) sein soll, halte ich ihn für mißverständlich formuliert und das "
prevent RPATH hardcoding" im Make-Kontext für eine merkwürdige und Mißverständnisse heraufbeschwörende Wortwahl ... mein "NICHT rauspatchen lassen" bezog sich jedenfalls auf die mit diesen Hinweisen und Fundstellen bei mir assoziierten Vorgänge, auch wenn ich da nicht weiter gesucht habe, wie die im Einzelnen realisiert sind oder was sie bewirken.
Da ich überwiegend statisch linke, damit die Programme (a) schnell zu installieren und (b) universeller auszuführen sind (die Größe interessiert mich erst dann, wenn die Images die 40 MB-Grenze reißen), juckt es mich bei meiner Verwendung (die Ergebnisse findet man ja in "yf_bin" als gesondertem Repo) auch nur in den allerseltensten Fällen, was Freetz da beim dynamischen Linken anstellt, denn das kommt fast nie zum Einsatz. Wenn ich dann wirklich mal etwas dynamisch linken lasse, steht bei mir "FREETZ_RPATH" auch auf "/var/custom/lib" ... was beim "Staging" zu sehr lustigen Ergebnissen im "packages"-Verzeichnis führt, weil der Inhalt dieser Variablen offenbar nicht nur für die Kodierung von RPATH-Entries in den Binaries verwendet wird (was man bei diesem Namen assoziieren würde), sondern "dual use" ist und irgendwo auch in die Bildung von Dateinamen für Ziele Einzug hält.