summary refs log tree commit diff
path: root/pkgs/os-specific/linux/busybox
diff options
context:
space:
mode:
authorTethys Svensson <freaken@freaken.dk>2020-07-29 00:24:19 +0200
committerTethys Svensson <freaken@freaken.dk>2020-07-29 00:24:19 +0200
commitdcc963bd2d13a02b1f86d811a1835748aec49cbd (patch)
tree2f7e6e372ad00bc31d80e93dc2941998c65c1402 /pkgs/os-specific/linux/busybox
parent179b74c2167fee8cbd70977dc746179db735ac41 (diff)
downloadnixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar.gz
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar.bz2
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar.lz
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar.xz
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.tar.zst
nixpkgs-dcc963bd2d13a02b1f86d811a1835748aec49cbd.zip
busybox: Download and patch the dispatcher script from upstream
Diffstat (limited to 'pkgs/os-specific/linux/busybox')
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix19
-rwxr-xr-xpkgs/os-specific/linux/busybox/default.script66
2 files changed, 15 insertions, 70 deletions
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index 67d5ab18e2f..f1b008b2103 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -31,6 +31,14 @@ let
     CONFIG_FEATURE_UTMP n
     CONFIG_FEATURE_WTMP n
   '';
+
+  debianName = "busybox_1.30.1-5";
+  debianTarball = fetchTarball {
+    url = "http://deb.debian.org/debian/pool/main/b/busybox/${debianName}.debian.tar.xz";
+    sha256 = "03m4rvs2pd0hj0mdkdm3r4m1gh0bgwr0cvnqds297xnkfi5s01nx";
+  };
+  debianDispatcherScript = "${debianTarball}/tree/udhcpc/etc/udhcpc/default.script";
+  outDispatchPath = "$out/default.script";
 in
 
 stdenv.mkDerivation rec {
@@ -81,7 +89,7 @@ stdenv.mkDerivation rec {
     CONFIG_FEATURE_COPYBUF_KB 64
 
     # Set the path for the udhcpc script
-    CONFIG_UDHCPC_DEFAULT_SCRIPT "$out/share/default.script"
+    CONFIG_UDHCPC_DEFAULT_SCRIPT "${outDispatchPath}"
 
     ${extraConfig}
     CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cc.targetPrefix}"
@@ -98,9 +106,12 @@ stdenv.mkDerivation rec {
   '';
 
   postInstall = ''
-    mkdir $out/share
-    substituteAll ${./default.script} $out/share/default.script
-    chmod +x $out/share/default.script
+    sed -e '
+    1 a busybox() { '$out'/bin/busybox "$@"; }\
+    logger() { '$out'/bin/logger "$@"; }\
+    ' ${debianDispatcherScript} > ${outDispatchPath}
+    chmod 555 ${outDispatchPath}
+    PATH=$out/bin patchShebangs ${outDispatchPath}
   '';
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
diff --git a/pkgs/os-specific/linux/busybox/default.script b/pkgs/os-specific/linux/busybox/default.script
deleted file mode 100755
index 298616e6527..00000000000
--- a/pkgs/os-specific/linux/busybox/default.script
+++ /dev/null
@@ -1,66 +0,0 @@
-#!@bash@/bin/sh
-# Busybox udhcpc dispatcher script.
-# Copyright (C) 2009 by Axel Beckert.
-# Copyright (C) 2014 by Michael Tokarev.
-#
-# Based on the busybox example scripts and the old udhcp source
-# package default.* scripts.
-
-RESOLV_CONF="/etc/resolv.conf"
-
-log() {
-    @out@/bin/logger -t "udhcpc[$PPID]" -p daemon.$1 "$interface: $2"
-}
-
-case $1 in
-    bound|renew)
-
-	# Configure new IP address.
-	# Do it unconditionally even if the address hasn't changed,
-	# to also set subnet, broadcast, mtu, ...
-	@out@/bin/ifconfig $interface ${mtu:+mtu $mtu} \
-	    $ip netmask $subnet ${broadcast:+broadcast $broadcast}
-
-	# get current ("old") routes (after setting new IP)
-	crouter=$(@out@/bin/ip -4 route show dev $interface |
-	          @out@/bin/awk '$1 == "default" { print $3; }')
-	router="${router%% *}" # linux kernel supports only one (default) route
-	if [ ".$router" != ".$crouter" ]; then
-	    # reset just default routes
-	    @out@/bin/ip -4 route flush exact 0.0.0.0/0 dev $interface
-	fi
-	if [ -n "$router" ]; then
-	    # special case for /32 subnets: use onlink keyword
-	    [ ".$subnet" = .255.255.255.255 ] \
-		    && onlink=onlink || onlink=
-	    @out@/bin/ip -4 route add default via $router dev $interface $onlink
-	fi
-
-	# Update resolver configuration file
-	[ -n "$domain" ] && R="domain $domain" || R=""
-	for i in $dns; do
-	    R="$R
-nameserver $i"
-	done
-
-        echo "$R" > "$RESOLV_CONF"
-
-	log info "$1: IP=$ip/$subnet router=$router domain=\"$domain\" dns=\"$dns\" lease=$lease"
-	;;
-
-    deconfig)
-	@out@/bin/ip link set $interface up
-	@out@/bin/ip -4 addr flush dev $interface
-	@out@/bin/ip -4 route flush dev $interface
-	log notice "deconfigured"
-	;;
-
-    leasefail | nak)
-	log err "configuration failed: $1: $message"
-	;;
-
-    *)
-	echo "$0: Unknown udhcpc command: $1" >&2
-	exit 1
-	;;
-esac