aboutsummaryrefslogtreecommitdiff
path: root/tools/cpm/package/fetch.sh
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-06-26 02:22:04 +0200
committercrueter <crueter@eden-emu.dev>2026-06-26 02:22:04 +0200
commitc993bc01a49c39c3d293ce401db86b3dccba69c1 (patch)
tree7c9bed2f2f5013b87bb2ea57bac16fb09a79a737 /tools/cpm/package/fetch.sh
parent6bdb03d8ac5a626256e52e4601fae9d245405345 (diff)
[cmake] Update CPMUtil (#4123)
Notable changes - Single cpmfile - version/min_version/git_version have been fixed and replaced with version and min_version - Docs rewrite - Legacy options are gone - Fixed update/version commands - Added patch creation functionality Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4123 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Diffstat (limited to 'tools/cpm/package/fetch.sh')
-rwxr-xr-xtools/cpm/package/fetch.sh122
1 files changed, 5 insertions, 117 deletions
diff --git a/tools/cpm/package/fetch.sh b/tools/cpm/package/fetch.sh
index 54ea8c64c4..774ecc7a29 100755
--- a/tools/cpm/package/fetch.sh
+++ b/tools/cpm/package/fetch.sh
@@ -3,115 +3,8 @@
# SPDX-FileCopyrightText: Copyright 2026 crueter
# SPDX-License-Identifier: LGPL-3.0-or-later
-: "${CPM_SOURCE_CACHE:=$PWD/.cache/cpm}"
-
-mkdir -p "$CPM_SOURCE_CACHE"
-
-ROOTDIR="$PWD"
-
-TMP=$(mktemp -d)
-
-download_package() {
- FILENAME=$(basename "$DOWNLOAD")
-
- OUTFILE="$TMP/$FILENAME"
-
- LOWER_PACKAGE=$(echo "$PACKAGE_NAME" | tr '[:upper:]' '[:lower:]')
- OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}"
- [ -d "$OUTDIR" ] && return
-
- curl "$DOWNLOAD" -sS -L -o "$OUTFILE"
-
- ACTUAL_HASH=$("${HASH_ALGO}"sum "$OUTFILE" | cut -d" " -f1)
- [ "$ACTUAL_HASH" != "$HASH" ] && echo "!! $FILENAME did not match expected hash; expected $HASH but got $ACTUAL_HASH" && exit 1
-
- TMPDIR="$TMP/extracted"
- mkdir -p "$OUTDIR"
- mkdir -p "$TMPDIR"
-
- PREVDIR="$PWD"
- mkdir -p "$TMPDIR"
- cd "$TMPDIR"
-
- case "$FILENAME" in
- *.7z)
- 7z x "$OUTFILE" >/dev/null
- ;;
- *.tar*)
- tar xf "$OUTFILE" >/dev/null
- ;;
- *.zip)
- unzip "$OUTFILE" >/dev/null
- ;;
- esac
-
- # basically if only one real item exists at the top we just move everything from there
- # since github and some vendors hate me
- DIRS=$(find . -maxdepth 1 -type d -o -type f)
-
- # thanks gnu
- if [ "$(echo "$DIRS" | wc -l)" -eq 2 ]; then
- SUBDIR=$(find . -maxdepth 1 -type d -not -name ".")
- mv "$SUBDIR"/* "$OUTDIR"
- mv "$SUBDIR"/.* "$OUTDIR" 2>/dev/null || true
- rmdir "$SUBDIR"
- else
- mv ./* "$OUTDIR"
- mv ./.* "$OUTDIR" 2>/dev/null || true
- fi
-
- cd "$OUTDIR"
-
- if echo "$JSON" | grep -e "patches" >/dev/null; then
- PATCHES=$(echo "$JSON" | jq -r '.patches | join(" ")')
- for patch in $PATCHES; do
- patch --binary -p1 <"$ROOTDIR/.patch/$PACKAGE/$patch"
- done
- fi
-
- cd "$PREVDIR"
-}
-
-ci_package() {
- [ "$REPO" != null ] || { echo "-- ! No repo defined" && return; }
-
- echo "-- CI package $PACKAGE_NAME"
-
- for platform in \
- windows-amd64 windows-arm64 \
- mingw-amd64 mingw-arm64 \
- android-aarch64 android-x86_64 \
- solaris-amd64 freebsd-amd64 openbsd-amd64 \
- linux-amd64 linux-aarch64 \
- macos-universal ios-aarch64; do
- echo "-- * platform $platform"
-
- case $DISABLED in
- *"$platform"*)
- echo "-- * -- disabled"
- continue
- ;;
- esac
-
- FILENAME="${NAME}-${platform}-${VERSION}.${EXT}"
- DOWNLOAD="https://$GIT_HOST/${REPO}/releases/download/v${VERSION}/${FILENAME}"
- KEY="$platform-$VERSION"
-
- LOWER_PACKAGE=$(echo "$PACKAGE_NAME" | tr '[:upper:]' '[:lower:]')
- OUTDIR="${CPM_SOURCE_CACHE}/${LOWER_PACKAGE}/${KEY}"
- [ -d "$OUTDIR" ] && continue
-
- HASH_ALGO=$(echo "$JSON" | jq -r ".hash_algo")
- [ "$HASH_ALGO" != null ] || HASH_ALGO=sha512
-
- HASH_SUFFIX="${HASH_ALGO}sum"
- HASH_URL="${DOWNLOAD}.${HASH_SUFFIX}"
-
- HASH=$(curl "$HASH_URL" -sS -q -L -o -)
-
- download_package
- done
-}
+# shellcheck disable=SC1091
+. "$SCRIPTS/util/fetch.sh"
usage() {
cat <<EOF
@@ -141,16 +34,11 @@ done
[ -n "$packages" ] || usage
for PACKAGE in $packages; do
+ unset JSON
export PACKAGE
+
# shellcheck disable=SC1091
. "$SCRIPTS"/vars.sh
- if [ "$CI" = "true" ]; then
- ci_package
- else
- echo "-- Downloading regular package $PACKAGE, with key $KEY, from $DOWNLOAD"
- download_package
- fi
+ fetch_package
done
-
-rm -rf "$TMP"