radvd compilen

Patch erzeugen:
Code:
man diff

Am besten arbeitest Du mit Unified Diffs (-u).
 
Mit einem einfachen reinpatchen dieser Zeile scheint es nicht getan zu sein. Es scheinen noch andere flex-Funktionen genutzt zu werden. Ich habe mich schon gewundert, dass eine Funktion genutzt wird, um eine 1 zu erhalten. Aber das scheint ja nicht das einzigste zu sein. Vielleicht kann einfach mal jemand das oben Aufgeführte Makefile durchschauen? Oder einfach selbst nochmal versuchen, radvd ohne flex/libfl zum Laufen zu bekommen.

Ich hänge gleich noch mein Entwurf für das Makefile für radvd an.
Wäre echt super, wenn jemand mal das ganze testet, der von compilen mehr versteht.

PS: Noch eine allgemeine Frage zum Compilen, für die ich aber keinen Extra Thread öffnen möchte: Wie wende ich einen Patch automatisch per makefile so an, das es keine Probleme mit den Verzeichnisrechten gibt, bzw. was muss ich beim Erstellen dafür beachten?
EDIT: Meine oben statt Verzeichnisrechten natürlich Verzeichnispfade.
 

Anhänge

  • radvd.mk.txt
    3 KB · Aufrufe: 4
Zuletzt bearbeitet:
Welche Problem mit Verzeichnisrechten meinst Du?
 
Hier die Änderungen, um das zum Übersetzen zu bringen.
Die erste Änderung make/radvd/radvd.mk betrifft die Datei aus Deinem Beitrag, die als make/radvd/radvd.mk gespeichert werden sollte.
Der zweite Teil speicherst Du als make/radvd/patches/100-yywrap.patch
Dann 'make radvd-precompiled' und es ist übersetzt.
Code:
--- make/radvd/radvd.mk
+++ make/radvd/radvd.mk
@@ -1,7 +1,7 @@
 RADVD_VERSION:=1.0
 RADVD_SOURCE:=radvd-$(RADVD_VERSION).tar.gz
 RADVD_SITE:=http://www.litech.org/radvd/dist/
-RADVD_MAKE_DIR:=$(MAKE_DIR)/openvpn
+RADVD_MAKE_DIR:=$(MAKE_DIR)/radvd
 RADVD_DIR:=$(SOURCE_DIR)/radvd-$(RADVD_VERSION)
 RADVD_BINARY:=$(RADVD_DIR)/radvd
 RADVD_PKG_VERSION:=0.1
@@ -20,15 +20,20 @@
 $(DL_DIR)/$(RADVD_PKG_SOURCE): | $(DL_DIR)
 	@$(DL_TOOL) $(DL_DIR) $(TOPDIR)/.config $(RADVD_PKG_SOURCE) $(RADVD_PKG_SITE)
 
-$(RADVD_DIR)/.unpacked: $(DL_DIR)/$(RADVD_SOURCE) $(RADVD_DS_CONFIG_FILE)
+$(RADVD_DIR)/.unpacked: $(DL_DIR)/$(RADVD_SOURCE) # $(RADVD_DS_CONFIG_FILE)
 	rm -rf $(RADVD_DIR)
 	tar -C $(SOURCE_DIR) $(VERBOSE) -xzf $(DL_DIR)/$(RADVD_SOURCE)
+	shopt -s nullglob; for i in $(RADVD_MAKE_DIR)/patches/*.patch; do \
+		patch -d $(RADVD_DIR) -p0 < $$i; \
+	done
 	touch $@
 
 # Hier koennten noch unnoetige Parameter dabei sein
 $(RADVD_DIR)/.configured: $(RADVD_DIR)/.unpacked
 	( cd $(RADVD_DIR); rm -f config.{cache,status}; \
 		$(TARGET_CONFIGURE_OPTS) \
+		CC="$(TARGET_CC)" \
+		LD="$(TARGET_LD)" \
 		CFLAGS="$(TARGET_CFLAGS)" \
 		CPPFLAGS="-I$(TARGET_MAKE_PATH)/../usr/include" \
 		LDFLAGS="-L$(TARGET_MAKE_PATH)/../usr/lib" \
@@ -71,7 +76,7 @@
 	@tar -C $(PACKAGES_DIR) -xjf $(DL_DIR)/$(RADVD_PKG_SOURCE)
 	@touch $@
 
-radvd: $(PACKAGES_DIR)/.$(RADVD_PKG_NAME)
+radvd: # $(PACKAGES_DIR)/.$(RADVD_PKG_NAME)
 
 radvd-package: $(PACKAGES_DIR)/.$(RADVD_PKG_NAME)
 	tar -C $(PACKAGES_DIR) $(VERBOSE) --exclude .svn -cjf $(PACKAGES_BUILD_DIR)/$(RADVD_PKG_SOURCE) $(RADVD_PKG_NAME)
Code:
--- Makefile.in
+++ Makefile.in
@@ -113,7 +113,7 @@
 radvd_SOURCES = $(COMMON_SRC) radvd.c timer.c send.c process.c interface.c \
 	device.c device-common.c gram.y gram.h scanner.l
 
-radvd_LDADD = -lfl
+radvd_LDADD = 
 EXTRA_radvd_SOURCES = device-linux.c device-bsd44.c
 YFLAGS = -d
 CFLAGS = @CFLAGS@ -Wall -Wpointer-arith  -Wcast-qual -Wcast-align -Wconversion \
--- scanner.l
+++ scanner.l
@@ -21,6 +21,9 @@
 
 extern char *conf_file;
 
+#define yywrap(x) 1
+#define YY_SKIP_YYWRAP
+
 int num_lines = 1;
 %}
Edit: So, jetzt funktioniert es. Das Makefile ist noch nicht sehr elegant, aber funktionsfähig.
 
Zuletzt bearbeitet:
kriegaex schrieb:
Welche Problem mit Verzeichnisrechten meinst Du?
Ops, war unkonzentriert. Meinte Verzeichnispfade.

@RalfFriedl: Werde ich nacher gleich mal testen. Danke schonmal.
 
Kosmetik: Das shopt -s nullglob; würde ich weglassen, wir haben es ansonsten auch nicht im DS-Mod.

Edit: Ich verstehe trotzdem, wieso Du es verwendest und daß es eleganter ist, als die Patch-Zeilen auszukommentieren, falls es keine Patches gibt, so wie wir das tun.
 
Zuletzt bearbeitet:
Das shopt -s nullglob; würde ich überall mit einfügen, dann muß man nicht dran denken, es beim ersten Patch einzufügen bzw. den Kommentar davor zu entfernen, bzw. umgekehrt wenn man den letzten Patch entfernt.

Und nachdem die Patches jetzt alle auf -p0 standardisiert sind, steht jetzt doch in jedem Makefile fast das gleiche:
Code:
	shopt -s nullglob; for i in $([B]PACKAGE[/B]_MAKE_DIR)/patches/*.patch; do \
		patch -d $([B]PACKAGE[/B]_DIR) -p0 < $$i; \
	done
Bei den Libraries sieht es etwas anders aus, aber ähnlich.

Ich würde zwei Makros definieren, z.B. PACKAGE_BIN_PATCH und PACKAGE_LIB_PATCH, die genau die oben genannten Anweisungen aufnehmen. Man muß ja nicht unnötig immer fast das gleiche in allen Datein schreiben.
 
So, habe es getestet und es baut. Außerdem habe ich den von kriegaex angeklagten Abschnitt geändert, damit es dem Mod-Standard entspricht. Das fertige make-Directory hänge ich gleich mit an. Ich hoffe, ihr nehmt das mit in den nächsten Mod auf. Dann braucht es allerdings noch die IPv6 Module + uClibc für v6 und Busybox für v6 zur Wahl, alleine bringt das Packet wohl weniger.

So und nun zum Abschluß noch ein Dank an alle, die geholfen haben.
 

Anhänge

  • radvd-make.tar.bz2
    1.8 KB · Aufrufe: 5
@Ralf: Ja, die Idee ist gut, mehr mit Makros zu arbeiten. Irgendwann, wenn ich mal ganz viel Langeweile habe...
 
So, ich habe noch ein kleines CGI gebastelt. Das ermöglicht bisher zwar nur das Einstellen der IPv6-Adresse der Box, wird aber noch weiterentwickelt. Ich will da noch die Einstellungen für IPv6 durch IPv4-Tunneling mit einbauen. Aber vielleicht könnt ihr die bisherigen Ergebnisse in ddie nächste Version des Mod als Pakete einbauen?

Hier liegt das Paket: http://fritzbox.ingmars-bastelecke.net/dsmod/pakete/ipv6-cgi-dsmod-0.1.tar.bz2
 
Das Einbauen in den DS-Mod bringt meiner Meinung nach erst etwas, wenn auch in Menuconfig zentral IPv6 ein- und ausgeschaltet werden kann. Ein Add-On ist sicher das Richtige im Moment. IPv6 ist eine Nische.
 
Ja, stimmt schon. Die die es interessiert, können die Sachen ja auch als Addon einbinden. Ein Hinweis im Mod-Thread würde ich aber schon empfehlen, damit die, die es interessiert es dann auch gleich finden.

Ansonsten bleibt abzuwarten ob AVM IPv6 im Herbst umsetzt und was die dann alles mit einbauen. (Herbst haben Sie auf der CeBIT angekündigt.)
 
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.