[Gelöst] Eigene Bibliothek zu Freetz hinzufügen, erscheint nicht im Image

uvok

Neuer User
Mitglied seit
29 Jul 2008
Beiträge
34
Punkte für Reaktionen
0
Punkte
0
Hallo Forengemeinde,

erstmal ein gesundes neues Jahr.

Ich habe vor, ein eigenes Programm zu Freetz hinzuzufügen. Soweit, so gut, dazu gibt es ja den Artikel: http://freetz.org/wiki/help/howtos/development/developer_information/package_development_start

Das Programm braucht jedoch eine Bibliothek (liboauth). Also habe ich ich mir ein paar Pakete in <freetz-root>/make/libs/ angeschaut und entsprechend einen Ordner liboauth und darin die Dateien Config.in, liboauth.mk und Makefile.in erstellt.

Code:
# Config.in
config FREETZ_PACKAGE_LIBOAUTH
	bool "liboauth-1.0.0"
#	select FREETZ_LIB_libutil
	default n
	help
		lioauth is a POSIX-C implementation of the http://oauth.net/ protocol.
Code:
#Makefile.in
ifeq ($(strip $(FREETZ_LIB_liboauth)),y)
LIBS+=oauth
endif
Code:
#liboauth.mk
$(call PKG_INIT_LIB, 1.0.0)

$(PKG)_LIB_VERSION:=0.8.3
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SOURCE_MD5:=fea6cfb9f65f4d448f8afabc936ee1a3
$(PKG)_SITE:=@SF/liboauth

$(PKG)_LIBNAME:=$(pkg).so.$($(PKG)_VERSION)
$(PKG)_BINARY:=$($(PKG)_DIR)/src/.libs/$(PKG)_LIBNAME
$(PKG)_STAGING_BINARY:=$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/$(PKG)_LIBNAME
$(PKG)_TARGET_BINARY:=$($(PKG)_TARGET_DIR)/$(PKG)_LIBNAME

$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
	$(SUBMAKE) -C $(LIBOAUTH_DIR) \
		CFLAGS="$(TARGET_CFLAGS)"

$($(PKG)_STAGING_BINARY): $($(PKG)_BINARY)
	$(SUBMAKE) -C $(LIBOAUTH_DIR) \
		DESTDIR="$(TARGET_TOOLCHAIN_STAGING_DIR)" \
		install
	$(PKG_FIX_LIBTOOL_LA) \
		$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/liboauth.la

$($(PKG)_TARGET_BINARY): $($(PKG)_STAGING_BINARY)
	$(INSTALL_LIBRARY_STRIP)

$(pkg): $($(PKG)_STAGING_BINARY)

$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)

$(pkg)-clean:
	-$(SUBMAKE) -C $(LIBOAUTH_DIR) clean
	$(RM) $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/liboauth*

$(pkg)-uninstall:
	$(RM) $(LIBOAUTH_TARGET_DIR)/liboauth*.so*

$(PKG_FINISH)

Außerdem habe ich "source make/libs/liboauth/Config.in" in die <freetz-root>/make/lib/Config.in eingetragen.

Ein make menuconfig und Navigation zu den Libraries zeigt: Der Eintrag ist da.

Nun aber das niederschmetternde Ergebnis von make:

Code:
...
installing mod base
  installing libs
  ld_uClibc ....................   10.30 Kb (uncompressed:   24.55 Kb)
  libcrypt .....................    6.97 Kb (uncompressed:   13.56 Kb)
  libcrypto ....................  322.71 Kb (uncompressed: 1011.74 Kb)
  libctlmgr ....................    2.50 Kb (uncompressed:    5.56 Kb)
  libcurl ......................  227.96 Kb (uncompressed:  579.50 Kb)
  libdl ........................    4.30 Kb (uncompressed:   11.23 Kb)
  libevent .....................  167.80 Kb (uncompressed:  487.62 Kb)
  libexpat .....................   43.79 Kb (uncompressed:  139.41 Kb)
  libfreetype ..................  204.71 Kb (uncompressed:  488.48 Kb)
  libfuse ......................   35.44 Kb (uncompressed:  112.84 Kb)
  libgcc_s .....................   20.58 Kb (uncompressed:   54.49 Kb)
  libgd ........................   56.99 Kb (uncompressed:  253.16 Kb)
  libglib_2 ....................  237.86 Kb (uncompressed:  814.88 Kb)
  libhistory ...................   12.34 Kb (uncompressed:   30.01 Kb)
  libjpeg ......................   51.37 Kb (uncompressed:  127.60 Kb)
  liblzo2 ......................   27.43 Kb (uncompressed:  107.16 Kb)
  libm .........................   31.65 Kb (uncompressed:  112.97 Kb)
  libmad .......................   46.71 Kb (uncompressed:   82.62 Kb)
  libmultid ....................    1.88 Kb (uncompressed:    4.32 Kb)
  libncurses ...................   70.30 Kb (uncompressed:  201.51 Kb)
  libneon ......................   49.95 Kb (uncompressed:  136.70 Kb)
  libntfs ......................  113.25 Kb (uncompressed:  295.63 Kb)
  libogg .......................    7.84 Kb (uncompressed:   18.69 Kb)
  libpcre ......................  124.02 Kb (uncompressed:  463.34 Kb)
  libpng12 .....................   52.13 Kb (uncompressed:  144.01 Kb)
  libpopt ......................   16.44 Kb (uncompressed:   38.98 Kb)
  libpthread ...................   21.60 Kb (uncompressed:   93.57 Kb)
  libpython2 ...................  453.96 Kb (uncompressed: 1511.47 Kb)
  libreadline ..................   70.80 Kb (uncompressed:  208.63 Kb)
  librt ........................    2.43 Kb (uncompressed:    7.29 Kb)
  libsqlite3 ...................  275.58 Kb (uncompressed:  660.23 Kb)
  libssl .......................   78.83 Kb (uncompressed:  234.94 Kb)
  libuClibc ....................  194.41 Kb (uncompressed:  597.51 Kb)
  libusb .......................    8.67 Kb (uncompressed:   23.06 Kb)
  libutil ......................    2.55 Kb (uncompressed:    6.79 Kb)
  libvorbis ....................   79.24 Kb (uncompressed:  201.17 Kb)
  libxml2 ......................  367.37 Kb (uncompressed: 1090.66 Kb)
  libz .........................   32.96 Kb (uncompressed:   73.04 Kb)
  installing terminfos
...

Wo ist die liboauth?
Ein explizites make liboauth builded übrigens erfolgreich, im staging-Verzeichnis erscheint auch die Library.

Nun meine Frage:
Hab ich was vergessen? Was muss ich tun, damit die Dateien auch im Freetz-Image landen?
Gibt es dafür vielleicht einen separaten Guide, den ich übersehen habe?

~uvok

PS:
Kann mir jemand erklären, wozu FREETZ_LIB_libutil gut ist? Im Artikel steht nur "...wird nicht benötigt", keine Erklärung warum nicht, und wann es benötigt wird.

Bevor de Frage kommt: Ja, ich hab die Option/Library angewählt.



Problem gelöst. Siehe Post #3
 
Zuletzt bearbeitet:
Kann mir jemand erklären, wozu FREETZ_LIB_libutil gut ist? Im Artikel steht nur "...wird nicht benötigt", keine Erklärung warum nicht, und wann es benötigt wird.
Das ist ein Beispiel dafür, wie man eine benötigte Library mit auswählen kann. In dem Fall wird sie nicht benötigt, deswegen ist die Zeile auskommentiert. Man kann Sie auch ganz weg lassen.
Code:
# Config.in
config [B]FREETZ_PACKAGE_LIBOAUTH[/B]
	bool "liboauth-1.0.0"
#	select FREETZ_LIB_libutil
	default n
	help
		lioauth is a POSIX-C implementation of the http://oauth.net/ protocol.
Code:
#Makefile.in
ifeq ($(strip $([B]FREETZ_LIB_liboauth[/B])),y)
LIBS+=oauth
endif
Der Fehler ist, dass oben FREETZ_PACKAGE_LIBOAUTH steht statt FREETZ_LIB_liboauth.
 
...
Der Fehler ist, dass oben FREETZ_PACKAGE_LIBOAUTH steht statt FREETZ_LIB_liboauth.

Danke! War also tatsächlich nur eine Kleinigkeit, die ich übersehen habe...
Der Output lautet jetzt
Code:
  liboauth .....................WARNING: Library liboauth selected, but no files found

Das Problem hängt jetzt wohl mit dem Makefile und der $(PKG)_TARGET_BINARY zusammen?

I) ahja, die case-sensitivity... man sollte $(pkg) schon groß schreiben... löst das Problem aber auch nicht
II) LIB_VERSION anstatt von VERSION... behebt das Problem auch nicht

Überabeitetes liboauth.mk:
Code:
$(call PKG_INIT_LIB, 1.0.0)

$(PKG)_LIB_VERSION:=0.8.4
$(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz
$(PKG)_SOURCE_MD5:=fea6cfb9f65f4d448f8afabc936ee1a3
$(PKG)_SITE:=@SF/liboauth

$(PKG)_LIBNAME:=$(pkg).so.$($(PKG)_LIB_VERSION)
$(PKG)_BINARY:=$($(PKG)_DIR)/src/.libs/$($(PKG)_LIBNAME)
$(PKG)_STAGING_BINARY:=$(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/$($(PKG)_LIBNAME)
$(PKG)_TARGET_BINARY:=$($(PKG)_TARGET_DIR)/$($(PKG)_LIBNAME)

#$(PKG)_DEPENDS_ON +=                                                                                                                                        
$(PKG_SOURCE_DOWNLOAD)
$(PKG_UNPACKED)
$(PKG_CONFIGURED_CONFIGURE)

$($(PKG)_BINARY): $($(PKG)_DIR)/.configured
        $(SUBMAKE) -C $(LIBOAUTH_DIR) \
                CFLAGS="$(TARGET_CFLAGS)"

$($(PKG)_STAGING_BINARY): $($(PKG)_BINARY)
        $(SUBMAKE) -C $(LIBOAUTH_DIR) \
                DESTDIR="$(TARGET_TOOLCHAIN_STAGING_DIR)" install
        $(PKG_FIX_LIBTOOL_LA) \
                $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/liboauth.la
#                $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/pkgconfig/liboauth.pc                                                                               


$($(PKG)_TARGET_BINARY): $($(PKG)_STAGING_BINARY)
        $(INSTALL_LIBRARY_STRIP)

$(pkg): $($(PKG)_STAGING_BINARY)

$(pkg)-precompiled: $($(PKG)_TARGET_BINARY)

$(pkg)-clean:
        -$(SUBMAKE) -C $(LIBOAUTH_DIR) clean
        $(RM) $(TARGET_TOOLCHAIN_STAGING_DIR)/usr/lib/liboauth*

$(pkg)-uninstall:
        $(RM) $(LIBOAUTH_TARGET_DIR)/liboauth*.so*

$(PKG_FINISH)

III) ahja, wenn LIBNAME eine Variable ist, sollte man sie auch entsprechend kennzeichnen... $(PKG)_LIBNAME -> $($(PKG)_LIBNAME)

IV) Ein liboauth-precompiled zeigte, was das Problem war: Die Version war falsch... Muss 0.8.4 sein
Dieses Problem ist damit erstmal gelöst
 
Zuletzt bearbeitet:
Doch noch nicht ganz gelöst...
Das Paket liboauth wird scheinbar nicht automatisch gebaut. Wenn ich die gebauten Dateien und das Source-Archiv lösche, und ein make ausführe, erscheint wieder
liboauth .....................WARNING: Library liboauth selected, but no files found
...
Das Source-Archiv wird nicht wieder heruntergeladen, auch nicht entpackt, und somit auch nicht gebuildet.
Irgendeine Kleinigkeit muss ich wohl noch vergessen haben?

... Makefile.in: Es muss wohl LIBS+=liboauth heißen
 
Zuletzt bearbeitet:
... das Source-Archiv lösche, und ein make ausführe, erscheint wieder
liboauth .....................WARNING: Library liboauth selected, but no files found
...
Wird nach "make liboauth-dirclean" und/oder "make liboauth-clean", mit "make liboauth-precompiled" kompiliert?
 
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.