diff -urpN busybox-1.17.0/applets/usage_compressed busybox-1.17.0-build_system/applets/usage_compressed
--- busybox-1.17.0/applets/usage_compressed	2010-07-04 23:33:59.000000000 +0200
+++ busybox-1.17.0-build_system/applets/usage_compressed	2010-07-10 01:31:18.000000000 +0200
@@ -40,8 +40,4 @@ echo '#define PACKED_USAGE \'
 	-e 's/$/ \\/'
 echo ''
 
-if cmp -s "$target.$$" "$target" 2>/dev/null; then
-    rm -- "$target.$$"
-else
-    mv -- "$target.$$" "$target"
-fi
+mv -- "$target.$$" "$target"
diff -urpN busybox-1.17.0/archival/Config.src busybox-1.17.0-build_system/archival/Config.src
--- busybox-1.17.0/archival/Config.src	2010-06-25 01:32:35.000000000 +0200
+++ busybox-1.17.0-build_system/archival/Config.src	2010-07-15 09:10:03.000000000 +0200
@@ -39,7 +39,7 @@ config FEATURE_SEAMLESS_Z
 
 config AR
 	bool "ar"
-	default y
+	default n  # needs to be improved to be able to replace binutils ar
 	help
 	  ar is an archival utility program used to create, modify, and
 	  extract contents from archives. An archive is a single file holding
diff -urpN busybox-1.17.0/Config.in busybox-1.17.0-build_system/Config.in
--- busybox-1.17.0/Config.in	2010-06-24 04:40:43.000000000 +0200
+++ busybox-1.17.0-build_system/Config.in	2010-07-20 04:54:55.000000000 +0200
@@ -15,7 +15,7 @@ menu "General Configuration"
 
 config DESKTOP
 	bool "Enable options for full-blown desktop systems"
-	default n
+	default y
 	help
 	  Enable options and features which are not essential.
 	  Select this only if you plan to use busybox on full-blown
@@ -138,6 +138,7 @@ config UNICODE_USING_LOCALE
 	help
 	  With this option on, Unicode support is implemented using libc
 	  routines. Otherwise, internal implementation is used.
+	  Internal implementation is smaller.
 
 config FEATURE_CHECK_UNICODE_IN_ENV
 	bool "Check $LANG environment variable"
diff -urpN busybox-1.17.0/e2fsprogs/Config.src busybox-1.17.0-build_system/e2fsprogs/Config.src
--- busybox-1.17.0/e2fsprogs/Config.src	2010-06-24 04:40:43.000000000 +0200
+++ busybox-1.17.0-build_system/e2fsprogs/Config.src	2010-07-18 22:55:56.000000000 +0200
@@ -45,7 +45,7 @@ config LSATTR
 
 config TUNE2FS
 	bool "tune2fs"
-	default y
+	default n  # off: it is too limited compared to upstream version
 	help
 	  tune2fs allows the system administrator to adjust various tunable
 	  filesystem parameters on Linux ext2/ext3 filesystems.
diff -urpN busybox-1.17.0/init/bootchartd.c busybox-1.17.0-build_system/init/bootchartd.c
--- busybox-1.17.0/init/bootchartd.c	2010-07-04 15:32:24.000000000 +0200
+++ busybox-1.17.0-build_system/init/bootchartd.c	2010-07-10 01:31:14.000000000 +0200
@@ -18,7 +18,7 @@
 //config:	  and stopped using bootchartd stop.
 //config:
 //config:config FEATURE_BOOTCHARTD_BLOATED_HEADER
-//config:	bool "bootchartd"
+//config:	bool "Compatible, bloated header"
 //config:	default y
 //config:	depends on BOOTCHARTD
 //config:	help
@@ -35,7 +35,7 @@
 //config:	  makes bootchartd applet to dump a subset of it.
 //config:
 //config:config FEATURE_BOOTCHARTD_CONFIG_FILE
-//config:	bool "bootchartd"
+//config:	bool "Support bootchartd.conf"
 //config:	default y
 //config:	depends on BOOTCHARTD
 //config:	help
diff -urpN busybox-1.17.0/libbb/Config.src busybox-1.17.0-build_system/libbb/Config.src
--- busybox-1.17.0/libbb/Config.src	2010-06-24 04:40:43.000000000 +0200
+++ busybox-1.17.0-build_system/libbb/Config.src	2010-07-18 22:22:54.000000000 +0200
@@ -98,7 +98,7 @@ config FEATURE_USERNAME_COMPLETION
 
 config FEATURE_EDITING_FANCY_PROMPT
 	bool "Fancy shell prompts"
-	default n
+	default y
 	depends on FEATURE_EDITING
 	help
 	  Setting this option allows for prompts to use things like \w and
diff -urpN busybox-1.17.0/miscutils/Config.src busybox-1.17.0-build_system/miscutils/Config.src
--- busybox-1.17.0/miscutils/Config.src	2010-06-24 04:40:43.000000000 +0200
+++ busybox-1.17.0-build_system/miscutils/Config.src	2010-07-14 08:04:35.000000000 +0200
@@ -276,28 +276,28 @@ config FBSPLASH
 
 config FLASHCP
 	bool "flashcp"
-	default y
+	default n  # doesn't build on Ubuntu 8.04
 	help
 	  The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.
 	  This utility is used to copy images into a MTD device.
 
 config FLASH_LOCK
 	bool "flash_lock"
-	default y
+	default n  # doesn't build on Ubuntu 8.04
 	help
 	  The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
 	  utility locks part or all of the flash device.
 
 config FLASH_UNLOCK
 	bool "flash_unlock"
-	default y
+	default n  # doesn't build on Ubuntu 8.04
 	help
 	  The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
 	  utility unlocks part or all of the flash device.
 
 config FLASH_ERASEALL
 	bool "flash_eraseall"
-	default y
+	default n  # doesn't build on Ubuntu 8.04
 	help
 	  The flash_eraseall binary from mtd-utils as of git head c4c6a59eb.
 	  This utility is used to erase the whole MTD device.
@@ -311,7 +311,7 @@ config IONICE
 
 config INOTIFYD
 	bool "inotifyd"
-	default y
+	default n  # doesn't build on Knoppix 5
 	help
 	  Simple inotify daemon. Reports filesystem changes. Requires
 	  kernel >= 2.6.13
@@ -549,7 +549,7 @@ config READAHEAD
 
 config RFKILL
 	bool "rfkill"
-	default n
+	default n  # doesn't build on Ubuntu 9.04
 	help
 	  Enable/disable wireless devices.
 
@@ -588,7 +588,7 @@ config STRINGS
 
 config TASKSET
 	bool "taskset"
-	default y
+	default n  # doesn't build on some non-x86 targets (m68k)
 	help
 	  Retrieve or set a processes's CPU affinity.
 	  This requires sched_{g,s}etaffinity support in your libc.
diff -urpN busybox-1.17.0/networking/nc.c busybox-1.17.0-build_system/networking/nc.c
--- busybox-1.17.0/networking/nc.c	2010-07-04 15:32:24.000000000 +0200
+++ busybox-1.17.0-build_system/networking/nc.c	2010-07-18 22:55:00.000000000 +0200
@@ -34,7 +34,7 @@
 //config:
 //config:config NC_110_COMPAT
 //config:	bool "Netcat 1.10 compatibility (+2.5k)"
-//config:	default y
+//config:	default n  # off specially for Rob
 //config:	depends on NC
 //config:	help
 //config:	  This option makes nc closely follow original nc-1.10.
diff -urpN busybox-1.17.0/scripts/gen_build_files.sh busybox-1.17.0-build_system/scripts/gen_build_files.sh
--- busybox-1.17.0/scripts/gen_build_files.sh	2010-06-26 00:42:29.000000000 +0200
+++ busybox-1.17.0-build_system/scripts/gen_build_files.sh	2010-07-18 23:58:11.000000000 +0200
@@ -4,6 +4,8 @@ test $# -ge 2 || { echo "Syntax: $0 SRCT
 
 # cd to objtree
 cd -- "$2" || { echo "Syntax: $0 SRCTREE OBJTREE"; exit 1; }
+# In separate objtree build, include/ might not exist yet
+mkdir include 2>/dev/null
 
 srctree="$1"
 
@@ -46,11 +48,13 @@ if test x"$new" != x"$old"; then
 fi
 
 # (Re)generate */Kbuild and */Config.in
-find -type d | while read -r d; do
+{ cd -- "$srctree" && find -type d; } | while read -r d; do
 	d="${d#./}"
+
 	src="$srctree/$d/Kbuild.src"
 	dst="$d/Kbuild"
 	if test -f "$src"; then
+		mkdir -p -- "$d" 2>/dev/null
 		#echo "  CHK     $dst"
 
 		s=`sed -n 's@^//kbuild:@@p' -- "$srctree/$d"/*.c`
@@ -70,6 +74,7 @@ find -type d | while read -r d; do
 	src="$srctree/$d/Config.src"
 	dst="$d/Config.in"
 	if test -f "$src"; then
+		mkdir -p -- "$d" 2>/dev/null
 		#echo "  CHK     $dst"
 
 		s=`sed -n 's@^//config:@@p' -- "$srctree/$d"/*.c`
diff -urpN busybox-1.17.0/scripts/Makefile.build busybox-1.17.0-build_system/scripts/Makefile.build
--- busybox-1.17.0/scripts/Makefile.build	2010-06-24 04:40:43.000000000 +0200
+++ busybox-1.17.0-build_system/scripts/Makefile.build	2010-07-10 01:31:38.000000000 +0200
@@ -13,8 +13,13 @@ __build:
 include scripts/Kbuild.include
 
 # The filename Kbuild has precedence over Makefile
+# bbox: we also try to include Kbuild file in obj tree first
 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
-include $(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, $(kbuild-dir)/Makefile)
+include $(if $(wildcard $(src)/Kbuild), $(src)/Kbuild, \
+		$(if $(wildcard $(kbuild-dir)/Kbuild), $(kbuild-dir)/Kbuild, \
+			$(kbuild-dir)/Makefile \
+		) \
+	)
 
 include scripts/Makefile.lib
 
diff -urpN busybox-1.17.0/scripts/test_make_O busybox-1.17.0-build_system/scripts/test_make_O
--- busybox-1.17.0/scripts/test_make_O	1970-01-01 01:00:00.000000000 +0100
+++ busybox-1.17.0-build_system/scripts/test_make_O	2010-07-10 01:31:38.000000000 +0200
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+b=`basename $PWD`
+test "${b#busybox}" != "$b" || { echo "Must be run in busybox tree"; exit 1; }
+
+rm -rf ../testdir_make_O.$$
+mkdir ../testdir_make_O.$$
+odir=`cd ../testdir_make_O.$$ && pwd`
+test -d "$odir" || exit 1
+
+make O="$odir" $MAKEOPTS "$@" defconfig busybox 2>&1 | tee test_make_O.log
