aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-06-20 00:58:02 +0200
committercrueter <crueter@eden-emu.dev>2026-06-20 00:58:02 +0200
commite63b248e54befb40a217aa7344b2a6cc95b05bd4 (patch)
treee1ec9dc018f45fef34309e85f95a6440666f314d
parent97a8470b12e41183462800e58ed69a5f8be1b954 (diff)
[ci] Fix update-deps workflow (again) (#4110)
Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4110
-rw-r--r--.forgejo/workflows/translations.yml2
-rw-r--r--.forgejo/workflows/update-deps.yml13
-rw-r--r--CMakeModules/CPMUtil.cmake124
-rwxr-xr-xtools/cpm/package/update.sh15
4 files changed, 90 insertions, 64 deletions
diff --git a/.forgejo/workflows/translations.yml b/.forgejo/workflows/translations.yml
index 4a2d52e745..fe2e82dff3 100644
--- a/.forgejo/workflows/translations.yml
+++ b/.forgejo/workflows/translations.yml
@@ -52,7 +52,7 @@ jobs:
}
EOF
- curl -X 'POST' \
+ curl -XPOST \
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
diff --git a/.forgejo/workflows/update-deps.yml b/.forgejo/workflows/update-deps.yml
index 154328f906..638fcd4bdb 100644
--- a/.forgejo/workflows/update-deps.yml
+++ b/.forgejo/workflows/update-deps.yml
@@ -1,4 +1,4 @@
-name: update-deps
+name: Update Dependencies
on:
# saturday at noon
@@ -7,7 +7,7 @@ on:
workflow_dispatch:
jobs:
- tx-update:
+ update-deps:
runs-on: source
steps:
- uses: actions/checkout@v4
@@ -24,18 +24,21 @@ jobs:
git remote set-url origin ci:eden-emu/eden.git
DATE=$(date +"%b %d")
+ TIMESTAMP=$(date +"%s")
echo "DATE=$DATE" >> "$GITHUB_ENV"
+ echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
- git switch -c update-deps-$DATE
+ git switch -c update-deps-$TIMESTAMP
tools/cpmutil.sh package update -ac
git push
- name: Create PR
run: |
+ set -x
TITLE="[externals] Dependency update for $DATE"
BODY="$(git show -s --format='%b')"
BASE=master
- HEAD=update-deps-$DATE
+ HEAD=update-deps-$TIMESTAMP
cat << EOF > data.json
{
@@ -46,7 +49,7 @@ jobs:
}
EOF
- curl -X 'POST' \
+ curl -XPOST \
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
-H 'accept: application/json' \
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake
index d077816721..2c9b60aff0 100644
--- a/CMakeModules/CPMUtil.cmake
+++ b/CMakeModules/CPMUtil.cmake
@@ -128,7 +128,8 @@ function(AddDependentPackages)
message(FATAL_ERROR "Partial dependency installation detected "
"for the following packages:\n${package_names}\n"
"You can solve this in one of two ways:\n"
- "1. Install the following packages to your system if available:"
+ "1. Install or upgrade the following packages "
+ "to your system if available:"
"\n\t${bundled_names}\n"
"2. Set the following variables to ON:"
"\n\t${system_names}\n"
@@ -241,15 +242,14 @@ function(AddJsonPackage)
# these are overrides that can be generated at runtime,
# so can be defined separately from the json
- DOWNLOAD_ONLY
BUNDLED_PACKAGE
FORCE_BUNDLED_PACKAGE)
set(multiValueArgs OPTIONS)
- set(options MODULE)
+ set(optionArgs MODULE_PATH DOWNLOAD_ONLY)
- cmake_parse_arguments(JSON "${options}" "${oneValueArgs}" "${multiValueArgs}"
+ cmake_parse_arguments(JSON "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}"
"${ARGN}")
list(LENGTH ARGN argnLength)
@@ -278,11 +278,15 @@ function(AddJsonPackage)
parse_object(${object})
- if(ci)
- if (JSON_MODULE)
- set(EXTRA_ARGS MODULE)
- endif()
+ if (JSON_MODULE_PATH)
+ list(APPEND EXTRA_ARGS MODULE_PATH)
+ endif()
+
+ if (JSON_DOWNLOAD_ONLY)
+ list(APPEND EXTRA_ARGS DOWNLOAD_ONLY)
+ endif()
+ if(ci)
AddCIPackage(
VERSION ${version}
NAME ${name}
@@ -313,40 +317,25 @@ function(AddJsonPackage)
FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}"
SOURCE_SUBDIR "${source_subdir}"
- GIT_VERSION ${git_version}
- GIT_HOST ${git_host}
+ GIT_VERSION "${git_version}"
+ GIT_HOST "${git_host}"
- ARTIFACT ${artifact}
- TAG ${tag})
+ ARTIFACT "${artifact}"
+ TAG "${tag}"
+ ${EXTRA_ARGS})
endif()
# pass stuff to parent scope
Propagate(${package}_ADDED)
Propagate(${package}_SOURCE_DIR)
Propagate(${package}_BINARY_DIR)
+ Propagate(CMAKE_PREFIX_PATH)
endfunction()
function(AddPackage)
cpm_set_policies()
+ set(EXTRA_ARGS "")
- # TODO(crueter): git clone?
-
- #[[
- URL configurations, descending order of precedence:
- - URL [+ GIT_URL] -> bare URL fetch
- - REPO + TAG + ARTIFACT -> github release artifact
- - REPO + TAG -> github release archive
- - REPO + SHA -> github commit archive
- - REPO + BRANCH -> github branch
-
- Hash configurations, descending order of precedence:
- - HASH -> bare sha512sum
- - HASH_SUFFIX -> hash grabbed from the URL + this suffix
- - HASH_URL -> hash grabbed from a URL
- * technically this is unsafe since a hacker can attack that url
-
- NOTE: hash algo defaults to sha512
- #]]
set(oneValueArgs
NAME
VERSION
@@ -366,6 +355,7 @@ function(AddPackage)
URL
GIT_URL
+ SOURCE_SUBDIR
KEY
BUNDLED_PACKAGE
@@ -374,7 +364,9 @@ function(AddPackage)
set(multiValueArgs OPTIONS PATCHES)
- cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}"
+ set(optionArgs MODULE_PATH DOWNLOAD_ONLY)
+
+ cmake_parse_arguments(PKG_ARGS "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}"
"${ARGN}")
if(NOT DEFINED PKG_ARGS_NAME)
@@ -558,16 +550,36 @@ function(AddPackage)
VERSION ${PKG_ARGS_VERSION})
endif()
+ if (PKG_ARGS_FIND_PACKAGE_ARGUMENTS)
+ list(APPEND EXTRA_ARGS
+ FIND_PACKAGE_ARGUMENTS "${PKG_ARGS_FIND_PACKAGE_ARGUMENTS}")
+ endif()
+
+ if (PKG_ARGS_PATCHES)
+ list(APPEND EXTRA_ARGS
+ PATCHES "${PKG_ARGS_PATCHES}")
+ endif()
+
+ if (PKG_ARGS_OPTIONS)
+ list(APPEND EXTRA_ARGS
+ OPTIONS "${PKG_ARGS_OPTIONS}")
+ endif()
+
+ if (PKG_ARGS_SOURCE_SUBDIR)
+ list(APPEND EXTRA_ARGS
+ SOURCE_SUBDIR "${PKG_ARGS_SOURCE_SUBDIR}")
+ endif()
+
+ if (PKG_ARGS_DOWNLOAD_ONLY OR PKG_ARGS_MODULE_PATH)
+ list(APPEND EXTRA_ARGS DOWNLOAD_ONLY ON)
+ endif()
+
CPMAddPackage(
- NAME ${PKG_ARGS_NAME}
- URL ${pkg_url}
- URL_HASH ${pkg_hash}
- CUSTOM_CACHE_KEY ${pkg_key}
- DOWNLOAD_ONLY ${PKG_ARGS_DOWNLOAD_ONLY}
- FIND_PACKAGE_ARGUMENTS ${PKG_ARGS_FIND_PACKAGE_ARGUMENTS}
-
- OPTIONS ${PKG_ARGS_OPTIONS}
- PATCHES ${PKG_ARGS_PATCHES}
+ NAME "${PKG_ARGS_NAME}"
+ URL "${pkg_url}"
+ URL_HASH "${pkg_hash}"
+ CUSTOM_CACHE_KEY "${pkg_key}"
+
EXCLUDE_FROM_ALL ON
${EXTRA_ARGS}
@@ -607,13 +619,14 @@ function(AddPackage)
endif()
# pass stuff to parent scope
- set(${PKG_ARGS_NAME}_ADDED "${${PKG_ARGS_NAME}_ADDED}"
- PARENT_SCOPE)
- set(${PKG_ARGS_NAME}_SOURCE_DIR "${${PKG_ARGS_NAME}_SOURCE_DIR}"
- PARENT_SCOPE)
- set(${PKG_ARGS_NAME}_BINARY_DIR "${${PKG_ARGS_NAME}_BINARY_DIR}"
- PARENT_SCOPE)
+ Propagate(${PKG_ARGS_NAME}_ADDED)
+ Propagate(${PKG_ARGS_NAME}_SOURCE_DIR)
+ Propagate(${PKG_ARGS_NAME}_BINARY_DIR)
+ if (PKG_ARGS_MODULE_PATH)
+ list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
+ Propagate(CMAKE_PREFIX_PATH)
+ endif()
endfunction()
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
@@ -629,7 +642,7 @@ function(AddCIPackage)
set(multiValueArgs DISABLED_PLATFORMS)
- set(optionArgs MODULE)
+ set(optionArgs MODULE_PATH)
cmake_parse_arguments(PKG_ARGS
"${optionArgs}"
@@ -706,6 +719,10 @@ function(AddCIPackage)
set(ARTIFACT
"${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}")
+ if (PKG_ARGS_MODULE_PATH)
+ list(APPEND EXTRA_ARGS MODULE_PATH)
+ endif()
+
AddPackage(
NAME ${ARTIFACT_PACKAGE}
REPO ${ARTIFACT_REPO}
@@ -716,16 +733,11 @@ function(AddCIPackage)
KEY "${pkgname}-${ARTIFACT_VERSION}"
HASH_SUFFIX sha512sum
FORCE_BUNDLED_PACKAGE ON
- DOWNLOAD_ONLY ${PKG_ARGS_MODULE})
+ ${EXTRA_ARGS})
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
- set(${ARTIFACT_PACKAGE}_SOURCE_DIR
- "${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE)
-
- if (PKG_ARGS_MODULE)
- list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
- Propagate(CMAKE_PREFIX_PATH)
- endif()
+ Propagate(${ARTIFACT_PACKAGE}_SOURCE_DIR)
+ Propagate(CMAKE_PREFIX_PATH)
else()
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
endif()
@@ -750,7 +762,7 @@ function(AddQt repo version)
DISABLED_PLATFORMS
android-x86_64 android-aarch64
freebsd-amd64 solaris-amd64 openbsd-amd64
- MODULE)
+ MODULE_PATH)
find_package(Qt6 REQUIRED PATHS ${Qt6_SOURCE_DIR} NO_DEFAULT_PATH)
diff --git a/tools/cpm/package/update.sh b/tools/cpm/package/update.sh
index 92f4f423a9..77d408bee0 100755
--- a/tools/cpm/package/update.sh
+++ b/tools/cpm/package/update.sh
@@ -83,8 +83,13 @@ for pkg in $packages; do
echo "-- Package $PACKAGE"
# TODO(crueter): Support for Forgejo updates w/ forgejo_token
- # Use gh-cli to avoid ratelimits lmao
- TAGS=$(gh api --method GET "/repos/$REPO/tags")
+ # Use gh-cli to avoid ratelimits, if available
+ endpoint="/repos/$REPO/tags"
+ if command -v gh >/dev/null 2>&1; then
+ TAGS=$(gh api --method GET "$endpoint")
+ else
+ TAGS=$(curl -sfL "https://api.github.com$endpoint")
+ fi
# filter out some commonly known annoyances
# TODO add more
@@ -105,6 +110,12 @@ for pkg in $packages; do
filter_out beta
filter_out rc
+ # openssl
+ if [ "$PACKAGE" = openssl ]; then
+ filter_out rsaref
+ filter_in "openssl-"
+ fi
+
# Add package-specific overrides here, e.g. here for fmt:
[ "$PACKAGE" != fmt ] || filter_out v0.11