From ed0b6da9b18429b4a82004a1d8f9e6240b60f90f Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 01/11] config/functions: add helper func to locate file/dir in standard hierarchy --- config/functions | 60 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/config/functions b/config/functions index d9133ddd40..f567676305 100644 --- a/config/functions +++ b/config/functions @@ -228,7 +228,7 @@ get_pkg_directory() { get_pkg_variable() { if [ -n "$1" -a -n "$2" ] ; then cd $ROOT - . config/options $1 + . config/options $1 &>/dev/null echo "${!2}" fi } @@ -246,6 +246,64 @@ target_has_feature() { listcontains "$TARGET_FEATURES" "$1" } +# find path for matching file or directory, searching standard directory hierarchy, using optional default +# if a path is located it will be set in FOUND_PATH and exit code will be 0. +find_path() { + local test_func="$1" search="$2" default="$3" + local dir match wildcard=0 ftype + + # support wildcard matches + [[ $search =~ \* || $search =~ \? ]] && wildcard=1 + + [ "$test_func" = "-f" ] && ftype="file" || ftype="dir" + + for dir in $PROJECT_DIR/$PROJECT/devices/$DEVICE/packages/$PKG_NAME \ + $PROJECT_DIR/$PROJECT/devices/$DEVICE \ + $PROJECT_DIR/$PROJECT/packages/$PKG_NAME \ + $PROJECT_DIR/$PROJECT \ + $DISTRO_DIR/$DISTRO/packages/$PKG_NAME \ + $DISTRO_DIR/$DISTRO \ + $PKG_DIR \ + ; do + # ignore directories with missing DEVICE or PKG_NAME components + [[ $dir =~ /packages/$ ]] && continue + [[ $dir =~ /devices/$ ]] && continue + [[ $dir =~ /devices//packages/$PKG_NAME$ ]] && continue + + if [ $wildcard -eq 1 ]; then + ls $dir/$search 1>/dev/null 2>&1 && match="$dir/$search" && break + else + [ $test_func "$dir/$search" ] && match="$dir/$search" && break + fi + done + + if [ -z "$match" -a -n "$default" ]; then + if [[ $default =~ \* || $default =~ \? ]]; then + ls $default 1>/dev/null 2>&1 && match="$default" + else + [ $test_func "$default" ] && match="$default" + fi + fi + + if [ -n "$match" ]; then + FOUND_PATH="$match" + [ "${VERBOSE_FIND_PATH,,}" = "yes" ] && echo "find_path: Searching for $ftype: \"$search\", found: \"$FOUND_PATH\"" >&2 + return 0 + else + unset FOUND_PATH + [ "${VERBOSE_FIND_PATH,,}" = "yes" ] && echo "find_path: Searching for $ftype: \"$search\" - not found" >&2 + return 1 + fi +} + +find_file_path() { + find_path -f "$1" "$2" +} + +find_dir_path() { + find_path -d "$1" "$2" +} + install_binary_addon() { local addon_id="$1" addon_so From 964e1c375592ef770bc654a8e8434f085ee473b6 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 02/11] scripts/image: use helper function --- scripts/image | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/scripts/image b/scripts/image index 290bd92ef3..550d6fb8a8 100755 --- a/scripts/image +++ b/scripts/image @@ -283,15 +283,9 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] cp -R $BOOTLOADER_DIR/files/* $RELEASE_DIR fi - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/release ]; then - echo "Running $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/release" - . $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/release - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/release ]; then - echo "Running $PROJECT_DIR/$PROJECT/bootloader/release" - . $PROJECT_DIR/$PROJECT/bootloader/release - elif [ -f $BOOTLOADER_DIR/release ]; then - echo "Running $BOOTLOADER_DIR/release" - . $BOOTLOADER_DIR/release + if find_file_path bootloader/release $BOOTLOADER_DIR/release; then + echo "Running $FOUND_PATH" + . $FOUND_PATH fi fi From 7793bea2e9d47d979bf830c15c657c456aead2bb Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 03/11] scripts/mkimage: use helper function --- scripts/mkimage | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/mkimage b/scripts/mkimage index 9a4e2f4e27..10fc4bafb1 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -249,10 +249,8 @@ EOF mcopy -s "$LE_TMP"/extlinux :: fi - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/mkimage ]; then - . $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/mkimage - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/mkimage ]; then - . $PROJECT_DIR/$PROJECT/bootloader/mkimage + if find_file_path bootloader/mkimage; then + . ${FOUND_PATH} else echo "No specific mkimage script found. u-boot will not be written" fi From 28f0289dc9f545ea27eda5f1561ac27acafeab89 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 04/11] samba: use helper function --- packages/network/samba/package.mk | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/network/samba/package.mk b/packages/network/samba/package.mk index 5739605939..96e2b89cfc 100644 --- a/packages/network/samba/package.mk +++ b/packages/network/samba/package.mk @@ -143,17 +143,11 @@ post_makeinstall_target() { mkdir -p $INSTALL/usr/lib/samba cp $PKG_DIR/scripts/samba-config $INSTALL/usr/lib/samba - mkdir -p $INSTALL/etc/samba - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/smb.conf ]; then - cp $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/smb.conf $INSTALL/etc/samba - elif [ -f $PROJECT_DIR/$PROJECT/config/smb.conf ]; then - cp $PROJECT_DIR/$PROJECT/config/smb.conf $INSTALL/etc/samba - elif [ -f $DISTRO_DIR/$DISTRO/config/smb.conf ]; then - cp $DISTRO_DIR/$DISTRO/config/smb.conf $INSTALL/etc/samba - else - cp $PKG_DIR/config/smb.conf $INSTALL/etc/samba + if find_file_path config/smb.conf; then + mkdir -p $INSTALL/etc/samba + cp ${FOUND_PATH} $INSTALL/etc/samba mkdir -p $INSTALL/usr/config - cp $PKG_DIR/config/smb.conf $INSTALL/usr/config/samba.conf.sample + cp $INSTALL/etc/samba/smb.conf $INSTALL/usr/config/samba.conf.sample fi if [ "$DEVTOOLS" = "yes" ]; then From 208ff6fd8e6cc1eaa6e9d2734a2aff176384d65d Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 05/11] busybox: use helper function --- packages/sysutils/busybox/package.mk | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/packages/sysutils/busybox/package.mk b/packages/sysutils/busybox/package.mk index 446fc381f7..36cd4e9c62 100644 --- a/packages/sysutils/busybox/package.mk +++ b/packages/sysutils/busybox/package.mk @@ -53,18 +53,6 @@ if [ "$NFS_SUPPORT" = yes ]; then PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET rpcbind" fi -if [ -f $PROJECT_DIR/$PROJECT/busybox/busybox-target.conf ]; then - BUSYBOX_CFG_FILE_TARGET=$PROJECT_DIR/$PROJECT/busybox/busybox-target.conf -else - BUSYBOX_CFG_FILE_TARGET=$PKG_DIR/config/busybox-target.conf -fi - -if [ -f $PROJECT_DIR/$PROJECT/busybox/busybox-init.conf ]; then - BUSYBOX_CFG_FILE_INIT=$PROJECT_DIR/$PROJECT/busybox/busybox-init.conf -else - BUSYBOX_CFG_FILE_INIT=$PKG_DIR/config/busybox-init.conf -fi - pre_build_target() { mkdir -p $PKG_BUILD/.$TARGET_NAME cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME @@ -92,7 +80,8 @@ configure_host() { configure_target() { cd $PKG_BUILD/.$TARGET_NAME - cp $BUSYBOX_CFG_FILE_TARGET .config + find_file_path config/busybox-target.conf + cp $FOUND_PATH .config # set install dir sed -i -e "s|^CONFIG_PREFIX=.*$|CONFIG_PREFIX=\"$INSTALL/usr\"|" .config @@ -129,7 +118,8 @@ configure_target() { configure_init() { cd $PKG_BUILD/.$TARGET_NAME-init - cp $BUSYBOX_CFG_FILE_INIT .config + find_file_path config/busybox-init.conf + cp $FOUND_PATH .config # set install dir sed -i -e "s|^CONFIG_PREFIX=.*$|CONFIG_PREFIX=\"$INSTALL/usr\"|" .config @@ -234,12 +224,8 @@ makeinstall_init() { touch $INSTALL/etc/fstab ln -sf /proc/self/mounts $INSTALL/etc/mtab - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/initramfs/platform_init ]; then - cp $PROJECT_DIR/$PROJECT/devices/$DEVICE/initramfs/platform_init $INSTALL - elif [ -f $PROJECT_DIR/$PROJECT/initramfs/platform_init ]; then - cp $PROJECT_DIR/$PROJECT/initramfs/platform_init $INSTALL - fi - if [ -f $INSTALL/platform_init ]; then + if find_file_path initramfs/platform_init; then + cp ${FOUND_PATH} $INSTALL chmod 755 $INSTALL/platform_init fi From 2c632fb048b7e60a48738f9b2e03c33fc32eebb6 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 06/11] bcm2835-bootloader: use helper function --- packages/tools/bcm2835-bootloader/package.mk | 25 +++----------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/packages/tools/bcm2835-bootloader/package.mk b/packages/tools/bcm2835-bootloader/package.mk index a785ed288c..0a62cd9442 100644 --- a/packages/tools/bcm2835-bootloader/package.mk +++ b/packages/tools/bcm2835-bootloader/package.mk @@ -36,29 +36,10 @@ makeinstall_target() { cp -PRv fixup_x.dat $INSTALL/usr/share/bootloader/fixup.dat cp -PRv start_x.elf $INSTALL/usr/share/bootloader/start.elf - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/dt-blob.bin ]; then - cp -PRv $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/dt-blob.bin $INSTALL/usr/share/bootloader - fi + find_file_path config/dt-blob.bin && cp -PRv $FOUND_PATH $INSTALL/usr/share/bootloader cp -PRv $PKG_DIR/scripts/update.sh $INSTALL/usr/share/bootloader - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/distroconfig.txt ]; then - cp -PRv $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/distroconfig.txt $INSTALL/usr/share/bootloader - elif [ -f $PROJECT_DIR/$PROJECT/config/distroconfig.txt ]; then - cp -PRv $PROJECT_DIR/$PROJECT/config/distroconfig.txt $INSTALL/usr/share/bootloader - elif [ -f $DISTRO_DIR/$DISTRO/config/distroconfig.txt ]; then - cp -PRv $DISTRO_DIR/$DISTRO/config/distroconfig.txt $INSTALL/usr/share/bootloader - else - cp -PRv $PKG_DIR/files/3rdparty/bootloader/distroconfig.txt $INSTALL/usr/share/bootloader - fi - - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/config.txt ]; then - cp -PRv $PROJECT_DIR/$PROJECT/devices/$DEVICE/config/config.txt $INSTALL/usr/share/bootloader - elif [ -f $PROJECT_DIR/$PROJECT/config/config.txt ]; then - cp -PRv $PROJECT_DIR/$PROJECT/config/config.txt $INSTALL/usr/share/bootloader - elif [ -f $DISTRO_DIR/$DISTRO/config/config.txt ]; then - cp -PRv $DISTRO_DIR/$DISTRO/config/config.txt $INSTALL/usr/share/bootloader - else - cp -PRv $PKG_DIR/files/3rdparty/bootloader/config.txt $INSTALL/usr/share/bootloader - fi + find_file_path config/distroconfig.txt $PKG_DIR/files/3rdparty/bootloader/distroconfig.txt && cp -PRv ${FOUND_PATH} $INSTALL/usr/share/bootloader + find_file_path config/config.txt $PKG_DIR/files/3rdparty/bootloader/config.txt && cp -PRv ${FOUND_PATH} $INSTALL/usr/share/bootloader } From 4b358ada4d8910853a68c6a3b6e1fcfbaa922b3e Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 07/11] u-boot: use helper function --- packages/tools/u-boot/package.mk | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/packages/tools/u-boot/package.mk b/packages/tools/u-boot/package.mk index 71860e518e..aab4b29f9b 100644 --- a/packages/tools/u-boot/package.mk +++ b/packages/tools/u-boot/package.mk @@ -55,27 +55,15 @@ makeinstall_target() { # Only install u-boot.img et al when building a board specific image if [ -n "$UBOOT_SYSTEM" ]; then - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install ]; then - . $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/install ]; then - . $PROJECT_DIR/$PROJECT/bootloader/install - fi + find_file_path bootloader/install && . ${FOUND_PATH} fi # Always install the update script - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh $INSTALL/usr/share/bootloader - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/update.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/bootloader/update.sh $INSTALL/usr/share/bootloader - fi + find_file_path bootloader/update.sh && cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader # Always install the canupdate script - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/canupdate.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/canupdate.sh $INSTALL/usr/share/bootloader - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/canupdate.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/bootloader/canupdate.sh $INSTALL/usr/share/bootloader - fi - if [ -f $INSTALL/usr/share/bootloader/canupdate.sh ]; then + if find_file_path bootloader/canupdate.sh; then + cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader sed -e "s/@PROJECT@/${DEVICE:-$PROJECT}/g" \ -i $INSTALL/usr/share/bootloader/canupdate.sh fi From af49bc20dbcdefd981aa47bff0f636aab63a9984 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 08/11] u-boot (Amlogic/LePotato): use helper function --- .../LePotato/packages/u-boot/package.mk | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk b/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk index 19282383c9..184c022647 100644 --- a/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk +++ b/projects/Amlogic/devices/LePotato/packages/u-boot/package.mk @@ -48,26 +48,13 @@ makeinstall_target() { mkdir -p $INSTALL/usr/share/bootloader # Only install u-boot.img et al when building a board specific image - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install ]; then - . $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/install - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/install ]; then - . $PROJECT_DIR/$PROJECT/bootloader/install - fi + find_file_path bootloader/install && . ${FOUND_PATH} # Always install the update script - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/update.sh $INSTALL/usr/share/bootloader - elif [ -f $PROJECT_DIR/$PROJECT/bootloader/update.sh ]; then - cp -av $PROJECT_DIR/$PROJECT/bootloader/update.sh $INSTALL/usr/share/bootloader - fi + find_file_path bootloader/update.sh && cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader cp $PKG_BUILD/fip/u-boot.bin.sd.bin $INSTALL/usr/share/bootloader/u-boot - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/boot.ini ]; then - cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/boot.ini $INSTALL/usr/share/bootloader - fi - - if [ -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/config.ini ]; then - cp -av $PROJECT_DIR/$PROJECT/devices/$DEVICE/bootloader/config.ini $INSTALL/usr/share/bootloader - fi + find_file_path bootloader/boot.ini && cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader + find_file_path bootloader/config.ini && cp -av ${FOUND_PATH} $INSTALL/usr/share/bootloader } From 78c1ddacba5ceaf5955b844d09233b8a4ba0cad9 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 09/11] installer: use helper function --- packages/tools/installer/package.mk | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/tools/installer/package.mk b/packages/tools/installer/package.mk index d13d900ee4..43f156e07f 100644 --- a/packages/tools/installer/package.mk +++ b/packages/tools/installer/package.mk @@ -35,11 +35,8 @@ post_install() { -i $INSTALL/usr/bin/installer mkdir -p $INSTALL/etc - if [ -f $PROJECT_DIR/$PROJECT/installer/installer.conf ]; then - cp $PROJECT_DIR/$PROJECT/installer/installer.conf $INSTALL/etc - else - cp $PKG_DIR/config/installer.conf $INSTALL/etc - fi + find_file_path config/installer.conf + cp ${FOUND_PATH} $INSTALL/etc sed -e "s/@SYSTEM_SIZE@/$SYSTEM_SIZE/g" \ -e "s/@SYSTEM_PART_START@/$SYSTEM_PART_START/g" \ -e "s/@EXTLINUX_PARAMETERS@/$EXTLINUX_PARAMETERS/g" \ From 50b97480ecfaa3d365e25b4b02bac5153cd09a19 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 10/11] plymouth-lite: use helper function --- packages/tools/plymouth-lite/package.mk | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/packages/tools/plymouth-lite/package.mk b/packages/tools/plymouth-lite/package.mk index 033aad4339..95f0f64cd6 100644 --- a/packages/tools/plymouth-lite/package.mk +++ b/packages/tools/plymouth-lite/package.mk @@ -43,17 +43,6 @@ makeinstall_init() { cp ply-image $INSTALL/usr/bin mkdir -p $INSTALL/splash - if [ -f $PROJECT_DIR/$PROJECT/splash/splash.conf ]; then - cp $PROJECT_DIR/$PROJECT/splash/splash.conf $INSTALL/splash - cp $PROJECT_DIR/$PROJECT/splash/*.png $INSTALL/splash - elif ls $PROJECT_DIR/$PROJECT/splash/splash-*.png 1>/dev/null 2>&1; then - cp $PROJECT_DIR/$PROJECT/splash/splash-*.png $INSTALL/splash - elif [ -f $DISTRO_DIR/$DISTRO/splash/splash.conf ]; then - cp $DISTRO_DIR/$DISTRO/splash/splash.conf $INSTALL/splash - cp $DISTRO_DIR/$DISTRO/splash/*.png $INSTALL/splash - elif ls $DISTRO_DIR/$DISTRO/splash/splash-*.png 1>/dev/null 2>&1; then - cp $DISTRO_DIR/$DISTRO/splash/splash-*.png $INSTALL/splash - else - cp $PKG_DIR/splash/splash-*.png $INSTALL/splash - fi + find_file_path splash/splash.conf && cp ${FOUND_PATH} $INSTALL/splash + find_file_path "splash/splash-*.png" && cp ${FOUND_PATH} $INSTALL/splash } From f1de8a967d1b867797b6fb85364230fd95712491 Mon Sep 17 00:00:00 2001 From: MilhouseVH Date: Thu, 1 Feb 2018 05:21:36 +0000 Subject: [PATCH 11/11] xorg-server: use helper function --- packages/x11/xserver/xorg-server/package.mk | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/x11/xserver/xorg-server/package.mk b/packages/x11/xserver/xorg-server/package.mk index f9c99ed954..55d60e6a1f 100644 --- a/packages/x11/xserver/xorg-server/package.mk +++ b/packages/x11/xserver/xorg-server/package.mk @@ -156,11 +156,8 @@ post_makeinstall_target() { fi mkdir -p $INSTALL/etc/X11 - if [ -f $PROJECT_DIR/$PROJECT/xorg/xorg.conf ]; then - cp $PROJECT_DIR/$PROJECT/xorg/xorg.conf $INSTALL/etc/X11 - elif [ -f $PKG_DIR/config/xorg.conf ]; then - cp $PKG_DIR/config/xorg.conf $INSTALL/etc/X11 - fi + find_file_path config/xorg.conf && + cp $FOUND_PATH $INSTALL/etc/X11 if [ ! "$DEVTOOLS" = yes ]; then rm -rf $INSTALL/usr/bin/cvt