update cpmutil

Signed-off-by: crueter <crueter@eden-emu.dev>
This commit is contained in:
crueter 2026-06-01 23:20:51 -04:00
parent 060ebb8ad4
commit aff9a6cee1
No known key found for this signature in database
GPG key ID: 425ACD2D4830EBC6
6 changed files with 63 additions and 34 deletions

View file

@ -3,7 +3,7 @@
set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE) set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE)
if(MSVC OR ANDROID) if(MSVC OR ANDROID OR IOS)
set(BUNDLED_DEFAULT ON) set(BUNDLED_DEFAULT ON)
else() else()
set(BUNDLED_DEFAULT OFF) set(BUNDLED_DEFAULT OFF)
@ -128,7 +128,8 @@ function(AddDependentPackages)
message(FATAL_ERROR "Partial dependency installation detected " message(FATAL_ERROR "Partial dependency installation detected "
"for the following packages:\n${package_names}\n" "for the following packages:\n${package_names}\n"
"You can solve this in one of two ways:\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" "\n\t${bundled_names}\n"
"2. Set the following variables to ON:" "2. Set the following variables to ON:"
"\n\t${system_names}\n" "\n\t${system_names}\n"
@ -247,7 +248,9 @@ function(AddJsonPackage)
set(multiValueArgs OPTIONS) set(multiValueArgs OPTIONS)
cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}" set(optionArgs MODULE)
cmake_parse_arguments(JSON "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}"
"${ARGN}") "${ARGN}")
list(LENGTH ARGN argnLength) list(LENGTH ARGN argnLength)
@ -276,6 +279,10 @@ function(AddJsonPackage)
parse_object(${object}) parse_object(${object})
if (JSON_MODULE)
set(EXTRA_ARGS MODULE)
endif()
if(ci) if(ci)
AddCIPackage( AddCIPackage(
VERSION ${version} VERSION ${version}
@ -284,8 +291,8 @@ function(AddJsonPackage)
PACKAGE ${package} PACKAGE ${package}
EXTENSION ${extension} EXTENSION ${extension}
MIN_VERSION ${min_version} MIN_VERSION ${min_version}
DISABLED_PLATFORMS ${disabled_platforms}) DISABLED_PLATFORMS ${disabled_platforms}
${EXTRA_ARGS})
else() else()
if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE) if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE)
set(JSON_FORCE_BUNDLED_PACKAGE OFF) set(JSON_FORCE_BUNDLED_PACKAGE OFF)
@ -307,23 +314,24 @@ function(AddJsonPackage)
FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}" FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}"
SOURCE_SUBDIR "${source_subdir}" SOURCE_SUBDIR "${source_subdir}"
GIT_VERSION ${git_version} GIT_VERSION "${git_version}"
GIT_HOST ${git_host} GIT_HOST "${git_host}"
ARTIFACT ${artifact} ARTIFACT "${artifact}"
TAG ${tag}) TAG "${tag}"
${EXTRA_ARGS})
endif() endif()
# pass stuff to parent scope # pass stuff to parent scope
Propagate(${package}_ADDED) Propagate(${package}_ADDED)
Propagate(${package}_SOURCE_DIR) Propagate(${package}_SOURCE_DIR)
Propagate(${package}_BINARY_DIR) Propagate(${package}_BINARY_DIR)
Propagate(CMAKE_PREFIX_PATH)
endfunction() endfunction()
function(AddPackage) function(AddPackage)
cpm_set_policies() cpm_set_policies()
set(EXTRA_ARGS "")
# TODO(crueter): git clone?
#[[ #[[
URL configurations, descending order of precedence: URL configurations, descending order of precedence:
@ -368,7 +376,9 @@ function(AddPackage)
set(multiValueArgs OPTIONS PATCHES) set(multiValueArgs OPTIONS PATCHES)
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" set(optionArgs MODULE)
cmake_parse_arguments(PKG_ARGS "${optionArgs}" "${oneValueArgs}" "${multiValueArgs}"
"${ARGN}") "${ARGN}")
if(NOT DEFINED PKG_ARGS_NAME) if(NOT DEFINED PKG_ARGS_NAME)
@ -552,6 +562,12 @@ function(AddPackage)
VERSION ${PKG_ARGS_VERSION}) VERSION ${PKG_ARGS_VERSION})
endif() endif()
if (PKG_ARGS_MODULE)
set(PKG_ARGS_DOWNLOAD_ONLY ON)
elseif (NOT DEFINED PKG_ARGS_DOWNLOAD_ONLY)
set(PKG_ARGS_DOWNLOAD_ONLY OFF)
endif()
CPMAddPackage( CPMAddPackage(
NAME ${PKG_ARGS_NAME} NAME ${PKG_ARGS_NAME}
URL ${pkg_url} URL ${pkg_url}
@ -601,13 +617,14 @@ function(AddPackage)
endif() endif()
# pass stuff to parent scope # pass stuff to parent scope
set(${PKG_ARGS_NAME}_ADDED "${${PKG_ARGS_NAME}_ADDED}" Propagate(${PKG_ARGS_NAME}_ADDED)
PARENT_SCOPE) Propagate(${PKG_ARGS_NAME}_SOURCE_DIR)
set(${PKG_ARGS_NAME}_SOURCE_DIR "${${PKG_ARGS_NAME}_SOURCE_DIR}" Propagate(${PKG_ARGS_NAME}_BINARY_DIR)
PARENT_SCOPE)
set(${PKG_ARGS_NAME}_BINARY_DIR "${${PKG_ARGS_NAME}_BINARY_DIR}"
PARENT_SCOPE)
if (PKG_ARGS_MODULE)
list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
Propagate(CMAKE_PREFIX_PATH)
endif()
endfunction() endfunction()
# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage? # TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage?
@ -690,14 +707,20 @@ function(AddCIPackage)
set(pkgname linux-amd64) set(pkgname linux-amd64)
elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64) elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64)
set(pkgname linux-aarch64) set(pkgname linux-aarch64)
elseif(APPLE) elseif(APPLE AND NOT IOS)
set(pkgname macos-universal) set(pkgname macos-universal)
elseif(IOS AND ARCHITECTURE_arm64)
set(pkgname ios-aarch64)
endif() endif()
if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS) if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS)
set(ARTIFACT set(ARTIFACT
"${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}") "${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}")
if (PKG_ARGS_MODULE)
set(EXTRA_ARGS MODULE)
endif()
AddPackage( AddPackage(
NAME ${ARTIFACT_PACKAGE} NAME ${ARTIFACT_PACKAGE}
REPO ${ARTIFACT_REPO} REPO ${ARTIFACT_REPO}
@ -708,23 +731,22 @@ function(AddCIPackage)
KEY "${pkgname}-${ARTIFACT_VERSION}" KEY "${pkgname}-${ARTIFACT_VERSION}"
HASH_SUFFIX sha512sum HASH_SUFFIX sha512sum
FORCE_BUNDLED_PACKAGE ON FORCE_BUNDLED_PACKAGE ON
DOWNLOAD_ONLY ${PKG_ARGS_MODULE}) ${EXTRA_ARGS})
set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE)
set(${ARTIFACT_PACKAGE}_SOURCE_DIR Propagate(${ARTIFACT_PACKAGE}_SOURCE_DIR)
"${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE) Propagate(CMAKE_PREFIX_PATH)
if (PKG_ARGS_MODULE)
list(PREPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}")
Propagate(CMAKE_PREFIX_PATH)
endif()
else() else()
find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED) find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED)
endif() endif()
endfunction() endfunction()
# Utility function for Qt # Utility function for Qt
function(AddQt version) function(AddQt repo version)
if (NOT DEFINED repo)
message(FATAL_ERROR "[CPMUtil] AddQt: repo is required")
endif()
if (NOT DEFINED version) if (NOT DEFINED version)
message(FATAL_ERROR "[CPMUtil] AddQt: version is required") message(FATAL_ERROR "[CPMUtil] AddQt: version is required")
endif() endif()
@ -734,7 +756,7 @@ function(AddQt version)
PACKAGE Qt6 PACKAGE Qt6
VERSION ${version} VERSION ${version}
MIN_VERSION 6 MIN_VERSION 6
REPO crueter-ci/Qt REPO ${repo}
DISABLED_PLATFORMS DISABLED_PLATFORMS
android-x86_64 android-aarch64 android-x86_64 android-aarch64
freebsd-amd64 solaris-amd64 openbsd-amd64 freebsd-amd64 solaris-amd64 openbsd-amd64

View file

@ -18,3 +18,4 @@
- `linux-amd64` - `linux-amd64`
- `linux-aarch64` - `linux-aarch64`
- `macos-universal` - `macos-universal`
- `ios-aarch64`

View file

@ -61,7 +61,8 @@ In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discor
"version": "3.6.0", "version": "3.6.0",
"min_version": "1.1.1", "min_version": "1.1.1",
"disabled_platforms": [ "disabled_platforms": [
"macos-universal" "macos-universal",
"ios-aarch64"
] ]
}, },
"boost": { "boost": {

View file

@ -83,7 +83,7 @@ ci_package() {
android-aarch64 android-x86_64 \ android-aarch64 android-x86_64 \
solaris-amd64 freebsd-amd64 openbsd-amd64 \ solaris-amd64 freebsd-amd64 openbsd-amd64 \
linux-amd64 linux-aarch64 \ linux-amd64 linux-aarch64 \
macos-universal; do macos-universal ios-aarch64; do
echo "-- * platform $platform" echo "-- * platform $platform"
case $DISABLED in case $DISABLED in

View file

@ -83,8 +83,13 @@ for pkg in $packages; do
echo "-- Package $PACKAGE" echo "-- Package $PACKAGE"
# TODO(crueter): Support for Forgejo updates w/ forgejo_token # TODO(crueter): Support for Forgejo updates w/ forgejo_token
# Use gh-cli to avoid ratelimits lmao # Use gh-cli to avoid ratelimits, if available
TAGS=$(gh api --method GET "/repos/$REPO/tags") 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 # filter out some commonly known annoyances
# TODO add more # TODO add more

View file

@ -151,7 +151,7 @@ mingw-amd64 mingw-arm64
android-aarch64 android-x86_64 android-aarch64 android-x86_64
solaris-amd64 freebsd-amd64 openbsd-amd64 solaris-amd64 freebsd-amd64 openbsd-amd64
linux-amd64 linux-aarch64 linux-amd64 linux-aarch64
macos-universal" macos-universal ios-aarch64"
DISABLED_PLATFORMS="$reply" DISABLED_PLATFORMS="$reply"
fi fi