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