]> www.infradead.org Git - users/sagi/libnvme.git/commitdiff
build: do not rebuild muon/samu every time
authorDaniel Wagner <dwagner@suse.de>
Thu, 16 Nov 2023 14:28:25 +0000 (15:28 +0100)
committerDaniel Wagner <wagi@monom.org>
Thu, 16 Nov 2023 15:44:48 +0000 (16:44 +0100)
There is not need to build the build tools everytime. Thus stage the
samurai and muon build into a new top level directory .build-tools and
only build them on demand.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
scripts/build.sh

index f40a4cfd144b83d3562dd98a14ed9806e8d70b38..4953c84b899a855128e73e4e66c70e3d5e4547ea 100755 (executable)
@@ -59,6 +59,7 @@ CONFIG=${1:-"default"}
 cd "$(git rev-parse --show-toplevel)" || exit 1
 
 BUILDDIR="$(pwd)/.build-ci"
+TOOLDIR="$(pwd)/.build-tools"
 
 fn_exists() { declare -F "$1" > /dev/null; }
 
@@ -126,37 +127,46 @@ test_meson_coverage() {
 }
 
 tools_build_samurai() {
-    mkdir -p "${BUILDDIR}"/build-tools
-    git clone --depth 1 https://github.com/michaelforney/samurai.git \
-        "${BUILDDIR}/build-tools/samurai"
-    pushd "${BUILDDIR}/build-tools/samurai" || exit 1
+    if [ ! -d "${TOOLDIR}"/samurai ]; then
+        git clone --depth 1 https://github.com/michaelforney/samurai.git \
+            "${TOOLDIR}/samurai"
+    fi
 
-    CC="${CC}" make
-    SAMU="${BUILDDIR}/build-tools/samurai/samu"
+    if [[ -f "${TOOLDIR}/samurai/samu" ]]; then
+        return
+    fi
 
+    pushd "${TOOLDIR}/samurai" || exit 1
+    CC="${CC}" make
     popd || exit 1
 }
 
 tools_build_muon() {
-    mkdir -p "${BUILDDIR}"/build-tools
-    git clone --depth 1 https://git.sr.ht/~lattis/muon \
-        "${BUILDDIR}/build-tools/muon"
-    pushd "${BUILDDIR}/build-tools/muon" || exit 1
+    if [ ! -d "${TOOLDIR}/muon" ]; then
+        git clone --depth 1 https://git.sr.ht/~lattis/muon \
+            "${TOOLDIR}/muon"
+    fi
+
+    if [[ -f "${TOOLDIR}/build-muon/muon" ]]; then
+        return
+    fi
+
+    pushd "${TOOLDIR}/muon" || exit 1
 
     CC="${CC}" ninja="${SAMU}" ./bootstrap.sh stage1
 
     CC="${CC}" ninja="${SAMU}" stage1/muon setup        \
-        -Dprefix="${BUILDDIR}/build-tools"              \
         -Dlibcurl=enabled                               \
         -Dlibarchive=enabled                            \
         -Dlibpkgconf=enabled                            \
+        -Dprefix="${TOOLDIR}"                           \
         -Ddocs=disabled                                 \
         -Dsamurai=disabled                              \
-        "${BUILDDIR}/build-tools/.build-muon"
-    "${SAMU}" -C "${BUILDDIR}/build-tools/.build-muon"
-    MUON="${BUILDDIR}/build-tools/.build-muon/muon"
+        "${TOOLDIR}/build-muon"
+    "${SAMU}" -C "${TOOLDIR}/build-muon"
 
-    # "${MUON}" -C "${BUILDDIR}/build-tools/.build-muon" test
+    # "${TOOLDIR}/build-muon/muon" \
+    #    -C "${TOOLDIR}/build-muon" test
 
     popd || exit 1
 }
@@ -181,22 +191,25 @@ test_muon() {
     ninja="${SAMU}" "${MUON}" -C "${BUILDDIR}" test
 }
 
-rm -rf "${BUILDDIR}"
-
 if [[ "${BUILDTOOL}" == "muon" ]]; then
-    if ! which samu ; then
+    SAMU="$(which samu 2> /dev/null)" || true
+    if [[ -z "${SAMU}" ]]; then
         tools_build_samurai
-    else
-        SAMU="$(which samu)"
+        SAMU="${TOOLDIR}/samurai/samu"
     fi
 
-    if ! which muon ; then
+    MUON="$(which muon 2> /dev/null)" || true
+    if [[ -z "${MUON}" ]]; then
         tools_build_muon
-    else
-        MUON="$(which muon)"
+        MUON="${TOOLDIR}/build-muon/muon"
     fi
 fi
 
+echo "samu: ${SAMU}"
+echo "muon: ${MUON}"
+
+rm -rf "${BUILDDIR}"
+
 config_"${BUILDTOOL}"_"${CONFIG}"
 fn_exists "build_${BUILDTOOL}_${CONFIG}" && "build_${BUILDTOOL}_${CONFIG}" || build_"${BUILDTOOL}"
 fn_exists "test_${BUILDTOOL}_${CONFIG}" && "test_${BUILDTOOL}_${CONFIG}" || test_"${BUILDTOOL}"