Skip to contentSkip to conversation

SystemV init without busybox series

PATCH New Gustavo Zacarias 4 participants 12 messages Nov 27, 2014 – Jan 12, 2015

lore
Share & tools
lore
#0 lore raw

v4 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)

Changes for v4:
* Add comment about the start-stop-daemon naming (Arnout)
* Fixes to static builds of start-stop-daemon (Arnout)
* Fix line wrapping style for start-stop-daemon CONF_OPTS (Arnout)
* Fix rebuild/reinstall of ifupdown

Gustavo Zacarias (4):
dhcp: update dhclient-script
skeleton/S40network: tweak for debian ifupdown
ifupdown: new package
start-stop-daemon: new package

 package/Config.in                                  |   6 +
 package/dhcp/dhclient-script                       | 284 ++++++++++++++++++++-
 .../ifupdown/0001-dont-use-dpkg-architecture.patch |  17 ++
 package/ifupdown/Config.in                         |  17 ++
 package/ifupdown/ifupdown.hash                     |   2 +
 package/ifupdown/ifupdown.mk                       |  26 ++
 .../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     |  36 +++
 system/skeleton/etc/init.d/S40network              |   3 +
 11 files changed, 442 insertions(+), 1 deletion(-)
 create mode 100644 package/ifupdown/0001-dont-use-dpkg-architecture.patch
 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 v4 1/4 dhcp: update dhclient-script

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
#2 lore raw

PATCH v4 1/4 dhcp: update dhclient-script

Quoted 15 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Gustavo" == Gustavo Zacarias <[email protected]> writes:

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.

Quoted 5 lines

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

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#3 lore raw

PATCH v4 2/4 skeleton/S40network: tweak for debian ifupdown

In reply to Gustavo Zacarias

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
#4 lore raw

PATCH v4 2/4 skeleton/S40network: tweak for debian ifupdown

Hello,

Quoted 8 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.

---
 system/skeleton/etc/init.d/S40network | 3 +++
 1 file changed, 3 insertions(+)

Tested with next branch, x86_64 arch in QEMU and VMW, internal toolchain GCC 4.9.2, Linux 3.17.x, SysV init and a lot of utilities, like OpenSSH.

Regards,
Karoly
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141129/e45d943e/attachment.html>

#5 lore raw

PATCH v4 2/4 skeleton/S40network: tweak for debian ifupdown

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 7 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.

---
 system/skeleton/etc/init.d/S40network | 3 +++
 1 file changed, 3 insertions(+)

Applied, thanks.

Thomas

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

PATCH v4 3/4 ifupdown: new package

In reply to Gustavo Zacarias
---
 package/Config.in                                  |  3 +++
 .../ifupdown/0001-dont-use-dpkg-architecture.patch | 17 ++++++++++++++
 package/ifupdown/Config.in                         | 17 ++++++++++++++
 package/ifupdown/ifupdown.hash                     |  2 ++
 package/ifupdown/ifupdown.mk                       | 26 ++++++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 package/ifupdown/0001-dont-use-dpkg-architecture.patch
 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 ab4ab6b..ae365f0 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/0001-dont-use-dpkg-architecture.patch new file +17 -0
new file mode 100644
index 0000000..bb5c58f
@@ -0,0 +1,17 @@
+Drop the need for dpkg-architecture, we only build for linux.
+Thanks to K?roly Kasza for catching this one.
+
+Signed-off-by: Gustavo Zacarias <[email protected]>
+
+diff -Nura ifupdown.orig/defn2c.pl ifupdown/defn2c.pl
+--- ifupdown.orig/defn2c.pl	2014-11-18 16:39:28.878772655 -0300
++++ ifupdown/defn2c.pl	2014-11-18 16:43:41.120456676 -0300
+@@ -2,7 +2,7 @@
+ 
+ use strict;
+ 
+-my $DEB_HOST_ARCH_OS = `dpkg-architecture -qDEB_HOST_ARCH_OS`;
++my $DEB_HOST_ARCH_OS = "linux";
+ 
+ $DEB_HOST_ARCH_OS =~ s/\n//;
+ 
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 +26 -0
new file mode 100644
index 0000000..5c78eed
@@ -0,0 +1,26 @@
+################################################################################
+#
+# 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
+
+# install doesn't overwrite
+define IFUPDOWN_INSTALL_TARGET_CMDS
+	$(RM) $(TARGET_DIR)/sbin/{ifdown,ifquery}
+	$(TARGET_MAKE_ENV) $(MAKE) BASEDIR=$(TARGET_DIR) -C $(@D) install
+endef
+
+$(eval $(generic-package))
Signature · 1 line
2.0.4
#7 lore raw

PATCH v4 3/4 ifupdown: new package

Hello,

Quoted 14 lines · Gustavo Zacarias
---
 package/Config.in                                  |  3 +++
 .../ifupdown/0001-dont-use-dpkg-architecture.patch | 17 ++++++++++++++
 package/ifupdown/Config.in                         | 17 ++++++++++++++
 package/ifupdown/ifupdown.hash                     |  2 ++
 package/ifupdown/ifupdown.mk                       | 26
++++++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 package/ifupdown/0001-dont-use-dpkg-architecture.patch
 create mode 100644 package/ifupdown/Config.in
 create mode 100644 package/ifupdown/ifupdown.hash
 create mode 100644 package/ifupdown/ifupdown.mk

Tested with next branch, x86_64 arch in QEMU and VMW, internal toolchain GCC 4.9.2, Linux 3.17.x, SysV init and a lot of utilities, like OpenSSH.

Regards,
Karoly
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141129/b420b3c1/attachment.html>

#8 lore raw

PATCH v4 3/4 ifupdown: new package

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

Quoted 12 lines · Gustavo Zacarias
---
 package/Config.in                                  |  3 +++
 .../ifupdown/0001-dont-use-dpkg-architecture.patch | 17 ++++++++++++++
 package/ifupdown/Config.in                         | 17 ++++++++++++++
 package/ifupdown/ifupdown.hash                     |  2 ++
 package/ifupdown/ifupdown.mk                       | 26 ++++++++++++++++++++++
 5 files changed, 65 insertions(+)
 create mode 100644 package/ifupdown/0001-dont-use-dpkg-architecture.patch
 create mode 100644 package/ifupdown/Config.in
 create mode 100644 package/ifupdown/ifupdown.hash
 create mode 100644 package/ifupdown/ifupdown.mk

Applied, thanks.

Thomas

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

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

In reply to Gustavo Zacarias

We don't use the 1.17.x series because it has issues when cross-compiling.

---
 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     | 36 +++++++++++++++++++
 5 files changed, 91 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 ae365f0..ceda11d 100644
@@ -1230,6 +1230,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 +36 -0
new file mode 100644
index 0000000..4e7a0da
@@ -0,0 +1,36 @@
+################################################################################
+#
+# start-stop-daemon
+#
+################################################################################
+
+# 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.
+
+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_CONF_ENV = \
+	dpkg_cv_va_copy=yes \
+	dpkg_cv_c99_snprintf=yes
+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
#10 lore raw

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

Hello,

Quoted 5 lines · Gustavo Zacarias

We don't use the 1.17.x series because it has issues when cross-compiling.

Quoted 16 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     | 36
+++++++++++++++++++
 5 files changed, 91 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

Tested with next branch, x86_64 arch in QEMU and VMW, internal toolchain GCC 4.9.2, Linux 3.17.x, SysV init and a lot of utilities, like OpenSSH.

Regards,
Karoly
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20141129/544be6d8/attachment.html>

#11 lore raw

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

In reply to Gustavo Zacarias

Dear Gustavo Zacarias,

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

Quoted 2 lines · Gustavo Zacarias
package/start-stop-daemon/start-stop-daemon.mk new file +2 -0
+START_STOP_DAEMON_LICENSE = Public Domain
+START_STOP_DAEMON_LICENSE_FILES = utils/start-stop-daemon.c

While start-stop-daemon.c itself is under the Public Domain, it is linked against the compat library in lib/compat, which is under GPLv2+. So I've changed the license to GPLv2+ and the license file to COPYING, and applied.

Thanks,

Thomas

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