Message ID | 1378165788-7386-1-git-send-email-rommel@layer-7.net |
---|---|
State | Superseded |
Headers | show |
On 09/03/13 01:49, Michael Rommel wrote: > Automatic IPv6 Connectivity Configuration Utility for users of a > IPv6 tunnel broker, developed by sixxs.net > > Signed-off-by: Michael Rommel <rommel@layer-7.net> > --- > package/Config.in | 1 + > package/aiccu/Config.in | 21 ++++ > .../aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch | 104 ++++++++++++++++++++ > .../aiccu-0002-install-correct-init-script.patch | 17 ++++ > package/aiccu/aiccu.mk | 26 +++++ > 5 files changed, 169 insertions(+) > create mode 100644 package/aiccu/Config.in > create mode 100644 package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch Did you upstream this patch? > create mode 100644 package/aiccu/aiccu-0002-install-correct-init-script.patch [snip] > diff --git a/package/aiccu/aiccu-0002-install-correct-init-script.patch b/package/aiccu/aiccu-0002-install-correct-init-script.patch > new file mode 100644 > index 0000000..15e9268 > --- /dev/null > +++ b/package/aiccu/aiccu-0002-install-correct-init-script.patch > @@ -0,0 +1,17 @@ > +Makefile: remove hardcoded .debian part from install command, debian > + version does not work under buildroot > + > +Signed-off-by: Michael Rommel <rommel@layer-7.net> > + > +diff -purN aiccu_20070115.orig/Makefile aiccu_20070115/Makefile > +--- aiccu_20070115.orig/Makefile 2007-01-11 01:29:33.000000000 +0100 > ++++ aiccu_20070115/Makefile 2013-09-03 00:47:06.153662575 +0200 > +@@ -86,7 +86,7 @@ ifeq ($(shell echo "A${RPM_BUILD_ROOT}") > + @cp doc/HOWTO ${DESTDIR}${dirdoc} > + @echo "Installing Debian-style init.d" > + @mkdir -p ${DESTDIR}${diretc}init.d > +- @cp doc/${PROJECT}.init.debian ${DESTDIR}${diretc}init.d/${PROJECT} > ++ @cp doc/${PROJECT}.init ${DESTDIR}${diretc}init.d/${PROJECT} The init script should be called Sxxaiccu (replace xx by an appropriate number). And you can do the required chmod here as well. Or better yet, use 'install -D -m 0755' (which removes the need for mkdir as well). However, I propose to instead install it manually from the .mk file (using the _INSTALL_INIT_SYSV variable) and to remove the incorrect init script in a post-install hook. Maybe there's even a target to install just the interesting bits and skip the howto and init scripts? > + else > + @echo "Installing Redhat-style init.d" > + @mkdir -p ${DESTDIR}${diretc}init.d > diff --git a/package/aiccu/aiccu.mk b/package/aiccu/aiccu.mk > new file mode 100644 > index 0000000..0eb605b > --- /dev/null > +++ b/package/aiccu/aiccu.mk > @@ -0,0 +1,26 @@ > +################################################################################ > +# > +# aiccu > +# > +################################################################################ > + > +AICCU_VERSION = 20070115 Ouch, that's old... > +AICCU_SOURCE = aiccu_$(AICCU_VERSION).tar.gz > +AICCU_SITE = http://www.sixxs.net/archive/sixxs/aiccu/unix/ > +AICCU_LICENSE = SixXS License, concise redistribution license > +AICCU_LICENSE_FILES = doc/LICENSE > +AICCU_DEPENDENCIES = gnutls > + > +define AICCU_BUILD_CMDS > + $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all > +endef > + > +define AICCU_INSTALL_TARGET_CMDS > + $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install > +endef > + > +define AICCU_PERMISSIONS > + /etc/init.d/aiccu f 4755 0 0 - - - - - Does it really have to be setuid? That is very weird for an init script. Regards, Arnout > +endef > + > +$(eval $(generic-package)) >
Hi Arnout, On Sep 4, 2013, at 18:38 , Arnout Vandecappelle <arnout@mind.be> wrote: > On 09/03/13 01:49, Michael Rommel wrote: >> Automatic IPv6 Connectivity Configuration Utility for users of a >> IPv6 tunnel broker, developed by sixxs.net >> >> Signed-off-by: Michael Rommel <rommel@layer-7.net> >> --- >> package/Config.in | 1 + >> package/aiccu/Config.in | 21 ++++ >> .../aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch | 104 ++++++++++++++++++++ >> .../aiccu-0002-install-correct-init-script.patch | 17 ++++ >> package/aiccu/aiccu.mk | 26 +++++ >> 5 files changed, 169 insertions(+) >> create mode 100644 package/aiccu/Config.in >> create mode 100644 package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch > > Did you upstream this patch? yes, I have submitted the patch and the info about submission for inclusion into buildroot upstream to info@sixxs.net but have not received an answer (yet). >> create mode 100644 package/aiccu/aiccu-0002-install-correct-init-script.patch > [snip] >> diff --git a/package/aiccu/aiccu-0002-install-correct-init-script.patch b/package/aiccu/aiccu-0002-install-correct-init-script.patch >> new file mode 100644 >> index 0000000..15e9268 >> --- /dev/null >> +++ b/package/aiccu/aiccu-0002-install-correct-init-script.patch >> @@ -0,0 +1,17 @@ >> +Makefile: remove hardcoded .debian part from install command, debian >> + version does not work under buildroot >> + >> +Signed-off-by: Michael Rommel <rommel@layer-7.net> >> + >> +diff -purN aiccu_20070115.orig/Makefile aiccu_20070115/Makefile >> +--- aiccu_20070115.orig/Makefile 2007-01-11 01:29:33.000000000 +0100 >> ++++ aiccu_20070115/Makefile 2013-09-03 00:47:06.153662575 +0200 >> +@@ -86,7 +86,7 @@ ifeq ($(shell echo "A${RPM_BUILD_ROOT}") >> + @cp doc/HOWTO ${DESTDIR}${dirdoc} >> + @echo "Installing Debian-style init.d" >> + @mkdir -p ${DESTDIR}${diretc}init.d >> +- @cp doc/${PROJECT}.init.debian ${DESTDIR}${diretc}init.d/${PROJECT} >> ++ @cp doc/${PROJECT}.init ${DESTDIR}${diretc}init.d/${PROJECT} > > The init script should be called Sxxaiccu (replace xx by an appropriate number). And you can do the required chmod here as well. Or better yet, use 'install -D -m 0755' (which removes the need for mkdir as well). > > However, I propose to instead install it manually from the .mk file (using the _INSTALL_INIT_SYSV variable) and to remove the incorrect init script in a post-install hook. Maybe there's even a target to install just the interesting bits and skip the howto and init scripts? > Regarding the installation there are three versions on the table: 1. Using the recommended default way: +define AICCU_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef This needs then the Makefile patch and I certainly can patch more buildroot related things into it, like renaming and permissions. 2. Using only the sub-level Makefile unix-console, which has a target "install", that only installs the aiccu binary. That would be clean and easy but we would be missing the template for the configuration (which I always find helpful) 3. Skipping the patch for the Makefile altogether and using a better version of my first attempt: define AICCU_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/unix-console/aiccu $(TARGET_DIR)/usr/sbin $(INSTALL) -D -m 0644 $(@D)/doc/aiccu.conf $(TARGET_DIR)/etc endef define AICCU_INSTALL_INIT_SYSV [ -f $(TARGET_DIR)/etc/init.d/S60aiccu ] || \ $(INSTALL) -D -m 0755 $(@D)/doc/aiccu.init \ $(TARGET_DIR)/etc/init.d/S60aiccu endef Is there a recommendation about the Snn numbering of the init.d scripts? I have not found it in the manual. It should run after all internet connectivity has been established and the time has been synchronized. >> + >> +AICCU_VERSION = 20070115 > > Ouch, that's old... Yes... but it works without any problems for me since I got my first tunnel in 2005. >> + >> +define AICCU_PERMISSIONS >> + /etc/init.d/aiccu f 4755 0 0 - - - - - > > Does it really have to be setuid? That is very weird for an init script. I got the permission setting wrong, it should be only 755, the 4 was a cut&paste error from the Buildroot Documentation, I will correct that, my mistake! Thanks for your patience with me! Michael.
Dear Michael Rommel, On Wed, 4 Sep 2013 22:50:42 +0200, Michael Rommel wrote: > Regarding the installation there are three versions on the table: > > 1. Using the recommended default way: > > +define AICCU_INSTALL_TARGET_CMDS > + $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install > +endef > > This needs then the Makefile patch and I certainly can patch more buildroot related things into it, > like renaming and permissions. > > 2. Using only the sub-level Makefile unix-console, which has a target "install", that > only installs the aiccu binary. That would be clean and easy but we would be missing > the template for the configuration (which I always find helpful) > > 3. Skipping the patch for the Makefile altogether and using a better version of my first > attempt: > > define AICCU_INSTALL_TARGET_CMDS > $(INSTALL) -D -m 0755 $(@D)/unix-console/aiccu $(TARGET_DIR)/usr/sbin > $(INSTALL) -D -m 0644 $(@D)/doc/aiccu.conf $(TARGET_DIR)/etc > endef > > define AICCU_INSTALL_INIT_SYSV > [ -f $(TARGET_DIR)/etc/init.d/S60aiccu ] || \ > $(INSTALL) -D -m 0755 $(@D)/doc/aiccu.init \ > $(TARGET_DIR)/etc/init.d/S60aiccu > endef Between (1) and (3) I believe it's mainly a matter of whether you think your fixes to the Makefile can be integrated upstream into a new release or not. If your Makefile changes can be integrated upstream and a new release is made, we can update Buildroot to use this new release, drop the patch, and everything is nice. On the other hand, if the upstream is more or less dead (which the very old version number seems to indicate), then the chances of having the patch accepted and a new release published is rather small. In that case, doing a manual AICCU_INSTALL_TARGET_CMDS and AICCU_INSTALL_INIT_SYSV is probably better. > Is there a recommendation about the Snn numbering of the init.d scripts? I have not found it in the manual. > It should run after all internet connectivity has been established and the time has been synchronized. Network is S40network. ntp is installed at S49ntp. So I guess something >= 50 should be fine. > >> + > >> +define AICCU_PERMISSIONS > >> + /etc/init.d/aiccu f 4755 0 0 - - - - - > > > > Does it really have to be setuid? That is very weird for an init script. > > I got the permission setting wrong, it should be only 755, the 4 was a cut&paste error from the Buildroot Documentation, I will correct that, my mistake! You don't need to set explicit permissions if you use the AICCU_INSTALL_INIT_SYSV method since you do an $(INSTALL) -m 0755. Thanks a lot! Thomas
Hi Thomas, On Sep 5, 2013, at 10:13 , Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote: > Between (1) and (3) I believe it's mainly a matter of whether you think > your fixes to the Makefile can be integrated upstream into a new > release or not. If your Makefile changes can be integrated upstream and > a new release is made, we can update Buildroot to use this new release, > drop the patch, and everything is nice. On the other hand, if the > upstream is more or less dead (which the very old version number seems > to indicate), then the chances of having the patch accepted and a new > release published is rather small. In that case, doing a manual > AICCU_INSTALL_TARGET_CMDS and AICCU_INSTALL_INIT_SYSV is probably > better. I opted for (3), I think the patch is cleaner now and since I have not heard anything back from upstream, I guess they are reluctant to put any effort in this tool. > Network is S40network. ntp is installed at S49ntp. So I guess something >> = 50 should be fine. done. > You don't need to set explicit permissions if you use the > AICCU_INSTALL_INIT_SYSV method since you do an $(INSTALL) -m 0755. done. Cheers, Michael.
diff --git a/package/Config.in b/package/Config.in index 1be41bb..d5e3b52 100644 --- a/package/Config.in +++ b/package/Config.in @@ -715,6 +715,7 @@ source "package/sound-theme-freedesktop/Config.in" endmenu menu "Networking applications" +source "package/aiccu/Config.in" source "package/aircrack-ng/Config.in" source "package/argus/Config.in" source "package/arptables/Config.in" diff --git a/package/aiccu/Config.in b/package/aiccu/Config.in new file mode 100644 index 0000000..1c6f554 --- /dev/null +++ b/package/aiccu/Config.in @@ -0,0 +1,21 @@ +config BR2_PACKAGE_AICCU + bool "aiccu" + depends on BR2_INET_IPV6 + depends on BR2_USE_WCHAR + select BR2_PACKAGE_GNUTLS + help + SixXS Automatic IPv6 Connectivity Client Utility + + AICCU (Automatic IPv6 Connectivity Client Utility) makes it + easy for users to get IPv6 connectivity. After having + requested an account, tunnel and optionally a subnet, AICCU + can be used to automatically configure the tunnel. AICCU + supports TIC (Tunnel Information & Control protocol), which it + uses for retrieving the tunnel configuration information, + AYIYA, which allows tunnels to be created even behind + firewalls and NAT's. + + http://www.sixxs.net/tools/aiccu/ + +comment "aiccu requires a toolchain with IPv6 and WCHAR support" + depends on !(BR2_INET_IPV6 && BR2_USE_WCHAR) diff --git a/package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch b/package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch new file mode 100644 index 0000000..d316f8f --- /dev/null +++ b/package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch @@ -0,0 +1,104 @@ +aiccu.h, common.c, common.h: fixes for deprecated GNUTLS functions and types +resolver.c: fixes for selection of wrong resolver function under uclibc + +Signed-off-by: Michael Rommel <rommel@layer-7.net> + +diff -purN aiccu_20070115.orig/common/aiccu.h aiccu_20070115/common/aiccu.h +--- aiccu_20070115.orig/common/aiccu.h 2007-01-15 13:01:43.000000000 +0100 ++++ aiccu_20070115/common/aiccu.h 2013-08-31 23:50:53.651936146 +0200 +@@ -111,7 +111,7 @@ struct AICCU_conf + #endif + + #ifdef AICCU_GNUTLS +- gnutls_certificate_credentials tls_cred; /* GNUTLS credentials */ ++ gnutls_certificate_credentials_t tls_cred; /* GNUTLS credentials */ + #endif + + bool daemonize; /* Daemonize? */ +diff -purN aiccu_20070115.orig/common/common.c aiccu_20070115/common/common.c +--- aiccu_20070115.orig/common/common.c 2006-12-21 15:08:50.000000000 +0100 ++++ aiccu_20070115/common/common.c 2013-09-01 01:21:36.031396740 +0200 +@@ -271,9 +271,8 @@ TLSSOCKET sock_alloc(void); + TLSSOCKET sock_alloc(void) + { + #ifdef AICCU_GNUTLS +- /* Allow connections to servers that have OpenPGP keys as well */ +- const int cert_type_priority[3] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 }; + int ret; ++ const char *err; + #endif /* AICCU_GNUTLS*/ + + TLSSOCKET sock; +@@ -297,11 +296,16 @@ TLSSOCKET sock_alloc(void) + } + + /* Use default priorities */ +- gnutls_set_default_priority(sock->session); +- /* XXX: Return value is not documented in GNUTLS documentation! */ +- +- gnutls_certificate_type_set_priority(sock->session, cert_type_priority); +- /* XXX: Return value is not documented in GNUTLS documentation! */ ++ ret = gnutls_priority_set_direct(sock->session, "NORMAL", &err); ++ if (ret < 0) ++ { ++ if (ret == GNUTLS_E_INVALID_REQUEST) ++ { ++ dolog( LOG_ERR, "TLS set priority failed, syntax error at: %s\n", err); ++ } ++ free(sock); ++ return NULL; ++ } + + /* Configure the x509 credentials for the current session */ + gnutls_credentials_set(sock->session, GNUTLS_CRD_CERTIFICATE, g_aiccu->tls_cred); +@@ -474,7 +478,7 @@ bool sock_gotls(TLSSOCKET sock) + } + + /* Set the transport */ +- gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr)sock->socket); ++ gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr_t) sock->socket); + + /* Perform the TLS handshake */ + ret = gnutls_handshake(sock->session); +diff -purN aiccu_20070115.orig/common/common.h aiccu_20070115/common/common.h +--- aiccu_20070115.orig/common/common.h 2007-01-11 15:50:51.000000000 +0100 ++++ aiccu_20070115/common/common.h 2013-08-31 23:26:13.683659455 +0200 +@@ -381,7 +381,7 @@ struct tlssocket + SOCKET socket; + #ifdef AICCU_GNUTLS + bool tls_active; /* TLS active? */ +- gnutls_session session; /* The GnuTLS sesision */ ++ gnutls_session_t session; /* The GnuTLS sesision */ + #endif + }; + +diff -purN aiccu_20070115.orig/common/resolver.c aiccu_20070115/common/resolver.c +--- aiccu_20070115.orig/common/resolver.c 2006-07-23 16:55:14.000000000 +0200 ++++ aiccu_20070115/common/resolver.c 2013-08-31 23:44:31.574866862 +0200 +@@ -26,7 +26,7 @@ + + int getrrs(const char *label, int rrtype, void gotrec(unsigned int num, int type, const char *record)) + { +-#ifdef _LINUX ++#if defined(_LINUX) && !defined(__UCLIBC__) + struct __res_state res; + #endif + unsigned char answer[8192]; +@@ -38,7 +38,7 @@ int getrrs(const char *label, int rrtype + uint16_t type = 0, class = 0; + uint32_t ttl = 0; + +-#ifdef _LINUX ++#if defined(_LINUX) && !defined(__UCLIBC__) + memset(&res, 0, sizeof(res)); + res.options = RES_DEBUG; + res_ninit(&res); +@@ -47,7 +47,7 @@ int getrrs(const char *label, int rrtype + #endif + + memset(answer, 0, sizeof(answer)); +-#ifdef _LINUX ++#if defined(_LINUX) && !defined(__UCLIBC__) + ret = res_nquery(&res, label, C_IN, rrtype, answer, sizeof(answer)); + #else + ret = res_query(label, C_IN, rrtype, answer, sizeof(answer)); diff --git a/package/aiccu/aiccu-0002-install-correct-init-script.patch b/package/aiccu/aiccu-0002-install-correct-init-script.patch new file mode 100644 index 0000000..15e9268 --- /dev/null +++ b/package/aiccu/aiccu-0002-install-correct-init-script.patch @@ -0,0 +1,17 @@ +Makefile: remove hardcoded .debian part from install command, debian + version does not work under buildroot + +Signed-off-by: Michael Rommel <rommel@layer-7.net> + +diff -purN aiccu_20070115.orig/Makefile aiccu_20070115/Makefile +--- aiccu_20070115.orig/Makefile 2007-01-11 01:29:33.000000000 +0100 ++++ aiccu_20070115/Makefile 2013-09-03 00:47:06.153662575 +0200 +@@ -86,7 +86,7 @@ ifeq ($(shell echo "A${RPM_BUILD_ROOT}") + @cp doc/HOWTO ${DESTDIR}${dirdoc} + @echo "Installing Debian-style init.d" + @mkdir -p ${DESTDIR}${diretc}init.d +- @cp doc/${PROJECT}.init.debian ${DESTDIR}${diretc}init.d/${PROJECT} ++ @cp doc/${PROJECT}.init ${DESTDIR}${diretc}init.d/${PROJECT} + else + @echo "Installing Redhat-style init.d" + @mkdir -p ${DESTDIR}${diretc}init.d diff --git a/package/aiccu/aiccu.mk b/package/aiccu/aiccu.mk new file mode 100644 index 0000000..0eb605b --- /dev/null +++ b/package/aiccu/aiccu.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# aiccu +# +################################################################################ + +AICCU_VERSION = 20070115 +AICCU_SOURCE = aiccu_$(AICCU_VERSION).tar.gz +AICCU_SITE = http://www.sixxs.net/archive/sixxs/aiccu/unix/ +AICCU_LICENSE = SixXS License, concise redistribution license +AICCU_LICENSE_FILES = doc/LICENSE +AICCU_DEPENDENCIES = gnutls + +define AICCU_BUILD_CMDS + $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all +endef + +define AICCU_INSTALL_TARGET_CMDS + $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) install +endef + +define AICCU_PERMISSIONS + /etc/init.d/aiccu f 4755 0 0 - - - - - +endef + +$(eval $(generic-package))
Automatic IPv6 Connectivity Configuration Utility for users of a IPv6 tunnel broker, developed by sixxs.net Signed-off-by: Michael Rommel <rommel@layer-7.net> --- package/Config.in | 1 + package/aiccu/Config.in | 21 ++++ .../aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch | 104 ++++++++++++++++++++ .../aiccu-0002-install-correct-init-script.patch | 17 ++++ package/aiccu/aiccu.mk | 26 +++++ 5 files changed, 169 insertions(+) create mode 100644 package/aiccu/Config.in create mode 100644 package/aiccu/aiccu-0001-gnutls-and-uclibc-fixes.patch create mode 100644 package/aiccu/aiccu-0002-install-correct-init-script.patch create mode 100644 package/aiccu/aiccu.mk