[openwrt/openwrt] scripts/ext-tools: introduce new script to install prebuilt tools
LEDE Commits
lede-commits at lists.infradead.org
Sun Dec 4 07:07:45 PST 2022
ansuel pushed a commit to openwrt/openwrt.git, branch openwrt-21.02:
https://git.openwrt.org/fd7e8e4e7520ac7531c1008a83557c7a04860da5
commit fd7e8e4e7520ac7531c1008a83557c7a04860da5
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Fri Sep 30 19:36:06 2022 +0200
scripts/ext-tools: introduce new script to install prebuilt tools
Add a simple script to make it easier to install a prebuilt tools tar.
Currently it will be used by our tools container and kernel workflow on
github.
Simple script that take a tar that contains prebuilt host tools, extract
them and refresh the timestamps to skip recompilation of such host
tools.
By default it refresh timestamps of build_dir/host and
staging_dir/host/stamp.
Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
(cherry picked from commit 5428bdc2dfaa45bc7adc89c3b9224da7d21961d0)
---
scripts/ext-tools.sh | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
diff --git a/scripts/ext-tools.sh b/scripts/ext-tools.sh
new file mode 100755
index 0000000000..bf56f4d9ed
--- /dev/null
+++ b/scripts/ext-tools.sh
@@ -0,0 +1,98 @@
+#!/usr/bin/env bash
+
+TOOLS_TAR=""
+HOST_BUILD_DIR=$(pwd)/"build_dir/host"
+HOST_STAGING_DIR_STAMP=$(pwd)/"staging_dir/host/stamp"
+
+refresh_timestamps() {
+ find "$1" -not -type l -print0 | xargs -0 touch
+}
+
+extract_prebuilt_tar() {
+ tar -xf "$1"
+}
+
+install_prebuilt_tools() {
+ extract_prebuilt_tar "$TOOLS_TAR"
+
+ if [ ! -d "$HOST_BUILD_DIR" ]; then
+ echo "Can't find Host Build Dir "$HOST_BUILD_DIR"" >&2
+ exit 1
+ fi
+
+ refresh_timestamps "$HOST_BUILD_DIR"
+ sleep 1
+
+ if [ ! -d "$HOST_STAGING_DIR_STAMP" ]; then
+ echo "Can't find Host Staging Dir Stamp "$HOST_STAGING_DIR_STAMP"" >&2
+ exit 1
+ fi
+
+ refresh_timestamps "$HOST_STAGING_DIR_STAMP"
+
+ return 0
+}
+
+while [ -n "$1" ]; do
+ arg="$1"; shift
+ case "$arg" in
+ --host-build-dir)
+ [ -d "$1" ] || {
+ echo "Directory '$1' does not exist." >&2
+ exit 1
+ }
+ HOST_BUILD_DIR="$(cd "$1"; pwd)"; shift
+ ;;
+
+ --host-staging-dir-stamp)
+ [ -d "$1" ] || {
+ echo "Directory '$1' does not exist." >&2
+ exit 1
+ }
+ HOST_STAGING_DIR_STAMP="$(cd "$1"; pwd)"; shift
+ ;;
+
+ --tools)
+ [ -f "$1" ] || {
+ echo "Tools tar file '$1' does not exist." >&2
+ exit 1
+ }
+ TOOLS_TAR="$1"; shift
+ install_prebuilt_tools
+
+ exit $?
+ ;;
+
+ -h|--help)
+ me="$(basename "$0")"
+ echo -e "\nUsage:\n" >&2
+ echo -e " $me --host-build-dir {directory}" >&2
+ echo -e " Set to refresh timestamp of this build directory" >&2
+ echo -e " with --tools." >&2
+ echo -e " THIS OPTION MUST BE SET BEFORE --tools." >&2
+ echo -e " If not provided the default directory is:" >&2
+ echo -e " $(pwd)/build_dir/host\n" >&2
+ echo -e " $me --host-staging-dir-stamp {directory}" >&2
+ echo -e " Set to refresh staging timestamp present in this" >&2
+ echo -e " directory with --tools." >&2
+ echo -e " THIS OPTION MUST BE SET BEFORE --tools." >&2
+ echo -e " If not provided the default directory is:" >&2
+ echo -e " $(pwd)/staging_dir/host/stamp\n" >&2
+ echo -e " $me --tools {tar}" >&2
+ echo -e " Install the prebuilt tools present in the passed" >&2
+ echo -e " tar and prepare them." >&2
+ echo -e " To correctly use them it's needed to update the." >&2
+ echo -e " timestamp of each tools to skip recompilation.\n" >&2
+ echo -e " $me --help" >&2
+ echo -e " Display this help text and exit.\n\n" >&2
+ exit 1
+ ;;
+
+ *)
+ echo "Unknown argument '$arg'" >&2
+ exec $0 --help
+ ;;
+ esac
+done
+
+exec $0 --help
More information about the lede-commits
mailing list