From b352a8fad8804d61caa10ecb5b516d6984596486 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 18:01:16 -0400 Subject: [PATCH 01/15] test actions build --- .github/workflows/main.yml | 3 +++ CloverPackage/makeV2 | 2 +- CloverPackage/makeiso | 2 +- CloverPackage/makepkg | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21357c1b6f..04eae7ba11 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,6 +26,9 @@ jobs: - name: Build Clover Pack run: | + mkdir -p ~/src/CloverBootloader/toolchain/tools/download + cd ~/src/CloverBootloader/toolchain/tools + git clone https://github.com/com-chris1111/download.git chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs diff --git a/CloverPackage/makeV2 b/CloverPackage/makeV2 index aed4bc843d..1516c7f564 100755 --- a/CloverPackage/makeV2 +++ b/CloverPackage/makeV2 @@ -13,5 +13,5 @@ mv CloverV2-${REVISION}.zip $SYMROOT open sym -#exit 0 +exit 0 diff --git a/CloverPackage/makeiso b/CloverPackage/makeiso index a80572161c..afe9d1ef9d 100755 --- a/CloverPackage/makeiso +++ b/CloverPackage/makeiso @@ -202,4 +202,4 @@ if [[ "${1:-}" == "" ]]; then [[ "$SYSNAME" != Linux ]] && open sym fi -#exit 0 +exit 0 diff --git a/CloverPackage/makepkg b/CloverPackage/makepkg index c472d54697..a9cceeff30 100755 --- a/CloverPackage/makepkg +++ b/CloverPackage/makepkg @@ -95,4 +95,4 @@ ls -la sym open sym # Finish building installer. -#exit 0 +exit 0 From 5e561daad80dc96c00992becf5022d7b00fdd445 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 18:04:44 -0400 Subject: [PATCH 02/15] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 04eae7ba11..027a0e4d9b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,6 +29,7 @@ jobs: mkdir -p ~/src/CloverBootloader/toolchain/tools/download cd ~/src/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git + cd ~/src/CloverBootloader chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs From 27cb0fcd2303b07d136a6f1fe734bc777b07dce1 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 18:10:57 -0400 Subject: [PATCH 03/15] Update main.yml --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 027a0e4d9b..7c1c473132 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,10 +26,10 @@ jobs: - name: Build Clover Pack run: | - mkdir -p ~/src/CloverBootloader/toolchain/tools/download - cd ~/src/CloverBootloader/toolchain/tools - git clone https://github.com/com-chris1111/download.git - cd ~/src/CloverBootloader + mkdir -p /Users/runner/work/CloverBootloader/toolchain/tools/download + cd /Users/runner/work/CloverBootloader/toolchain/tools + git clone https://github.com/com-chris1111/download.git + cd /Users/runner/work/CloverBootloader chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs From 5325723e03210ce109875e6c4c66b3410ca03bae Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 18:20:08 -0400 Subject: [PATCH 04/15] Update main.yml --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7c1c473132..96301e56bf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,10 +26,10 @@ jobs: - name: Build Clover Pack run: | - mkdir -p /Users/runner/work/CloverBootloader/toolchain/tools/download - cd /Users/runner/work/CloverBootloader/toolchain/tools + mkdir -p /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools/download + cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git - cd /Users/runner/work/CloverBootloader + cd /Users/runner/work/CloverBootloader/CloverBootloader chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs From 6dec1a2d20e81ad9919f43e60a1539dc017844a1 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 18:42:42 -0400 Subject: [PATCH 05/15] Update buildme --- buildme | 904 ++++++++++++++++++++------------------------------------ 1 file changed, 321 insertions(+), 583 deletions(-) diff --git a/buildme b/buildme index de41b51dd6..240248c82f 100755 --- a/buildme +++ b/buildme @@ -2,44 +2,95 @@ # created by vector sigma on July 15 2019 # modified by LAbyOne on My 2021 +# Remastered by YBronst in Aug 2025. # github version -# Linux users should be able to use this wrapper, although the following are needed: -# (Ubuntu alike) -# sudo apt-get install build-essential uuid-dev iasl git gcc-9 nasm python3-distutils +export TERM=xterm-256color +export LC_ALL=C.UTF-8 + +# Defining the base directory +BASE_DIR="$(dirname "$0")" + +# $1 argument overrides MYTOOLCHAIN variable (e.g., GCC53) +MYTOOLCHAIN="${1:-GCC151}" # Default to GCC151 if no argument provided -# $1 argument override MYTOOLCHAIN variable, in case you want GCC53 for example # ====== COLORS ====== -COL_BLACK="\x1b[40;01m" -COL_RED="\x1b[31;01m" -COL_GREEN="\x1b[32;01m" -COL_YELLOW="\x1b[33;01m" -COL_MAGENTA="\x1b[35;01m" -COL_CYAN="\x1b[36;01m" -COL_WHITE="\x1b[37;01m" -COL_BLUE="\x1b[34;01m" -COL_RESET="\x1b[39;49;00m" +# Основные цвета +COL_RED=$(tput setaf 1) # Red +COL_GREEN=$(tput setaf 2) # Green +COL_YELLOW=$(tput setaf 3) # Yellow +COL_BLUE=$(tput setaf 4) # Blue +COL_PURPLE=$(tput setaf 5) # Purple +COL_CYAN=$(tput setaf 6) # Cyan +COL_WHITE=$(tput setaf 7) # White + +# Light shades +COL_LIGHT_RED=$(tput setaf 9) # Light Red +COL_LIGHT_GREEN=$(tput setaf 10) # Light Green +COL_LIGHT_YELLOW=$(tput setaf 229) # Light Yellow (замена для setaf 11) +COL_LIGHT_BLUE=$(tput setaf 153) # Light Blue (замена для setaf 12) +COL_LIGHT_PURPLE=$(tput setaf 183) # Light Purple (замена для setaf 13) +COL_LIGHT_CYAN=$(tput setaf 14) # Light Cyan + +# Dark shades +COL_DARK_RED=$(tput setaf 124) # Dark Red +COL_DARK_GREEN=$(tput setaf 22) # Dark Green +COL_DARK_YELLOW=$(tput setaf 94) # Dark Yellow +COL_DARK_BLUE=$(tput setaf 18) # Dark Blue COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple +COL_DARK_CYAN=$(tput setaf 30) # Dark Cyan + +# Bold options +COL_RED_BOLD=$(tput bold; tput setaf 1) # Bold Red +COL_GREEN_BOLD=$(tput bold; tput setaf 2) # Bold Green +COL_YELLOW_BOLD=$(tput bold; tput setaf 3) # Bold Yellow +COL_BLUE_BOLD=$(tput bold; tput setaf 4) # Bold Blue +COL_PURPLE_BOLD=$(tput bold; tput setaf 5) # Bold Purple +COL_CYAN_BOLD=$(tput bold; tput setaf 6) # Bold Cyan +COL_WHITE_BOLD=$(tput bold; tput setaf 7) # Bold White + +# Italic variants +COL_RED_ITALIC=$(tput sitm; tput setaf 1) # Italic Red +COL_GREEN_ITALIC=$(tput sitm; tput setaf 2) # Italic Green +COL_YELLOW_ITALIC=$(tput sitm; tput setaf 3) # Italic Yellow +COL_BLUE_ITALIC=$(tput sitm; tput setaf 4) # Italic Blue +COL_PURPLE_ITALIC=$(tput sitm; tput setaf 5) # Italic Purple +COL_CYAN_ITALIC=$(tput sitm; tput setaf 6) # Italic Cyan +COL_WHITE_ITALIC=$(tput sitm; tput setaf 7) # Italic White + +# Reset all attributes +COL_RESET=$(tput sgr0) + +# Checking the availability of the Downloads folder +if [[ ! -w "$HOME/Downloads" ]]; then + echo "${COL_RED}Error: Cannot write to $HOME/Downloads. Please check permissions.${COL_RESET}" + exit 1 +fi + # ====== Main Window SetUp ====== -if [[ "$2" != ci ]]; then -osascript < /dev/null -fi +fi } updateClover() { echo "[UPDATE CLOVER]" cd "${CLOVERROOT}" -#clone_OpenCorePkg +clone_OpenCorePkg if [[ -d .git ]]; then git fetch --all --recurse-submodules git pull --recurse-submodules origin master @@ -180,7 +228,7 @@ fi } buildCloverHFSPlus() { -if [[ -f "${CLOVERROOT}"/FileSystems/HFSPlus/X64/HFSPlus.efi ]]; then +if [[ -f "${CLOVERROOT}/FileSystems/HFSPlus/X64/HFSPlus.efi" ]]; then echo "building Clover with HFSPlus" buildClover HFSPlus else @@ -191,213 +239,147 @@ fi } makeRelease() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER RELEASE]" - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi +echo "[BUILD CLOVER RELEASE]" +./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN +./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } makeReleaseXC() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi - - echo "[BUILD CLOVER RELEASE WITH XCODE]" - local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" - if [[ "$xrel" < "14.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 - elif [[ "$xrel" == "14.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 - elif [[ "$xrel" == "15.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 - elif [[ "$xrel" == "16.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi -} - - -buildCCPV() { - cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator - make -} +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi -BLC() { -if [[ ! -d "${CLOVERROOT}"/CloverPackage/BootLoaderChooser ]]; then - mkdir -p "${CLOVERROOT}"/CloverPackage/BootLoaderChooser +echo "[BUILD CLOVER RELEASE WITH XCODE]" +local xrel="XCODE$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1)" +./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel +./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN fi -curl -sLq https://github.com/jief666/BootloaderChooser/releases/download/1.4/BootX64.efi > "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi -chmod 775 "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi } buildClover() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER]" - # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) - # This allow the user to run ebuild.sh with own parameters - if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then - echo "Running custom build script" - "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN +echo "[BUILD CLOVER]" +if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then + echo "Running custom build script" + "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN +else + local parameter=${1:-none} + if [[ "${parameter}" == HFSPlus ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN else - local parameter=${1:-none} - if [[ "${parameter}" == HFSPlus ]]; then - #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN - else - #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN - fi - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi - # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN fi +fi +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi +if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } buildCloverXC() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER WITH XCODE]" - # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) - # This allow the user to run ebuild.sh with own parameters - if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then - echo "Running custom build script" - "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN - else - local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" - if [[ "$xrel" < "14.*" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 - elif [[ "$xrel" > "16.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 - elif [[ "$xrel" > "15.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 - elif [[ "$xrel" > "14.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 - fi - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi - # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi +echo "[BUILD CLOVER WITH XCODE]" +if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then + echo "Running custom build script" + "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN +else + xrel="XCODE$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1)" + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $xrel +fi +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi +if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } buildtestsix() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - echo "[BUILD CLOVERDB]" - ./hebuild.sh -t $MYTOOLCHAIN +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +echo "[BUILD CLOVERDB]" +./hebuild.sh -t $MYTOOLCHAIN } buildtestsev() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - echo "[BUILD CLOVERDB]" - ./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +echo "[BUILD CLOVERDB]" +./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN } - buildCloverTest() { checkTools - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools + export EDK_TOOLS_PATH="${PWD}/BaseTools" set +u source ./edksetup.sh BaseTools set -u @@ -411,38 +393,28 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD PKG]" + cd "${CLOVERROOT}/CloverPackage" checkXCODE checkGETTEXT -# source ./makepkg - make pkg + echo "[BUILD PKG]" + echo "The log will be created in the CloverPackage folder." + rm -f mpkg.log + make pkg | tee mpkg.log else echo && echo "can't build pkg on a non Darwin OS!" fi } -buildUtils() { -if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD UTILS]" - checkXCODE - make utils -else - echo && echo "can't build utils on a non Darwin OS!" -fi -} - buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then - if [[ -f "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi ]]; then - rm -f "${CLOVERROOT}"/CloverPackage/sym/.withV2 - mkdir -p "${CLOVERROOT}"/CloverPackage/sym + if [[ -f "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi" ]]; then + rm -f "${CLOVERROOT}/CloverPackage/sym/.withV2" + mkdir -p "${CLOVERROOT}/CloverPackage/sym" if [[ $withClover == withV2 ]]; then - touch "${CLOVERROOT}"/CloverPackage/sym/.withV2 + touch "${CLOVERROOT}/CloverPackage/sym/.withV2" fi - cd "${CLOVERROOT}"/CloverApp + cd "${CLOVERROOT}/CloverApp" echo "[BUILD APP]" checkXCODE make @@ -456,184 +428,59 @@ fi } buildIso() { - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD ISO]" - make iso +cd "${CLOVERROOT}/CloverPackage" +echo "[BUILD ISO]" +make iso } makeV2() { - #clear - export V2=${V2:-${CLOVERROOT}/CloverPackage/CloverV2} - if [[ -f $V2/EFI/CLOVER/CLOVERX64.efi ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "" && echo -e $COL_CYAN"[BUILD CloverV2]" - make zip - else - echo "" && echo -e $COL_RED"please, Compile Clover first!!" - Sleep 3 - fi +export V2=${V2:-"${CLOVERROOT}/CloverPackage/CloverV2"} +if [[ -f "$V2/EFI/CLOVER/CLOVERX64.efi" ]]; then + cd "${CLOVERROOT}/CloverPackage" + echo "" && echo -e "${COL_CYAN}[BUILD CloverV2]" + make zip +else + echo "" && echo -e "${COL_RED}please, Compile Clover first!!" + sleep 3 +fi } - checkStatus() { - if [[ -d .git ]]; then - git fetch --recurse-submodules origin - git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt - else - echo "Error: this is not a git repository, can't get info!" - fi +if [[ -d .git ]]; then + git fetch --recurse-submodules origin + git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt +else + echo "Error: this is not a git repository, can't get info!" +fi } showdiff() { - if [[ -d .git ]]; then +if [[ -d .git ]]; then git fetch --recurse-submodules origin git diff > "${DIR_OUT}"/diff_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/diff_${revision}-*.txt - else - echo "Error: this is not a git repository, can't get info!" - fi +else + echo "Error: this is not a git repository, can't get info!" +fi } cleanBaseTools() { -cd "${CLOVERROOT}"/BaseTools +cd "${CLOVERROOT}/BaseTools" make clean } -## Utilities -buildCPV() { - revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) - if [[ -d "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator ]]; then - rm -Rf "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - fi - mkdir -p "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator - checkXCODE - xcodebuild -project ./CloverConfigPlistValidator.xcodeproj -quiet CONFIGURATION_BUILD_DIR="${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - mv -f "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator_${revision} - rm -r "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/*.dSYM - open "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator -} - -PlistEDPlus() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -qsSLk https://github.com/ic005k/PlistEDPlus/releases/download/1.2.35/PlistEDPlus_Mac.dmg > PlistEDPlus_Mac.dmg - hdiutil attach -quiet -noverify -nobrowse PlistEDPlus_Mac.dmg && cp -Rf /Volumes/bin\:release\:PlistEDPlus/PlistEDPlus.app $HOME/Desktop/ClovUtils - hdiutil detach -force /Volumes/bin\:release\:PlistEDPlus - rm -r $HOME/Desktop/ClovUtils/PlistEDPlus_Mac.dmg && open $HOME/Desktop/ClovUtils -} - -Hackintool() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/headkaze/Hackintool/releases/download/3.8.4/Hackintool.zip -o Hackintool.zip - unzip -q Hackintool.zip && rm -r Hackintool.zip && open $HOME/Desktop/ClovUtils -} - -BitmaskDecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/BitmaskDecode && open $HOME/Desktop/ClovUtils -} - -MaciASL() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/acidanthera/MaciASL/releases/download/1.6.2/MaciASL-1.6.2-RELEASE.dmg > MaciASL-1.6.2-RELEASE.dmg - hdiutil attach -quiet -noverify -nobrowse MaciASL-1.6.2-RELEASE.dmg && cp -Rf /Volumes/MaciASL/MaciASL.app $HOME/Desktop/ClovUtils - hdiutil detach -force /Volumes/MaciASL - rm -r $HOME/Desktop/ClovUtils/MaciASL-1.6.2-RELEASE.dmg && open $HOME/Desktop/ClovUtils -} - -dmidecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils/dmidecode - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/acidanthera/dmidecode dmi-decode && xcodebuild -project ./dmi-decode/dmidecode.xcodeproj -quiet - cp -r dmi-decode/dmidecode $HOME/Desktop/ClovUtils/dmidecode && rm -Rf $HOME/Desktop/ClovUtils/dmi-decode && open $HOME/Desktop/ClovUtils -} - -Get-IOReg-Devices() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/LAbyOne/Get-IOReg-Devices - mv -f Get-IOReg-Devices/Get\ IOReg\ Devices $HOME/Desktop/ClovUtils/Get\ IOReg-Devices && chmod a+x $HOME/Desktop/ClovUtils/Get\ IOReg-Devices/*.command - rm -rf Get-IOReg-Devices && open $HOME/Desktop/ClovUtils -} - -NDBrightness () { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/KAMIKAZEUA/NativeDisplayBrightness NDBrightness - xcodebuild -project ./NDBrightness/NativeDisplayBrightness.xcodeproj -quiet -configuration Release clean build ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=$HOME/Desktop/ClovUtils - rm -Rf $HOME/Desktop/ClovUtils/NDBrightness && rm -r $HOME/Desktop/ClovUtils/*.dSYM && open $HOME/Desktop/ClovUtils -} - -SSDTTime() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/SSDTTime && open $HOME/Desktop/ClovUtils -} - -USBMap() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/USBMap - open $HOME/Desktop/ClovUtils -} - -Xiasl() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - #cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg - #hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils - #hdiutil detach -force /Volumes/bin\:release\:Xiasl - #rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils - - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/CloverHackyColor/Xiasl/releases/download/1.1.8/Xiasl.zip > Xiasl.zip - unzip -q Xiasl.zip && rm -r Xiasl.zip && open $HOME/Desktop/ClovUtils -} - -CsrDecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils/CsrDecode - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/CsrDecode && open $HOME/Desktop/ClovUtils -} - -gibMacOS() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/gibMacOS && open $HOME/Desktop/ClovUtils -} - -mountR/W() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/jacklukem/BigSurmountsrw/releases/download/1.0/BigSurmountsrw2.app.zip -o BigSurmountsrw2.app.zip && open $HOME/Desktop/ClovUtils - unzip -q $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip && rm -r $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip $HOME/Desktop/ClovUtils/__MACOSX +makeBaseTools() { +cd "${CLOVERROOT}" +make -C BaseTools "BUILD_CC=clang" } - testing() { -#clear echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_CYAN (SHA: $lsha1)" -echo -e $COL_BLUE" Test Builds" -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" +echo -e " 🍀 Clover r${revision}${COL_WHITE} (SHA: ${lsha1})" +echo -e "${COL_CYAN} Test Builds${COL_RESET}" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" echo -e "\n\n\n\n\n\n\n\n\n\n\n" PS3=' @@ -643,9 +490,9 @@ options=( 'test Clover with boot6' 'test build (no autogen, no boot files)' 'back to Cloverbuilds' 'Exit') -select opt in "${options[@]}" - do - case $opt in +select opt in "${options[@]}" +do + case $opt in "test Clover with boot6") buildtestsix break @@ -670,155 +517,55 @@ select opt in "${options[@]}" echo "invalid option $REPLY" break ;; - esac - done + esac +done testing } -Utilities() { -echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e $COL_CYAN" External Utilities " -echo -e $COL_DARK_PURPLE" All Files will be put on Desktop/ClovUtils" -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n" - -PS3=' -Please enter your choice: ' -options=( 'Get CloverConfigPlistValidator ' - 'Get PlistEDPlus ' - 'Get Hackintool ' - 'Get BitmaskDecode ' - 'Get MaciASL ' - 'Get dmidecode ' - 'Get IOReg-Devices ' - 'Get NativeDisplayBrightness ' - 'Get SSDTTime' - 'Get USBMap' - 'Get Xiasl' - 'Get CsrDecode' - 'Get gibMacOS' - 'Get mountR/W' - 'back to Cloverbuilds' - 'Exit') -select opt in "${options[@]}" - do - case $opt in - "Get CloverConfigPlistValidator ") - buildCPV - break - ;; - "Get PlistEDPlus ") - PlistEDPlus - break - ;; - "Get Hackintool ") - Hackintool - break - ;; - "Get BitmaskDecode ") - BitmaskDecode - break - ;; - "Get MaciASL ") - MaciASL - break - ;; - "Get dmidecode ") - dmidecode - break - ;; - "Get IOReg-Devices ") - Get-IOReg-Devices - break - ;; - "Get NativeDisplayBrightness ") - NDBrightness - break - ;; - "Get SSDTTime") - SSDTTime - break - ;; - "Get USBMap") - USBMap - break - ;; - "Get Xiasl") - Xiasl - break - ;; - "Get CsrDecode") - CsrDecode - break - ;; - "Get gibMacOS") - gibMacOS - break - ;; - "Get mountR/W") - mountR/W - break - ;; - "back to Cloverbuilds") - menu - break - ;; - "Exit") - exit - break - ;; - *) - echo "invalid option $REPLY" - break - ;; - esac - done -Utilities -} - Extra() { -#clear echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} can be done on${COL_CYAN} Cloverbuilds" +echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_WHITE} (SHA: ${lsha1})" +echo -e "${COL_WHITE} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_WHITE}" +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} can be done on${COL_CYAN} Cloverbuilds${COL_RESET}" if [[ -x "$(which python3)" ]]; then - echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------- ${pyversion}${COL_GREEN} -------------------- ${COL_RESET}" + echo -e "\n\n\n\n\n\n\n\n\n\n" else -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n\n\n\n\n\n\n\n\n" fi PS3=' -Please enter your choice: ' -options=( 'Cloverbuilds' +Please enter your choice:' +options=( 'back to main menu' + 'make BaseTools' 'test Clover' 'check status' 'show diff' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' - 'Utilities' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "Cloverbuilds") + "back to main menu") menu break ;; - "test Clover") + "make BaseTools") + makeBaseTools + break + ;; + "test Clover") testing break ;; - "check status") + "check status") checkStatus break ;; @@ -827,8 +574,8 @@ do break ;; "open CloverV2 directory") - if [[ -d "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER ]]; then - open "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER + if [[ -d "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" ]]; then + open "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" else echo && echo "Directory not found. Compile Clover first!!" sleep 2 @@ -868,23 +615,21 @@ Extra } menu() { -#clear echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} select:${COL_CYAN} build (with XCode)" -echo -e "${COL_DARK_PURPLE} Depending on your${COL_CYAN} XCODE version${COL_DARK_PURPLE} the Toolset will be${COL_CYAN} automatically chosen" -# echo -e "${COL_DARK_PURPLE} Toolset${COL_CYAN} is automatically chosen${COL_DARK_PURPLE} depending on the${COL_CYAN} XCODE installed version" +echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_WHITE} (SHA: ${lsha1})" +echo -e "${COL_WHITE} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_WHITE}" +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} select:${COL_CYAN} build (with XCode)" +echo -e "${COL_WHITE} Depending on your${COL_CYAN} XCODE version${COL_WHITE} the Toolset will be${COL_CYAN} automatically chosen" if [[ -x "$(which python3)" ]]; then - echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------- ${pyversion}${COL_GREEN} -------------------- ${COL_RESET}" + echo -e "\n\n\n\n\n\n\n" else -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' @@ -900,7 +645,6 @@ options=( 'build Clover (Default Toolchain)' 'make Release (with XCode)' 'build Clover with HFSPlus' 'Extra Options' - 'make utils' 'Exit') select opt in "${options[@]}" @@ -910,13 +654,13 @@ do buildClover break ;; - "build all (Default Toolchain)") + "build all (Default Toolchain)") buildClover buildPkg buildIso - makeV2 + makeV2 break - ;; + ;; "make Release (Default Toolchain)") makeRelease buildPkg @@ -944,36 +688,31 @@ do buildCloverXC break ;; - "build all (with XCode)") - buildCloverXC - BLC - buildPkg - buildIso - makeV2 - break - ;; - "make Release (with XCode)") - makeReleaseXC - buildPkg - buildIso - makeV2 - break - ;; - "build Clover with HFSPlus") - buildCloverHFSPlus - break - ;; - "Extra Options") - Extra - break - ;; - "make utils") - buildUtils - break - ;; - "Exit") + "build all (with XCode)") + buildCloverXC + buildPkg + buildIso + makeV2 + break + ;; + "make Release (with XCode)") + makeReleaseXC + buildPkg + buildIso + makeV2 + break + ;; + "build Clover with HFSPlus") + buildCloverHFSPlus + break + ;; + "Extra Options") + Extra + break + ;; + "Exit") exit 0 - ;; + ;; *) echo "invalid option $REPLY" break @@ -984,11 +723,10 @@ menu } # Main -#clone_OpenCorePkg +clone_OpenCorePkg set -e if [[ "$2" == ci ]]; then makeRelease - BLC buildPkg buildIso makeV2 From 3523dc9dc470d92de4231646c41c6c86e769f1c4 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 19:13:10 -0400 Subject: [PATCH 06/15] Update main.yml --- .github/workflows/main.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96301e56bf..1c2e1a2d09 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,8 +30,24 @@ jobs: cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git cd /Users/runner/work/CloverBootloader/CloverBootloader - chmod +x ./buildme - ./buildme "" ci + git clone https://github.com/CloverHackyColor/CloverBootloader.git --recurse-submodules /Users/runner/work/CloverBootloader/CloverBootloader + mkdir -p /Users/runner/work/CloverBootloader/CloverBootloader/conf + make BaseTools/Source/C + source edksetup.sh + ./buildgettext.sh + TOOLCHAIN=GCC151 + export GCC151_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/cross/bin/x86_64-clover-linux-gnu-gcc" + ./build_gcc15.sh + export NASM_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/bin/" + export MTOC_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/bin/" + ./buildnasm.sh + ./buildmtoc.sh + Sleep 1 + ./ebuild.sh -gcc151 -fr -x64 -D NO_GRUB_DRIVERS + ./ebuild.sh -gcc151 -fr -mc -D NO_GRUB_DRIVERS + cd /Users/runner/work/CloverBootloader/CloverBootloader/CloverPackage + (make pkg | tee mpkg.log) + make iso - name: Prepare Release Packs run: | (cd "CloverPackage/CloverV2/EFI/CLOVER/" && zip -q "CLOVERX64.efi.zip" "CLOVERX64.efi" || exit 1) From 742d0b8fda236a46cc0b017928daac36341bdc8b Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 19:23:01 -0400 Subject: [PATCH 07/15] test --- .github/workflows/main.yml | 20 +----- buildme | 137 ++++++++++++++++++++----------------- 2 files changed, 78 insertions(+), 79 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1c2e1a2d09..96301e56bf 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,24 +30,8 @@ jobs: cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git cd /Users/runner/work/CloverBootloader/CloverBootloader - git clone https://github.com/CloverHackyColor/CloverBootloader.git --recurse-submodules /Users/runner/work/CloverBootloader/CloverBootloader - mkdir -p /Users/runner/work/CloverBootloader/CloverBootloader/conf - make BaseTools/Source/C - source edksetup.sh - ./buildgettext.sh - TOOLCHAIN=GCC151 - export GCC151_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/cross/bin/x86_64-clover-linux-gnu-gcc" - ./build_gcc15.sh - export NASM_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/bin/" - export MTOC_PREFIX="/Users/runner/work/CloverBootloader/CloverBootloader/opt/local/bin/" - ./buildnasm.sh - ./buildmtoc.sh - Sleep 1 - ./ebuild.sh -gcc151 -fr -x64 -D NO_GRUB_DRIVERS - ./ebuild.sh -gcc151 -fr -mc -D NO_GRUB_DRIVERS - cd /Users/runner/work/CloverBootloader/CloverBootloader/CloverPackage - (make pkg | tee mpkg.log) - make iso + chmod +x ./buildme + ./buildme "" ci - name: Prepare Release Packs run: | (cd "CloverPackage/CloverV2/EFI/CLOVER/" && zip -q "CLOVERX64.efi.zip" "CLOVERX64.efi" || exit 1) diff --git a/buildme b/buildme index 240248c82f..438fcb17be 100755 --- a/buildme +++ b/buildme @@ -58,39 +58,27 @@ COL_PURPLE_ITALIC=$(tput sitm; tput setaf 5) # Italic Purple COL_CYAN_ITALIC=$(tput sitm; tput setaf 6) # Italic Cyan COL_WHITE_ITALIC=$(tput sitm; tput setaf 7) # Italic White +# Set background color +BG_BLUE=$(tput setab 4) # Reset all attributes COL_RESET=$(tput sgr0) -# Checking the availability of the Downloads folder -if [[ ! -w "$HOME/Downloads" ]]; then - echo "${COL_RED}Error: Cannot write to $HOME/Downloads. Please check permissions.${COL_RESET}" - exit 1 -fi - # ====== Main Window SetUp ====== -if [[ "$2" != "ci" ]]; then - osascript < Date: Mon, 29 Sep 2025 19:26:22 -0400 Subject: [PATCH 08/15] Update main.yml --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96301e56bf..5a01623cf8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,12 +24,14 @@ jobs: HOMEBREW_NO_INSTALL_CLEANUP: 1 HOMEBREW_NO_AUTO_UPDATE: 1 - - name: Build Clover Pack + - name: CloverBuildTool run: | mkdir -p /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools/download cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git cd /Users/runner/work/CloverBootloader/CloverBootloader + - name: Build Clover Pack + run: | chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs From a51998ec8f092cbdba1a3aed2d87fdd7612a4b2c Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 19:31:25 -0400 Subject: [PATCH 09/15] Update main.yml --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5a01623cf8..bb99aba414 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,8 +30,10 @@ jobs: cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools git clone https://github.com/com-chris1111/download.git cd /Users/runner/work/CloverBootloader/CloverBootloader + - name: Build Clover Pack run: | + cd /Users/runner/work/CloverBootloader/CloverBootloader chmod +x ./buildme ./buildme "" ci - name: Prepare Release Packs From 9bdad1e12379232694639518d387bba0c8ca05fd Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 20:04:36 -0400 Subject: [PATCH 10/15] Update buildme --- buildme | 903 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 575 insertions(+), 328 deletions(-) diff --git a/buildme b/buildme index 438fcb17be..de41b51dd6 100755 --- a/buildme +++ b/buildme @@ -2,81 +2,42 @@ # created by vector sigma on July 15 2019 # modified by LAbyOne on My 2021 -# Remastered by YBronst in Aug 2025. # github version -export TERM=xterm-256color -export LC_ALL=C.UTF-8 - -# Defining the base directory -BASE_DIR="$(dirname "$0")" - -# $1 argument overrides MYTOOLCHAIN variable (e.g., GCC53) -MYTOOLCHAIN="${1:-GCC151}" # Default to GCC151 if no argument provided +# Linux users should be able to use this wrapper, although the following are needed: +# (Ubuntu alike) +# sudo apt-get install build-essential uuid-dev iasl git gcc-9 nasm python3-distutils +# $1 argument override MYTOOLCHAIN variable, in case you want GCC53 for example # ====== COLORS ====== -# Основные цвета -COL_RED=$(tput setaf 1) # Red -COL_GREEN=$(tput setaf 2) # Green -COL_YELLOW=$(tput setaf 3) # Yellow -COL_BLUE=$(tput setaf 4) # Blue -COL_PURPLE=$(tput setaf 5) # Purple -COL_CYAN=$(tput setaf 6) # Cyan -COL_WHITE=$(tput setaf 7) # White - -# Light shades -COL_LIGHT_RED=$(tput setaf 9) # Light Red -COL_LIGHT_GREEN=$(tput setaf 10) # Light Green -COL_LIGHT_YELLOW=$(tput setaf 229) # Light Yellow (замена для setaf 11) -COL_LIGHT_BLUE=$(tput setaf 153) # Light Blue (замена для setaf 12) -COL_LIGHT_PURPLE=$(tput setaf 183) # Light Purple (замена для setaf 13) -COL_LIGHT_CYAN=$(tput setaf 14) # Light Cyan - -# Dark shades -COL_DARK_RED=$(tput setaf 124) # Dark Red -COL_DARK_GREEN=$(tput setaf 22) # Dark Green -COL_DARK_YELLOW=$(tput setaf 94) # Dark Yellow -COL_DARK_BLUE=$(tput setaf 18) # Dark Blue +COL_BLACK="\x1b[40;01m" +COL_RED="\x1b[31;01m" +COL_GREEN="\x1b[32;01m" +COL_YELLOW="\x1b[33;01m" +COL_MAGENTA="\x1b[35;01m" +COL_CYAN="\x1b[36;01m" +COL_WHITE="\x1b[37;01m" +COL_BLUE="\x1b[34;01m" +COL_RESET="\x1b[39;49;00m" COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple -COL_DARK_CYAN=$(tput setaf 30) # Dark Cyan - -# Bold options -COL_RED_BOLD=$(tput bold; tput setaf 1) # Bold Red -COL_GREEN_BOLD=$(tput bold; tput setaf 2) # Bold Green -COL_YELLOW_BOLD=$(tput bold; tput setaf 3) # Bold Yellow -COL_BLUE_BOLD=$(tput bold; tput setaf 4) # Bold Blue -COL_PURPLE_BOLD=$(tput bold; tput setaf 5) # Bold Purple -COL_CYAN_BOLD=$(tput bold; tput setaf 6) # Bold Cyan -COL_WHITE_BOLD=$(tput bold; tput setaf 7) # Bold White - -# Italic variants -COL_RED_ITALIC=$(tput sitm; tput setaf 1) # Italic Red -COL_GREEN_ITALIC=$(tput sitm; tput setaf 2) # Italic Green -COL_YELLOW_ITALIC=$(tput sitm; tput setaf 3) # Italic Yellow -COL_BLUE_ITALIC=$(tput sitm; tput setaf 4) # Italic Blue -COL_PURPLE_ITALIC=$(tput sitm; tput setaf 5) # Italic Purple -COL_CYAN_ITALIC=$(tput sitm; tput setaf 6) # Italic Cyan -COL_WHITE_ITALIC=$(tput sitm; tput setaf 7) # Italic White - -# Set background color -BG_BLUE=$(tput setab 4) -# Reset all attributes -COL_RESET=$(tput sgr0) - # ====== Main Window SetUp ====== if [[ "$2" != ci ]]; then osascript < /dev/null -fi +fi } updateClover() { echo "[UPDATE CLOVER]" cd "${CLOVERROOT}" -clone_OpenCorePkg +#clone_OpenCorePkg if [[ -d .git ]]; then git fetch --all --recurse-submodules git pull --recurse-submodules origin master @@ -217,7 +180,7 @@ fi } buildCloverHFSPlus() { -if [[ -f "${CLOVERROOT}/FileSystems/HFSPlus/X64/HFSPlus.efi" ]]; then +if [[ -f "${CLOVERROOT}"/FileSystems/HFSPlus/X64/HFSPlus.efi ]]; then echo "building Clover with HFSPlus" buildClover HFSPlus else @@ -228,150 +191,213 @@ fi } makeRelease() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi -echo "[BUILD CLOVER RELEASE]" -./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN -./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi + echo "[BUILD CLOVER RELEASE]" + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi } makeReleaseXC() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi + + echo "[BUILD CLOVER RELEASE WITH XCODE]" + local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + if [[ "$xrel" < "14.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 + elif [[ "$xrel" == "14.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 + elif [[ "$xrel" == "15.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 + elif [[ "$xrel" == "16.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi +} + + +buildCCPV() { + cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator + make +} -echo "[BUILD CLOVER RELEASE WITH XCODE]" -local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) -local xrel="XCODE$(( ver>16 ? 16 : ver ))" -./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel -./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +BLC() { +if [[ ! -d "${CLOVERROOT}"/CloverPackage/BootLoaderChooser ]]; then + mkdir -p "${CLOVERROOT}"/CloverPackage/BootLoaderChooser fi +curl -sLq https://github.com/jief666/BootloaderChooser/releases/download/1.4/BootX64.efi > "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi +chmod 775 "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi } buildClover() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi -echo "[BUILD CLOVER]" -if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then - echo "Running custom build script" - "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN -else - local parameter=${1:-none} - if [[ "${parameter}" == HFSPlus ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + echo "[BUILD CLOVER]" + # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) + # This allow the user to run ebuild.sh with own parameters + if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then + echo "Running custom build script" + "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN else - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + local parameter=${1:-none} + if [[ "${parameter}" == HFSPlus ]]; then + #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + else + #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + fi + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi + # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN fi -fi -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi -if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi } buildCloverXC() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi - -echo "[BUILD CLOVER WITH XCODE]" -if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then - echo "Running custom build script" - "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN -else -local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) -local xrel="XCODE$(( ver>16 ? 16 : ver ))" + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $xrel -fi -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi -if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi + echo "[BUILD CLOVER WITH XCODE]" + # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) + # This allow the user to run ebuild.sh with own parameters + if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then + echo "Running custom build script" + "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN + else + local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + if [[ "$xrel" < "14.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 + elif [[ "$xrel" > "16.0" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 + elif [[ "$xrel" > "15.0" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 + elif [[ "$xrel" > "14.0" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 + fi + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi + # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi } buildtestsix() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -echo "[BUILD CLOVERDB]" -./hebuild.sh -t $MYTOOLCHAIN + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + echo "[BUILD CLOVERDB]" + ./hebuild.sh -t $MYTOOLCHAIN } buildtestsev() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -echo "[BUILD CLOVERDB]" -./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + echo "[BUILD CLOVERDB]" + ./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN } + buildCloverTest() { checkTools + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" + export EDK_TOOLS_PATH="${PWD}"/BaseTools set +u source ./edksetup.sh BaseTools set -u @@ -385,13 +411,12 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}/CloverPackage" + cd "${CLOVERROOT}"/CloverPackage + echo "[BUILD PKG]" checkXCODE checkGETTEXT - echo "[BUILD PKG]" - echo "The log will be created in the CloverPackage folder." - rm -f mpkg.log - make pkg | tee mpkg.log +# source ./makepkg + make pkg else echo && echo "can't build pkg on a non Darwin OS!" fi @@ -399,7 +424,7 @@ fi buildUtils() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}/CloverPackage" + cd "${CLOVERROOT}"/CloverPackage echo "[BUILD UTILS]" checkXCODE make utils @@ -411,13 +436,13 @@ fi buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then - if [[ -f "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi" ]]; then - rm -f "${CLOVERROOT}/CloverPackage/sym/.withV2" - mkdir -p "${CLOVERROOT}/CloverPackage/sym" + if [[ -f "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi ]]; then + rm -f "${CLOVERROOT}"/CloverPackage/sym/.withV2 + mkdir -p "${CLOVERROOT}"/CloverPackage/sym if [[ $withClover == withV2 ]]; then - touch "${CLOVERROOT}/CloverPackage/sym/.withV2" + touch "${CLOVERROOT}"/CloverPackage/sym/.withV2 fi - cd "${CLOVERROOT}/CloverApp" + cd "${CLOVERROOT}"/CloverApp echo "[BUILD APP]" checkXCODE make @@ -431,60 +456,185 @@ fi } buildIso() { -cd "${CLOVERROOT}/CloverPackage" -echo "[BUILD ISO]" -make iso + cd "${CLOVERROOT}"/CloverPackage + echo "[BUILD ISO]" + make iso } makeV2() { -export V2=${V2:-"${CLOVERROOT}/CloverPackage/CloverV2"} -if [[ -f "$V2/EFI/CLOVER/CLOVERX64.efi" ]]; then - cd "${CLOVERROOT}/CloverPackage" - echo "" && echo -e "${COL_CYAN}[BUILD CloverV2]" - make zip -else - echo "" && echo -e "${COL_RED}please, Compile Clover first!!" - sleep 3 -fi + #clear + export V2=${V2:-${CLOVERROOT}/CloverPackage/CloverV2} + if [[ -f $V2/EFI/CLOVER/CLOVERX64.efi ]]; then + cd "${CLOVERROOT}"/CloverPackage + echo "" && echo -e $COL_CYAN"[BUILD CloverV2]" + make zip + else + echo "" && echo -e $COL_RED"please, Compile Clover first!!" + Sleep 3 + fi } + checkStatus() { -if [[ -d .git ]]; then - git fetch --recurse-submodules origin - git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt -else - echo "Error: this is not a git repository, can't get info!" -fi + if [[ -d .git ]]; then + git fetch --recurse-submodules origin + git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt + else + echo "Error: this is not a git repository, can't get info!" + fi } showdiff() { -if [[ -d .git ]]; then + if [[ -d .git ]]; then git fetch --recurse-submodules origin git diff > "${DIR_OUT}"/diff_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/diff_${revision}-*.txt -else - echo "Error: this is not a git repository, can't get info!" -fi + else + echo "Error: this is not a git repository, can't get info!" + fi } cleanBaseTools() { -cd "${CLOVERROOT}/BaseTools" +cd "${CLOVERROOT}"/BaseTools make clean } -makeBaseTools() { -cd "${CLOVERROOT}" -make -C BaseTools "BUILD_CC=clang" +## Utilities +buildCPV() { + revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) + if [[ -d "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator ]]; then + rm -Rf "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + fi + mkdir -p "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator + checkXCODE + xcodebuild -project ./CloverConfigPlistValidator.xcodeproj -quiet CONFIGURATION_BUILD_DIR="${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + mv -f "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator_${revision} + rm -r "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/*.dSYM + open "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator +} + +PlistEDPlus() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -qsSLk https://github.com/ic005k/PlistEDPlus/releases/download/1.2.35/PlistEDPlus_Mac.dmg > PlistEDPlus_Mac.dmg + hdiutil attach -quiet -noverify -nobrowse PlistEDPlus_Mac.dmg && cp -Rf /Volumes/bin\:release\:PlistEDPlus/PlistEDPlus.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/bin\:release\:PlistEDPlus + rm -r $HOME/Desktop/ClovUtils/PlistEDPlus_Mac.dmg && open $HOME/Desktop/ClovUtils } +Hackintool() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/headkaze/Hackintool/releases/download/3.8.4/Hackintool.zip -o Hackintool.zip + unzip -q Hackintool.zip && rm -r Hackintool.zip && open $HOME/Desktop/ClovUtils +} + +BitmaskDecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/BitmaskDecode && open $HOME/Desktop/ClovUtils +} + +MaciASL() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/acidanthera/MaciASL/releases/download/1.6.2/MaciASL-1.6.2-RELEASE.dmg > MaciASL-1.6.2-RELEASE.dmg + hdiutil attach -quiet -noverify -nobrowse MaciASL-1.6.2-RELEASE.dmg && cp -Rf /Volumes/MaciASL/MaciASL.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/MaciASL + rm -r $HOME/Desktop/ClovUtils/MaciASL-1.6.2-RELEASE.dmg && open $HOME/Desktop/ClovUtils +} + +dmidecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils/dmidecode + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/acidanthera/dmidecode dmi-decode && xcodebuild -project ./dmi-decode/dmidecode.xcodeproj -quiet + cp -r dmi-decode/dmidecode $HOME/Desktop/ClovUtils/dmidecode && rm -Rf $HOME/Desktop/ClovUtils/dmi-decode && open $HOME/Desktop/ClovUtils +} + +Get-IOReg-Devices() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/LAbyOne/Get-IOReg-Devices + mv -f Get-IOReg-Devices/Get\ IOReg\ Devices $HOME/Desktop/ClovUtils/Get\ IOReg-Devices && chmod a+x $HOME/Desktop/ClovUtils/Get\ IOReg-Devices/*.command + rm -rf Get-IOReg-Devices && open $HOME/Desktop/ClovUtils +} + +NDBrightness () { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/KAMIKAZEUA/NativeDisplayBrightness NDBrightness + xcodebuild -project ./NDBrightness/NativeDisplayBrightness.xcodeproj -quiet -configuration Release clean build ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=$HOME/Desktop/ClovUtils + rm -Rf $HOME/Desktop/ClovUtils/NDBrightness && rm -r $HOME/Desktop/ClovUtils/*.dSYM && open $HOME/Desktop/ClovUtils +} + +SSDTTime() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/SSDTTime && open $HOME/Desktop/ClovUtils +} + +USBMap() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/USBMap + open $HOME/Desktop/ClovUtils +} + +Xiasl() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + #cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg + #hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils + #hdiutil detach -force /Volumes/bin\:release\:Xiasl + #rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils + + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/CloverHackyColor/Xiasl/releases/download/1.1.8/Xiasl.zip > Xiasl.zip + unzip -q Xiasl.zip && rm -r Xiasl.zip && open $HOME/Desktop/ClovUtils +} + +CsrDecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils/CsrDecode + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/CsrDecode && open $HOME/Desktop/ClovUtils +} + +gibMacOS() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/gibMacOS && open $HOME/Desktop/ClovUtils +} + +mountR/W() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/jacklukem/BigSurmountsrw/releases/download/1.0/BigSurmountsrw2.app.zip -o BigSurmountsrw2.app.zip && open $HOME/Desktop/ClovUtils + unzip -q $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip && rm -r $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip $HOME/Desktop/ClovUtils/__MACOSX +} + + testing() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" -echo -e " 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_CYAN} Test Builds${COL_RESET}" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" -echo -e "\n" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e " 🍀 Clover r${revision}$COL_CYAN (SHA: $lsha1)" +echo -e $COL_BLUE" Test Builds" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n\n\n\n\n" PS3=' Please enter your choice: ' @@ -493,9 +643,9 @@ options=( 'test Clover with boot6' 'test build (no autogen, no boot files)' 'back to Cloverbuilds' 'Exit') -select opt in "${options[@]}" -do - case $opt in +select opt in "${options[@]}" + do + case $opt in "test Clover with boot6") buildtestsix break @@ -520,56 +670,155 @@ do echo "invalid option $REPLY" break ;; - esac -done + esac + done testing } +Utilities() { +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e " 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e $COL_CYAN" External Utilities " +echo -e $COL_DARK_PURPLE" All Files will be put on Desktop/ClovUtils" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n" + +PS3=' +Please enter your choice: ' +options=( 'Get CloverConfigPlistValidator ' + 'Get PlistEDPlus ' + 'Get Hackintool ' + 'Get BitmaskDecode ' + 'Get MaciASL ' + 'Get dmidecode ' + 'Get IOReg-Devices ' + 'Get NativeDisplayBrightness ' + 'Get SSDTTime' + 'Get USBMap' + 'Get Xiasl' + 'Get CsrDecode' + 'Get gibMacOS' + 'Get mountR/W' + 'back to Cloverbuilds' + 'Exit') +select opt in "${options[@]}" + do + case $opt in + "Get CloverConfigPlistValidator ") + buildCPV + break + ;; + "Get PlistEDPlus ") + PlistEDPlus + break + ;; + "Get Hackintool ") + Hackintool + break + ;; + "Get BitmaskDecode ") + BitmaskDecode + break + ;; + "Get MaciASL ") + MaciASL + break + ;; + "Get dmidecode ") + dmidecode + break + ;; + "Get IOReg-Devices ") + Get-IOReg-Devices + break + ;; + "Get NativeDisplayBrightness ") + NDBrightness + break + ;; + "Get SSDTTime") + SSDTTime + break + ;; + "Get USBMap") + USBMap + break + ;; + "Get Xiasl") + Xiasl + break + ;; + "Get CsrDecode") + CsrDecode + break + ;; + "Get gibMacOS") + gibMacOS + break + ;; + "Get mountR/W") + mountR/W + break + ;; + "back to Cloverbuilds") + menu + break + ;; + "Exit") + exit + break + ;; + *) + echo "invalid option $REPLY" + break + ;; + esac + done +Utilities +} + Extra() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" -echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE can be done on Cloverbuilds${COL_RESET}" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " +echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} can be done on${COL_CYAN} Cloverbuilds" if [[ -x "$(which python3)" ]]; then - echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" + echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET + echo -e "\n\n\n\n\n\n\n\n\n\n" else - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'back to main menu' - 'make BaseTools' +options=( 'Cloverbuilds' 'test Clover' 'check status' 'show diff' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' + 'Utilities' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "back to main menu") + "Cloverbuilds") menu break ;; - "make BaseTools") - makeBaseTools - break - ;; - "test Clover") + "test Clover") testing break ;; - "check status") + "check status") checkStatus break ;; @@ -578,8 +827,8 @@ do break ;; "open CloverV2 directory") - if [[ -d "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" ]]; then - open "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" + if [[ -d "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER ]]; then + open "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER else echo && echo "Directory not found. Compile Clover first!!" sleep 2 @@ -619,22 +868,23 @@ Extra } menu() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" -echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE${COL_YELLOW} select:${COL_CYAN} build (with XCode)${COL_RESET}" -echo -e "${COL_YELLOW} Depending on your${COL_CYAN} XCODE version${COL_YELLOW} the Toolset will be${COL_CYAN} automatically chosen${COL_RESET}" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " +echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} select:${COL_CYAN} build (with XCode)" +echo -e "${COL_DARK_PURPLE} Depending on your${COL_CYAN} XCODE version${COL_DARK_PURPLE} the Toolset will be${COL_CYAN} automatically chosen" +# echo -e "${COL_DARK_PURPLE} Toolset${COL_CYAN} is automatically chosen${COL_DARK_PURPLE} depending on the${COL_CYAN} XCODE installed version" if [[ -x "$(which python3)" ]]; then - echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" + echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET + echo -e "\n\n\n\n\n" else - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n" fi PS3=' Please enter your choice: ' @@ -660,13 +910,13 @@ do buildClover break ;; - "build all (Default Toolchain)") + "build all (Default Toolchain)") buildClover buildPkg buildIso - makeV2 + makeV2 break - ;; + ;; "make Release (Default Toolchain)") makeRelease buildPkg @@ -694,35 +944,36 @@ do buildCloverXC break ;; - "build all (with XCode)") - buildCloverXC - buildPkg - buildIso - makeV2 - break - ;; - "make Release (with XCode)") - makeReleaseXC - buildPkg - buildIso - makeV2 - break - ;; - "build Clover with HFSPlus") - buildCloverHFSPlus - break - ;; - "Extra Options") - Extra - break - ;; - "make utils") - buildUtils - break - ;; - "Exit") + "build all (with XCode)") + buildCloverXC + BLC + buildPkg + buildIso + makeV2 + break + ;; + "make Release (with XCode)") + makeReleaseXC + buildPkg + buildIso + makeV2 + break + ;; + "build Clover with HFSPlus") + buildCloverHFSPlus + break + ;; + "Extra Options") + Extra + break + ;; + "make utils") + buildUtils + break + ;; + "Exit") exit 0 - ;; + ;; *) echo "invalid option $REPLY" break @@ -733,18 +984,14 @@ menu } # Main -clone_OpenCorePkg +#clone_OpenCorePkg set -e -if [[ "$2" == "ci" ]]; then - makeRelease - buildPkg - buildIso - makeV2 -elif [[ "$2" == "xci" ]]; then - makeReleaseXC - buildPkg - buildIso - makeV2 +if [[ "$2" == ci ]]; then + makeRelease + BLC + buildPkg + buildIso + makeV2 else - menu -fi \ No newline at end of file + menu +fi From c855d96b81300782ae02a01265789cb36d1209cd Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 20:34:58 -0400 Subject: [PATCH 11/15] test --- .github/workflows/main.yml | 2 +- buildme | 217 ++++++++++++++++++------------------- 2 files changed, 107 insertions(+), 112 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bb99aba414..d721e45dc8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -28,7 +28,7 @@ jobs: run: | mkdir -p /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools/download cd /Users/runner/work/CloverBootloader/CloverBootloader/toolchain/tools - git clone https://github.com/com-chris1111/download.git + git clone https://github.com/CloverHackyColor/download.git cd /Users/runner/work/CloverBootloader/CloverBootloader - name: Build Clover Pack diff --git a/buildme b/buildme index de41b51dd6..0ce0bf8324 100755 --- a/buildme +++ b/buildme @@ -19,7 +19,6 @@ COL_CYAN="\x1b[36;01m" COL_WHITE="\x1b[37;01m" COL_BLUE="\x1b[34;01m" COL_RESET="\x1b[39;49;00m" -COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple # ====== Main Window SetUp ====== if [[ "$2" != ci ]]; then osascript < /dev/null fi @@ -155,7 +154,7 @@ fi updateClover() { echo "[UPDATE CLOVER]" cd "${CLOVERROOT}" -#clone_OpenCorePkg +clone_OpenCorePkg if [[ -d .git ]]; then git fetch --all --recurse-submodules git pull --recurse-submodules origin master @@ -320,7 +319,6 @@ buildClover() { buildCloverXC() { checkTools - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. rm -rf "$CLOVERROOT"/Conf mkdir "$CLOVERROOT"/Conf @@ -342,15 +340,15 @@ buildCloverXC() { echo "Running custom build script" "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN else - local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + local xrel="$(defaults read ~/Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" if [[ "$xrel" < "14.*" ]]; then ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 - elif [[ "$xrel" > "16.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 - elif [[ "$xrel" > "15.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 - elif [[ "$xrel" > "14.0" ]]; then + elif [[ "$xrel" == "14.*" ]]; then ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 + elif [[ "$xrel" == "15.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 + elif [[ "$xrel" == "16.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 fi fi # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) @@ -412,27 +410,17 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD PKG]" checkXCODE checkGETTEXT -# source ./makepkg - make pkg + echo "[BUILD PKG]" + echo "The log will be created in the CloverPackage folder." + rm -f mpkg.log + make pkg >mpkg.log else echo && echo "can't build pkg on a non Darwin OS!" fi } -buildUtils() { -if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD UTILS]" - checkXCODE - make utils -else - echo && echo "can't build utils on a non Darwin OS!" -fi -} - buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then @@ -500,6 +488,11 @@ cd "${CLOVERROOT}"/BaseTools make clean } +makeBaseTools() { +cd $HOME/src/CloverBootloader +make -C BaseTools "BUILD_CC=clang" +} + ## Utilities buildCPV() { revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) @@ -595,13 +588,10 @@ Xiasl() { if [[ ! -d $HOME/Desktop/ClovUtils ]]; then mkdir -p $HOME/Desktop/ClovUtils fi - #cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg - #hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils - #hdiutil detach -force /Volumes/bin\:release\:Xiasl - #rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils - - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/CloverHackyColor/Xiasl/releases/download/1.1.8/Xiasl.zip > Xiasl.zip - unzip -q Xiasl.zip && rm -r Xiasl.zip && open $HOME/Desktop/ClovUtils + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg + hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/bin\:release\:Xiasl + rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils } CsrDecode() { @@ -631,8 +621,8 @@ testing() { #clear echo echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_CYAN (SHA: $lsha1)" -echo -e $COL_BLUE" Test Builds" +echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e $COL_CYAN" Test Builds" echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET echo -e "\n\n\n\n\n\n\n\n\n\n\n" @@ -678,9 +668,9 @@ testing Utilities() { echo echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" echo -e $COL_CYAN" External Utilities " -echo -e $COL_DARK_PURPLE" All Files will be put on Desktop/ClovUtils" +echo -e $COL_WHITE" All Files will be put on Desktop/ClovUtils" echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET echo -e "\n\n\n\n\n\n\n" @@ -785,9 +775,9 @@ echo -e $COL_GREEN" ------------------------------------------------------------ if [[ ! -x "$(which python3)" ]]; then echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} can be done on${COL_CYAN} Cloverbuilds" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} can be done on${COL_CYAN} Cloverbuilds" if [[ -x "$(which python3)" ]]; then echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET echo -e "\n\n\n\n\n\n\n\n\n\n" @@ -797,32 +787,33 @@ echo -e "\n\n\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'Cloverbuilds' - 'test Clover' - 'check status' - 'show diff' +options=( 'Cloverbuilds ' + 'test Clover ' + 'check status ' + 'show diff ' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' + 'make BaseTools' 'Utilities' 'Exit') select opt in "${options[@]}" do case $opt in - "Cloverbuilds") + "Cloverbuilds ") menu break ;; - "test Clover") + "test Clover ") testing break ;; - "check status") + "check status ") checkStatus break ;; - "show diff") + "show diff ") showdiff break ;; @@ -851,6 +842,10 @@ do fi break ;; + "make BaseTools") + makeBaseTools + break + ;; "Utilities") Utilities break @@ -874,106 +869,105 @@ echo -e $COL_GREEN" ------------------------------------------------------------ if [[ ! -x "$(which python3)" ]]; then echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} select:${COL_CYAN} build (with XCode)" -echo -e "${COL_DARK_PURPLE} Depending on your${COL_CYAN} XCODE version${COL_DARK_PURPLE} the Toolset will be${COL_CYAN} automatically chosen" -# echo -e "${COL_DARK_PURPLE} Toolset${COL_CYAN} is automatically chosen${COL_DARK_PURPLE} depending on the${COL_CYAN} XCODE installed version" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} select:${COL_CYAN} build (with XCode)" +echo -e "${COL_WHITE} Depending on your${COL_CYAN} XCODE version${COL_WHITE} the Toolset will be${COL_CYAN} automatically chosen" +# echo -e "${COL_WHITE} Toolset${COL_CYAN} is automatically chosen${COL_WHITE} depending on the${COL_CYAN} XCODE installed version" if [[ -x "$(which python3)" ]]; then echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n" + echo -e "\n\n\n\n\n\n\n" else echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n" +echo -e "\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'build Clover (Default Toolchain)' - 'build all (Default Toolchain)' - 'make Release (Default Toolchain)' - 'update Clover' - 'make pkg' - 'make iso' - 'make Clover_V2' +options=( 'build Clover (Default Toolchain) ' + 'build all (Default Toolchain) ' + 'make Release (Default Toolchain) ' + 'update Clover ' + 'make pkg ' + 'make iso ' + 'make Clover_V2' 'build Clover (with XCode)' 'build all (with XCode)' - 'make Release (with XCode)' - 'build Clover with HFSPlus' - 'Extra Options' - 'make utils' + 'make Release (with XCode)' + 'build Clover with HFSPlus' + 'Extra Options' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "build Clover (Default Toolchain)") + "build Clover (Default Toolchain) ") buildClover break ;; - "build all (Default Toolchain)") + "build all (Default Toolchain) ") buildClover + BLC buildPkg buildIso - makeV2 + makeV2 break - ;; - "make Release (Default Toolchain)") + ;; + "make Release (Default Toolchain) ") makeRelease + BLC buildPkg buildIso makeV2 break ;; - "update Clover") + "update Clover ") updateClover break ;; - "make pkg") + "make pkg ") + BLC buildPkg break ;; - "make iso") + "make iso ") buildIso break ;; - "make Clover_V2") + "make Clover_V2") makeV2 break ;; - "build Clover (with XCode)") + "build Clover (with XCode)") buildCloverXC break ;; - "build all (with XCode)") - buildCloverXC - BLC - buildPkg - buildIso - makeV2 - break - ;; - "make Release (with XCode)") - makeReleaseXC - buildPkg - buildIso - makeV2 - break - ;; - "build Clover with HFSPlus") - buildCloverHFSPlus - break - ;; - "Extra Options") - Extra - break - ;; - "make utils") - buildUtils - break - ;; - "Exit") + "build all (with XCode)") + buildCloverXC + BLC + buildPkg + buildIso + makeV2 + break + ;; + "make Release (with XCode)") + makeReleaseXC + BLC + buildPkg + buildIso + makeV2 + break + ;; + "build Clover with HFSPlus") + buildCloverHFSPlus + break + ;; + "Extra Options") + Extra + break + ;; + "Exit") exit 0 - ;; + ;; *) echo "invalid option $REPLY" break @@ -984,10 +978,11 @@ menu } # Main -#clone_OpenCorePkg +clone_OpenCorePkg set -e if [[ "$2" == ci ]]; then makeRelease +# buildCCPV BLC buildPkg buildIso From bf71e7407401976b381e707111a852c0cbec29b1 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 20:43:50 -0400 Subject: [PATCH 12/15] Update buildme --- buildme | 217 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 111 insertions(+), 106 deletions(-) diff --git a/buildme b/buildme index 0ce0bf8324..de41b51dd6 100755 --- a/buildme +++ b/buildme @@ -19,6 +19,7 @@ COL_CYAN="\x1b[36;01m" COL_WHITE="\x1b[37;01m" COL_BLUE="\x1b[34;01m" COL_RESET="\x1b[39;49;00m" +COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple # ====== Main Window SetUp ====== if [[ "$2" != ci ]]; then osascript < /dev/null fi @@ -154,7 +155,7 @@ fi updateClover() { echo "[UPDATE CLOVER]" cd "${CLOVERROOT}" -clone_OpenCorePkg +#clone_OpenCorePkg if [[ -d .git ]]; then git fetch --all --recurse-submodules git pull --recurse-submodules origin master @@ -319,6 +320,7 @@ buildClover() { buildCloverXC() { checkTools + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. rm -rf "$CLOVERROOT"/Conf mkdir "$CLOVERROOT"/Conf @@ -340,15 +342,15 @@ buildCloverXC() { echo "Running custom build script" "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN else - local xrel="$(defaults read ~/Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" if [[ "$xrel" < "14.*" ]]; then ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 - elif [[ "$xrel" == "14.*" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 - elif [[ "$xrel" == "15.*" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 - elif [[ "$xrel" == "16.*" ]]; then + elif [[ "$xrel" > "16.0" ]]; then ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 + elif [[ "$xrel" > "15.0" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 + elif [[ "$xrel" > "14.0" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 fi fi # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) @@ -410,17 +412,27 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then cd "${CLOVERROOT}"/CloverPackage + echo "[BUILD PKG]" checkXCODE checkGETTEXT - echo "[BUILD PKG]" - echo "The log will be created in the CloverPackage folder." - rm -f mpkg.log - make pkg >mpkg.log +# source ./makepkg + make pkg else echo && echo "can't build pkg on a non Darwin OS!" fi } +buildUtils() { +if [[ "$SYSNAME" == Darwin ]]; then + cd "${CLOVERROOT}"/CloverPackage + echo "[BUILD UTILS]" + checkXCODE + make utils +else + echo && echo "can't build utils on a non Darwin OS!" +fi +} + buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then @@ -488,11 +500,6 @@ cd "${CLOVERROOT}"/BaseTools make clean } -makeBaseTools() { -cd $HOME/src/CloverBootloader -make -C BaseTools "BUILD_CC=clang" -} - ## Utilities buildCPV() { revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) @@ -588,10 +595,13 @@ Xiasl() { if [[ ! -d $HOME/Desktop/ClovUtils ]]; then mkdir -p $HOME/Desktop/ClovUtils fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg - hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils - hdiutil detach -force /Volumes/bin\:release\:Xiasl - rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils + #cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg + #hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils + #hdiutil detach -force /Volumes/bin\:release\:Xiasl + #rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils + + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/CloverHackyColor/Xiasl/releases/download/1.1.8/Xiasl.zip > Xiasl.zip + unzip -q Xiasl.zip && rm -r Xiasl.zip && open $HOME/Desktop/ClovUtils } CsrDecode() { @@ -621,8 +631,8 @@ testing() { #clear echo echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" -echo -e $COL_CYAN" Test Builds" +echo -e " 🍀 Clover r${revision}$COL_CYAN (SHA: $lsha1)" +echo -e $COL_BLUE" Test Builds" echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET echo -e "\n\n\n\n\n\n\n\n\n\n\n" @@ -668,9 +678,9 @@ testing Utilities() { echo echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e " 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" echo -e $COL_CYAN" External Utilities " -echo -e $COL_WHITE" All Files will be put on Desktop/ClovUtils" +echo -e $COL_DARK_PURPLE" All Files will be put on Desktop/ClovUtils" echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET echo -e "\n\n\n\n\n\n\n" @@ -775,9 +785,9 @@ echo -e $COL_GREEN" ------------------------------------------------------------ if [[ ! -x "$(which python3)" ]]; then echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" -echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " -echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} can be done on${COL_CYAN} Cloverbuilds" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " +echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} can be done on${COL_CYAN} Cloverbuilds" if [[ -x "$(which python3)" ]]; then echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET echo -e "\n\n\n\n\n\n\n\n\n\n" @@ -787,33 +797,32 @@ echo -e "\n\n\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'Cloverbuilds ' - 'test Clover ' - 'check status ' - 'show diff ' +options=( 'Cloverbuilds' + 'test Clover' + 'check status' + 'show diff' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' - 'make BaseTools' 'Utilities' 'Exit') select opt in "${options[@]}" do case $opt in - "Cloverbuilds ") + "Cloverbuilds") menu break ;; - "test Clover ") + "test Clover") testing break ;; - "check status ") + "check status") checkStatus break ;; - "show diff ") + "show diff") showdiff break ;; @@ -842,10 +851,6 @@ do fi break ;; - "make BaseTools") - makeBaseTools - break - ;; "Utilities") Utilities break @@ -869,105 +874,106 @@ echo -e $COL_GREEN" ------------------------------------------------------------ if [[ ! -x "$(which python3)" ]]; then echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" -echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " -echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} select:${COL_CYAN} build (with XCode)" -echo -e "${COL_WHITE} Depending on your${COL_CYAN} XCODE version${COL_WHITE} the Toolset will be${COL_CYAN} automatically chosen" -# echo -e "${COL_WHITE} Toolset${COL_CYAN} is automatically chosen${COL_WHITE} depending on the${COL_CYAN} XCODE installed version" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" +echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " +echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} select:${COL_CYAN} build (with XCode)" +echo -e "${COL_DARK_PURPLE} Depending on your${COL_CYAN} XCODE version${COL_DARK_PURPLE} the Toolset will be${COL_CYAN} automatically chosen" +# echo -e "${COL_DARK_PURPLE} Toolset${COL_CYAN} is automatically chosen${COL_DARK_PURPLE} depending on the${COL_CYAN} XCODE installed version" if [[ -x "$(which python3)" ]]; then echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n\n\n" + echo -e "\n\n\n\n\n" else echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n" +echo -e "\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'build Clover (Default Toolchain) ' - 'build all (Default Toolchain) ' - 'make Release (Default Toolchain) ' - 'update Clover ' - 'make pkg ' - 'make iso ' - 'make Clover_V2' +options=( 'build Clover (Default Toolchain)' + 'build all (Default Toolchain)' + 'make Release (Default Toolchain)' + 'update Clover' + 'make pkg' + 'make iso' + 'make Clover_V2' 'build Clover (with XCode)' 'build all (with XCode)' - 'make Release (with XCode)' - 'build Clover with HFSPlus' - 'Extra Options' + 'make Release (with XCode)' + 'build Clover with HFSPlus' + 'Extra Options' + 'make utils' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "build Clover (Default Toolchain) ") + "build Clover (Default Toolchain)") buildClover break ;; - "build all (Default Toolchain) ") + "build all (Default Toolchain)") buildClover - BLC buildPkg buildIso - makeV2 + makeV2 break - ;; - "make Release (Default Toolchain) ") + ;; + "make Release (Default Toolchain)") makeRelease - BLC buildPkg buildIso makeV2 break ;; - "update Clover ") + "update Clover") updateClover break ;; - "make pkg ") - BLC + "make pkg") buildPkg break ;; - "make iso ") + "make iso") buildIso break ;; - "make Clover_V2") + "make Clover_V2") makeV2 break ;; - "build Clover (with XCode)") + "build Clover (with XCode)") buildCloverXC break ;; - "build all (with XCode)") - buildCloverXC - BLC - buildPkg - buildIso - makeV2 - break - ;; - "make Release (with XCode)") - makeReleaseXC - BLC - buildPkg - buildIso - makeV2 - break - ;; - "build Clover with HFSPlus") - buildCloverHFSPlus - break - ;; - "Extra Options") - Extra - break - ;; - "Exit") + "build all (with XCode)") + buildCloverXC + BLC + buildPkg + buildIso + makeV2 + break + ;; + "make Release (with XCode)") + makeReleaseXC + buildPkg + buildIso + makeV2 + break + ;; + "build Clover with HFSPlus") + buildCloverHFSPlus + break + ;; + "Extra Options") + Extra + break + ;; + "make utils") + buildUtils + break + ;; + "Exit") exit 0 - ;; + ;; *) echo "invalid option $REPLY" break @@ -978,11 +984,10 @@ menu } # Main -clone_OpenCorePkg +#clone_OpenCorePkg set -e if [[ "$2" == ci ]]; then makeRelease -# buildCCPV BLC buildPkg buildIso From e74eed01a2b5f816b8e5c33a0318675697ba875d Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 21:11:45 -0400 Subject: [PATCH 13/15] Update buildme --- buildme | 903 ++++++++++++++++++++------------------------------------ 1 file changed, 328 insertions(+), 575 deletions(-) diff --git a/buildme b/buildme index de41b51dd6..438fcb17be 100755 --- a/buildme +++ b/buildme @@ -2,42 +2,81 @@ # created by vector sigma on July 15 2019 # modified by LAbyOne on My 2021 +# Remastered by YBronst in Aug 2025. # github version -# Linux users should be able to use this wrapper, although the following are needed: -# (Ubuntu alike) -# sudo apt-get install build-essential uuid-dev iasl git gcc-9 nasm python3-distutils +export TERM=xterm-256color +export LC_ALL=C.UTF-8 + +# Defining the base directory +BASE_DIR="$(dirname "$0")" + +# $1 argument overrides MYTOOLCHAIN variable (e.g., GCC53) +MYTOOLCHAIN="${1:-GCC151}" # Default to GCC151 if no argument provided -# $1 argument override MYTOOLCHAIN variable, in case you want GCC53 for example # ====== COLORS ====== -COL_BLACK="\x1b[40;01m" -COL_RED="\x1b[31;01m" -COL_GREEN="\x1b[32;01m" -COL_YELLOW="\x1b[33;01m" -COL_MAGENTA="\x1b[35;01m" -COL_CYAN="\x1b[36;01m" -COL_WHITE="\x1b[37;01m" -COL_BLUE="\x1b[34;01m" -COL_RESET="\x1b[39;49;00m" +# Основные цвета +COL_RED=$(tput setaf 1) # Red +COL_GREEN=$(tput setaf 2) # Green +COL_YELLOW=$(tput setaf 3) # Yellow +COL_BLUE=$(tput setaf 4) # Blue +COL_PURPLE=$(tput setaf 5) # Purple +COL_CYAN=$(tput setaf 6) # Cyan +COL_WHITE=$(tput setaf 7) # White + +# Light shades +COL_LIGHT_RED=$(tput setaf 9) # Light Red +COL_LIGHT_GREEN=$(tput setaf 10) # Light Green +COL_LIGHT_YELLOW=$(tput setaf 229) # Light Yellow (замена для setaf 11) +COL_LIGHT_BLUE=$(tput setaf 153) # Light Blue (замена для setaf 12) +COL_LIGHT_PURPLE=$(tput setaf 183) # Light Purple (замена для setaf 13) +COL_LIGHT_CYAN=$(tput setaf 14) # Light Cyan + +# Dark shades +COL_DARK_RED=$(tput setaf 124) # Dark Red +COL_DARK_GREEN=$(tput setaf 22) # Dark Green +COL_DARK_YELLOW=$(tput setaf 94) # Dark Yellow +COL_DARK_BLUE=$(tput setaf 18) # Dark Blue COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple +COL_DARK_CYAN=$(tput setaf 30) # Dark Cyan + +# Bold options +COL_RED_BOLD=$(tput bold; tput setaf 1) # Bold Red +COL_GREEN_BOLD=$(tput bold; tput setaf 2) # Bold Green +COL_YELLOW_BOLD=$(tput bold; tput setaf 3) # Bold Yellow +COL_BLUE_BOLD=$(tput bold; tput setaf 4) # Bold Blue +COL_PURPLE_BOLD=$(tput bold; tput setaf 5) # Bold Purple +COL_CYAN_BOLD=$(tput bold; tput setaf 6) # Bold Cyan +COL_WHITE_BOLD=$(tput bold; tput setaf 7) # Bold White + +# Italic variants +COL_RED_ITALIC=$(tput sitm; tput setaf 1) # Italic Red +COL_GREEN_ITALIC=$(tput sitm; tput setaf 2) # Italic Green +COL_YELLOW_ITALIC=$(tput sitm; tput setaf 3) # Italic Yellow +COL_BLUE_ITALIC=$(tput sitm; tput setaf 4) # Italic Blue +COL_PURPLE_ITALIC=$(tput sitm; tput setaf 5) # Italic Purple +COL_CYAN_ITALIC=$(tput sitm; tput setaf 6) # Italic Cyan +COL_WHITE_ITALIC=$(tput sitm; tput setaf 7) # Italic White + +# Set background color +BG_BLUE=$(tput setab 4) +# Reset all attributes +COL_RESET=$(tput sgr0) + # ====== Main Window SetUp ====== if [[ "$2" != ci ]]; then osascript < /dev/null -fi +fi } updateClover() { echo "[UPDATE CLOVER]" cd "${CLOVERROOT}" -#clone_OpenCorePkg +clone_OpenCorePkg if [[ -d .git ]]; then git fetch --all --recurse-submodules git pull --recurse-submodules origin master @@ -180,7 +217,7 @@ fi } buildCloverHFSPlus() { -if [[ -f "${CLOVERROOT}"/FileSystems/HFSPlus/X64/HFSPlus.efi ]]; then +if [[ -f "${CLOVERROOT}/FileSystems/HFSPlus/X64/HFSPlus.efi" ]]; then echo "building Clover with HFSPlus" buildClover HFSPlus else @@ -191,213 +228,150 @@ fi } makeRelease() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER RELEASE]" - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi +echo "[BUILD CLOVER RELEASE]" +./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN +./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } makeReleaseXC() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi - - echo "[BUILD CLOVER RELEASE WITH XCODE]" - local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" - if [[ "$xrel" < "14.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 - elif [[ "$xrel" == "14.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 - elif [[ "$xrel" == "15.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 - elif [[ "$xrel" == "16.*" ]]; then - ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi -} - - -buildCCPV() { - cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator - make -} +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi -BLC() { -if [[ ! -d "${CLOVERROOT}"/CloverPackage/BootLoaderChooser ]]; then - mkdir -p "${CLOVERROOT}"/CloverPackage/BootLoaderChooser +echo "[BUILD CLOVER RELEASE WITH XCODE]" +local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) +local xrel="XCODE$(( ver>16 ? 16 : ver ))" +./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel +./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN fi -curl -sLq https://github.com/jief666/BootloaderChooser/releases/download/1.4/BootX64.efi > "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi -chmod 775 "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi } buildClover() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER]" - # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) - # This allow the user to run ebuild.sh with own parameters - if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then - echo "Running custom build script" - "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN +echo "[BUILD CLOVER]" +if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then + echo "Running custom build script" + "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN +else + local parameter=${1:-none} + if [[ "${parameter}" == HFSPlus ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN else - local parameter=${1:-none} - if [[ "${parameter}" == HFSPlus ]]; then - #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN - else - #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN - fi - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi - # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN fi +fi +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi +if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } buildCloverXC() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" - fi +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}/BaseTools" + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" +fi - echo "[BUILD CLOVER WITH XCODE]" - # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) - # This allow the user to run ebuild.sh with own parameters - if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then - echo "Running custom build script" - "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN - else - local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" - if [[ "$xrel" < "14.*" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 - elif [[ "$xrel" > "16.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 - elif [[ "$xrel" > "15.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 - elif [[ "$xrel" > "14.0" ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 - fi - fi - # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then - chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh - echo "Running Clover postbuild script" - "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi - # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) - if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN - fi +echo "[BUILD CLOVER WITH XCODE]" +if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then + echo "Running custom build script" + "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN +else +local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) +local xrel="XCODE$(( ver>16 ? 16 : ver ))" + + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $xrel +fi +if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then + chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" + echo "Running Clover postbuild script" + "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi +if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +fi } buildtestsix() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - echo "[BUILD CLOVERDB]" - ./hebuild.sh -t $MYTOOLCHAIN +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +echo "[BUILD CLOVERDB]" +./hebuild.sh -t $MYTOOLCHAIN } buildtestsev() { - checkTools - - # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. - rm -rf "$CLOVERROOT"/Conf - mkdir "$CLOVERROOT"/Conf - - cd "${CLOVERROOT}" - echo "[BUILD CLOVERDB]" - ./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN +checkTools +rm -rf "$CLOVERROOT/Conf" +mkdir "$CLOVERROOT/Conf" +cd "${CLOVERROOT}" +echo "[BUILD CLOVERDB]" +./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN } - buildCloverTest() { checkTools - cd "${CLOVERROOT}" - if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}"/BaseTools + export EDK_TOOLS_PATH="${PWD}/BaseTools" set +u source ./edksetup.sh BaseTools set -u @@ -411,12 +385,13 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD PKG]" + cd "${CLOVERROOT}/CloverPackage" checkXCODE checkGETTEXT -# source ./makepkg - make pkg + echo "[BUILD PKG]" + echo "The log will be created in the CloverPackage folder." + rm -f mpkg.log + make pkg | tee mpkg.log else echo && echo "can't build pkg on a non Darwin OS!" fi @@ -424,7 +399,7 @@ fi buildUtils() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}"/CloverPackage + cd "${CLOVERROOT}/CloverPackage" echo "[BUILD UTILS]" checkXCODE make utils @@ -436,13 +411,13 @@ fi buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then - if [[ -f "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi ]]; then - rm -f "${CLOVERROOT}"/CloverPackage/sym/.withV2 - mkdir -p "${CLOVERROOT}"/CloverPackage/sym + if [[ -f "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi" ]]; then + rm -f "${CLOVERROOT}/CloverPackage/sym/.withV2" + mkdir -p "${CLOVERROOT}/CloverPackage/sym" if [[ $withClover == withV2 ]]; then - touch "${CLOVERROOT}"/CloverPackage/sym/.withV2 + touch "${CLOVERROOT}/CloverPackage/sym/.withV2" fi - cd "${CLOVERROOT}"/CloverApp + cd "${CLOVERROOT}/CloverApp" echo "[BUILD APP]" checkXCODE make @@ -456,185 +431,60 @@ fi } buildIso() { - cd "${CLOVERROOT}"/CloverPackage - echo "[BUILD ISO]" - make iso +cd "${CLOVERROOT}/CloverPackage" +echo "[BUILD ISO]" +make iso } makeV2() { - #clear - export V2=${V2:-${CLOVERROOT}/CloverPackage/CloverV2} - if [[ -f $V2/EFI/CLOVER/CLOVERX64.efi ]]; then - cd "${CLOVERROOT}"/CloverPackage - echo "" && echo -e $COL_CYAN"[BUILD CloverV2]" - make zip - else - echo "" && echo -e $COL_RED"please, Compile Clover first!!" - Sleep 3 - fi +export V2=${V2:-"${CLOVERROOT}/CloverPackage/CloverV2"} +if [[ -f "$V2/EFI/CLOVER/CLOVERX64.efi" ]]; then + cd "${CLOVERROOT}/CloverPackage" + echo "" && echo -e "${COL_CYAN}[BUILD CloverV2]" + make zip +else + echo "" && echo -e "${COL_RED}please, Compile Clover first!!" + sleep 3 +fi } - checkStatus() { - if [[ -d .git ]]; then - git fetch --recurse-submodules origin - git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt - else - echo "Error: this is not a git repository, can't get info!" - fi +if [[ -d .git ]]; then + git fetch --recurse-submodules origin + git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt +else + echo "Error: this is not a git repository, can't get info!" +fi } showdiff() { - if [[ -d .git ]]; then +if [[ -d .git ]]; then git fetch --recurse-submodules origin git diff > "${DIR_OUT}"/diff_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/diff_${revision}-*.txt - else - echo "Error: this is not a git repository, can't get info!" - fi +else + echo "Error: this is not a git repository, can't get info!" +fi } cleanBaseTools() { -cd "${CLOVERROOT}"/BaseTools +cd "${CLOVERROOT}/BaseTools" make clean } -## Utilities -buildCPV() { - revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) - if [[ -d "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator ]]; then - rm -Rf "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - fi - mkdir -p "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator - checkXCODE - xcodebuild -project ./CloverConfigPlistValidator.xcodeproj -quiet CONFIGURATION_BUILD_DIR="${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator - mv -f "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator_${revision} - rm -r "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/*.dSYM - open "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator -} - -PlistEDPlus() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -qsSLk https://github.com/ic005k/PlistEDPlus/releases/download/1.2.35/PlistEDPlus_Mac.dmg > PlistEDPlus_Mac.dmg - hdiutil attach -quiet -noverify -nobrowse PlistEDPlus_Mac.dmg && cp -Rf /Volumes/bin\:release\:PlistEDPlus/PlistEDPlus.app $HOME/Desktop/ClovUtils - hdiutil detach -force /Volumes/bin\:release\:PlistEDPlus - rm -r $HOME/Desktop/ClovUtils/PlistEDPlus_Mac.dmg && open $HOME/Desktop/ClovUtils -} - -Hackintool() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/headkaze/Hackintool/releases/download/3.8.4/Hackintool.zip -o Hackintool.zip - unzip -q Hackintool.zip && rm -r Hackintool.zip && open $HOME/Desktop/ClovUtils -} - -BitmaskDecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/BitmaskDecode && open $HOME/Desktop/ClovUtils -} - -MaciASL() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/acidanthera/MaciASL/releases/download/1.6.2/MaciASL-1.6.2-RELEASE.dmg > MaciASL-1.6.2-RELEASE.dmg - hdiutil attach -quiet -noverify -nobrowse MaciASL-1.6.2-RELEASE.dmg && cp -Rf /Volumes/MaciASL/MaciASL.app $HOME/Desktop/ClovUtils - hdiutil detach -force /Volumes/MaciASL - rm -r $HOME/Desktop/ClovUtils/MaciASL-1.6.2-RELEASE.dmg && open $HOME/Desktop/ClovUtils -} - -dmidecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils/dmidecode - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/acidanthera/dmidecode dmi-decode && xcodebuild -project ./dmi-decode/dmidecode.xcodeproj -quiet - cp -r dmi-decode/dmidecode $HOME/Desktop/ClovUtils/dmidecode && rm -Rf $HOME/Desktop/ClovUtils/dmi-decode && open $HOME/Desktop/ClovUtils -} - -Get-IOReg-Devices() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/LAbyOne/Get-IOReg-Devices - mv -f Get-IOReg-Devices/Get\ IOReg\ Devices $HOME/Desktop/ClovUtils/Get\ IOReg-Devices && chmod a+x $HOME/Desktop/ClovUtils/Get\ IOReg-Devices/*.command - rm -rf Get-IOReg-Devices && open $HOME/Desktop/ClovUtils -} - -NDBrightness () { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/KAMIKAZEUA/NativeDisplayBrightness NDBrightness - xcodebuild -project ./NDBrightness/NativeDisplayBrightness.xcodeproj -quiet -configuration Release clean build ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=$HOME/Desktop/ClovUtils - rm -Rf $HOME/Desktop/ClovUtils/NDBrightness && rm -r $HOME/Desktop/ClovUtils/*.dSYM && open $HOME/Desktop/ClovUtils -} - -SSDTTime() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/SSDTTime && open $HOME/Desktop/ClovUtils -} - -USBMap() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/USBMap - open $HOME/Desktop/ClovUtils -} - -Xiasl() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - #cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg - #hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils - #hdiutil detach -force /Volumes/bin\:release\:Xiasl - #rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils - - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/CloverHackyColor/Xiasl/releases/download/1.1.8/Xiasl.zip > Xiasl.zip - unzip -q Xiasl.zip && rm -r Xiasl.zip && open $HOME/Desktop/ClovUtils -} - -CsrDecode() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils/CsrDecode - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/CsrDecode && open $HOME/Desktop/ClovUtils -} - -gibMacOS() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/gibMacOS && open $HOME/Desktop/ClovUtils -} - -mountR/W() { - if [[ ! -d $HOME/Desktop/ClovUtils ]]; then - mkdir -p $HOME/Desktop/ClovUtils - fi - cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/jacklukem/BigSurmountsrw/releases/download/1.0/BigSurmountsrw2.app.zip -o BigSurmountsrw2.app.zip && open $HOME/Desktop/ClovUtils - unzip -q $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip && rm -r $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip $HOME/Desktop/ClovUtils/__MACOSX +makeBaseTools() { +cd "${CLOVERROOT}" +make -C BaseTools "BUILD_CC=clang" } - testing() { -#clear -echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_CYAN (SHA: $lsha1)" -echo -e $COL_BLUE" Test Builds" -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n\n\n\n\n" +echo -e "\n" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" +echo -e " 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" +echo -e "${COL_CYAN} Test Builds${COL_RESET}" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" +echo -e "\n" PS3=' Please enter your choice: ' @@ -643,9 +493,9 @@ options=( 'test Clover with boot6' 'test build (no autogen, no boot files)' 'back to Cloverbuilds' 'Exit') -select opt in "${options[@]}" - do - case $opt in +select opt in "${options[@]}" +do + case $opt in "test Clover with boot6") buildtestsix break @@ -670,155 +520,56 @@ select opt in "${options[@]}" echo "invalid option $REPLY" break ;; - esac - done + esac +done testing } -Utilities() { -echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" -echo -e " 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e $COL_CYAN" External Utilities " -echo -e $COL_DARK_PURPLE" All Files will be put on Desktop/ClovUtils" -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n" - -PS3=' -Please enter your choice: ' -options=( 'Get CloverConfigPlistValidator ' - 'Get PlistEDPlus ' - 'Get Hackintool ' - 'Get BitmaskDecode ' - 'Get MaciASL ' - 'Get dmidecode ' - 'Get IOReg-Devices ' - 'Get NativeDisplayBrightness ' - 'Get SSDTTime' - 'Get USBMap' - 'Get Xiasl' - 'Get CsrDecode' - 'Get gibMacOS' - 'Get mountR/W' - 'back to Cloverbuilds' - 'Exit') -select opt in "${options[@]}" - do - case $opt in - "Get CloverConfigPlistValidator ") - buildCPV - break - ;; - "Get PlistEDPlus ") - PlistEDPlus - break - ;; - "Get Hackintool ") - Hackintool - break - ;; - "Get BitmaskDecode ") - BitmaskDecode - break - ;; - "Get MaciASL ") - MaciASL - break - ;; - "Get dmidecode ") - dmidecode - break - ;; - "Get IOReg-Devices ") - Get-IOReg-Devices - break - ;; - "Get NativeDisplayBrightness ") - NDBrightness - break - ;; - "Get SSDTTime") - SSDTTime - break - ;; - "Get USBMap") - USBMap - break - ;; - "Get Xiasl") - Xiasl - break - ;; - "Get CsrDecode") - CsrDecode - break - ;; - "Get gibMacOS") - gibMacOS - break - ;; - "Get mountR/W") - mountR/W - break - ;; - "back to Cloverbuilds") - menu - break - ;; - "Exit") - exit - break - ;; - *) - echo "invalid option $REPLY" - break - ;; - esac - done -Utilities -} - Extra() { -#clear -echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e "\n" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} can be done on${COL_CYAN} Cloverbuilds" +echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" +echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" +echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE can be done on Cloverbuilds${COL_RESET}" if [[ -x "$(which python3)" ]]; then - echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n\n\n\n\n\n" + echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n" else -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n" fi PS3=' Please enter your choice: ' -options=( 'Cloverbuilds' +options=( 'back to main menu' + 'make BaseTools' 'test Clover' 'check status' 'show diff' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' - 'Utilities' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "Cloverbuilds") + "back to main menu") menu break ;; - "test Clover") + "make BaseTools") + makeBaseTools + break + ;; + "test Clover") testing break ;; - "check status") + "check status") checkStatus break ;; @@ -827,8 +578,8 @@ do break ;; "open CloverV2 directory") - if [[ -d "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER ]]; then - open "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER + if [[ -d "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" ]]; then + open "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" else echo && echo "Directory not found. Compile Clover first!!" sleep 2 @@ -868,23 +619,22 @@ Extra } menu() { -#clear -echo -echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e "\n" +echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_DARK_PURPLE (SHA: $lsha1)" -echo -e "$COL_DARK_PURPLE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_DARK_PURPLE " -echo -e "${COL_DARK_PURPLE} Switch to${COL_CYAN} XCODE${COL_DARK_PURPLE} select:${COL_CYAN} build (with XCode)" -echo -e "${COL_DARK_PURPLE} Depending on your${COL_CYAN} XCODE version${COL_DARK_PURPLE} the Toolset will be${COL_CYAN} automatically chosen" -# echo -e "${COL_DARK_PURPLE} Toolset${COL_CYAN} is automatically chosen${COL_DARK_PURPLE} depending on the${COL_CYAN} XCODE installed version" +echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" +echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" +echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE${COL_YELLOW} select:${COL_CYAN} build (with XCode)${COL_RESET}" +echo -e "${COL_YELLOW} Depending on your${COL_CYAN} XCODE version${COL_YELLOW} the Toolset will be${COL_CYAN} automatically chosen${COL_RESET}" if [[ -x "$(which python3)" ]]; then - echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET - echo -e "\n\n\n\n\n" + echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n" else -echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET -echo -e "\n\n\n\n\n" + echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" + echo -e "\n" fi PS3=' Please enter your choice: ' @@ -910,13 +660,13 @@ do buildClover break ;; - "build all (Default Toolchain)") + "build all (Default Toolchain)") buildClover buildPkg buildIso - makeV2 + makeV2 break - ;; + ;; "make Release (Default Toolchain)") makeRelease buildPkg @@ -944,36 +694,35 @@ do buildCloverXC break ;; - "build all (with XCode)") - buildCloverXC - BLC - buildPkg - buildIso - makeV2 - break - ;; - "make Release (with XCode)") - makeReleaseXC - buildPkg - buildIso - makeV2 - break - ;; - "build Clover with HFSPlus") - buildCloverHFSPlus - break - ;; - "Extra Options") - Extra - break - ;; - "make utils") - buildUtils - break - ;; - "Exit") + "build all (with XCode)") + buildCloverXC + buildPkg + buildIso + makeV2 + break + ;; + "make Release (with XCode)") + makeReleaseXC + buildPkg + buildIso + makeV2 + break + ;; + "build Clover with HFSPlus") + buildCloverHFSPlus + break + ;; + "Extra Options") + Extra + break + ;; + "make utils") + buildUtils + break + ;; + "Exit") exit 0 - ;; + ;; *) echo "invalid option $REPLY" break @@ -984,14 +733,18 @@ menu } # Main -#clone_OpenCorePkg +clone_OpenCorePkg set -e -if [[ "$2" == ci ]]; then - makeRelease - BLC - buildPkg - buildIso - makeV2 +if [[ "$2" == "ci" ]]; then + makeRelease + buildPkg + buildIso + makeV2 +elif [[ "$2" == "xci" ]]; then + makeReleaseXC + buildPkg + buildIso + makeV2 else - menu -fi + menu +fi \ No newline at end of file From 5965e1997ba050cd3a333ae476148ff6007a4edb Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 21:42:00 -0400 Subject: [PATCH 14/15] restore buildme latest working version --- buildme | 904 +++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 573 insertions(+), 331 deletions(-) diff --git a/buildme b/buildme index 438fcb17be..0ce0bf8324 100755 --- a/buildme +++ b/buildme @@ -2,80 +2,40 @@ # created by vector sigma on July 15 2019 # modified by LAbyOne on My 2021 -# Remastered by YBronst in Aug 2025. # github version -export TERM=xterm-256color -export LC_ALL=C.UTF-8 - -# Defining the base directory -BASE_DIR="$(dirname "$0")" - -# $1 argument overrides MYTOOLCHAIN variable (e.g., GCC53) -MYTOOLCHAIN="${1:-GCC151}" # Default to GCC151 if no argument provided +# Linux users should be able to use this wrapper, although the following are needed: +# (Ubuntu alike) +# sudo apt-get install build-essential uuid-dev iasl git gcc-9 nasm python3-distutils +# $1 argument override MYTOOLCHAIN variable, in case you want GCC53 for example # ====== COLORS ====== -# Основные цвета -COL_RED=$(tput setaf 1) # Red -COL_GREEN=$(tput setaf 2) # Green -COL_YELLOW=$(tput setaf 3) # Yellow -COL_BLUE=$(tput setaf 4) # Blue -COL_PURPLE=$(tput setaf 5) # Purple -COL_CYAN=$(tput setaf 6) # Cyan -COL_WHITE=$(tput setaf 7) # White - -# Light shades -COL_LIGHT_RED=$(tput setaf 9) # Light Red -COL_LIGHT_GREEN=$(tput setaf 10) # Light Green -COL_LIGHT_YELLOW=$(tput setaf 229) # Light Yellow (замена для setaf 11) -COL_LIGHT_BLUE=$(tput setaf 153) # Light Blue (замена для setaf 12) -COL_LIGHT_PURPLE=$(tput setaf 183) # Light Purple (замена для setaf 13) -COL_LIGHT_CYAN=$(tput setaf 14) # Light Cyan - -# Dark shades -COL_DARK_RED=$(tput setaf 124) # Dark Red -COL_DARK_GREEN=$(tput setaf 22) # Dark Green -COL_DARK_YELLOW=$(tput setaf 94) # Dark Yellow -COL_DARK_BLUE=$(tput setaf 18) # Dark Blue -COL_DARK_PURPLE=$(tput setaf 54) # Dark Purple -COL_DARK_CYAN=$(tput setaf 30) # Dark Cyan - -# Bold options -COL_RED_BOLD=$(tput bold; tput setaf 1) # Bold Red -COL_GREEN_BOLD=$(tput bold; tput setaf 2) # Bold Green -COL_YELLOW_BOLD=$(tput bold; tput setaf 3) # Bold Yellow -COL_BLUE_BOLD=$(tput bold; tput setaf 4) # Bold Blue -COL_PURPLE_BOLD=$(tput bold; tput setaf 5) # Bold Purple -COL_CYAN_BOLD=$(tput bold; tput setaf 6) # Bold Cyan -COL_WHITE_BOLD=$(tput bold; tput setaf 7) # Bold White - -# Italic variants -COL_RED_ITALIC=$(tput sitm; tput setaf 1) # Italic Red -COL_GREEN_ITALIC=$(tput sitm; tput setaf 2) # Italic Green -COL_YELLOW_ITALIC=$(tput sitm; tput setaf 3) # Italic Yellow -COL_BLUE_ITALIC=$(tput sitm; tput setaf 4) # Italic Blue -COL_PURPLE_ITALIC=$(tput sitm; tput setaf 5) # Italic Purple -COL_CYAN_ITALIC=$(tput sitm; tput setaf 6) # Italic Cyan -COL_WHITE_ITALIC=$(tput sitm; tput setaf 7) # Italic White - -# Set background color -BG_BLUE=$(tput setab 4) -# Reset all attributes -COL_RESET=$(tput sgr0) - +COL_BLACK="\x1b[40;01m" +COL_RED="\x1b[31;01m" +COL_GREEN="\x1b[32;01m" +COL_YELLOW="\x1b[33;01m" +COL_MAGENTA="\x1b[35;01m" +COL_CYAN="\x1b[36;01m" +COL_WHITE="\x1b[37;01m" +COL_BLUE="\x1b[34;01m" +COL_RESET="\x1b[39;49;00m" # ====== Main Window SetUp ====== if [[ "$2" != ci ]]; then osascript < /dev/null -fi +fi } updateClover() { @@ -217,7 +179,7 @@ fi } buildCloverHFSPlus() { -if [[ -f "${CLOVERROOT}/FileSystems/HFSPlus/X64/HFSPlus.efi" ]]; then +if [[ -f "${CLOVERROOT}"/FileSystems/HFSPlus/X64/HFSPlus.efi ]]; then echo "building Clover with HFSPlus" buildClover HFSPlus else @@ -228,150 +190,212 @@ fi } makeRelease() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi -echo "[BUILD CLOVER RELEASE]" -./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN -./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi + echo "[BUILD CLOVER RELEASE]" + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi } makeReleaseXC() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi + + echo "[BUILD CLOVER RELEASE WITH XCODE]" + local xrel="$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + if [[ "$xrel" < "14.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE8 + elif [[ "$xrel" == "14.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE14 + elif [[ "$xrel" == "15.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE15 + elif [[ "$xrel" == "16.*" ]]; then + ./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D -t XCODE16 + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi +} + -echo "[BUILD CLOVER RELEASE WITH XCODE]" -local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) -local xrel="XCODE$(( ver>16 ? 16 : ver ))" -./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel -./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -t $xrel -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN +buildCCPV() { + cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator + make +} + +BLC() { +if [[ ! -d "${CLOVERROOT}"/CloverPackage/BootLoaderChooser ]]; then + mkdir -p "${CLOVERROOT}"/CloverPackage/BootLoaderChooser fi +curl -sLq https://github.com/jief666/BootloaderChooser/releases/download/1.4/BootX64.efi > "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi +chmod 775 "${CLOVERROOT}"/CloverPackage/BootLoaderChooser/BootX64.efi } buildClover() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi -echo "[BUILD CLOVER]" -if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then - echo "Running custom build script" - "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN -else - local parameter=${1:-none} - if [[ "${parameter}" == HFSPlus ]]; then - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + echo "[BUILD CLOVER]" + # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) + # This allow the user to run ebuild.sh with own parameters + if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then + echo "Running custom build script" + "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN else - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + local parameter=${1:-none} + if [[ "${parameter}" == HFSPlus ]]; then + #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $MYTOOLCHAIN + else + #./ebuild.sh -fr -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D LESS_DEBUG -t $MYTOOLCHAIN + fi + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi + # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN fi -fi -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi -if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi } buildCloverXC() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" - set +u - source ./edksetup.sh BaseTools - set -u - cd "$CLOVERROOT" - WORKSPACE="${PWD}" -fi - -echo "[BUILD CLOVER WITH XCODE]" -if [[ -x "${DIR_TOOLS}/Scripts/build.sh" ]]; then - echo "Running custom build script" - "${DIR_TOOLS}/Scripts/build.sh" "${CLOVERROOT}" $MYTOOLCHAIN -else -local ver=$(defaults read /Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString | cut -d. -f1) -local xrel="XCODE$(( ver>16 ? 16 : ver ))" + checkTools + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then + export EDK_TOOLS_PATH="${PWD}"/BaseTools + set +u + source ./edksetup.sh BaseTools + set -u + cd "$CLOVERROOT" + WORKSPACE="${PWD}" + fi - ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t $xrel -fi -if [[ -x "${DIR_TOOLS}/CloverScripts/postbuild.sh" ]]; then - chmod +x "${DIR_TOOLS}/CloverScripts/postbuild.sh" - echo "Running Clover postbuild script" - "${DIR_TOOLS}/CloverScripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi -if [[ -x "${DIR_TOOLS}/Scripts/postbuild.sh" ]]; then - echo "Running postbuild script" - "${DIR_TOOLS}/Scripts/postbuild.sh" "${CLOVERROOT}" $MYTOOLCHAIN -fi + echo "[BUILD CLOVER WITH XCODE]" + # Run a custom build script if exist (${DIR_TOOLS}/Scripts/build.sh) + # This allow the user to run ebuild.sh with own parameters + if [[ -x "${DIR_TOOLS}"/Scripts/build.sh ]]; then + echo "Running custom build script" + "${DIR_TOOLS}"/Scripts/build.sh "${CLOVERROOT}" $MYTOOLCHAIN + else + local xrel="$(defaults read ~/Applications/Xcode.app/Contents/version.plist CFBundleShortVersionString)" + if [[ "$xrel" < "14.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE8 + elif [[ "$xrel" == "14.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE14 + elif [[ "$xrel" == "15.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE15 + elif [[ "$xrel" == "16.*" ]]; then + ./ebuild.sh -fr -D NO_GRUB_DRIVERS_EMBEDDED -D USE_APPLE_HFSPLUS_DRIVER -t XCODE16 + fi + fi + # Run a post build script if exist (${DIR_TOOLS}/CloverScripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/CloverScripts/postbuild.sh ]]; then + chmod +x "${DIR_TOOLS}"/CloverScripts/postbuild.sh + echo "Running Clover postbuild script" + "${DIR_TOOLS}"/CloverScripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi + # Run a custom post build script if exist (${DIR_TOOLS}/Scripts/postbuild.sh) + if [[ -x "${DIR_TOOLS}"/Scripts/postbuild.sh ]]; then + echo "Running postbuild script" + "${DIR_TOOLS}"/Scripts/postbuild.sh "${CLOVERROOT}" $MYTOOLCHAIN + fi } buildtestsix() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -echo "[BUILD CLOVERDB]" -./hebuild.sh -t $MYTOOLCHAIN + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + echo "[BUILD CLOVERDB]" + ./hebuild.sh -t $MYTOOLCHAIN } buildtestsev() { -checkTools -rm -rf "$CLOVERROOT/Conf" -mkdir "$CLOVERROOT/Conf" -cd "${CLOVERROOT}" -echo "[BUILD CLOVERDB]" -./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN + checkTools + + # to force recreation of the Conf folder. You can still use a custom CONF_PATH if you don't want recreation. + rm -rf "$CLOVERROOT"/Conf + mkdir "$CLOVERROOT"/Conf + + cd "${CLOVERROOT}" + echo "[BUILD CLOVERDB]" + ./hebuild.sh -mc --no-usb -D NO_GRUB_DRIVERS_EMBEDDED -t $MYTOOLCHAIN } + buildCloverTest() { checkTools + cd "${CLOVERROOT}" + if [[ -z "$WORKSPACE" ]]; then - export EDK_TOOLS_PATH="${PWD}/BaseTools" + export EDK_TOOLS_PATH="${PWD}"/BaseTools set +u source ./edksetup.sh BaseTools set -u @@ -385,39 +409,28 @@ echo "[BUILD CLOVER TEST]" buildPkg() { if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}/CloverPackage" + cd "${CLOVERROOT}"/CloverPackage checkXCODE checkGETTEXT echo "[BUILD PKG]" echo "The log will be created in the CloverPackage folder." rm -f mpkg.log - make pkg | tee mpkg.log + make pkg >mpkg.log else echo && echo "can't build pkg on a non Darwin OS!" fi } -buildUtils() { -if [[ "$SYSNAME" == Darwin ]]; then - cd "${CLOVERROOT}/CloverPackage" - echo "[BUILD UTILS]" - checkXCODE - make utils -else - echo && echo "can't build utils on a non Darwin OS!" -fi -} - buildApp() { local withClover=${1-"none"} if [[ "$SYSNAME" == Darwin ]]; then - if [[ -f "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi" ]]; then - rm -f "${CLOVERROOT}/CloverPackage/sym/.withV2" - mkdir -p "${CLOVERROOT}/CloverPackage/sym" + if [[ -f "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER/CLOVERX64.efi ]]; then + rm -f "${CLOVERROOT}"/CloverPackage/sym/.withV2 + mkdir -p "${CLOVERROOT}"/CloverPackage/sym if [[ $withClover == withV2 ]]; then - touch "${CLOVERROOT}/CloverPackage/sym/.withV2" + touch "${CLOVERROOT}"/CloverPackage/sym/.withV2 fi - cd "${CLOVERROOT}/CloverApp" + cd "${CLOVERROOT}"/CloverApp echo "[BUILD APP]" checkXCODE make @@ -431,60 +444,187 @@ fi } buildIso() { -cd "${CLOVERROOT}/CloverPackage" -echo "[BUILD ISO]" -make iso + cd "${CLOVERROOT}"/CloverPackage + echo "[BUILD ISO]" + make iso } makeV2() { -export V2=${V2:-"${CLOVERROOT}/CloverPackage/CloverV2"} -if [[ -f "$V2/EFI/CLOVER/CLOVERX64.efi" ]]; then - cd "${CLOVERROOT}/CloverPackage" - echo "" && echo -e "${COL_CYAN}[BUILD CloverV2]" - make zip -else - echo "" && echo -e "${COL_RED}please, Compile Clover first!!" - sleep 3 -fi + #clear + export V2=${V2:-${CLOVERROOT}/CloverPackage/CloverV2} + if [[ -f $V2/EFI/CLOVER/CLOVERX64.efi ]]; then + cd "${CLOVERROOT}"/CloverPackage + echo "" && echo -e $COL_CYAN"[BUILD CloverV2]" + make zip + else + echo "" && echo -e $COL_RED"please, Compile Clover first!!" + Sleep 3 + fi } + checkStatus() { -if [[ -d .git ]]; then - git fetch --recurse-submodules origin - git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt - git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt -else - echo "Error: this is not a git repository, can't get info!" -fi + if [[ -d .git ]]; then + git fetch --recurse-submodules origin + git log -n 1 > "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git status >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt + git submodule foreach --recursive "git log -n 1 && git status" >> "${DIR_OUT}"/status_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/status_${revision}-*.txt + else + echo "Error: this is not a git repository, can't get info!" + fi } showdiff() { -if [[ -d .git ]]; then + if [[ -d .git ]]; then git fetch --recurse-submodules origin git diff > "${DIR_OUT}"/diff_${revision}-$(date +%Y%m%d-%H.%M.%S).txt && open "${DIR_OUT}"/diff_${revision}-*.txt -else - echo "Error: this is not a git repository, can't get info!" -fi + else + echo "Error: this is not a git repository, can't get info!" + fi } cleanBaseTools() { -cd "${CLOVERROOT}/BaseTools" +cd "${CLOVERROOT}"/BaseTools make clean } makeBaseTools() { -cd "${CLOVERROOT}" +cd $HOME/src/CloverBootloader make -C BaseTools "BUILD_CC=clang" } +## Utilities +buildCPV() { + revision=r$(git describe --tags $(git rev-list --tags --max-count=1)) + if [[ -d "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator ]]; then + rm -Rf "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + fi + mkdir -p "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + cd "${CLOVERROOT}"/Xcode/CloverConfigPlistValidator + checkXCODE + xcodebuild -project ./CloverConfigPlistValidator.xcodeproj -quiet CONFIGURATION_BUILD_DIR="${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator + mv -f "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/CloverConfigPlistValidator_${revision} + rm -r "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator/*.dSYM + open "${CLOVERROOT}"/CloverPackage/CloverConfigPlistValidator +} + +PlistEDPlus() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -qsSLk https://github.com/ic005k/PlistEDPlus/releases/download/1.2.35/PlistEDPlus_Mac.dmg > PlistEDPlus_Mac.dmg + hdiutil attach -quiet -noverify -nobrowse PlistEDPlus_Mac.dmg && cp -Rf /Volumes/bin\:release\:PlistEDPlus/PlistEDPlus.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/bin\:release\:PlistEDPlus + rm -r $HOME/Desktop/ClovUtils/PlistEDPlus_Mac.dmg && open $HOME/Desktop/ClovUtils +} + +Hackintool() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/headkaze/Hackintool/releases/download/3.8.4/Hackintool.zip -o Hackintool.zip + unzip -q Hackintool.zip && rm -r Hackintool.zip && open $HOME/Desktop/ClovUtils +} + +BitmaskDecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/BitmaskDecode && open $HOME/Desktop/ClovUtils +} + +MaciASL() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/acidanthera/MaciASL/releases/download/1.6.2/MaciASL-1.6.2-RELEASE.dmg > MaciASL-1.6.2-RELEASE.dmg + hdiutil attach -quiet -noverify -nobrowse MaciASL-1.6.2-RELEASE.dmg && cp -Rf /Volumes/MaciASL/MaciASL.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/MaciASL + rm -r $HOME/Desktop/ClovUtils/MaciASL-1.6.2-RELEASE.dmg && open $HOME/Desktop/ClovUtils +} + +dmidecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils/dmidecode + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/acidanthera/dmidecode dmi-decode && xcodebuild -project ./dmi-decode/dmidecode.xcodeproj -quiet + cp -r dmi-decode/dmidecode $HOME/Desktop/ClovUtils/dmidecode && rm -Rf $HOME/Desktop/ClovUtils/dmi-decode && open $HOME/Desktop/ClovUtils +} + +Get-IOReg-Devices() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/LAbyOne/Get-IOReg-Devices + mv -f Get-IOReg-Devices/Get\ IOReg\ Devices $HOME/Desktop/ClovUtils/Get\ IOReg-Devices && chmod a+x $HOME/Desktop/ClovUtils/Get\ IOReg-Devices/*.command + rm -rf Get-IOReg-Devices && open $HOME/Desktop/ClovUtils +} + +NDBrightness () { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/KAMIKAZEUA/NativeDisplayBrightness NDBrightness + xcodebuild -project ./NDBrightness/NativeDisplayBrightness.xcodeproj -quiet -configuration Release clean build ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=$HOME/Desktop/ClovUtils + rm -Rf $HOME/Desktop/ClovUtils/NDBrightness && rm -r $HOME/Desktop/ClovUtils/*.dSYM && open $HOME/Desktop/ClovUtils +} + +SSDTTime() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/SSDTTime && open $HOME/Desktop/ClovUtils +} + +USBMap() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/USBMap + open $HOME/Desktop/ClovUtils +} + +Xiasl() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/ic005k/Xiasl/releases/download/1.1.66/Xiasl_Mac.dmg > Xiasl_Mac.dmg + hdiutil attach -quiet -noverify -nobrowse Xiasl_Mac.dmg && cp -Rf /Volumes/bin\:release\:Xiasl/Xiasl.app $HOME/Desktop/ClovUtils + hdiutil detach -force /Volumes/bin\:release\:Xiasl + rm -r $HOME/Desktop/ClovUtils/Xiasl_Mac.dmg && open $HOME/Desktop/ClovUtils +} + +CsrDecode() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils/CsrDecode + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/CsrDecode && open $HOME/Desktop/ClovUtils +} + +gibMacOS() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && git clone -q https://github.com/corpnewt/gibMacOS && open $HOME/Desktop/ClovUtils +} + +mountR/W() { + if [[ ! -d $HOME/Desktop/ClovUtils ]]; then + mkdir -p $HOME/Desktop/ClovUtils + fi + cd $HOME/Desktop/ClovUtils && curl -sLq https://github.com/jacklukem/BigSurmountsrw/releases/download/1.0/BigSurmountsrw2.app.zip -o BigSurmountsrw2.app.zip && open $HOME/Desktop/ClovUtils + unzip -q $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip && rm -r $HOME/Desktop/ClovUtils/BigSurmountsrw2.app.zip $HOME/Desktop/ClovUtils/__MACOSX +} + + testing() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" -echo -e " 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_CYAN} Test Builds${COL_RESET}" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" -echo -e "\n" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e $COL_CYAN" Test Builds" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n\n\n\n\n" PS3=' Please enter your choice: ' @@ -493,9 +633,9 @@ options=( 'test Clover with boot6' 'test build (no autogen, no boot files)' 'back to Cloverbuilds' 'Exit') -select opt in "${options[@]}" -do - case $opt in +select opt in "${options[@]}" + do + case $opt in "test Clover with boot6") buildtestsix break @@ -520,66 +660,166 @@ do echo "invalid option $REPLY" break ;; - esac -done + esac + done testing } +Utilities() { +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" +echo -e " 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e $COL_CYAN" External Utilities " +echo -e $COL_WHITE" All Files will be put on Desktop/ClovUtils" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n" + +PS3=' +Please enter your choice: ' +options=( 'Get CloverConfigPlistValidator ' + 'Get PlistEDPlus ' + 'Get Hackintool ' + 'Get BitmaskDecode ' + 'Get MaciASL ' + 'Get dmidecode ' + 'Get IOReg-Devices ' + 'Get NativeDisplayBrightness ' + 'Get SSDTTime' + 'Get USBMap' + 'Get Xiasl' + 'Get CsrDecode' + 'Get gibMacOS' + 'Get mountR/W' + 'back to Cloverbuilds' + 'Exit') +select opt in "${options[@]}" + do + case $opt in + "Get CloverConfigPlistValidator ") + buildCPV + break + ;; + "Get PlistEDPlus ") + PlistEDPlus + break + ;; + "Get Hackintool ") + Hackintool + break + ;; + "Get BitmaskDecode ") + BitmaskDecode + break + ;; + "Get MaciASL ") + MaciASL + break + ;; + "Get dmidecode ") + dmidecode + break + ;; + "Get IOReg-Devices ") + Get-IOReg-Devices + break + ;; + "Get NativeDisplayBrightness ") + NDBrightness + break + ;; + "Get SSDTTime") + SSDTTime + break + ;; + "Get USBMap") + USBMap + break + ;; + "Get Xiasl") + Xiasl + break + ;; + "Get CsrDecode") + CsrDecode + break + ;; + "Get gibMacOS") + gibMacOS + break + ;; + "Get mountR/W") + mountR/W + break + ;; + "back to Cloverbuilds") + menu + break + ;; + "Exit") + exit + break + ;; + *) + echo "invalid option $REPLY" + break + ;; + esac + done +Utilities +} + Extra() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" -echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE can be done on Cloverbuilds${COL_RESET}" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} can be done on${COL_CYAN} Cloverbuilds" if [[ -x "$(which python3)" ]]; then - echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" + echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET + echo -e "\n\n\n\n\n\n\n\n\n\n" else - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'back to main menu' - 'make BaseTools' - 'test Clover' - 'check status' - 'show diff' +options=( 'Cloverbuilds ' + 'test Clover ' + 'check status ' + 'show diff ' 'open CloverV2 directory' 'update Clover (reset changes)' 'clean BaseTools' + 'make BaseTools' + 'Utilities' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "back to main menu") + "Cloverbuilds ") menu break ;; - "make BaseTools") - makeBaseTools - break - ;; - "test Clover") + "test Clover ") testing break ;; - "check status") + "check status ") checkStatus break ;; - "show diff") + "show diff ") showdiff break ;; "open CloverV2 directory") - if [[ -d "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" ]]; then - open "${CLOVERROOT}/CloverPackage/CloverV2/EFI/CLOVER" + if [[ -d "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER ]]; then + open "${CLOVERROOT}"/CloverPackage/CloverV2/EFI/CLOVER else echo && echo "Directory not found. Compile Clover first!!" sleep 2 @@ -602,6 +842,10 @@ do fi break ;; + "make BaseTools") + makeBaseTools + break + ;; "Utilities") Utilities break @@ -619,107 +863,108 @@ Extra } menu() { -echo -e "\n" -echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" +#clear +echo +echo -e $COL_GREEN" ---------------------------------------------------------------------------------" if [[ ! -x "$(which python3)" ]]; then - echo -e " ${pynone}" + echo -e " ${pynone}" fi -echo -e "${COL_GREEN} 🍀 Clover r${revision}${COL_YELLOW} (SHA: ${lsha1})${COL_RESET}" -echo -e "${COL_YELLOW} Default TOOLCHAIN:${COL_CYAN} $MYTOOLCHAIN${COL_RESET}" -echo -e "${COL_YELLOW} Switch to${COL_CYAN} XCODE${COL_YELLOW} select:${COL_CYAN} build (with XCode)${COL_RESET}" -echo -e "${COL_YELLOW} Depending on your${COL_CYAN} XCODE version${COL_YELLOW} the Toolset will be${COL_CYAN} automatically chosen${COL_RESET}" +echo -e "$COL_GREEN 🍀 Clover r${revision}$COL_WHITE (SHA: $lsha1)" +echo -e "$COL_WHITE Default TOOLCHAIN:$COL_CYAN $MYTOOLCHAIN$COL_WHITE " +echo -e "${COL_WHITE} Switch to${COL_CYAN} XCODE${COL_WHITE} select:${COL_CYAN} build (with XCode)" +echo -e "${COL_WHITE} Depending on your${COL_CYAN} XCODE version${COL_WHITE} the Toolset will be${COL_CYAN} automatically chosen" +# echo -e "${COL_WHITE} Toolset${COL_CYAN} is automatically chosen${COL_WHITE} depending on the${COL_CYAN} XCODE installed version" if [[ -x "$(which python3)" ]]; then - echo -e "${COL_GREEN} ${pyversion}${COL_GREEN} ${COL_RESET}" - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" + echo -e $COL_GREEN" ---------------------- ${pyversion}$COL_GREEN -------------------- "$COL_RESET + echo -e "\n\n\n\n\n\n\n" else - echo -e "${COL_GREEN} ---------------------------------------------------------------------------------${COL_RESET}" - echo -e "\n" +echo -e $COL_GREEN" ---------------------------------------------------------------------------------"$COL_RESET +echo -e "\n\n\n\n\n\n\n" fi PS3=' Please enter your choice: ' -options=( 'build Clover (Default Toolchain)' - 'build all (Default Toolchain)' - 'make Release (Default Toolchain)' - 'update Clover' - 'make pkg' - 'make iso' - 'make Clover_V2' +options=( 'build Clover (Default Toolchain) ' + 'build all (Default Toolchain) ' + 'make Release (Default Toolchain) ' + 'update Clover ' + 'make pkg ' + 'make iso ' + 'make Clover_V2' 'build Clover (with XCode)' 'build all (with XCode)' - 'make Release (with XCode)' - 'build Clover with HFSPlus' - 'Extra Options' - 'make utils' + 'make Release (with XCode)' + 'build Clover with HFSPlus' + 'Extra Options' 'Exit') -select opt in "${options[@]}" +select opt in "${options[@]}" do case $opt in - "build Clover (Default Toolchain)") + "build Clover (Default Toolchain) ") buildClover break ;; - "build all (Default Toolchain)") + "build all (Default Toolchain) ") buildClover + BLC buildPkg buildIso makeV2 break - ;; - "make Release (Default Toolchain)") + ;; + "make Release (Default Toolchain) ") makeRelease + BLC buildPkg buildIso makeV2 break ;; - "update Clover") + "update Clover ") updateClover break ;; - "make pkg") + "make pkg ") + BLC buildPkg break ;; - "make iso") + "make iso ") buildIso break ;; - "make Clover_V2") + "make Clover_V2") makeV2 break ;; - "build Clover (with XCode)") + "build Clover (with XCode)") buildCloverXC break ;; - "build all (with XCode)") + "build all (with XCode)") buildCloverXC + BLC buildPkg buildIso makeV2 break ;; - "make Release (with XCode)") + "make Release (with XCode)") makeReleaseXC + BLC buildPkg buildIso makeV2 break ;; - "build Clover with HFSPlus") + "build Clover with HFSPlus") buildCloverHFSPlus break ;; - "Extra Options") + "Extra Options") Extra break ;; - "make utils") - buildUtils - break - ;; "Exit") exit 0 ;; @@ -735,16 +980,13 @@ menu # Main clone_OpenCorePkg set -e -if [[ "$2" == "ci" ]]; then - makeRelease - buildPkg - buildIso - makeV2 -elif [[ "$2" == "xci" ]]; then - makeReleaseXC - buildPkg - buildIso - makeV2 +if [[ "$2" == ci ]]; then + makeRelease +# buildCCPV + BLC + buildPkg + buildIso + makeV2 else - menu -fi \ No newline at end of file + menu +fi From 00ce437d6f2f82c27b8de7dc594ccebd44f84a75 Mon Sep 17 00:00:00 2001 From: chris1111 Date: Mon, 29 Sep 2025 22:05:29 -0400 Subject: [PATCH 15/15] Update buildme --- buildme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildme b/buildme index 0ce0bf8324..778d9a5bcb 100755 --- a/buildme +++ b/buildme @@ -415,7 +415,7 @@ if [[ "$SYSNAME" == Darwin ]]; then echo "[BUILD PKG]" echo "The log will be created in the CloverPackage folder." rm -f mpkg.log - make pkg >mpkg.log + make pkg | tee mpkg.log else echo && echo "can't build pkg on a non Darwin OS!" fi