.titleBar { margin-bottom: 5px!important; }

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

Dieses Thema im Forum "Freetz" wurde erstellt von matze1985, 7 März 2009.

  1. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  3. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  4. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  5. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  6. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Wie muss man dann die Zeilen in fwmod ändern?

    MfG Oliver
     
  7. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  8. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Okay. Danke...

    MfG Oliver
     
  9. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @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
     
  10. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Da sollte es natürlich auch geändert werden, genauso wie in external. Geändert in r3177.
    Ich hoffe, ich habe jetzt alles.
     
  11. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Bei mir ist das ganze jetzt auf jeden Fall durchgelaufen, danke. ;)
     
  12. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    @Ralf
    Wir haben doch was übersehen... #406
     
  13. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #13 RalfFriedl, 19 März 2009
    Zuletzt bearbeitet: 20 März 2009
    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.
     
  14. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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
     
  15. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  16. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    Die Iptables Dateien sind unter packages/iptables und nicht unter root/usr/lib.

    MfG Oliver
     
  17. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  18. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,755
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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
    
     
  19. RalfFriedl

    RalfFriedl IPPF-Urgestein

    Registriert seit:
    22 Apr. 2007
    Beiträge:
    12,343
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  20. olistudent

    olistudent IPPF-Urgestein

    Registriert seit:
    19 Okt. 2004
    Beiträge:
    14,761
    Zustimmungen:
    5
    Punkte für Erfolge:
    38
    Beruf:
    Softwareentwickler
    Ort:
    Kaiserslautern
    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