diff options
Diffstat (limited to 'nuttx')
-rwxr-xr-x | nuttx/tools/autobuild.sh | 34 | ||||
-rwxr-xr-x | nuttx/tools/build_config.sh | 100 |
2 files changed, 134 insertions, 0 deletions
diff --git a/nuttx/tools/autobuild.sh b/nuttx/tools/autobuild.sh new file mode 100755 index 000000000..d8ae8c3e2 --- /dev/null +++ b/nuttx/tools/autobuild.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Build job count +BUILDJOBS=${BUILDJOBS:-2} +BUILDJOBID=${BUILDJOBID:-a} + +# Config count +CONFCOUNT=`find nuttx/configs -name \*defconfig -print | wc -l` +# Number of non-commented (#) and non-empty lines in ignore file +IGNORECOUNT=`cat .travis_ignored_configs.txt | sed '/^\s*#/d;/^\s*$/d' | wc -l` +# Get rid of whitespace +CONFCOUNT=$(echo $CONFCOUNT ) +IGNORECOUNT=$(echo $IGNORECOUNT ) + +echo -e "\n" +echo -e "\0033[34mNuttX Configs: $CONFCOUNT total, $IGNORECOUNT excluded from build\0033[0m" +echo -e "(Add or remove configs to file .travis_ignored_configs to exclude)" +echo -e "----------------------------------------------------------------------------\n" + +CONFIGS=configs.txt + +find nuttx/configs -name \*defconfig -print > $CONFIGS + +# Lines per file +LINES_TOTAL=$(wc -l <${CONFIGS}) +((LINES_PER_FILE = (LINES_TOTAL + BUILDJOBS - 1) / BUILDJOBS)) + +# Perform the split +split -a1 -l${LINES_PER_FILE} ${CONFIGS} configparts. + +echo -e "Operating total $BUILDJOBS build jobs" +echo -e "Running job: configparts.$BUILDJOBID" + +cat "configparts.$BUILDJOBID" | xargs -L1 nuttx/tools/build_config.sh diff --git a/nuttx/tools/build_config.sh b/nuttx/tools/build_config.sh new file mode 100755 index 000000000..16a927139 --- /dev/null +++ b/nuttx/tools/build_config.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +CONFIGPATH=$1 +BASE=`pwd` + +CONFIGBASEPATH=`dirname $CONFIGPATH` +PREFIX=nuttx\/configs\/ +LOGSDIR=$BASE/travis_output + +IGNORED=`cat .travis_ignored_configs.txt | grep $CONFIGPATH` + +if [[ $IGNORED ]] && [[ $IGNORED != "#"* ]] +then + echo -e "\0033[90mIgnoring config $CONFIGPATH\0033[0m" + exit 0 +fi + +# Config is valid, build it + +CONFIG=${CONFIGBASEPATH#$PREFIX} +LOGDIR="$LOGSDIR/${CONFIG//\//_}" +BUILDLOG="$LOGDIR/buildlog.txt" +FAILED_CONFIGS="$LOGSDIR/failed_configs.txt" +SUCCESSFUL_CONFIGS="$LOGSDIR/successful_configs.txt" + +echo -e "\nBUILDING CONFIG $CONFIG" +echo -e "BUILD ARTIFACTS: $LOGDIR" +echo -e "LOG: $BUILDLOG" +mkdir -p $LOGDIR + +# Manually reconfigure for Linux toolchain +# XXX this should be menuconfig, but doing this headless isn't trivial +sed -i"" 's/# CONFIG_HOST_LINUX is not set.*/CONFIG_HOST_LINUX=y/g' $CONFIGPATH +sed -i"" 's/CONFIG_HOST_WINDOWS=y.*/# CONFIG_HOST_WINDOWS is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_HOST_OSX=y.*/# CONFIG_HOST_OSX is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_HOST_OTHER=y.*/# CONFIG_HOST_OTHER is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_WINDOWS_NATIVE=y.*/# CONFIG_WINDOWS_NATIVE is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_WINDOWS_CYGWIN=y.*/# CONFIG_WINDOWS_CYGWIN is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_WINDOWS_MSYS=y.*/# CONFIG_WINDOWS_MSYS is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_WINDOWS_OTHER=y.*/# CONFIG_WINDOWS_OTHER is not set/g' $CONFIGPATH + +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT=y.*/# CONFIG_ARMV7M_TOOLCHAIN_BUILDROOT is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODEREDL=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODEREDL is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYL is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC=y.*/# CONFIG_ARMV7M_TOOLCHAIN_ATOLLIC is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODEREDW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODEREDW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM=y.*/# CONFIG_ARMV7M_TOOLCHAIN_DEVKITARM is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y.*/# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE=y.*/# CONFIG_ARMV7M_TOOLCHAIN_RAISONANCE is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7M_TOOLCHAIN_GNU_OABI=y.*/# CONFIG_ARMV7M_TOOLCHAIN_GNU_OABI is not set/g' $CONFIGPATH +sed -i"" 's/# CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL is not set.*/CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y/g' $CONFIGPATH + +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_BUILDROOT=y.*/# CONFIG_ARMV7A_TOOLCHAIN_BUILDROOT is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODEREDL=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODEREDL is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYL=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYL is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_ATOLLIC=y.*/# CONFIG_ARMV7A_TOOLCHAIN_ATOLLIC is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODEREDW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODEREDW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_CODESOURCERYW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_DEVKITARM=y.*/# CONFIG_ARMV7A_TOOLCHAIN_DEVKITARM is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW=y.*/# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIW is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_RAISONANCE=y.*/# CONFIG_ARMV7A_TOOLCHAIN_RAISONANCE is not set/g' $CONFIGPATH +sed -i"" 's/CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI=y.*/# CONFIG_ARMV7A_TOOLCHAIN_GNU_OABI is not set/g' $CONFIGPATH +sed -i"" 's/# CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL is not set.*/CONFIG_ARMV7A_TOOLCHAIN_GNU_EABIL=y/g' $CONFIGPATH + + +sed -i"" 's/# CONFIG_AVR_LINUXGCC is not set.*/CONFIG_AVR_LINUXGCC=y/g' $CONFIGPATH +sed -i"" 's/CONFIG_AVR_BUILDROOT=y.*/# CONFIG_AVR_BUILDROOT is not set/g' $CONFIGPATH + +sed -i"" 's/CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE=y.*/# CONFIG_MIPS32_TOOLCHAIN_MICROCHIPW_LITE is not set/g' $CONFIGPATH +sed -i"" 's/# CONFIG_MIPS32_TOOLCHAIN_PINGUINOW is not set.*/CONFIG_MIPS32_TOOLCHAIN_PINGUINOW=y/g' $CONFIGPATH + +# Simulation target configs + +# Force 64bit host build +sed -i"" 's/# CONFIG_HOST_X86_64 is not set.*/CONFIG_HOST_X86_64=y/g' $CONFIGPATH +echo "CONFIG_HOST_X86_64=y" >> $CONFIGPATH + +# Clean build dir +cd nuttx +git clean -d -f -x > /dev/null +cd .. + +cd nuttx/tools +./configure.sh $CONFIG +cd .. +make oldconfig &> $BUILDLOG +cp .config $LOGDIR/config +if ! (make &> $BUILDLOG); then + echo -e "\0033[31mCONFIG $CONFIG: FAILED BUILD\0033[0m\n" + make distclean &> /dev/null + echo $CONFIGPATH >> $FAILED_CONFIGS + exit 1; +else + echo -e "\0033[32mCONFIG $CONFIG: SUCCESSFUL BUILD\0033[0m\n" + cp nuttx $LOGDIR/. + make distclean &> /dev/null + echo $CONFIGPATH >> $SUCCESSFUL_CONFIGS + exit 0; +fi |