changeset 1477:431d5b4ee537

Switch from busybox defconfig to baseconfig-busybox selecting just what we need, with a config variable to use defconfig instead if you really want that. Busybox defconfig doesn't build on Ubuntu 11.10 because of an app that didn't exist until recently breaking. Busybox keeps ininitely adding more and more stuff (with the Katamari Damacy theme playing), and it becomes more of a portability issue keeping it all working. Plus, most if it should not be in busybox anyway. I've revived my toybox project, and would eventually like to be able to use that here anyway, and a specific set of functionality is easier to replace than a moving target. This is an experimentally determined defconfig good enough to build aboriginal and linux from scratch, plus things like vi and shell history that I obviously missed. I'll probably add more stuff later. If I still want to do static defconfig busybox binaries for each target, I can do them as native builds via hdc.
author Rob Landley <rob@landley.net>
date Tue, 27 Dec 2011 08:58:16 -0600
parents a4714d7d6769
children c1d26568dbb8
files config sources/baseconfig-busybox sources/patches/busybox-usehush.patch sources/sections/busybox.build
diffstat 4 files changed, 202 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/config	Thu Dec 22 16:49:03 2011 -0600
+++ b/config	Tue Dec 27 08:58:16 2011 -0600
@@ -130,6 +130,16 @@
 
 # export HOST_EXTRA="lex yacc"
 
+# Get your commands, for both host-tools and simple-root-filesystem, from:
+#
+#   busybox - busybox configured with with sources/baseconfig-busybox
+#   busybox_defconfig - busybox configured with defconfig
+#   toybox - toybox defconfig (plus busybox with baseconfig-toybox-todo)
+#
+# Default is "busybox".
+
+# export TOYBOX=busybox
+
 # Set this to continue despite failed patches.
 
 # export ALLOW_PATCH_FAILURE=1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/baseconfig-busybox	Tue Dec 27 08:58:16 2011 -0600
@@ -0,0 +1,177 @@
+#needed for od -t option in busybox build
+CONFIG_DESKTOP=y
+CONFIG_LFS=y
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_GUNZIP=y
+# gzip is used in linux kernel initramfs code
+CONFIG_GZIP=y
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+# needed for old format tar archive (genext2fs)
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_DIRNAME=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_ENV=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_LN=y
+CONFIG_LS=y
+# host-tools.sh uses ls -tc to check for tarballs
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_MKDIR=y
+CONFIG_MV=y  
+CONFIG_OD=y  
+CONFIG_PWD=y 
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SHA1SUM=y
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+CONFIG_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# stat -c is used by sources/toys/gen_initramfs_list.sh
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_TAIL=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_TRUE=y
+CONFIG_UNAME=y
+CONFIG_UNIQ=y
+CONFIG_WC=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+CONFIG_FEATURE_AUTOWIDTH=y
+CONFIG_MKTEMP=y
+CONFIG_WHICH=y
+CONFIG_AWK=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_GREP=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_HOSTNAME=y
+CONFIG_FEATURE_TEST_64=y
+
+# for root file system use
+CONFIG_INIT=y
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_MDEV=y
+CONFIG_MOUNT=y
+CONFIG_MOUNTPOINT=y
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_ROUTE=y
+
+# Interactive command shell (bash hasn't got history without ncurses)
+
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_EDITING_ASK_TERMINAL=y
+
+CONFIG_ASH=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_FEATURE_SH_IS_ASH=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_EXPAND_PRMT=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_SH_MATH_SUPPORT=y
+CONFIG_SH_MATH_SUPPORT_64=y
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+
+# LFS build
+
+CONFIG_SYNC=y
+CONFIG_HEAD=y
+CONFIG_WGET=y
+CONFIG_CHGRP=y
+CONFIG_COMM=y
+CONFIG_LESS=y
+CONFIG_LOGNAME=y
+CONFIG_SPLIT=y
+CONFIG_TEE=y
+CONFIG_MAN=y
+
+# native-build.sh
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+
+CONFIG_FTPD=y
+CONFIG_FEATURE_FTP_WRITE=y
+CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_TIME=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_TAC=y
+CONFIG_CHROOT=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
+CONFIG_LOSETUP=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+CONFIG_FEATURE_CPIO_P=y
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+
--- a/sources/patches/busybox-usehush.patch	Thu Dec 22 16:49:03 2011 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-diff -ru busybox/shell/Config.src busybox.bak/shell/Config.src
---- busybox/shell/Config.src	2010-08-22 19:44:36.000000000 -0500
-+++ busybox.bak/shell/Config.src	2010-11-06 20:55:02.000000000 -0500
-@@ -219,7 +219,7 @@
- 
- choice
- 	prompt "Choose which shell is aliased to 'sh' name"
--	default FEATURE_SH_IS_ASH
-+	default FEATURE_SH_IS_HUSH
- 	help
- 	  Choose which shell you want to be executed by 'sh' alias.
- 	  The ash shell is the most bash compatible and full featured one.
--- a/sources/sections/busybox.build	Thu Dec 22 16:49:03 2011 -0600
+++ b/sources/sections/busybox.build	Tue Dec 27 08:58:16 2011 -0600
@@ -4,9 +4,17 @@
 
 # Build busybox
 
-#make allyesconfig KCONFIG_ALLCONFIG="${SOURCES}/trimconfig-busybox" &&
-make defconfig &&
-cp .config "$WORK"/config-busybox &&
+if [ "$TOYBOX" == busybox_defcofnig ]
+then
+  make defconfig &&
+  # breaks on ubuntu 11.10
+  sed -i -e 's/^\(CONFIG_UBI.*\)=y/# \1 is not set/' .config &&
+  cp .config "$WORK"/config-busybox || dienow
+else
+  getconfig busybox > "$WORK/config-busybox" &&
+  make allnoconfig KCONFIG_ALLCONFIG="$WORK/config-busybox" || dienow
+fi
+
 LDFLAGS="$LDFLAGS $STATIC_FLAGS" make -j $CPUS $VERBOSITY $DO_CROSS &&
 make busybox.links || dienow
 
@@ -23,3 +31,7 @@
   fi
   [ ! -f "$INSTDIR/$i" ] && (ln -sf busybox "$INSTDIR/$i" || dienow)
 done
+
+# Reset error condition, the last file already existing is not an error
+
+true