From 60f117a793cb76374c7a1cc95ccc434cebb87b24 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Mon, 9 Oct 2017 05:25:52 +0100 Subject: [PATCH 1/5] buildsystem: eliminate unecessary awk usage --- scripts/build | 19 +++++++++++-------- scripts/install | 11 +++++++---- scripts/uninstall | 13 ++++++++----- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/scripts/build b/scripts/build index fa101fce4d..c5c98b58f4 100755 --- a/scripts/build +++ b/scripts/build @@ -31,15 +31,18 @@ if [ ! -f $PKG_DIR/package.mk ]; then fi # set defaults - PKG_CONFIGURE_SCRIPT="" - PKG_MAKE_OPTS="" - PKG_MAKEINSTALL_OPTS="" +PKG_CONFIGURE_SCRIPT="" +PKG_MAKE_OPTS="" +PKG_MAKEINSTALL_OPTS="" - PACKAGE_NAME=$(echo $1 | awk -F : '{print $1}') - TARGET=$(echo $1 | awk -F : '{print $2}') - if [ -z "$TARGET" ]; then - TARGET="target" - fi +if [ "${1//:/}" != "${1}" ]; then + PACKAGE_NAME="${1%:*}" + TARGET="${1#*:}" +else + PACKAGE_NAME=$1 + TARGET= +fi +[ -z "$TARGET" ] && TARGET="target" if [ -n "$PKG_ARCH" -a ! "$PKG_ARCH" = "any" ]; then echo "$PKG_ARCH" | grep -q "$TARGET_ARCH" || exit 0 diff --git a/scripts/install b/scripts/install index 001efff1cd..96ff3b5f25 100755 --- a/scripts/install +++ b/scripts/install @@ -32,11 +32,14 @@ if [ -z "$INSTALL" ] ; then fi # set defaults -PACKAGE_NAME=$(echo $1 | awk -F : '{print $1}') -TARGET=$(echo $1 | awk -F : '{print $2}') -if [ -z "$TARGET" ]; then - TARGET="target" +if [ "${1//:/}" != "${1}" ]; then + PACKAGE_NAME="${1%:*}" + TARGET="${1#*:}" +else + PACKAGE_NAME=$1 + TARGET= fi +[ -z "$TARGET" ] && TARGET="target" STAMP=$STAMPS_INSTALL/$PACKAGE_NAME/install_$TARGET mkdir -p $STAMPS_INSTALL/$PACKAGE_NAME diff --git a/scripts/uninstall b/scripts/uninstall index f354726369..7acd58f9e5 100755 --- a/scripts/uninstall +++ b/scripts/uninstall @@ -25,11 +25,14 @@ if [ -z "$1" ]; then exit 1 fi - PACKAGE_NAME=$(echo $1 | awk -F : '{print $1}') - TARGET=$(echo $1 | awk -F : '{print $2}') - if [ -z "$TARGET" ]; then - TARGET="target" - fi +if [ "${1//:/}" != "${1}" ]; then + PACKAGE_NAME="${1%:*}" + TARGET="${1#*:}" +else + PACKAGE_NAME=$1 + TARGET= +fi +[ -z "$TARGET" ] && TARGET="target" if [ -n "$PKG_ARCH" -a ! "$PKG_ARCH" = "any" ]; then echo "$PKG_ARCH" | grep -q "$TARGET_ARCH" || exit 0 From cf71811eec96a82906bcb85a8c95c963a5397755 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Mon, 9 Oct 2017 05:41:17 +0100 Subject: [PATCH 2/5] buildsystem: eliminate unecessary sed usage --- config/arch.x86_64 | 2 +- config/path | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/arch.x86_64 b/config/arch.x86_64 index 7787b04904..74cbe65863 100644 --- a/config/arch.x86_64 +++ b/config/arch.x86_64 @@ -6,7 +6,7 @@ # determine architecture's family TARGET_SUBARCH=x86_64 - TARGET_GCC_ARCH=$(echo $TARGET_SUBARCH | sed -e "s,-,,") + TARGET_GCC_ARCH="${TARGET_SUBARCH/-/}" TARGET_KERNEL_ARCH=x86 # setup ARCH specific *FLAGS diff --git a/config/path b/config/path index 4b06442ec5..8205f5aeef 100644 --- a/config/path +++ b/config/path @@ -118,7 +118,7 @@ unset LD_LIBRARY_PATH fi if [ "$PKG_IS_ADDON" = "yes" ] ; then - [ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="`echo $PKG_SECTION | sed 's,/,.,g'`.$PKG_NAME" + [ -z $PKG_SECTION ] && PKG_ADDON_ID="$PKG_NAME" || PKG_ADDON_ID="${PKG_SECTION//\//.}.$PKG_NAME" PKG_NEED_UNPACK="${PKG_NEED_UNPACK} $(get_pkg_directory $MEDIACENTER)" fi From cf6ed26936403c70f6356e30bb9eef095b7270e8 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Mon, 9 Oct 2017 05:47:03 +0100 Subject: [PATCH 3/5] buildsystem: eliminate unecessary grep usage --- config/options | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/options b/config/options index cc20c5204d..9743925ee8 100644 --- a/config/options +++ b/config/options @@ -73,9 +73,7 @@ fi # Concurrency make level (-j option) # Try value 1 (default) to 4 on single CPU computer, or more on # multi-processor computer (like hyperthreading SMP CPU) - if test -z "${CONCURRENCY_MAKE_LEVEL}"; then - CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'` - fi + [ -z "${CONCURRENCY_MAKE_LEVEL}" ] && export CONCURRENCY_MAKE_LEVEL=$(grep -c '^processor[[:cntrl:]]*:' /proc/cpuinfo) # cache size for ccache # Set the maximum size of the files stored in the cache. You can specify a From 992835060902db931f55c6999e99b9c43775afe1 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Mon, 9 Oct 2017 06:18:29 +0100 Subject: [PATCH 4/5] buildsystem: eliminate other unecessary sub process usage --- config/optimize | 61 ++++++++++++++++++++++++++----------------------- config/options | 6 ++--- config/path | 4 ++-- 3 files changed, 38 insertions(+), 33 deletions(-) diff --git a/config/optimize b/config/optimize index a68d1a6b3e..d4a596d3c7 100644 --- a/config/optimize +++ b/config/optimize @@ -31,7 +31,7 @@ HOST_CPPFLAGS="" HOST_CFLAGS="-O2 -Wall -pipe -I$TOOLCHAIN/include" HOST_CXXFLAGS="$HOST_CFLAGS" HOST_LDFLAGS="-Wl,-rpath,$TOOLCHAIN/lib -L$TOOLCHAIN/lib" -HOST_LIBDIR="$TOOLCHAIN/lib" +HOST_INCDIR="$TOOLCHAIN/include /usr/include" # work around Ubuntu default C*FLAGS # see https://wiki.ubuntu.com/ToolChain/CompilerFlags#A-Wformat_-Wformat-security @@ -39,35 +39,40 @@ HOST_CFLAGS="$HOST_CFLAGS -Wno-format-security" HOST_CXXFLAGS="$HOST_CXXFLAGS -Wno-format-security" # add distro specific library dirs +if [ -z "$HOST_LIBDIR" ]; then + HOST_LIBDIR="$TOOLCHAIN/lib" + # ubuntu/debian specific "multiarch support" - FAMILY_TRIPLET=$(echo $HOST_NAME | sed -e "s,$(uname -m),$(uname -i),") - if [ -d /lib/$FAMILY_TRIPLET ]; then - HOST_LIBDIR="$HOST_LIBDIR /lib/$FAMILY_TRIPLET" - fi - if [ -d /usr/lib/$FAMILY_TRIPLET ]; then - HOST_LIBDIR="$HOST_LIBDIR /usr/lib/$FAMILY_TRIPLET" - fi + MACHINE_HARDWARE_NAME="$(uname -m)" + MACHINE_HARDWARE_PLATFORM="$(uname -i)" + FAMILY_TRIPLET=${HOST_NAME/${MACHINE_HARDWARE_NAME}/${MACHINE_HARDWARE_PLATFORM}} + if [ -d /lib/$FAMILY_TRIPLET ]; then + HOST_LIBDIR="$HOST_LIBDIR /lib/$FAMILY_TRIPLET" + fi + if [ -d /usr/lib/$FAMILY_TRIPLET ]; then + HOST_LIBDIR="$HOST_LIBDIR /usr/lib/$FAMILY_TRIPLET" + fi # default multiarch support - case "`uname -m`" in - i*86) - if [ -d /lib32 ]; then - HOST_LIBDIR="$HOST_LIBDIR /lib32" - fi - if [ -d /usr/lib32 ]; then - HOST_LIBDIR="$HOST_LIBDIR /usr/lib32" - fi - ;; - x86_64) - if [ -d /lib64 ]; then - HOST_LIBDIR="$HOST_LIBDIR /lib64" - fi - if [ -d /usr/lib64 ]; then - HOST_LIBDIR="$HOST_LIBDIR /usr/lib64" - fi - ;; - esac + case "${MACHINE_HARDWARE_NAME}" in + i*86) + if [ -d /lib32 ]; then + HOST_LIBDIR="$HOST_LIBDIR /lib32" + fi + if [ -d /usr/lib32 ]; then + HOST_LIBDIR="$HOST_LIBDIR /usr/lib32" + fi + ;; + x86_64) + if [ -d /lib64 ]; then + HOST_LIBDIR="$HOST_LIBDIR /lib64" + fi + if [ -d /usr/lib64 ]; then + HOST_LIBDIR="$HOST_LIBDIR /usr/lib64" + fi + ;; + esac # default dirs - HOST_LIBDIR="$HOST_LIBDIR /lib /usr/lib" - HOST_INCDIR="$TOOLCHAIN/include /usr/include" + export HOST_LIBDIR="$HOST_LIBDIR /lib /usr/lib" +fi diff --git a/config/options b/config/options index 9743925ee8..99bc5c01da 100644 --- a/config/options +++ b/config/options @@ -25,7 +25,7 @@ else TARGET_ARCH="$ARCH" fi -ROOT=`pwd` +ROOT="${PWD}" DISTRO_DIR="$ROOT/distributions" PROJECT_DIR="$ROOT/projects" LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $PROJECT_DIR/$PROJECT/devices/$DEVICE/linux/linux.$TARGET_ARCH.conf $ROOT/packages/linux/package.mk" @@ -56,7 +56,7 @@ LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $PROJECT_DIR/ # Need to point to your actual cc # If you have ccache installed, take care that LOCAL_CC don't point to it - LOCAL_CC=`which gcc` + [ -z "${LOCAL_CC}" ] && export LOCAL_CC="$(which gcc)" if [ -z "$LOCAL_CC" ] ; then echo "***** Please install gcc *****" @@ -65,7 +65,7 @@ fi # Need to point to your actual g++ # If you have ccache installed, take care that LOCAL_CXX don't point to it - LOCAL_CXX=`which g++` + [ -z "${LOCAL_CXX}" ] && export LOCAL_CXX="$(which g++)" # verbose compilation mode (yes/no) VERBOSE="yes" diff --git a/config/path b/config/path index 8205f5aeef..ed96f45eb9 100644 --- a/config/path +++ b/config/path @@ -16,7 +16,7 @@ set -e . config/arch.$TARGET_ARCH fi -HOST_NAME=`$LOCAL_CC -dumpmachine` +[ -z "${HOST_NAME}" ] && export HOST_NAME="$($LOCAL_CC -dumpmachine)" TARGET_NAME=$TARGET_GCC_ARCH-libreelec-linux-gnu${TARGET_ABI} BUILD=$ROOT/$BUILD_BASE.$DISTRONAME-${DEVICE:-$PROJECT}.$TARGET_ARCH-$LIBREELEC_VERSION @@ -134,7 +134,7 @@ unset LD_LIBRARY_PATH echo "$PKG_URL" exit 1 fi - PKG_SOURCE_NAME="$(basename "$PKG_URL")" + PKG_SOURCE_NAME="${PKG_URL##*/}" case $PKG_SOURCE_NAME in ${PKG_NAME}-${PKG_VERSION}.*) PKG_SOURCE_NAME=$PKG_SOURCE_NAME From 6822da552efae97f60446788c47931b1c827e949 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Wed, 11 Oct 2017 09:10:00 +0100 Subject: [PATCH 5/5] config/functions: add listcontains function, and uses it --- config/functions | 5 +++++ packages/virtual/virtual/package.mk | 6 +----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/functions b/config/functions index 00fdfaa2a1..8d6bb0734b 100644 --- a/config/functions +++ b/config/functions @@ -171,6 +171,11 @@ get_pkg_variable() { fi } +# return 0 if $2 in space-separated list $1, otherwise return 1 +listcontains() { + [[ ${1} =~ (^|[[:space:]])${2}($|[[:space:]]) ]] && return 0 || return 1 +} + install_binary_addon() { local addon_name="$1" addon_id="$2" addon_so diff --git a/packages/virtual/virtual/package.mk b/packages/virtual/virtual/package.mk index b0ec88d911..ccb987fee3 100644 --- a/packages/virtual/virtual/package.mk +++ b/packages/virtual/virtual/package.mk @@ -32,8 +32,4 @@ PKG_AUTORECONF="no" get_graphicdrivers -for drv in $GRAPHIC_DRIVERS; do - if [ "$drv" = "vmware" ]; then - PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET open-vm-tools" - fi -done +listcontains "$GRAPHIC_DRIVERS" "vmware" && PKG_DEPENDS_TARGET+=" open-vm-tools"