summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-29 13:34:46 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-10-29 13:43:00 +0100
commit3b2177b7696c23df8d378c175a2db0ab81062106 (patch)
tree2f87f8ba0caf81fb8a0edeb4dff3bcb388d2c0a9
parent423e923182d966e2315fdd405f1e0efbd1dcb18a (diff)
downloadnixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar.gz
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar.bz2
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar.lz
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar.xz
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.tar.zst
nixpkgs-3b2177b7696c23df8d378c175a2db0ab81062106.zip
busybox: Allow running from within the Nix store
This enables running the busybox program directly from the Nix store
(i.e. as /nix/store/<hash>-busybox). We need this for the stdenv
bootstrap.
-rw-r--r--pkgs/os-specific/linux/busybox/busybox-in-store.patch16
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix2
2 files changed, 18 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/busybox/busybox-in-store.patch b/pkgs/os-specific/linux/busybox/busybox-in-store.patch
new file mode 100644
index 00000000000..ea245a49259
--- /dev/null
+++ b/pkgs/os-specific/linux/busybox/busybox-in-store.patch
@@ -0,0 +1,16 @@
+Allow BusyBox to be invoked as "<something>-busybox". This is
+necessary when it's run from the Nix store as <hash>-busybox during
+stdenv bootstrap.
+
+diff -ru -x '*~' busybox-1.22.1-orig/libbb/appletlib.c busybox-1.22.1/libbb/appletlib.c
+--- busybox-1.22.1-orig/libbb/appletlib.c	2014-01-09 19:15:44.000000000 +0100
++++ busybox-1.22.1/libbb/appletlib.c	2014-10-29 09:53:01.232052068 +0100
+@@ -764,7 +764,7 @@
+ 	int applet = find_applet_by_name(name);
+ 	if (applet >= 0)
+ 		run_applet_no_and_exit(applet, argv);
+-	if (strncmp(name, "busybox", 7) == 0)
++	if (strstr(name, "busybox") != 0)
+ 		exit(busybox_main(argv));
+ }
+ 
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index da1d2dc2ed0..6073692c70a 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -28,6 +28,8 @@ stdenv.mkDerivation rec {
     sha256 = "12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf";
   };
 
+  patches = [ ./busybox-in-store.patch ];
+
   configurePhase = ''
     export KCONFIG_NOTIMESTAMP=1
     make ${if enableMinimal then "allnoconfig" else "defconfig"}