libglib-2.0.so im image, obwohl nicht ausgewählt!

matze1985

Aktives Mitglied
Mitglied seit
17 Feb 2007
Beiträge
1,537
Punkte für Reaktionen
0
Punkte
0
Die glib2 wird bei mir gebaut, da sie für ein statisch kompiliertes Programm gebraucht wird. Da es aber statisch gebaut wird, brauche ich die glib2 nicht und habe sie abgewählt. Heute ist mir aber aufgefallen, dass sie doch im image ist. In der config ist sie nicht aktiviert.
Code:
cat .config | grep glib
FREETZ_LIB_libglib=y
# FREETZ_LIB_libglib2 is not set
Beim bauen wird auch nicht abgezeigt, dass sie installiert wird.
Code:
installing mod base
  copying files
  installing libs
    libcrypt-0.9.29.so
    librt-0.9.29.so
    libfreetz.so.1.0.0
    libnsl-0.9.29.so
    libm-0.9.29.so
    libpthread-0.9.29.so
    libgcc_s.so.1
    libdl-0.9.29.so
    libuClibc-0.9.29.so
    libutil-0.9.29.so
    libz.so.1.2.3
    ld-uClibc-0.9.29.so
    libhistory.so.5.2
    libelf.so.0.8.10
    libpng12.so.0.10.0
    libglib-1.2.so.0.0.10
    libfreetype.so.6.3.16
    libusb-0.1.so.4.4.4
    libsane.so.1.0.19
    libpcap.so.0.9.8
    libncurses.so.5.6
    libart_lgpl_2.so.2.3.19
    libreadline.so.5.2
  installing terminfos
Aber trotzdem ist sie im Image:
Code:
$ ll build/modified/filesystem/usr/lib/ | grep glib
lrwxrwxrwx  1 matthias matthias   21 2009-03-07 20:43 libglib-1.2.so.0 -> libglib-1.2.so.0.0.10
-rwxr-xr-x  1 matthias matthias 167K 2009-03-07 09:46 libglib-1.2.so.0.0.10
lrwxrwxrwx  1 matthias matthias   23 2009-03-07 20:43 libglib-2.0.so -> libglib-2.0.so.0.1800.2
lrwxrwxrwx  1 matthias matthias   23 2009-03-07 20:43 libglib-2.0.so.0 -> libglib-2.0.so.0.1800.2
-rwxr-xr-x  1 matthias matthias 795K 2009-03-07 15:02 libglib-2.0.so.0.1800.2

Der checkout war frisch und neu.
Wodurch kann das passieren, sie ist ja leider nicht die kleinste lib. ;)

Danke,
Matze
 
Weil die Datei libglib heißt und libglib ausgewählt ist.

Trotzdem solte man nach einer Lösung dafür suchen. Die einfachste Lösung für Dich ist, die glib2 unter root/usr/lib zu löschen.
 
Danke für die Antwort, das löschen kann ich machen, kann ich auch aus der fwmod_custom heraus machen.

Wäre natürlich trotzdem schön, wenn das nicht passiert.

Dabei fehlt mir auf, dass die lib ja ganz anders als die Pakete gehandelt werden, die werden ja unter root/lib/ und root/usr/lib die ganze Zeit gehalten und nicht erst am Ende aus dem source Verzeichnis an Ziel kopiert, warum ist dass denn so, bzw. wie ist das im Detail.

Danke Matze.
 
Hallo.
Untenstehend ist der Code aus der fwmod. Ich kann damit nix anfangen. Vielleicht kann jemand weiterhelfen?
Code:
                echo1 "installing libs"
                        for i in \
                        $( \
                                 cd "${ROOT_DIR}" && \
                                 find lib usr/lib -type d -name .svn -prune -false , -type f -name "*.so*" \
                        )
                        do
                                bn="$(basename "$i")"
                                lib="${bn%\.so*}"
                                lib="$(echo "$lib" | sed -r 's/^libg(lib|object|module|thread)-2/libg\12-2/;s/-[0-9][\.0-9a-z]*$//')"
                                if [ "$(eval "echo \"\$FREETZ_LIB_$(echo "$lib" | tr '\-+' '_x')\"")" == "y" ]; then
                                        echo2 "${bn}"
                                        dn="$(dirname "$i")"
                                        lib="$(echo "$lib" | sed -r 's/^libg(lib|object|module|thread)2/libg\1-2/')"
                                        [ -d "${FILESYSTEM_MOD_DIR}/${dn}" ] || mkdir -p "${FILESYSTEM_MOD_DIR}/${dn}"
                                        cp -a "${ROOT_DIR}/${dn}/${lib}"[-\|\.]*so* "${FILESYSTEM_MOD_DIR}/${dn}/"
                                        chmod +x "${FILESYSTEM_MOD_DIR}/${i}"
                                fi
                        done
Wie man sieht haben wir (kriegaex) einen Sonderfall für die libglib eingeführt. Dieser scheint aber nicht korrekt zu arbeiten.

Wenn jemand einen Vorschlag hat wie man die ganze Sache eleganter lösen könnte, dann immer her damit.

MfG Oliver
 
Ich habe es gerade ausprobiert. Die Logik für die Auswahl funktioniert. Aber die Anweisung, die danach ausgeführt wird, kopiert trotzdem zu viel:
Code:
    libglib-1.2.so.0.0.10
cp -a ./root/usr/lib/libglib[-\|\.]*so* build/modified/filesystem/usr/lib/
cp -a ./root/usr/lib/libglib-1.2.so.0 ./root/usr/lib/libglib-1.2.so.0.0.10 ./root/usr/lib/libglib-2.0.so ./root/usr/lib/libglib-2.0.so.0 ./root/usr/lib/libglib-2.0.so.0.1800.2 build/modified/filesystem/usr/lib/
Es wird libglib2 als nicht ausgewählt erkannt, aber beim Kopieren der glib1 wird die glib2 auch mit kopiert.

Wenn eine Library libglib-2.0.so heißt, muß sie auch beim Linken mit -lglib-2.0 angegeben werden.
Spricht etwas dagegen, das Konfigurations-Symbol für diese Library dann glib_2_0 zu nennen und nicht glib2? Oder allgemeiner ausgedrückt, es wird der vollständige Dateiname vor den .so genommen.
Damit sollte man ohne diese Sonderfälle auskommen.
 
Wie muss man dann die Zeilen in fwmod ändern?

MfG Oliver
 
Ich stelle es mir ungefähr so vor:
Das Symbol FREETZ_LIB_libglib_2_0 wählt die Datei libglib-2.0.so aus.
Das Symbol FREETZ_LIB_libglib_1_2 wählt die Datei libglib-1.2.so aus.
In fwmod entfällt der größte Teil der jetzt vorhandenen Sonderbehandlung. Ich schau es mir mal im einzelnen an.
 
Okay. Danke...

MfG Oliver
 
@Ralf: Du hast ja mit r3162 das neue Handling für glib und glib2 eingecheckt.

Ich habe heute mal versucht zu kompilieren, bekomme aber einen Fehler. (Leider bin ich gerade an einem Rechner und kann ihn nicht mehr pasten).
Aber ich habe mich nochmal etwas im SourceBrowser umgeschaut und mit ist aufgefallen, dass in der Makefile.in noch die alten Symbole FREETZ_LIB_libglib und FREETZ_LIB_libglib2 genutzt werden.
Ist das so richtig?

MfG
Matze
 
Bei mir ist das ganze jetzt auf jeden Fall durchgelaufen, danke. ;)
 
@Ralf
Wir haben doch was übersehen... #406
 
Da Du anscheinend iptables schon mit drin hast, kannst Du mal versuchen, den Pfad usr/lib/xtables mit in die Liste der durchsuchten Verzeichnisse aufzunehmen? Vom Namen her sollte es passen.

Gibt es noch weitere Unterverzeichnisse unter /usr/lib ?

Edit:
Habe gerade gesehen, daß es cuma war. Ich habe den Vorschlag auch ins Ticket geschrieben.
 
Zuletzt bearbeitet:
Ist das Problem nicht anders rum? Die Symbole heißen FREETZ_lib... und deswegen sucht die neue Routine nach Dateien die gar nicht da sind?
Dann sollten wir die Iptables Symbole vielleicht auch umbenennen.

MfG Oliver
 
Code:
WARNING: Library [B]libxt_standard[/B] selected, but no files found
./build/modified/filesystem/usr/lib/xtables/[B]libxt_standard[/B].so
Wenn ich es richtig sehe, existiert die Datei, aber nicht in den Verzeichnissen, wo gesucht wird.

Ich hoffe, das trifft auch für die anderen Dateien zu.
 
Die Iptables Dateien sind unter packages/iptables und nicht unter root/usr/lib.

MfG Oliver
 
Dann war es wohl doch schon etwas spät. Die Dateien landen im Image, weil sie aus packages/iptables-1.4.1.1/root/usr/lib/xtables kommen und die normale Kopier-Funktion findet sie nicht und beschwert sich deswegen.

Du hast Recht, dann bietet es sich an, die Bezeichnungen umzubenennen.
 
Ich seh gerade, die Dateien werden vorher schon kopiert

Code:
 Patching /bin/onlinechanged
    applying patch file ./patches/115-7270_16MB.sh
  applying 16MB patch
    applying patch file ./patches/cond/7270_16MB_flash.patch
    patching file var/install
    ----------------------------------------------------------------------
    applying patch file ./patches/150-iptables.sh
  Copying iptables
    libxt_state.so
    libipt_LOG.so
    libxt_tcp.so
    libxt_udp.so
    libipt_REJECT.so
    libxt_conntrack.so
    libxt_standard.so
    libxt_string.so
    libxt_limit.so
    applying patch file ./patches/170-rename_ar7login.sh
  renaming ar7login to make way for wrapper script
    applying patch file ./patches/180-printk.sh

Code:
  installing libs
...
    libipt_LOG
WARNING: Library libipt_LOG selected, but no files found
    libipt_REJECT
WARNING: Library libipt_REJECT selected, but no files found
...
    libxt_conntrack
WARNING: Library libxt_conntrack selected, but no files found
    libxt_limit
WARNING: Library libxt_limit selected, but no files found
    libxt_standard
WARNING: Library libxt_standard selected, but no files found
    libxt_state
WARNING: Library libxt_state selected, but no files found
    libxt_string
WARNING: Library libxt_string selected, but no files found
    libxt_tcp
WARNING: Library libxt_tcp selected, but no files found
    libxt_udp
WARNING: Library libxt_udp selected, but no files found
    libz
  installing terminfos
 
Dann bietet es sich an, die Bezeichnungen umzubenennen.

Wenn es einen extra Abschnitt in fwmod gibt, der iptables kopiert, wäre eine andere Lösung, die Bezeichnungen so zu lassen und den Quell-Pfad auf package/iptables.../usr/lib/xtables zu ändern. Dann würden diese Libraries zusammen mit den normalen Libraries kopiert werden.
 
Und was machen wir mit dem iptables Binary? Ich meine, dass wir die Libs schonmal unter root hatten und ich hatte das dann geändert. Warum weiß ich nicht mehr.

MfG Oliver
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.