Skip to contentSkip to conversation

SystemV init without busybox series

PATCH Superseded Gustavo Zacarias 4 participants 25 messages Nov 18, 2014 – Nov 19, 2014

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v3 cover SystemV init without busybox series

This is a patch series that enables busybox-less systemV-init targets to be built.
It contains fixes that enable it to work seamlessly, some new packages and a couple of non essential/related bumps.

It's missing documentation on the recommended packages for a normal boot to take place without any errors or warnings for a default busybox skeleton.

* debianutils provides run-parts for ifupdown
* ifupdown provides ifup/ifdown
* start-stop-daemon provides start-stop-daemon (sic)

Changes for v2:
* Drop uclibc wordexp enablement and disable ifupdown for it
* Add start-stop-daemon package
* Add useful dhclient-script for ISC dhcp
* Install dhclient (ISC dhcp) to /sbin for debian ifupdown
* dhcpcd: install dhcpcd-hooks for PnP simplicity
* sysvinit: drop tty1/2 for consistency
* Misc style fixes

Changes for v3:
* Adjust start-stop-daemon license (Karoly)
* Fix pathspecs for dhcp clients in network-manager (Arnout)
* Drop symlink check in S40network (Arnout)
* Use make install in ifupdown (Arnout)
* Update dhcpcd to version 6.6.2
* Ditch dash 0.5.8-2 bump, it's pointless (Peter)

Gustavo Zacarias (9):
skeleton/S40network: tweak for debian ifupdown
debianutils: new package
ifupdown: new package
start-stop-daemon: new package
dhcp: install dhclient to /sbin
dhcp: update dhclient-script
dhcpcd: bump to version 6.6.2
dhcpcd: use standard installation
network-manager: adjust dhclient and dhcpcd directories

 package/Config.in                                  |   7 +
 package/debianutils/Config.in                      |   7 +
 package/debianutils/debianutils.hash               |   2 +
 package/debianutils/debianutils.mk                 |  14 +
 package/dhcp/dhclient-script                       | 284 ++++++++++++++++++++-
 package/dhcp/dhcp.mk                               |   2 +-
 package/dhcpcd/dhcpcd.hash                         |   2 +
 package/dhcpcd/dhcpcd.mk                           |   9 +-
 package/ifupdown/Config.in                         |  17 ++
 package/ifupdown/ifupdown.hash                     |   2 +
 package/ifupdown/ifupdown.mk                       |  24 ++
 package/network-manager/network-manager.mk         |   4 +-
 .../0001-add-uclibc-alias-and-musl.patch           |  42 +++
 package/start-stop-daemon/Config.in                |   8 +
 package/start-stop-daemon/start-stop-daemon.hash   |   2 +
 package/start-stop-daemon/start-stop-daemon.mk     |  27 ++
 system/skeleton/etc/init.d/S40network              |   3 +
 17 files changed, 445 insertions(+), 11 deletions(-)
 create mode 100644 package/debianutils/Config.in
 create mode 100644 package/debianutils/debianutils.hash
 create mode 100644 package/debianutils/debianutils.mk
 create mode 100644 package/dhcpcd/dhcpcd.hash
 create mode 100644 package/ifupdown/Config.in
 create mode 100644 package/ifupdown/ifupdown.hash
 create mode 100644 package/ifupdown/ifupdown.mk
 create mode 100644 package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch
 create mode 100644 package/start-stop-daemon/Config.in
 create mode 100644 package/start-stop-daemon/start-stop-daemon.hash
 create mode 100644 package/start-stop-daemon/start-stop-daemon.mk
Signature · 1 line
2.0.4
#1 lore raw

PATCH v3 1/9 skeleton/S40network: tweak for debian ifupdown

Make the S40network script create the /run/network directory for the debian variant of ifupdown which uses it as a lock directory.

---
 system/skeleton/etc/init.d/S40network | 3 +++
 1 file changed, 3 insertions(+)
system/skeleton/etc/init.d/S40network +3 -0
index e69e613..bfdd491 100755
@@ -3,6 +3,9 @@
 # Start the network....
 #
 
+# Debian ifupdown needs the /run/network lock directory
+mkdir -p /run/network
+
 case "$1" in
   start)
  	echo "Starting network..."
Signature · 1 line
2.0.4
#2 lore raw

PATCH 1/9 skeleton/S40network: tweak for debian ifupdown

Quoted 4 lines · Gustavo Zacarias

Make the S40network script create the /run/network directory for the debian variant of ifupdown which uses it as a lock directory.

Quoted 19 lines
---
 system/skeleton/etc/init.d/S40network | 3 +++
 1 file changed, 3 insertions(+)
system/skeleton/etc/init.d/S40network +3 -0
index e69e613..bfdd491 100755
@@ -3,6 +3,9 @@
 # Start the network....
 #
 
+# Debian ifupdown needs the /run/network lock directory
+mkdir -p /run/network
+
 case "$1" in
   start)
  	echo "Starting network..."
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#3 lore raw

PATCH v3 2/9 debianutils: new package

In reply to Gustavo Zacarias
---
 package/Config.in                    |  1 +
 package/debianutils/Config.in        |  7 +++++++
 package/debianutils/debianutils.hash |  2 ++
 package/debianutils/debianutils.mk   | 14 ++++++++++++++
 4 files changed, 24 insertions(+)
 create mode 100644 package/debianutils/Config.in
 create mode 100644 package/debianutils/debianutils.hash
 create mode 100644 package/debianutils/debianutils.mk
package/Config.in +1 -0
index 0dbb788..278134d 100644
@@ -1199,6 +1199,7 @@ endif
 	source "package/cpuload/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/dcron/Config.in"
+	source "package/debianutils/Config.in"
 endif
 	source "package/dsp-tools/Config.in"
 	source "package/ftop/Config.in"
package/debianutils/Config.in new file +7 -0
new file mode 100644
index 0000000..f865868
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_DEBIANUTILS
+	bool "debianutils"
+	depends on BR2_USE_MMU # fork()
+	help
+	  Miscellaneous utilities specific to Debian.
+
+	  https://tracker.debian.org/pkg/debianutils
package/debianutils/debianutils.hash new file +2 -0
new file mode 100644
index 0000000..089dd42
@@ -0,0 +1,2 @@
+# From http://ftp.de.debian.org/debian/pool/main/d/debianutils/debianutils_4.4.dsc
+sha256	190850cdd6b5302e0a1ba1aaed1bc7074d67d3bd8d04c613f242f7145afa53a6	debianutils_4.4.tar.gz
package/debianutils/debianutils.mk new file +14 -0
new file mode 100644
index 0000000..43d7cf3
@@ -0,0 +1,14 @@
+################################################################################
+#
+# debianutils
+#
+################################################################################
+
+DEBIANUTILS_VERSION = 4.4
+DEBIANUTILS_SOURCE = debianutils_$(DEBIANUTILS_VERSION).tar.gz
+DEBIANUTILS_SITE = http://snapshot.debian.org/archive/debian/20130728T034252Z/pool/main/d/debianutils
+DEBIANUTILS_CONF_OPTS = --exec-prefix=/
+DEBIANUTILS_LICENSE = GPLv2+, SMAIL (savelog)
+DEBIANUTILS_LICENSE_FILES = debian/copyright
+
+$(eval $(autotools-package))
Signature · 1 line
2.0.4
#4 lore raw

PATCH 2/9 debianutils: new package

Quoted 1 line · Gustavo Zacarias

You didn't carry my

but anyway here's an

Regards,
Arnout

Quoted 64 lines
---
 package/Config.in                    |  1 +
 package/debianutils/Config.in        |  7 +++++++
 package/debianutils/debianutils.hash |  2 ++
 package/debianutils/debianutils.mk   | 14 ++++++++++++++
 4 files changed, 24 insertions(+)
 create mode 100644 package/debianutils/Config.in
 create mode 100644 package/debianutils/debianutils.hash
 create mode 100644 package/debianutils/debianutils.mk
package/Config.in +1 -0
index 0dbb788..278134d 100644
@@ -1199,6 +1199,7 @@ endif
 	source "package/cpuload/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/dcron/Config.in"
+	source "package/debianutils/Config.in"
 endif
 	source "package/dsp-tools/Config.in"
 	source "package/ftop/Config.in"
package/debianutils/Config.in new file +7 -0
new file mode 100644
index 0000000..f865868
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_DEBIANUTILS
+	bool "debianutils"
+	depends on BR2_USE_MMU # fork()
+	help
+	  Miscellaneous utilities specific to Debian.
+
+	  https://tracker.debian.org/pkg/debianutils
package/debianutils/debianutils.hash new file +2 -0
new file mode 100644
index 0000000..089dd42
@@ -0,0 +1,2 @@
+# From http://ftp.de.debian.org/debian/pool/main/d/debianutils/debianutils_4.4.dsc
+sha256	190850cdd6b5302e0a1ba1aaed1bc7074d67d3bd8d04c613f242f7145afa53a6	debianutils_4.4.tar.gz
package/debianutils/debianutils.mk new file +14 -0
new file mode 100644
index 0000000..43d7cf3
@@ -0,0 +1,14 @@
+################################################################################
+#
+# debianutils
+#
+################################################################################
+
+DEBIANUTILS_VERSION = 4.4
+DEBIANUTILS_SOURCE = debianutils_$(DEBIANUTILS_VERSION).tar.gz
+DEBIANUTILS_SITE = http://snapshot.debian.org/archive/debian/20130728T034252Z/pool/main/d/debianutils
+DEBIANUTILS_CONF_OPTS = --exec-prefix=/
+DEBIANUTILS_LICENSE = GPLv2+, SMAIL (savelog)
+DEBIANUTILS_LICENSE_FILES = debian/copyright
+
+$(eval $(autotools-package))
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#5 lore raw

PATCH 2/9 debianutils: new package

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 10 lines · Gustavo Zacarias
---
 package/Config.in                    |  1 +
 package/debianutils/Config.in        |  7 +++++++
 package/debianutils/debianutils.hash |  2 ++
 package/debianutils/debianutils.mk   | 14 ++++++++++++++
 4 files changed, 24 insertions(+)
 create mode 100644 package/debianutils/Config.in
 create mode 100644 package/debianutils/debianutils.hash
 create mode 100644 package/debianutils/debianutils.mk

Thanks, patch applied to next. However, I've added an optional dependency on Busybox, since debianutils installs 'which', which is also installed by Busybox.

Thanks to Arnout for the review and testing.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#6 lore raw

PATCH v3 3/9 ifupdown: new package

In reply to Gustavo Zacarias
---
 package/Config.in              |  3 +++
 package/ifupdown/Config.in     | 17 +++++++++++++++++
 package/ifupdown/ifupdown.hash |  2 ++
 package/ifupdown/ifupdown.mk   | 24 ++++++++++++++++++++++++
 4 files changed, 46 insertions(+)
 create mode 100644 package/ifupdown/Config.in
 create mode 100644 package/ifupdown/ifupdown.hash
 create mode 100644 package/ifupdown/ifupdown.mk
package/Config.in +3 -0
index 278134d..8f3cc3c 100644
@@ -1014,6 +1014,9 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/ifplugd/Config.in"
 endif
 	source "package/iftop/Config.in"
+if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	source "package/ifupdown/Config.in"
+endif
 	source "package/igh-ethercat/Config.in"
 	source "package/igmpproxy/Config.in"
 	source "package/inadyn/Config.in"
package/ifupdown/Config.in new file +17 -0
new file mode 100644
index 0000000..10cf2be
@@ -0,0 +1,17 @@
+config BR2_PACKAGE_IFUPDOWN
+	bool "ifupdown"
+	depends on BR2_USE_MMU # fork()
+	# Default/our uclibc lacks wordexp()
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC
+	# runtime for ip binary
+	select BR2_PACKAGE_IPROUTE2 if !BR2_PACKAGE_BUSYBOX
+	# runtime for run-parts
+	select BR2_PACKAGE_DEBIANUTILS if !BR2_PACKAGE_BUSYBOX
+	help
+	  High level tools to configure network interfaces.
+
+	  https://tracker.debian.org/pkg/ifupdown
+
+comment "ifupdown needs an (e)glibc or musl toolchain"
+	depends on BR2_USE_MMU
+	depends on BR2_TOOLCHAIN_USES_UCLIBC
package/ifupdown/ifupdown.hash new file +2 -0
new file mode 100644
index 0000000..f0c314b
@@ -0,0 +1,2 @@
+# From http://ftp.de.debian.org/debian/pool/main/i/ifupdown/ifupdown_0.7.49.dsc
+sha256	5d07c73610ff90393c7273e2af9003eeb1825fc88144ae5ed11a5517547d0f58	ifupdown_0.7.49.tar.xz
package/ifupdown/ifupdown.mk new file +24 -0
new file mode 100644
index 0000000..f4ad7d3
@@ -0,0 +1,24 @@
+################################################################################
+#
+# ifupdown
+#
+################################################################################
+
+IFUPDOWN_VERSION = 0.7.49
+IFUPDOWN_SOURCE = ifupdown_$(IFUPDOWN_VERSION).tar.xz
+IFUPDOWN_SITE = http://snapshot.debian.org/archive/debian/20140923T221921Z/pool/main/i/ifupdown
+IFUPDOWN_DEPENDENCIES = $(if $(BR2_PACKAGE_BUSYBOX),busybox)
+IFUPDOWN_LICENSE = GPLv2+
+IFUPDOWN_LICENSE_FILES = COPYING
+
+define IFUPDOWN_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \
+		CFLAGS="$(TARGET_CFLAGS) -D'IFUPDOWN_VERSION=\"$(IFUPDOWN_VERSION)\"'" \
+		-C $(@D)
+endef
+
+define IFUPDOWN_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install
+endef
+
+$(eval $(generic-package))
Signature · 1 line
2.0.4
#7 lore raw

PATCH 3/9 ifupdown: new package

Hello Gustavo, Arnout, all,

Unfortunately this fails for me while building:
First it complains about a non-existent "dpkg-architecture" program (I'm building on Debian x64 and it is not installed on my build machine by default) - then it fails arch.h no such file or directory - it is created with the $DEB_HOST_ARCH_OS variable, which is set by the above utility.

This is the same perl script found in "dpkg" source 1.16.15 in the scripts sub directory (which is already used by start-stop-daemon). It is part of the dpkg-dev debian package in stable.

I think, that this program is not needed by us, as we only target Linux, and dpkg-architecture is used to query 2 variables we are compiling for:
- DEB_HOST_ARCH_OS which is always "linux" (I guess this could be hurd or netbsd, as Debian supports those kernels, not Buildroot though)
- DEB_BUILD_GNU_TYPE which is <architecture>-linux-gnu

Maybe add a small patch, that replaces all dpkg-architecture DEB_HOST_ARCH_OS queries to a "linux" constant, and the DEB_BUILD_GNU_TYPE query to a Buildroot specific macro which adds the target architecture?

This call appears in:
defn2c.pl - 5
defn2man.pl - 5
debian/rules - 41,43
debian/testbuild - 3

---

Quoted 1 line
Quoted 1 line
Quoted 1 line

ifupdown 0.7.49 Building

...BLAH...
Can't exec "dpkg-architecture": No such file or directory at ./defn2c.pl line 5.
Use of uninitialized value $DEB_HOST_ARCH_OS in substitution (s///) at ./ defn2c.pl line 7.
Use of uninitialized value $DEB_HOST_ARCH_OS in string eq at ./defn2c.pl line 33, <> line 2.
...BLAH... /home/scythe/buildroot/output/host/usr/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os
-D'IFUPDOWN_VERSION="0.7.49"' -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64 -c -o link.o link.c
sed -e '/^##ADDRESSFAM##$/r inet.man' -e '/^##ADDRESSFAM##$/r ipx.man' -e

'/^##ADDRESSFAM##$/r inet6.man' -e '/^##ADDRESSFAM##$/r can.man' \
             -e '/^##ADDRESSFAM##$/d' < interfaces.5.pre > interfaces.5
meta.c:5:18: fatal error: arch.h: No such file or directory
 #include "arch.h"
                  ^

compilation terminated.
make[1]: *** [meta.o] Error 1

---

Best regards,
Karoly
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141118/6a5cda13/attachment.html>

#8 lore raw

PATCH 3/9 ifupdown: new package

I don't know how should I propose a patch to a pending patch :) So here's attached a patch file, to be put into the package/ifupdown directory.

BR
Karoly

Quoted 57 lines · K?roly Kasza

Hello Gustavo, Arnout, all,

Unfortunately this fails for me while building:
First it complains about a non-existent "dpkg-architecture" program (I'm building on Debian x64 and it is not installed on my build machine by default) - then it fails arch.h no such file or directory - it is created with the $DEB_HOST_ARCH_OS variable, which is set by the above utility.

This is the same perl script found in "dpkg" source 1.16.15 in the scripts sub directory (which is already used by start-stop-daemon). It is part of the dpkg-dev debian package in stable.

I think, that this program is not needed by us, as we only target Linux, and dpkg-architecture is used to query 2 variables we are compiling for:
- DEB_HOST_ARCH_OS which is always "linux" (I guess this could be hurd or netbsd, as Debian supports those kernels, not Buildroot though)
- DEB_BUILD_GNU_TYPE which is <architecture>-linux-gnu

Maybe add a small patch, that replaces all dpkg-architecture DEB_HOST_ARCH_OS queries to a "linux" constant, and the DEB_BUILD_GNU_TYPE query to a Buildroot specific macro which adds the target architecture?

This call appears in:
defn2c.pl - 5
defn2man.pl - 5
debian/rules - 41,43
debian/testbuild - 3

---

Quoted 1 line
Quoted 1 line
Quoted 1 line

ifupdown 0.7.49 Building

...BLAH...
Can't exec "dpkg-architecture": No such file or directory at ./defn2c.pl line 5.
Use of uninitialized value $DEB_HOST_ARCH_OS in substitution (s///) at ./ defn2c.pl line 7.
Use of uninitialized value $DEB_HOST_ARCH_OS in string eq at ./defn2c.pl line 33, <> line 2.
...BLAH... /home/scythe/buildroot/output/host/usr/bin/x86_64-linux-gcc

(quoted diff) +0 -2
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os
 -D'IFUPDOWN_VERSION="0.7.49"' -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64  -c -o link.o link.c

sed -e '/^##ADDRESSFAM##$/r inet.man' -e '/^##ADDRESSFAM##$/r ipx.man' -e

'/^##ADDRESSFAM##$/r inet6.man' -e '/^##ADDRESSFAM##$/r can.man' \
             -e '/^##ADDRESSFAM##$/d' < interfaces.5.pre > interfaces.5
meta.c:5:18: fatal error: arch.h: No such file or directory
 #include "arch.h"
                  ^

compilation terminated.
make[1]: *** [meta.o] Error 1

---

Best regards,
Karoly

Signature · 12 lines
?dv,
KK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141118/a2c4292a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-dpkg-architecture.patch
Type: application/octet-stream
Size: 1716 bytes
Desc: not available
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141118/a2c4292a/attachment.obj>
#9 lore raw

PATCH v3 3/9 ifupdown: new package

Quoted 3 lines · K?roly Kasza

I don't know how should I propose a patch to a pending patch :) So here's attached a patch file, to be put into the package/ifupdown directory.

Hi Karoly.
Thanks for spotting this one, i tested on Gentoo thinking "there's nothing more different than Debian" and i had debianutils installed hah. Actually just doing:

my $DEB_HOST_ARCH_OS = "linux";

...in defn2c.pl is enough.

I'll add the minor patch.
Regards.

#10 lore raw

PATCH 3/9 ifupdown: new package

In reply to Károly Kasza
Quoted 1 line · K?roly Kasza

I don't know how should I propose a patch to a pending patch :)

Like you did, except:

- never attach, always send in-line;

- don't top-post.

Quoted 1 line

So here's attached a patch file, to be put into the package/ifupdown directory.

Patching the debian/* files isn't necessary, we don't use them.

I agree with the solution of this patch. The alternative would be to create our
own dpkg-architecture in our HOST_DIR, but I think that's a bit too much to ask.

Regards,
Arnout

Quoted 4 lines

BR
Karoly

[snip]

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#11 lore raw

PATCH 3/9 ifupdown: new package

In reply to Gustavo Zacarias

package/ifupdown/ifupdown.mk line 22

Quoted 3 lines · Gustavo Zacarias
package/ifupdown/ifupdown.mk new file +3 -0
+define IFUPDOWN_INSTALL_TARGET_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install
+endef

The bundled install tries to symlink ifdown->ifup, without removing ifup first.
So when it's installed a second time, or when busybox is selected, it errors out.

Adding an $(RM) $(TARGET_DIR)/sbin/ifdown solves it.

Regards,
Arnout

Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#12 lore raw

PATCH v3 3/9 ifupdown: new package

Quoted 4 lines · Arnout Vandecappelle

The bundled install tries to symlink ifdown->ifup, without removing ifup first.
So when it's installed a second time, or when busybox is selected, it errors out.

Adding an $(RM) $(TARGET_DIR)/sbin/ifdown solves it.

Aha! That's the reason i used a manual install before :)
Just found it again when testing without dpkg-architecture (and your mail). I'll amend for v4.
Regards.

#13 lore raw

PATCH v3 4/9 start-stop-daemon: new package

In reply to Gustavo Zacarias
---
 package/Config.in                                  |  3 ++
 .../0001-add-uclibc-alias-and-musl.patch           | 42 ++++++++++++++++++++++
 package/start-stop-daemon/Config.in                |  8 +++++
 package/start-stop-daemon/start-stop-daemon.hash   |  2 ++
 package/start-stop-daemon/start-stop-daemon.mk     | 27 ++++++++++++++
 5 files changed, 82 insertions(+)
 create mode 100644 package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch
 create mode 100644 package/start-stop-daemon/Config.in
 create mode 100644 package/start-stop-daemon/start-stop-daemon.hash
 create mode 100644 package/start-stop-daemon/start-stop-daemon.mk
package/Config.in +3 -0
index 8f3cc3c..ce161cf 100644
@@ -1229,6 +1229,9 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/rsyslog/Config.in"
 endif
 	source "package/smack/Config.in"
+if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	source "package/start-stop-daemon/Config.in"
+endif
 	source "package/supervisor/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/sysklogd/Config.in"
package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch new file +42 -0

42 lines not on this page · raw message

package/start-stop-daemon/Config.in new file +8 -0
new file mode 100644
index 0000000..7d8eb34
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_START_STOP_DAEMON
+	bool "start-stop-daemon"
+	depends on BR2_USE_MMU # fork()
+	help
+	  start-stop-daemon is used to control the creation and termination
+	  of system-level processes.
+
+	  https://tracker.debian.org/pkg/dpkg
package/start-stop-daemon/start-stop-daemon.hash new file +2 -0
new file mode 100644
index 0000000..e3ab29f
@@ -0,0 +1,2 @@
+# From http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.16.15.dsc
+sha256	92bca9901ba2d9300be42f6de8dbea59b8367a918a2abeeb47d2176c9cf86b55	dpkg_1.16.15.tar.xz
package/start-stop-daemon/start-stop-daemon.mk new file +27 -0
new file mode 100644
index 0000000..4790859
@@ -0,0 +1,27 @@
+################################################################################
+#
+# start-stop-daemon
+#
+################################################################################
+
+START_STOP_DAEMON_VERSION = 1.16.15
+START_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz
+START_STOP_DAEMON_SITE = http://snapshot.debian.org/archive/debian/20140616T044945Z/pool/main/d/dpkg
+START_STOP_DAEMON_CONF_OPTS = --disable-dselect --disable-update-alternatives \
+	--disable-install-info --exec-prefix=/
+START_STOP_DAEMON_DEPENDENCIES = host-pkgconf \
+	$(if $(BR2_PACKAGE_BUSYBOX),busybox)
+START_STOP_DAEMON_LICENSE = Public Domain
+START_STOP_DAEMON_LICENSE_FILES = utils/start-stop-daemon.c
+
+define START_STOP_DAEMON_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib/compat
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/utils
+endef
+
+define START_STOP_DAEMON_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/utils/start-stop-daemon \
+		$(TARGET_DIR)/sbin/start-stop-daemon
+endef
+
+$(eval $(autotools-package))
Signature · 1 line
2.0.4
#14 lore raw

PATCH 4/9 start-stop-daemon: new package

Quoted 1 line · Gustavo Zacarias

Maybe mention in the commit log why 1.17.21 doesn't work.

Quoted 102 lines
---
 package/Config.in                                  |  3 ++
 .../0001-add-uclibc-alias-and-musl.patch           | 42 ++++++++++++++++++++++
 package/start-stop-daemon/Config.in                |  8 +++++
 package/start-stop-daemon/start-stop-daemon.hash   |  2 ++
 package/start-stop-daemon/start-stop-daemon.mk     | 27 ++++++++++++++
 5 files changed, 82 insertions(+)
 create mode 100644 package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch
 create mode 100644 package/start-stop-daemon/Config.in
 create mode 100644 package/start-stop-daemon/start-stop-daemon.hash
 create mode 100644 package/start-stop-daemon/start-stop-daemon.mk
package/Config.in +3 -0
index 8f3cc3c..ce161cf 100644
@@ -1229,6 +1229,9 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/rsyslog/Config.in"
 endif
 	source "package/smack/Config.in"
+if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	source "package/start-stop-daemon/Config.in"
+endif
 	source "package/supervisor/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/sysklogd/Config.in"
package/start-stop-daemon/0001-add-uclibc-alias-and-musl.patch new file +42 -0
new file mode 100644
index 0000000..0b726d4
@@ -0,0 +1,42 @@
+Make linux-uclibcgnueabi an alias for linux-uclibceabi since it's
+what we use in buildroot toolchains.
+Also add support for musl libc which is a backport from 1.17.x with
+a slight tweak for musleabi (non-hf).
+
+Signed-off-by: Gustavo Zacarias <[email protected]>
+
+diff -Nura dpkg-1.16.15.orig/ostable dpkg-1.16.15/ostable
+--- dpkg-1.16.15.orig/ostable	2014-11-07 08:09:07.358304926 -0300
++++ dpkg-1.16.15/ostable	2014-11-07 09:35:06.158580079 -0300
+@@ -14,8 +14,10 @@
+ # system part of the output of the GNU config.guess script.
+ #
+ # <Debian name>		<GNU name>		<config.guess regex>
+-uclibceabi-linux	linux-uclibceabi	linux[^-]*-uclibceabi
++uclibceabi-linux	linux-uclibceabi	linux[^-]*-uclibc.*eabi
+ uclibc-linux		linux-uclibc		linux[^-]*-uclibc
++musleabihf-linux	linux-musleabihf	linux[^-]*-musleabihf
++musl-linux		linux-musl		linux[^-]*-musl[^-]*
+ gnueabihf-linux		linux-gnueabihf		linux[^-]*-gnueabihf
+ gnueabi-linux		linux-gnueabi		linux[^-]*-gnueabi
+ gnuabin32-linux		linux-gnuabin32		linux[^-]*-gnuabin32
+@@ -33,6 +35,6 @@
+ bsd-netbsd		netbsd			netbsd[^-]*
+ bsd-openbsd		openbsd			openbsd[^-]*
+ sysv-solaris		solaris			solaris[^-]*
+-uclibceabi-uclinux	uclinux-uclibceabi	uclinux[^-]*-uclibceabi
++uclibceabi-uclinux	uclinux-uclibceabi	uclinux[^-]*-uclibc.*eabi
+ uclibc-uclinux		uclinux-uclibc		uclinux[^-]*(-uclibc.*)?
+ tos-mint		mint			mint[^-]*
+diff -Nura dpkg-1.16.15.orig/triplettable dpkg-1.16.15/triplettable
+--- dpkg-1.16.15.orig/triplettable	2014-11-07 08:09:07.345304482 -0300
++++ dpkg-1.16.15/triplettable	2014-11-07 09:35:29.098364036 -0300
+@@ -5,6 +5,8 @@
+ # <Debian triplet>	<Debian arch>
+ uclibceabi-linux-arm	uclibc-linux-armel
+ uclibc-linux-<cpu>	uclibc-linux-<cpu>
++musleabihf-linux-arm	musl-linux-armhf
++musl-linux-<cpu>	musl-linux-<cpu>
+ gnueabihf-linux-arm	armhf
+ gnueabi-linux-arm	armel
+ gnuabin32-linux-mips64el	mipsn32el
package/start-stop-daemon/Config.in new file +8 -0
new file mode 100644
index 0000000..7d8eb34
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_START_STOP_DAEMON
+	bool "start-stop-daemon"
+	depends on BR2_USE_MMU # fork()
+	help
+	  start-stop-daemon is used to control the creation and termination
+	  of system-level processes.
+
+	  https://tracker.debian.org/pkg/dpkg
package/start-stop-daemon/start-stop-daemon.hash new file +2 -0
new file mode 100644
index 0000000..e3ab29f
@@ -0,0 +1,2 @@
+# From http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.16.15.dsc
+sha256	92bca9901ba2d9300be42f6de8dbea59b8367a918a2abeeb47d2176c9cf86b55	dpkg_1.16.15.tar.xz
package/start-stop-daemon/start-stop-daemon.mk new file +0 -0
new file mode 100644
index 0000000..4790859

package/start-stop-daemon/start-stop-daemon.mk line 6

Quoted 6 lines
package/start-stop-daemon/start-stop-daemon.mk new file +6 -0
@@ -0,0 +1,27 @@
+################################################################################
+#
+# start-stop-daemon
+#
+################################################################################
+

I would like a comment here explaining why the package is not called dpkg. E.g.

# Debian start-stop-daemon is part of dpkg. Since start-stop-daemon is the only

# interesting tool in it, we call the buildroot package start-stop-daemon.

package/start-stop-daemon/start-stop-daemon.mk line 11

Quoted 5 lines
package/start-stop-daemon/start-stop-daemon.mk new file +5 -0
+START_STOP_DAEMON_VERSION = 1.16.15
+START_STOP_DAEMON_SOURCE = dpkg_$(START_STOP_DAEMON_VERSION).tar.xz
+START_STOP_DAEMON_SITE = http://snapshot.debian.org/archive/debian/20140616T044945Z/pool/main/d/dpkg
+START_STOP_DAEMON_CONF_OPTS = --disable-dselect --disable-update-alternatives \
+	--disable-install-info --exec-prefix=/

If the line is split anyway, I personally prefer

START_STOP_DAEMON_CONF_OPTS = \
	--disable-dselect \
	--disable-update-alternatives \
	--disable-install-info \
	--exec-prefix=/

(this gives smaller/clearer diffs when something changes; and if the last line change, git diff will still show the variable name as the 'function').

package/start-stop-daemon/start-stop-daemon.mk line 15

Quoted 4 lines
package/start-stop-daemon/start-stop-daemon.mk new file +4 -0
+START_STOP_DAEMON_DEPENDENCIES = host-pkgconf \
+	$(if $(BR2_PACKAGE_BUSYBOX),busybox)
+START_STOP_DAEMON_LICENSE = Public Domain
+START_STOP_DAEMON_LICENSE_FILES = utils/start-stop-daemon.c

For static building, I need

START_STOP_DAEMON_CONF_ENV = \
	dpkg_cv_va_copy=yes \
	dpkg_cv_c99_snprintf=yes

With that added:

Regards,
Arnout

Quoted 13 lines
package/start-stop-daemon/start-stop-daemon.mk new file +12 -0
+
+define START_STOP_DAEMON_BUILD_CMDS
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/lib/compat
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/utils
+endef
+
+define START_STOP_DAEMON_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 -D $(@D)/utils/start-stop-daemon \
+		$(TARGET_DIR)/sbin/start-stop-daemon
+endef
+
+$(eval $(autotools-package))
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#15 lore raw

PATCH v3 5/9 dhcp: install dhclient to /sbin

In reply to Gustavo Zacarias

Debian ifupdown uses an explicit call to /sbin/dhclient. Busybox ifupdown uses the search path.

---
 package/dhcp/dhcp.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/dhcp/dhcp.mk +1 -1
index 27fb60b..1eb6b32 100644
@@ -59,7 +59,7 @@ define DHCP_INSTALL_CLIENT
 	mkdir -p $(TARGET_DIR)/var/lib
 	(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
 	$(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \
-		$(TARGET_DIR)/usr/sbin/dhclient
+		$(TARGET_DIR)/sbin/dhclient
 	$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
 		$(TARGET_DIR)/etc/dhcp/dhclient.conf
 	$(INSTALL) -m 0755 -D package/dhcp/dhclient-script \
Signature · 1 line
2.0.4
#16 lore raw

PATCH 5/9 dhcp: install dhclient to /sbin

Quoted 4 lines · Gustavo Zacarias

Debian ifupdown uses an explicit call to /sbin/dhclient. Busybox ifupdown uses the search path.

Regards,
Arnout

Quoted 18 lines
---
 package/dhcp/dhcp.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
package/dhcp/dhcp.mk +1 -1
index 27fb60b..1eb6b32 100644
@@ -59,7 +59,7 @@ define DHCP_INSTALL_CLIENT
 	mkdir -p $(TARGET_DIR)/var/lib
 	(cd $(TARGET_DIR)/var/lib; ln -snf /tmp dhcp)
 	$(INSTALL) -m 0755 -D $(DHCP_DIR)/client/dhclient \
-		$(TARGET_DIR)/usr/sbin/dhclient
+		$(TARGET_DIR)/sbin/dhclient
 	$(INSTALL) -m 0644 -D package/dhcp/dhclient.conf \
 		$(TARGET_DIR)/etc/dhcp/dhclient.conf
 	$(INSTALL) -m 0755 -D package/dhcp/dhclient-script \
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#17 lore raw

PATCH 5/9 dhcp: install dhclient to /sbin

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 7 lines · Gustavo Zacarias

Debian ifupdown uses an explicit call to /sbin/dhclient. Busybox ifupdown uses the search path.

---
 package/dhcp/dhcp.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Applied to next, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#18 lore raw

PATCH v3 6/9 dhcp: update dhclient-script

In reply to Gustavo Zacarias

The previous no-op dhclient-script is useless and in fact can lead users to believe things will work.
dhclient-script is supposed to, among many other things, bring the interface up for dhclient to pump an address, set the interface address, set resolv.conf appropiately and set the default gateway. It's a complex script since it has to deal with a lot of details so let's just use the best fit which is the OpenWRT one since it uses the "legacy" tools (ifconfig, route, ...) which can be easily provided by busybox and/or net-tools.
There are newer and more feature-complete versions around but they require full iproute2 ip and wouldn't fit as well with the busybox-only approach.

License: likely GPLv2+
Source:
http://git.openwrt.org/?p=packages.git;a=blob;f=net/isc-dhcp/files/dhclient-script;h=4afebc0ad20ebac51c5baae5ed01c6713e3a0fd0;hb=HEAD

---
 package/dhcp/dhclient-script | 284 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 283 insertions(+), 1 deletion(-)
package/dhcp/dhclient-script +283 -1
index 5566aca..cb292b6 100755
@@ -1,2 +1,284 @@
 #!/bin/sh
-# empty dhclient-script to keep dhclient from complaining
+
+# dhclient-script from OpenWRT project
+# http://git.openwrt.org/?p=packages.git;a=blob;f=net/isc-dhcp/files/dhclient-script;h=4afebc0ad20ebac51c5baae5ed01c6713e3a0fd0;hb=HEAD
+
+make_resolv_conf() {
+  if [ x"$new_domain_name_servers" != x ]; then
+    cat /dev/null > /etc/resolv.conf.dhclient
+    chmod 644 /etc/resolv.conf.dhclient
+    if [ x"$new_domain_search" != x ]; then
+      echo search $new_domain_search >> /etc/resolv.conf.dhclient
+    elif [ x"$new_domain_name" != x ]; then
+      # Note that the DHCP 'Domain Name Option' is really just a domain
+      # name, and that this practice of using the domain name option as
+      # a search path is both nonstandard and deprecated.
+      echo search $new_domain_name >> /etc/resolv.conf.dhclient
+    fi
+    for nameserver in $new_domain_name_servers; do
+      echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+    done
+
+  elif [ "x${new_dhcp6_name_servers}" != x ] ; then
+    cat /dev/null > /etc/resolv.conf.dhclient6
+    chmod 644 /etc/resolv.conf.dhclient6
+
+    if [ "x${new_dhcp6_domain_search}" != x ] ; then
+      echo search ${new_dhcp6_domain_search} >> /etc/resolv.conf.dhclient6
+    fi
+    for nameserver in ${new_dhcp6_name_servers} ; do
+      echo nameserver ${nameserver} >> /etc/resolv.conf.dhclient6
+    done
+  fi
+
+  # if both v4 and v6 clients are running, concatenate results
+  cat /etc/resolv.conf.* > /etc/resolv.conf
+}
+
+# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
+exit_with_hooks() {
+  exit_status=$1
+  if [ -f /etc/dhclient-exit-hooks ]; then
+    . /etc/dhclient-exit-hooks
+  fi
+# probably should do something with exit status of the local script
+  exit $exit_status
+}
+
+# Invoke the local dhcp client enter hooks, if they exist.
+if [ -f /etc/dhclient-enter-hooks ]; then
+  exit_status=0
+  . /etc/dhclient-enter-hooks
+  # allow the local script to abort processing of this state
+  # local script must set exit_status variable to nonzero.
+  if [ $exit_status -ne 0 ]; then
+    exit $exit_status
+  fi
+fi
+
+###
+### DHCPv4 Handlers
+###
+
+if [ x$new_broadcast_address != x ]; then
+  new_broadcast_arg="broadcast $new_broadcast_address"
+fi
+if [ x$new_subnet_mask != x ]; then
+  new_subnet_arg="netmask $new_subnet_mask"
+fi
+if [ x$alias_subnet_mask != x ]; then
+  alias_subnet_arg="netmask $alias_subnet_mask"
+fi
+
+if [ x$reason = xMEDIUM ]; then
+  # Linux doesn't do mediums (ok, ok, media).
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xPREINIT ]; then
+  if [ x$alias_ip_address != x ]; then
+    # Bring down alias interface. Its routes will disappear too.
+    ifconfig $interface:0- 0.0.0.0
+  fi
+  ifconfig $interface 0.0.0.0 up
+
+  # We need to give the kernel some time to get the interface up.
+  sleep 1
+
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
+  exit_with_hooks 0
+fi
+  
+if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
+   [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
+  current_hostname=`hostname`
+  if [ x$current_hostname = x ] || \
+     [ x$current_hostname = x$old_host_name ]; then
+    if [ x$current_hostname = x ] || \
+       [ x$new_host_name != x$old_host_name ]; then
+      hostname $new_host_name
+    fi
+  fi
+    
+  if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+		[ x$alias_ip_address != x$old_ip_address ]; then
+    # Possible new alias. Remove old alias.
+    ifconfig $interface:0- 0.0.0.0
+  fi
+  if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+    # IP address changed. Bringing down the interface will delete all routes,
+    # and clear the ARP cache.
+    ifconfig $interface 0.0.0.0 down
+
+  fi
+  if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+     [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+
+    ifconfig $interface $new_ip_address $new_subnet_arg \
+							$new_broadcast_arg
+    for router in $new_routers; do
+      if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+	route add -host $router dev $interface
+      fi
+      route add default gw $router
+    done
+  fi
+  if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+   then
+    ifconfig $interface:0- 0.0.0.0
+    ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+    route add -host $alias_ip_address $interface:0
+  fi
+  make_resolv_conf
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
+   || [ x$reason = xSTOP ]; then
+  if [ x$alias_ip_address != x ]; then
+    # Turn off alias interface.
+    ifconfig $interface:0- 0.0.0.0
+  fi
+  if [ x$old_ip_address != x ]; then
+    # Shut down interface, which will delete routes and clear arp cache.
+    ifconfig $interface 0.0.0.0 down
+  fi
+  if [ x$alias_ip_address != x ]; then
+    ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+    route add -host $alias_ip_address $interface:0
+  fi
+
+  # remove v4 dns configuration for this interface
+  rm /etc/resolv.conf.dhclient
+  cat /etc/resolv.conf.* > /etc/resolv.conf
+
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xTIMEOUT ]; then
+  if [ x$alias_ip_address != x ]; then
+    ifconfig $interface:0- 0.0.0.0
+  fi
+  ifconfig $interface $new_ip_address $new_subnet_arg \
+					$new_broadcast_arg
+  set $new_routers
+  if ping -q -c 1 $1; then
+    if [ x$new_ip_address != x$alias_ip_address ] && \
+			[ x$alias_ip_address != x ]; then
+      ifconfig $interface:0 $alias_ip_address $alias_subnet_arg
+      route add -host $alias_ip_address dev $interface:0
+    fi
+    for router in $new_routers; do
+      if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+	route add -host $router dev $interface
+      fi
+      route add default gw $router
+    done
+    make_resolv_conf
+    exit_with_hooks 0
+  fi
+  ifconfig $interface 0.0.0.0 down
+  exit_with_hooks 1
+fi
+
+###
+### DHCPv6 Handlers
+###
+
+if [ x$reason = xPREINIT6 ]; then
+  # Ensure interface is up.
+  ifconfig ${interface} up
+
+  # Remove any stale addresses from aborted clients.
+  ip -f inet6 addr flush dev ${interface} scope global
+
+  exit_with_hooks 0
+fi
+
+if [ x${old_ip6_prefix} != x ] || [ x${new_ip6_prefix} != x ] ; then
+    echo Prefix ${reason} old=${old_ip6_prefix} new=${new_ip6_prefix}
+
+    exit_with_hooks 0
+fi
+
+if [ x$reason = xBOUND6 ]; then
+  if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
+    exit_with_hooks 2;
+  fi
+
+  ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
+
+  # Check for nameserver options.
+  make_resolv_conf
+
+### <<
+  # Set up softwire tunnel
+  if [ x${new_dhcp6_softwire} != x ] ; then
+    /etc/init.d/dhclient stop
+    ifconfig ${interface} 0.0.0.0
+    ip -6 tunnel add tun0 mode ipip6 \
+	remote ${new_dhcp6_softwire} \
+	local ${new_ip6_address} \
+	dev ${interface} encaplimit none
+    ip link set tun0 up
+    ip route add default dev tun0
+  fi
+### >>
+
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then
+  if [ x${new_ip6_address} = x ] || [ x${new_ip6_prefixlen} = x ] ; then
+    exit_with_hooks 2;
+  fi
+
+  ifconfig ${interface} add ${new_ip6_address}/${new_ip6_prefixlen}
+
+  # Make sure nothing has moved around on us.
+
+  # Nameservers/domains/etc.
+  if [ "x${new_dhcp6_name_servers}" != "x${old_dhcp6_name_servers}" ] ||
+     [ "x${new_dhcp6_domain_search}" != "x${old_dhcp6_domain_search}" ] ; then
+    make_resolv_conf
+  fi
+
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xDEPREF6 ]; then
+  if [ x${new_ip6_address} = x ] ; then
+    exit_with_hooks 2;
+  fi
+
+  # Busybox ifconfig has no way to communicate this to the kernel, so ignore it
+
+  exit_with_hooks 0
+fi
+
+if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then
+  if [ x${old_ip6_address} = x ] || [ x${old_ip6_prefixlen} = x ] ; then
+    exit_with_hooks 2;
+  fi
+
+  ifconfig ${interface} del ${old_ip6_address}/${old_ip6_prefixlen}
+
+  # remove v6 dns configuration for this interface
+  rm /etc/resolv.conf.dhclient6
+  cat /etc/resolv.conf.* > /etc/resolv.conf
+
+### <<
+  # Tear down softwire tunnel
+  if [ x${old_dhcp6_softwire} != x ] ; then
+    ip link set tun0 down
+    ip tunnel del tun0
+  fi
+### >>
+
+  exit_with_hooks 0
+fi
+
+exit_with_hooks 0
Signature · 1 line
2.0.4
#19 lore raw

PATCH v3 7/9 dhcpcd: bump to version 6.6.2

In reply to Gustavo Zacarias

Also add hash file.

---
 package/dhcpcd/dhcpcd.hash | 2 ++
 package/dhcpcd/dhcpcd.mk   | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 package/dhcpcd/dhcpcd.hash
package/dhcpcd/dhcpcd.hash new file +2 -0
new file mode 100644
index 0000000..c8ae064
@@ -0,0 +1,2 @@
+# Locally calculated from download (no sig, hash)
+sha256	879c81febafc95ed9353909b719af765e9925c6cb06226b79da6c0dd176fe89f	dhcpcd-6.6.2.tar.bz2
package/dhcpcd/dhcpcd.mk +1 -1
index 3bb7a13..825a345 100644
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-DHCPCD_VERSION = 6.4.7
+DHCPCD_VERSION = 6.6.2
 DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.bz2
 DHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd
 DHCPCD_DEPENDENCIES = host-pkgconf
Signature · 1 line
2.0.4
#20 lore raw

PATCH 7/9 dhcpcd: bump to version 6.6.2

Dear Gustavo Zacarias,

Quoted 8 lines · Gustavo Zacarias

Also add hash file.

---
 package/dhcpcd/dhcpcd.hash | 2 ++
 package/dhcpcd/dhcpcd.mk   | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)
 create mode 100644 package/dhcpcd/dhcpcd.hash

Applied to next, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#21 lore raw

PATCH v3 8/9 dhcpcd: use standard installation

In reply to Gustavo Zacarias

Drop the custom/manual install cmds and do a normal make install. This gets dhcpcd-hooks installed which are useful for many accesory setup functions like dns, ntp server, and so on.
Also install dhcpcd to /sbin since it's expected by debian ifupdown, For busybox ifupdown when external dhcp clients are enabled (not in the default config we ship) will search the path.

---
 package/dhcpcd/dhcpcd.mk | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
package/dhcpcd/dhcpcd.mk +1 -6
index 825a345..c06002f 100644
@@ -35,12 +35,7 @@ define DHCPCD_BUILD_CMDS
 endef
 
 define DHCPCD_INSTALL_TARGET_CMDS
-	$(INSTALL) -D -m 0755 $(@D)/dhcpcd \
-		$(TARGET_DIR)/usr/sbin/dhcpcd
-	$(INSTALL) -D -m 0644 $(@D)/dhcpcd.conf \
-		$(TARGET_DIR)/etc/dhcpcd.conf
-	$(INSTALL) -D -m 0755 $(@D)/dhcpcd-run-hooks \
-		$(TARGET_DIR)/libexec/dhcpcd-run-hooks
+	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install DESTDIR=$(TARGET_DIR)
 endef
 
 # NOTE: Even though this package has a configure script, it is not generated
Signature · 1 line
2.0.4
#22 lore raw

PATCH 8/9 dhcpcd: use standard installation

Dear Gustavo Zacarias,

Quoted 11 lines · Gustavo Zacarias

Drop the custom/manual install cmds and do a normal make install. This gets dhcpcd-hooks installed which are useful for many accesory setup functions like dns, ntp server, and so on.
Also install dhcpcd to /sbin since it's expected by debian ifupdown, For busybox ifupdown when external dhcp clients are enabled (not in the default config we ship) will search the path.

---
 package/dhcpcd/dhcpcd.mk | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

Applied to next, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#23 lore raw

PATCH v3 9/9 network-manager: adjust dhclient and dhcpcd directories

In reply to Gustavo Zacarias

dhclient and dhcpcd were moved from /usr/sbin to /sbin for busybox-less SysV-style init with Debian utilities, so adjust accordingly.

---
 package/network-manager/network-manager.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
package/network-manager/network-manager.mk +2 -2
index 7944254..9770cae 100644
@@ -56,11 +56,11 @@ else
 endif
 
 ifeq ($(BR2_PACKAGE_DHCP_CLIENT),y)
-NETWORK_MANAGER_CONF_OPTS += --with-dhclient=/usr/sbin/dhclient
+NETWORK_MANAGER_CONF_OPTS += --with-dhclient=/sbin/dhclient
 endif
 
 ifeq ($(BR2_PACKAGE_DHCPCD),y)
-NETWORK_MANAGER_CONF_OPTS += --with-dhcpcd=/usr/sbin/dhcpcd
+NETWORK_MANAGER_CONF_OPTS += --with-dhcpcd=/sbin/dhcpcd
 endif
 
 # uClibc by default doesn't have backtrace support, so don't use it
Signature · 1 line
2.0.4
#24 lore raw

PATCH 9/9 network-manager: adjust dhclient and dhcpcd directories

Dear Gustavo Zacarias,

Quoted 7 lines · Gustavo Zacarias

dhclient and dhcpcd were moved from /usr/sbin to /sbin for busybox-less SysV-style init with Debian utilities, so adjust accordingly.

---
 package/network-manager/network-manager.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Applied to next, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com