summaryrefslogtreecommitdiffstats
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)
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 67d5ab18e2fc..f1b008b21032 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 298616e6527c..000000000000
--- 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