From 173a20135d7daa83d048d25f50506b6eba8c0d5e Mon Sep 17 00:00:00 2001 From: Billy O'Neal Date: Fri, 14 Aug 2026 14:38:49 -0700 Subject: [PATCH] Update macOS, switch to new M4 hardware (#53316) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ports/cyrus-sasl/portfile.cmake | 1 + ports/cyrus-sasl/vcpkg.json | 2 +- ports/glpk/portfile.cmake | 134 +++++----- ports/glpk/vcpkg.json | 2 +- ports/highs/fix-pkgconfig-zlib.patch | 23 +- ports/highs/portfile.cmake | 1 + .../respect-user-selected-compiler.patch | 20 ++ ports/highs/vcpkg.json | 1 + ports/krb5/autoconf-2.72.patch | 12 + ports/krb5/portfile.cmake | 1 + ports/krb5/vcpkg.json | 2 +- ports/libtar/portfile.cmake | 22 +- ports/libtar/vcpkg.json | 10 +- ports/nettle/portfile.cmake | 234 +++++++++--------- ports/nettle/vcpkg.json | 2 +- .../fix-boost-mpl-constant-expression.patch | 14 ++ ports/qt5-location/portfile.cmake | 9 +- ports/qt5-location/vcpkg.json | 1 + ports/realm-core/fix-s2-is-pod.patch | 73 ++++++ ports/realm-core/portfile.cmake | 1 + ports/realm-core/vcpkg.json | 1 + ports/rubberband/fix-size-t.patch | 13 + ports/rubberband/portfile.cmake | 2 + ports/rubberband/vcpkg.json | 2 +- scripts/azure-pipelines/osx/README.md | 217 +++++++++------- .../azure-pipelines/osx/azure-pipelines.yml | 4 +- scripts/azure-pipelines/osx/guest-prepare.sh | 21 ++ .../azure-pipelines/osx/host-install-xcode.sh | 19 ++ .../azure-pipelines/osx/host-prepare-guest.sh | 10 + scripts/azure-pipelines/osx/host-prepare.sh | 19 ++ .../osx/host-register-guest.sh | 41 +++ scripts/azure-pipelines/osx/register-guest.sh | 18 -- scripts/azure-pipelines/osx/setup-box.sh | 17 -- scripts/azure-pipelines/osx/setup-guest.sh | 13 - scripts/ci.baseline.txt | 7 +- scripts/ci.feature.baseline.txt | 8 +- versions/baseline.json | 18 +- versions/c-/cyrus-sasl.json | 5 + versions/g-/glpk.json | 5 + versions/h-/highs.json | 5 + versions/k-/krb5.json | 5 + versions/l-/libtar.json | 5 + versions/n-/nettle.json | 5 + versions/q-/qt5-location.json | 5 + versions/r-/realm-core.json | 5 + versions/r-/rubberband.json | 5 + 46 files changed, 669 insertions(+), 371 deletions(-) create mode 100644 ports/highs/respect-user-selected-compiler.patch create mode 100644 ports/krb5/autoconf-2.72.patch create mode 100644 ports/qt5-location/fix-boost-mpl-constant-expression.patch create mode 100644 ports/realm-core/fix-s2-is-pod.patch create mode 100644 ports/rubberband/fix-size-t.patch create mode 100644 scripts/azure-pipelines/osx/guest-prepare.sh create mode 100755 scripts/azure-pipelines/osx/host-install-xcode.sh create mode 100755 scripts/azure-pipelines/osx/host-prepare-guest.sh create mode 100755 scripts/azure-pipelines/osx/host-prepare.sh create mode 100755 scripts/azure-pipelines/osx/host-register-guest.sh delete mode 100644 scripts/azure-pipelines/osx/register-guest.sh delete mode 100644 scripts/azure-pipelines/osx/setup-box.sh delete mode 100644 scripts/azure-pipelines/osx/setup-guest.sh diff --git a/ports/cyrus-sasl/portfile.cmake b/ports/cyrus-sasl/portfile.cmake index 8ae1ef085c..b1d42fbf3f 100644 --- a/ports/cyrus-sasl/portfile.cmake +++ b/ports/cyrus-sasl/portfile.cmake @@ -93,6 +93,7 @@ else() --with-dblib=lmdb --with-gss_impl=mit --disable-macos-framework + ac_cv_prog_cc_c23=no ) vcpkg_make_install() endif() diff --git a/ports/cyrus-sasl/vcpkg.json b/ports/cyrus-sasl/vcpkg.json index 0b1c23df00..702ece3db8 100644 --- a/ports/cyrus-sasl/vcpkg.json +++ b/ports/cyrus-sasl/vcpkg.json @@ -1,7 +1,7 @@ { "name": "cyrus-sasl", "version": "2.1.28", - "port-version": 4, + "port-version": 5, "description": "Cyrus SASL is an implementation of SASL that makes it easy for application developers to integrate authentication mechanisms into their application in a generic way.", "homepage": "https://github.com/cyrusimap/cyrus-sasl", "license": null, diff --git a/ports/glpk/portfile.cmake b/ports/glpk/portfile.cmake index 9fd4a88230..e87950d4b6 100644 --- a/ports/glpk/portfile.cmake +++ b/ports/glpk/portfile.cmake @@ -1,67 +1,67 @@ -set(DISTFILE_SHA512_HASH 4e92195fa058c707146f2690f3a38b46c33add948c852f67659ca005a6aa980bbf97be96528b0f8391690facb880ac2126cd60198c6c175e7f3f06cca7e29f9d) - -vcpkg_download_distfile( - DISTFILE - FILENAME "glpk.tar.gz" - URLS "https://ftpmirror.gnu.org/gnu/glpk/glpk-${VERSION}.tar.gz" "https://ftp.gnu.org/gnu/glpk/glpk-${VERSION}.tar.gz" - SHA512 ${DISTFILE_SHA512_HASH} -) - -vcpkg_extract_source_archive( - SOURCE_PATH - ARCHIVE "${DISTFILE}" - PATCHES - configure.ac.patch -) - -vcpkg_list(SET CONFIGURE_OPTIONS) -if("dl" IN_LIST FEATURES) - vcpkg_list(APPEND CONFIGURE_OPTIONS --enable-dl=dlfcn "LIBS=-ldl \$LIBS") -else() - vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-dl) -endif() - -if("gmp" IN_LIST FEATURES) - vcpkg_list(APPEND CONFIGURE_OPTIONS --with-gmp) - string(APPEND requires " gmp") -else() - vcpkg_list(APPEND CONFIGURE_OPTIONS --without-gmp) -endif() - -if("mysql" IN_LIST FEATURES) - vcpkg_list(APPEND CONFIGURE_OPTIONS - --enable-mysql - "CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include/mysql \$CPPFLAGS" - ) - string(APPEND libs " -lmysql") -else() - vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-mysql) -endif() - -if("odbc" IN_LIST FEATURES) - vcpkg_list(APPEND CONFIGURE_OPTIONS --enable-odbc) -else() - vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-odbc) -endif() - -vcpkg_configure_make( - SOURCE_PATH "${SOURCE_PATH}" - AUTOCONFIG - NO_ADDITIONAL_PATHS - DETERMINE_BUILD_TRIPLET - OPTIONS - ${CONFIGURE_OPTIONS} -) - -vcpkg_install_make() -set(libname glpk) -configure_file("${CMAKE_CURRENT_LIST_DIR}/glpk.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/glpk.pc" @ONLY) -if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/glpk.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/glpk.pc" @ONLY) -endif() -vcpkg_fixup_pkgconfig() - -vcpkg_copy_pdbs() -vcpkg_copy_tools(TOOL_NAMES glpsol AUTO_CLEAN) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") +set(DISTFILE_SHA512_HASH 4e92195fa058c707146f2690f3a38b46c33add948c852f67659ca005a6aa980bbf97be96528b0f8391690facb880ac2126cd60198c6c175e7f3f06cca7e29f9d) + +vcpkg_download_distfile( + DISTFILE + FILENAME "glpk.tar.gz" + URLS "https://ftpmirror.gnu.org/gnu/glpk/glpk-${VERSION}.tar.gz" "https://ftp.gnu.org/gnu/glpk/glpk-${VERSION}.tar.gz" + SHA512 ${DISTFILE_SHA512_HASH} +) + +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE "${DISTFILE}" + PATCHES + configure.ac.patch +) + +vcpkg_list(SET CONFIGURE_OPTIONS ac_cv_prog_cc_c23=no) +if("dl" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS --enable-dl=dlfcn "LIBS=-ldl \$LIBS") +else() + vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-dl) +endif() + +if("gmp" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS --with-gmp) + string(APPEND requires " gmp") +else() + vcpkg_list(APPEND CONFIGURE_OPTIONS --without-gmp) +endif() + +if("mysql" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS + --enable-mysql + "CPPFLAGS=-I${CURRENT_INSTALLED_DIR}/include/mysql \$CPPFLAGS" + ) + string(APPEND libs " -lmysql") +else() + vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-mysql) +endif() + +if("odbc" IN_LIST FEATURES) + vcpkg_list(APPEND CONFIGURE_OPTIONS --enable-odbc) +else() + vcpkg_list(APPEND CONFIGURE_OPTIONS --disable-odbc) +endif() + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + AUTOCONFIG + NO_ADDITIONAL_PATHS + DETERMINE_BUILD_TRIPLET + OPTIONS + ${CONFIGURE_OPTIONS} +) + +vcpkg_install_make() +set(libname glpk) +configure_file("${CMAKE_CURRENT_LIST_DIR}/glpk.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/glpk.pc" @ONLY) +if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/glpk.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/glpk.pc" @ONLY) +endif() +vcpkg_fixup_pkgconfig() + +vcpkg_copy_pdbs() +vcpkg_copy_tools(TOOL_NAMES glpsol AUTO_CLEAN) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/glpk/vcpkg.json b/ports/glpk/vcpkg.json index 58e820d435..cea4e33c1d 100644 --- a/ports/glpk/vcpkg.json +++ b/ports/glpk/vcpkg.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name": "glpk", "version": "5.0", - "port-version": 3, + "port-version": 4, "maintainers": "Fabio A. Correa Duran", "description": [ "The GNU Linear Programming Kit (GLPK) solves large-scale linear programming (LP), mixed integer programming (MIP), and related problems.", diff --git a/ports/highs/fix-pkgconfig-zlib.patch b/ports/highs/fix-pkgconfig-zlib.patch index c60a340161..48367a26ef 100644 --- a/ports/highs/fix-pkgconfig-zlib.patch +++ b/ports/highs/fix-pkgconfig-zlib.patch @@ -1,11 +1,12 @@ -diff --git a/highs.pc.in b/highs.pc.in -index 2ac74f4..fbd153d 100644 ---- a/highs.pc.in -+++ b/highs.pc.in -@@ -7,5 +7,5 @@ URL: https://github.com/ERGO-Code/HiGHS - Version: @HIGHS_VERSION_MAJOR@.@HIGHS_VERSION_MINOR@.@HIGHS_VERSION_PATCH@ - Libs: -L${libdir} -lhighs --#TODO Libs.private (when HiGHS lib is build as static lib) - Cflags: -I${includedir} - Requires: -+Requires.private: zlib +diff --git a/highs.pc.in b/highs.pc.in +index 4c00116..792ec17 100644 +--- a/highs.pc.in ++++ b/highs.pc.in +@@ -7,6 +7,6 @@ Description: Linear Optimization Software + URL: https://github.com/ERGO-Code/HiGHS + Version: @HIGHS_VERSION_MAJOR@.@HIGHS_VERSION_MINOR@.@HIGHS_VERSION_PATCH@ + Libs: -L${libdir} -lhighs +-#TODO Libs.private (when HiGHS lib is build as static lib) + Cflags: -I${includedir} + Requires: ++Requires.private: zlib diff --git a/ports/highs/portfile.cmake b/ports/highs/portfile.cmake index 4d76fe4d14..1f28f3ed56 100644 --- a/ports/highs/portfile.cmake +++ b/ports/highs/portfile.cmake @@ -5,6 +5,7 @@ vcpkg_from_github( SHA512 0ea407784bc6c8e31c72fbcdcab201e8a7cc7debbca57504e74177658208151e90637e5fb1e0cdf1b1ae6b677e7865e77771ec025b17f8223f74d00fc6420546 HEAD_REF master PATCHES + respect-user-selected-compiler.patch fix-pkgconfig-zlib.patch ) diff --git a/ports/highs/respect-user-selected-compiler.patch b/ports/highs/respect-user-selected-compiler.patch new file mode 100644 index 0000000000..2b0b087092 --- /dev/null +++ b/ports/highs/respect-user-selected-compiler.patch @@ -0,0 +1,20 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 79ef1f0..6790d5c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,15 +6,6 @@ + # policies up to CMake 3.27 + cmake_minimum_required(VERSION 3.15...3.27) + +-# set preference for clang compiler and intel compiler over gcc and other compilers +-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-C OPTIONAL) +-include(Platform/${CMAKE_SYSTEM_NAME}-C OPTIONAL) +-set(CMAKE_C_COMPILER_NAMES clang gcc icx cc ${CMAKE_C_COMPILER_NAMES}) +- +-include(Platform/${CMAKE_SYSTEM_NAME}-Determine-CXX OPTIONAL) +-include(Platform/${CMAKE_SYSTEM_NAME}-CXX OPTIONAL) +-set(CMAKE_CXX_COMPILER_NAMES clang++ g++ icpx c++ ${CMAKE_CXX_COMPILER_NAMES}) +- + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + + option(HIGHS_VCPKG "Vcpkg integration: " OFF) diff --git a/ports/highs/vcpkg.json b/ports/highs/vcpkg.json index 8b21ac0d8c..bb60942c9e 100644 --- a/ports/highs/vcpkg.json +++ b/ports/highs/vcpkg.json @@ -1,6 +1,7 @@ { "name": "highs", "version": "1.15.1", + "port-version": 1, "description": "High performance library to solve linear, mixed-integer, and convex quadratic optimization problems.", "homepage": "https://highs.dev", "license": "MIT AND BSD-3-Clause AND Zlib", diff --git a/ports/krb5/autoconf-2.72.patch b/ports/krb5/autoconf-2.72.patch new file mode 100644 index 0000000000..98fa834216 --- /dev/null +++ b/ports/krb5/autoconf-2.72.patch @@ -0,0 +1,12 @@ +diff --git a/src/configure.ac b/src/configure.ac +index 4325fae..2865a26 100644 +--- a/src/configure.ac ++++ b/src/configure.ac +@@ -1,4 +1,6 @@ +-K5_AC_INIT([aclocal.m4]) ++AC_INIT(Kerberos 5, K5_VERSION, K5_BUGADDR, krb5) ++AC_CONFIG_SRCDIR([aclocal.m4]) ++build_dynobj=no + + # If $runstatedir isn't set by autoconf (<2.70), set it manually. + if test x"$runstatedir" = x; then diff --git a/ports/krb5/portfile.cmake b/ports/krb5/portfile.cmake index f789718ad1..d992464825 100644 --- a/ports/krb5/portfile.cmake +++ b/ports/krb5/portfile.cmake @@ -7,6 +7,7 @@ vcpkg_from_github( PATCHES static-deps.diff define-des-zeroblock.diff + autoconf-2.72.patch # https://github.com/krb5/krb5/commit/b7290e0cab5b7e39cd4aa7c098beb18a886d4a1d ) if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) diff --git a/ports/krb5/vcpkg.json b/ports/krb5/vcpkg.json index 74988fefee..051011392c 100644 --- a/ports/krb5/vcpkg.json +++ b/ports/krb5/vcpkg.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name": "krb5", "version": "1.22.2", - "port-version": 1, + "port-version": 2, "description": [ "Kerberos is a network authentication protocol.", "It is designed to provide strong authentication for client/server applications by using secret-key cryptography.", diff --git a/ports/libtar/portfile.cmake b/ports/libtar/portfile.cmake index cf344c37a0..a0820ce64f 100644 --- a/ports/libtar/portfile.cmake +++ b/ports/libtar/portfile.cmake @@ -4,13 +4,25 @@ vcpkg_download_distfile(ARCHIVE SHA512 907d98ea2bd2e2a43604243fc7fd6c252aa02c3fdd79e21f2a784adf821cb18107e6e23a25ad0c64329fbe84e859da5c807272759a8bcd85a37b929c80af4a13 ) -vcpkg_extract_source_archive(SOURCE_PATH ARCHIVE "${ARCHIVE}") - -vcpkg_configure_make( - SOURCE_PATH "${SOURCE_PATH}" +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE "${ARCHIVE}" ) -vcpkg_install_make() +vcpkg_make_configure( + SOURCE_PATH "${SOURCE_PATH}" + AUTORECONF + OPTIONS + ac_cv_prog_cc_c23=no +) + +set(install_options) +if(VCPKG_CROSSCOMPILING) + # Avoid using the host strip tool on cross-compiled target binaries. + list(APPEND install_options "INSTALL_PROGRAM='$(INSTALL)'") +endif() + +vcpkg_make_install(OPTIONS ${install_options}) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share") diff --git a/ports/libtar/vcpkg.json b/ports/libtar/vcpkg.json index 8b797b35b5..7215c8f2c9 100644 --- a/ports/libtar/vcpkg.json +++ b/ports/libtar/vcpkg.json @@ -1,8 +1,14 @@ { "name": "libtar", "version": "1.2.20", - "port-version": 1, + "port-version": 2, "description": "libtar - C library for manipulating tar files", "homepage": "https://repo.or.cz/libtar.git", - "supports": "!windows" + "supports": "!windows", + "dependencies": [ + { + "name": "vcpkg-make", + "host": true + } + ] } diff --git a/ports/nettle/portfile.cmake b/ports/nettle/portfile.cmake index 26ff533b3d..899a4433f8 100644 --- a/ports/nettle/portfile.cmake +++ b/ports/nettle/portfile.cmake @@ -1,117 +1,117 @@ -vcpkg_from_gitlab( - GITLAB_URL https://git.lysator.liu.se/ - OUT_SOURCE_PATH SOURCE_PATH - REPO nettle/nettle - REF nettle_3.10_release_20240616 - SHA512 8767e4f0c34ce76ead5d66f06f97e6b184d439fa94f848ee440196fafde3da2ea7cfc54f9bd8f9ab6a99929b0d14b3d5a28857e05d954551e94b619598c17659 - HEAD_REF master - PATCHES - subdirs.patch - fix-libdir.patch - compile.patch - host-tools.patch - ccas.patch - msvc-support.patch -) - -vcpkg_cmake_get_vars(cmake_vars_file) -include("${cmake_vars_file}") - -# Maintainer switch: Temporarily set this to 1 to re-generate the lists -# of exported symbols. This is needed when the version is bumped. -set(GENERATE_SYMBOLS 0) -if(GENERATE_SYMBOLS) - if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") - vcpkg_check_linkage(ONLY_STATIC_LIBRARY) - else() - set(GENERATE_SYMBOLS 0) - endif() -endif() - -vcpkg_list(SET OPTIONS) -if("tools" IN_LIST FEATURES) - vcpkg_list(APPEND OPTIONS --enable-tools) -endif() - -# As in gmp -set(disable_assembly OFF) -set(ccas "") -set(asmflags "") -if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") - vcpkg_list(APPEND OPTIONS ac_cv_func_memset=yes) - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - string(APPEND asmflags " --target=i686-pc-windows-msvc -m32") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - string(APPEND asmflags " --target=x86_64-pc-windows-msvc") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - string(APPEND asmflags " --target=arm64-pc-windows-msvc") - else() - set(disable_assembly ON) - endif() - if(NOT disable_assembly) - vcpkg_find_acquire_program(CLANG) - set(ccas "${CLANG}") - endif() -else() - set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}") -endif() - -if(disable_assembly) - vcpkg_list(APPEND OPTIONS "--enable-assembler=no") -elseif(ccas) - cmake_path(GET ccas PARENT_PATH ccas_dir) - vcpkg_add_to_path("${ccas_dir}") - cmake_path(GET ccas FILENAME ccas_command) - vcpkg_list(APPEND OPTIONS "CCAS=${ccas_command}" "ASM_FLAGS=${asmflags}") -endif() - -if(VCPKG_CROSSCOMPILING) - set(ENV{HOST_TOOLS_PREFIX} "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}") -endif() - -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - file(GLOB def_files "${CMAKE_CURRENT_LIST_DIR}/*.def") - file(COPY ${def_files} DESTINATION "${SOURCE_PATH}") - vcpkg_list(APPEND OPTIONS "MSVC_TARGET=${VCPKG_TARGET_ARCHITECTURE}") -else() - vcpkg_list(APPEND OPTIONS "MSVC_TARGET=no") -endif() - -vcpkg_configure_make( - SOURCE_PATH "${SOURCE_PATH}" - AUTOCONFIG - OPTIONS - ${OPTIONS} - --disable-documentation - --disable-openssl - "gmp_cv_prog_exeext_for_build=${VCPKG_HOST_EXECUTABLE_SUFFIX}" - OPTIONS_DEBUG - --disable-tools -) -vcpkg_install_make() -vcpkg_fixup_pkgconfig() - -if(NOT VCPKG_CROSSCOMPILING) - set(tool_names desdata eccdata) # aes gcm sha twofish? - list(TRANSFORM tool_names PREPEND "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/") - list(TRANSFORM tool_names APPEND "${VCPKG_HOST_EXECUTABLE_SUFFIX}") - file(COPY ${tool_names} DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") - vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") -endif() - -if("tools" IN_LIST FEATURES) - vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") -endif() - -file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/debug/share" - "${CURRENT_PACKAGES_DIR}/debug/include" -) - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYINGv3") - -if(GENERATE_SYMBOLS) - include("${CMAKE_CURRENT_LIST_DIR}/lib-to-def.cmake") - lib_to_def(BASENAME nettle REGEX "_*nettle_") - lib_to_def(BASENAME hogweed REGEX "_*nettle_") -endif() +vcpkg_from_gitlab( + GITLAB_URL https://git.lysator.liu.se/ + OUT_SOURCE_PATH SOURCE_PATH + REPO nettle/nettle + REF nettle_3.10_release_20240616 + SHA512 8767e4f0c34ce76ead5d66f06f97e6b184d439fa94f848ee440196fafde3da2ea7cfc54f9bd8f9ab6a99929b0d14b3d5a28857e05d954551e94b619598c17659 + HEAD_REF master + PATCHES + subdirs.patch + fix-libdir.patch + compile.patch + host-tools.patch + ccas.patch + msvc-support.patch +) + +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") + +# Maintainer switch: Temporarily set this to 1 to re-generate the lists +# of exported symbols. This is needed when the version is bumped. +set(GENERATE_SYMBOLS 0) +if(GENERATE_SYMBOLS) + if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + else() + set(GENERATE_SYMBOLS 0) + endif() +endif() + +vcpkg_list(SET OPTIONS ac_cv_prog_cc_c23=no) +if("tools" IN_LIST FEATURES) + vcpkg_list(APPEND OPTIONS --enable-tools) +endif() + +# As in gmp +set(disable_assembly OFF) +set(ccas "") +set(asmflags "") +if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") + vcpkg_list(APPEND OPTIONS ac_cv_func_memset=yes) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + string(APPEND asmflags " --target=i686-pc-windows-msvc -m32") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + string(APPEND asmflags " --target=x86_64-pc-windows-msvc") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + string(APPEND asmflags " --target=arm64-pc-windows-msvc") + else() + set(disable_assembly ON) + endif() + if(NOT disable_assembly) + vcpkg_find_acquire_program(CLANG) + set(ccas "${CLANG}") + endif() +else() + set(ccas "${VCPKG_DETECTED_CMAKE_C_COMPILER}") +endif() + +if(disable_assembly) + vcpkg_list(APPEND OPTIONS "--enable-assembler=no") +elseif(ccas) + cmake_path(GET ccas PARENT_PATH ccas_dir) + vcpkg_add_to_path("${ccas_dir}") + cmake_path(GET ccas FILENAME ccas_command) + vcpkg_list(APPEND OPTIONS "CCAS=${ccas_command}" "ASM_FLAGS=${asmflags}") +endif() + +if(VCPKG_CROSSCOMPILING) + set(ENV{HOST_TOOLS_PREFIX} "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}") +endif() + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + file(GLOB def_files "${CMAKE_CURRENT_LIST_DIR}/*.def") + file(COPY ${def_files} DESTINATION "${SOURCE_PATH}") + vcpkg_list(APPEND OPTIONS "MSVC_TARGET=${VCPKG_TARGET_ARCHITECTURE}") +else() + vcpkg_list(APPEND OPTIONS "MSVC_TARGET=no") +endif() + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + AUTOCONFIG + OPTIONS + ${OPTIONS} + --disable-documentation + --disable-openssl + "gmp_cv_prog_exeext_for_build=${VCPKG_HOST_EXECUTABLE_SUFFIX}" + OPTIONS_DEBUG + --disable-tools +) +vcpkg_install_make() +vcpkg_fixup_pkgconfig() + +if(NOT VCPKG_CROSSCOMPILING) + set(tool_names desdata eccdata) # aes gcm sha twofish? + list(TRANSFORM tool_names PREPEND "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/") + list(TRANSFORM tool_names APPEND "${VCPKG_HOST_EXECUTABLE_SUFFIX}") + file(COPY ${tool_names} DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") + vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") +endif() + +if("tools" IN_LIST FEATURES) + vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") +endif() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/share" + "${CURRENT_PACKAGES_DIR}/debug/include" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYINGv3") + +if(GENERATE_SYMBOLS) + include("${CMAKE_CURRENT_LIST_DIR}/lib-to-def.cmake") + lib_to_def(BASENAME nettle REGEX "_*nettle_") + lib_to_def(BASENAME hogweed REGEX "_*nettle_") +endif() diff --git a/ports/nettle/vcpkg.json b/ports/nettle/vcpkg.json index 4ae4e73f80..f857469261 100644 --- a/ports/nettle/vcpkg.json +++ b/ports/nettle/vcpkg.json @@ -1,7 +1,7 @@ { "name": "nettle", "version": "3.10", - "port-version": 1, + "port-version": 2, "description": "Nettle is a low-level cryptographic library that is designed to fit easily in more or less any context: In crypto toolkits for object-oriented languages (C++, Python, Pike, ...), in applications like LSH or GNUPG, or even in kernel space.", "homepage": "https://git.lysator.liu.se/nettle/nettle", "license": null, diff --git a/ports/qt5-location/fix-boost-mpl-constant-expression.patch b/ports/qt5-location/fix-boost-mpl-constant-expression.patch new file mode 100644 index 0000000000..c0f621b9d0 --- /dev/null +++ b/ports/qt5-location/fix-boost-mpl-constant-expression.patch @@ -0,0 +1,14 @@ +diff --git a/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp b/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp +index 6bc05f7..f4e9acb 100644 +--- a/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp ++++ b/src/3rdparty/mapbox-gl-native/deps/boost/1.65.1/include/boost/mpl/aux_/integral_wrapper.hpp +@@ -56,7 +56,8 @@ struct AUX_WRAPPER_NAME + // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC), + // while some other don't like 'value + 1' (Borland), and some don't like + // either +-#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) ++#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \ ++ || __cplusplus >= 201103L + private: + BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1))); + BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1))); diff --git a/ports/qt5-location/portfile.cmake b/ports/qt5-location/portfile.cmake index a708f81ed7..92a7eaae75 100644 --- a/ports/qt5-location/portfile.cmake +++ b/ports/qt5-location/portfile.cmake @@ -1,3 +1,10 @@ message(STATUS "${PORT} has a spurious failure in which it is unable to create a parent directory! Just retry.") include(${CURRENT_INSTALLED_DIR}/share/qt5/qt_port_functions.cmake) -qt_submodule_installation(PATCHES missing-include.patch disable-enum-warning.patch add-stdint.diff add-float-cast.diff) +qt_submodule_installation( + PATCHES + missing-include.patch + disable-enum-warning.patch + add-stdint.diff + add-float-cast.diff + fix-boost-mpl-constant-expression.patch +) diff --git a/ports/qt5-location/vcpkg.json b/ports/qt5-location/vcpkg.json index a61ef66ca0..e2838c5d29 100644 --- a/ports/qt5-location/vcpkg.json +++ b/ports/qt5-location/vcpkg.json @@ -1,6 +1,7 @@ { "name": "qt5-location", "version": "5.15.19", + "port-version": 1, "description": "The Qt Location API helps you create viable mapping solutions using the data available from some of the popular location services.", "license": null, "dependencies": [ diff --git a/ports/realm-core/fix-s2-is-pod.patch b/ports/realm-core/fix-s2-is-pod.patch new file mode 100644 index 0000000000..2ee3cf8791 --- /dev/null +++ b/ports/realm-core/fix-s2-is-pod.patch @@ -0,0 +1,73 @@ +diff --git a/src/external/s2/base/macros.h b/src/external/s2/base/macros.h +index eaf28fe..d556332 100644 +--- a/src/external/s2/base/macros.h ++++ b/src/external/s2/base/macros.h +@@ -133,62 +133,13 @@ char (&ArraySizeHelper(const T (&array)[N]))[N]; + #define AS_STRING(x) AS_STRING_INTERNAL(x) + #define AS_STRING_INTERNAL(x) #x + +- +-// One of the type traits, is_pod, makes it possible to query whether +-// a type is a POD type. It is impossible for type_traits.h to get +-// this right without compiler support, so it fails conservatively. It +-// knows that fundamental types and pointers are PODs, but it can't +-// tell whether user classes are PODs. The DECLARE_POD macro is used +-// to inform the type traits library that a user class is a POD. +-// +-// Implementation note: the typedef at the end is just to make it legal +-// to put a semicolon after DECLARE_POD(foo). +-// +-// The only reason this matters is that a few parts of the google3 +-// code base either require their template arguments to be PODs +-// (e.g. compact_vector) or are able to use a more efficient code path +-// when their template arguments are PODs (e.g. sparse_hash_map). You +-// should use DECLARE_POD if you have written a class that you intend +-// to use with one of those components, and if you know that your +-// class satisfies all of the conditions to be a POD type. +-// +-// So what's a POD? The C++ standard (clause 9 paragraph 4) gives a +-// full definition, but a good rule of thumb is that a struct is a POD +-// ("plain old data") if it doesn't use any of the features that make +-// C++ different from C. A POD struct can't have constructors, +-// destructors, assignment operators, base classes, private or +-// protected members, or virtual functions, and all of its member +-// variables must themselves be PODs. +- +-#define DECLARE_POD(TypeName) \ +-namespace std { \ +-template<> struct is_pod : true_type { }; \ +-} \ +-typedef int Dummy_Type_For_DECLARE_POD \ +- +-// We once needed a different technique to assert that a nested class +-// is a POD. This is no longer necessary, and DECLARE_NESTED_POD is +-// just a synonym for DECLARE_POD. We continue to provide +-// DECLARE_NESTED_POD only so we don't have to change client +-// code. Regardless of whether you use DECLARE_POD or +-// DECLARE_NESTED_POD: use it after the outer class. Using it within a +-// class definition will give a compiler error. ++// These macros are a mess of undefined behavior that specialize std::is_pod to ++// pretend that non-POD types are POD, which is both invalid and would do very ++// broken things. Fortunately s2 internally does not actually rely on this and ++// we can make them no-ops. ++#define DECLARE_POD(TypeName) + #define DECLARE_NESTED_POD(TypeName) DECLARE_POD(TypeName) +- +-// Declare that TemplateName is a POD whenever T is +-#define PROPAGATE_POD_FROM_TEMPLATE_ARGUMENT(TemplateName) \ +-namespace std { \ +-template struct is_pod > : std::is_trivial { }; \ +-} \ +-typedef int Dummy_Type_For_PROPAGATE_POD_FROM_TEMPLATE_ARGUMENT +- +-// Macro that does nothing if TypeName is a POD, and gives a compiler +-// error if TypeName is a non-POD. You should put a descriptive +-// comment right next to the macro call so that people can tell what +-// the compiler error is about. +-// +-// Implementation note: this works by taking the size of a type that's +-// complete when TypeName is a POD and incomplete otherwise. ++#define PROPAGATE_POD_FROM_TEMPLATE_ARGUMENT(TemplateName) + + template struct ERROR_TYPE_MUST_BE_POD; + template <> struct ERROR_TYPE_MUST_BE_POD { }; diff --git a/ports/realm-core/portfile.cmake b/ports/realm-core/portfile.cmake index 4ac33ab1dd..2363b94a61 100644 --- a/ports/realm-core/portfile.cmake +++ b/ports/realm-core/portfile.cmake @@ -8,6 +8,7 @@ vcpkg_from_github( UWP_index_set.patch fix-zlib.patch cstdlib.diff + fix-s2-is-pod.patch # Based on https://github.com/realm/realm-core/commit/d8f21f9b98cae76e8dc235558c2f71ea27997f10 ) vcpkg_list(SET REALMCORE_CMAKE_OPTIONS) diff --git a/ports/realm-core/vcpkg.json b/ports/realm-core/vcpkg.json index cd9ae149c3..c00b2383e2 100644 --- a/ports/realm-core/vcpkg.json +++ b/ports/realm-core/vcpkg.json @@ -1,6 +1,7 @@ { "name": "realm-core", "version": "14.14.0", + "port-version": 1, "description": "Realm is a mobile database that runs directly inside phones, tablets or wearables.", "homepage": "https://github.com/realm/realm-core", "license": null, diff --git a/ports/rubberband/fix-size-t.patch b/ports/rubberband/fix-size-t.patch new file mode 100644 index 0000000000..eb3c42544d --- /dev/null +++ b/ports/rubberband/fix-size-t.patch @@ -0,0 +1,13 @@ +diff --git a/src/common/mathmisc.h b/src/common/mathmisc.h +index d8bcc14..eece584 100644 +--- a/src/common/mathmisc.h ++++ b/src/common/mathmisc.h +@@ -24,6 +24,8 @@ + #ifndef RUBBERBAND_MATHMISC_H + #define RUBBERBAND_MATHMISC_H + ++#include ++ + #include "sysutils.h" + + #ifndef M_PI diff --git a/ports/rubberband/portfile.cmake b/ports/rubberband/portfile.cmake index c9ae1b283e..7c5d5ae3b9 100644 --- a/ports/rubberband/portfile.cmake +++ b/ports/rubberband/portfile.cmake @@ -4,6 +4,8 @@ vcpkg_from_github( REF "v${VERSION}" SHA512 f581e900a71f78fde3361d2bed2fe165952c2ca087168c5f4e4994586bd832267eea58e0662a74b6a7430bc361fe80b5307b2ee6bf631a3561a8cba86e1cd3f2 HEAD_REF default + PATCHES + fix-size-t.patch # https://github.com/breakfastquay/rubberband/pull/131 ) diff --git a/ports/rubberband/vcpkg.json b/ports/rubberband/vcpkg.json index a543f1a566..82cd615735 100644 --- a/ports/rubberband/vcpkg.json +++ b/ports/rubberband/vcpkg.json @@ -1,7 +1,7 @@ { "name": "rubberband", "version": "4.0.0", - "port-version": 1, + "port-version": 2, "description": "A high quality software library for audio time-stretching and pitch-shifting.", "homepage": "https://www.breakfastquay.com/rubberband/", "license": "GPL-2.0-or-later", diff --git a/scripts/azure-pipelines/osx/README.md b/scripts/azure-pipelines/osx/README.md index 0193682163..9ca7012b58 100644 --- a/scripts/azure-pipelines/osx/README.md +++ b/scripts/azure-pipelines/osx/README.md @@ -1,19 +1,46 @@ -# `vcpkg-eg-mac` VMs - This is the checklist for what the vcpkg team does when updating the macOS machines in the pool. +The hosts do not accept incoming SSH connections. Perform all host-side work in a terminal opened +through the KVM. Use the KVM software's "paste from clipboard" function to transfer commands and +short-lived credentials to the host. SSH commands in this document connect from the host to its +guest VM, not from a developer workstation to the host. + +Before publishing the VM update changes, update the Azure Agent URI in +`scripts/azure-pipelines/osx/guest-prepare.sh` to the current version. You can find this by going to the +agent pool, selecting "New agent", picking macOS, and copying the link. For example: +https://download.agent.dev.azure.com/agent/5.277.0/vsts-agent-osx-arm64-5.277.0.tar.gz + +Install and enable Homebrew on each host before cloning vcpkg: + +```sh +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +eval "$(/opt/homebrew/bin/brew shellenv)" +``` + +Publish the changes to a fork and branch that the hosts can access. Keep a clone of +`microsoft/vcpkg` on each host as `origin`, add the operator's fork as a separate remote, and check +out the working revision to provide the scripts used by these instructions: + +```sh +git clone https://github.com/microsoft/vcpkg ~/vcpkg +git -C ~/vcpkg remote add https://github.com//vcpkg +git -C ~/vcpkg fetch +git -C ~/vcpkg checkout --detach FETCH_HEAD +``` + +For example, BillyONeal's fork should be added as remote `BillyONeal` with URL +`https://github.com/BillyONeal/vcpkg`. Do not use `origin` for the working branch unless the changes +have already been merged into `microsoft/vcpkg`. If the working branch is updated, repeat the +`fetch` and detached `checkout` commands above on each host. + ## Creating new base images ### Prerequisites -- [ ] [macosvm](https://github.com/s-u/macosvm) allow-listed - by macOS for arm64. Note that the directory 'Parallels' is still used when using `macosvm` - just so that scripts know where to find the VM and friends. -- [ ] An Xcode .xip - you can get this from Apple's developer website, - although you'll need to sign in first: - If you are doing this from a local macos box, you can skip to the "update the macos host" step. -- [ ] An Xcode Command Line Tools installer -- [ ] PowerShell 7.x, Azure CLI, and `az login` with your Microsoft corp credentials +- [ ] The matching macOS IPSW, Xcode 26.6 `.xip`, and Xcode 26.6 Command Line Tools `.dmg` + uploaded to the `assets` container in the `vcpkgimageminting` storage account. +- [ ] PowerShell 7.x, Azure CLI, and `az login` with your Microsoft corp credentials on a workstation + that can mint SAS tokens for the storage account. ### Instructions (ARM64) @@ -21,27 +48,51 @@ This is the checklist for what the vcpkg team does when updating the macOS machi and delete one of the agents that are idle. - [ ] Go to that machine in the KVM. (Passwords are stored as secrets in the CPP_GITHUB\vcpkg\vcpkgmm-passwords key vault) - [ ] Update the macos host -- [ ] (Once only) install `macosvm` to `~` (this tarball is also backed up in our `vcpkg-image-minting` storage account). For example from a dev workstation: +- [ ] Prepare the host. This enables Homebrew, installs AzCopy if needed, and installs `macosvm` to `~`: + ```sh + ~/vcpkg/scripts/azure-pipelines/osx/host-prepare.sh ``` - ssh vcpkg@HOSTMACHINE - curl -L -o macosvm-0.2-2-arm64-darwin21.tar.gz https://github.com/s-u/macosvm/releases/download/0.2-2/macosvm-0.2-2-arm64-darwin21.tar.gz - tar xvf macosvm-0.2-2-arm64-darwin21.tar.gz - rm macosvm-0.2-2-arm64-darwin21.tar.gz - exit +- [ ] On a workstation, generate download commands with short-lived, blob-scoped credentials for + the matching IPSW, Xcode archive, and Command Line Tools installer in the `assets` container: + ```powershell + function Get-AssetDownloadCommand { + Param([Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$FileName) + $accountName = 'vcpkgimageminting' + $containerName = 'assets' + $uNow = (Get-Date).ToUniversalTime() + $start = $uNow.ToString('s') + 'Z' + $expiry = $uNow.AddHours(1).ToString('s') + 'Z' + $sas = az storage blob generate-sas --as-user --auth-mode login --account-name $accountName --container-name $containerName --name $FileName --permissions r --start $start --expiry $expiry --https-only --output tsv + return "azcopy copy `"https://vcpkgimageminting.blob.core.windows.net/assets/$($FileName)?$($sas)`" `"$FileName`"" + } + + Get-AssetDownloadCommand -FileName UniversalMac_26.6.1_25G76_Restore.ipsw + Get-AssetDownloadCommand -FileName Xcode_26.6_Apple_silicon.xip + Get-AssetDownloadCommand -FileName Command_Line_Tools_26.6_Apple_silicon.dmg ``` -- [ ] Download the matching `.ipsw` for the macOS copy to install. See https://mrmacintosh.com/apple-silicon-m1-full-macos-restore-ipsw-firmware-files-database/ ; links there to find the .ipsw. Example: - https://updates.cdn-apple.com/2026WinterFCS/fullrestores/122-28781/DCB2FF13-06CB-44C2-BCA2-DFCAF3521D46/UniversalMac_26.4.1_25E253_Restore.ipsw -- [ ] Determine the VM name using the form "vcpkg-osx--arm64", for example "vcpkg-osx-2026-01-12-arm64". -- [ ] Open a terminal and run the following commands to create the VM with vcpkg-osx-2026-01-12-arm64 and UniversalMac_26.4.1_25E253_Restore.ipsw replaced as appropriate. This must be run in the KVM as it uses a GUI: + This creates a user-delegation SAS for each blob. Each credential is read-only, HTTPS-only, and + valid for one hour. A SAS is not single-use and can be reused until it expires, so do not retain + the generated commands after the downloads finish. + If a matching IPSW has not yet been added to the container, use the + [M4 Apple Silicon IPSW firmware database](https://mrmacintosh.com/apple-silicon-m1-full-macos-restore-ipsw-firmware-files-database/) + to locate it and upload it first. +- [ ] In the host's KVM terminal, change to `~`, then use the KVM software's "paste from + clipboard" function to paste and run each generated command: + ```sh + cd ~ + # Paste and run the three azcopy commands generated on the workstation. ``` - mkdir -p ~/Parallels/vcpkg-osx-2026-01-12-arm64 - cd ~/Parallels/vcpkg-osx-2026-01-12-arm64 - ~/macosvm --disk disk.img,size=500g --aux aux.img -c 8 -r 12g --restore ~/UniversalMac_26.4.1_25E253_Restore.ipsw ./vm.json +- [ ] Determine the VM directory name using the form "vcpkg-osx-YYYY-MM-DD-arm64", for example "vcpkg-osx-2026-08-07-arm64". +- [ ] Open a terminal and run the following commands to create the VM with vcpkg-osx-YYYY-MM-DD-arm64 and UniversalMac_26.6.1_25G76_Restore.ipsw replaced as appropriate. This must be run in the KVM as it uses a GUI: + ``` + mkdir -p ~/vcpkg-osx-YYYY-MM-DD-arm64 + cd ~/vcpkg-osx-YYYY-MM-DD-arm64 + ~/macosvm --disk disk.img,size=500g,sync=none,cache=cached --aux aux.img -c 10 -r 18g --restore ~/UniversalMac_26.6.1_25G76_Restore.ipsw ./vm.json ~/macosvm -g ./vm.json ``` - [ ] Follow prompts as you would on real hardware. * Set up as new. - * Account name: vcpkg + * Account name: builduser * A very similar password * Do not allow computer account password to be reset with your Apple Account. * Apple ID: 'Set Up Later' / Skip @@ -52,38 +103,32 @@ This is the checklist for what the vcpkg team does when updating the macOS machi - [ ] Set the desktop wallpaper to a fixed color from Settings -> Wallpaper . (This makes the KVM a lot easier to use :) ) - [ ] Disable automatic updates in the VM: Settings -> General -> Automatic Updates -> Disable them all - [ ] Enable remote login in the VM: Settings -> General -> Sharing -> Remote Login -- [ ] Set the vcpkg user to be able to use sudo without a password, and install Xcode. For example from a dev workstation: - ``` - scp path/to/Xcode.xip vcpkg@HOSTMACHINE:/Users/vcpkg/Xcode.xip - ssh vcpkg@HOSTMACHINE - rm ~/.ssh/known_hosts - scp Xcode.xip vcpkg@vcpkgs-Virtual-Machine.local:/Users/vcpkg/Xcode.xip - ssh vcpkg@vcpkgs-Virtual-Machine.local - printf 'vcpkg\tALL=(ALL)\tNOPASSWD:\tALL\n' | sudo tee -a '/etc/sudoers.d/vcpkg' - sudo chmod 0440 '/etc/sudoers.d/vcpkg' - sudo mdutil -ad - xip --expand Xcode.xip - sudo mv Xcode.app /Applications/Xcode.app - rm Xcode.xip - exit +- [ ] Install Xcode from the host's vcpkg clone. This prompts for the guest password to install an + SSH key and enable passwordless sudo, then transfers and expands Xcode: + ```sh + cd ~/vcpkg/scripts/azure-pipelines/osx + ./host-install-xcode.sh ``` - [ ] Open Xcode from Applications in the guest GUI. Uncheck the "code completion model" and accept the EULA. -- [ ] Update the Azure Agent URI in setup-box.sh to the current version. You can find this by going to the agent pool, selecting "New agent", picking macOS, and copying the link. For example https://download.agent.dev.azure.com/agent/4.266.2/vsts-agent-osx-arm64-4.266.2.tar.gz -- [ ] Copy setup-box.sh and the xcode installer renamed to 'clt.dmg' to the host. For example from a dev workstation: - ``` - scp ./setup-guest.sh vcpkg@HOSTMACHINE:/Users/vcpkg - scp ./setup-box.sh vcpkg@HOSTMACHINE:/Users/vcpkg - scp path/to/console/tools.dmg vcpkg@HOSTMACHINE:/Users/vcpkg/clt.dmg - ssh vcpkg@HOSTMACHINE - chmod +x setup-guest.sh - ./setup-guest.sh - rm setup-guest.sh - rm setup-box.sh - rm clt.dmg - exit +- [ ] After completing the Xcode GUI step, run the guest preparation script. It installs the Command + Line Tools, build dependencies, and the Azure Pipelines agent: + ```sh + cd ~/vcpkg/scripts/azure-pipelines/osx + ./host-prepare-guest.sh ``` - [ ] Shut down the VM cleanly. -- [ ] Package the VM into a tarball and upload it to blob storage. From a dev workstation, get the azcopy command to do the upload with: +- [ ] Delete the temporary installation assets from the host: + ```sh + rm ~/UniversalMac_26.6.1_25G76_Restore.ipsw \ + ~/Xcode_26.6_Apple_silicon.xip \ + ~/Command_Line_Tools_26.6_Apple_silicon.dmg + ``` +- [ ] In the host's KVM terminal, package the VM into an archive: + ```sh + cd ~ + aa archive -d vcpkg-osx-YYYY-MM-DD-arm64 -o vcpkg-osx-YYYY-MM-DD-arm64.aar -enable-holes + ``` +- [ ] In PowerShell on a workstation, generate the AzCopy upload command: ```powershell function Get-AzCopyWriteCommand { Param([Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$FileName) @@ -96,18 +141,10 @@ This is the checklist for what the vcpkg team does when updating the macOS machi return "azcopy copy --check-length=false `"$($FileName)`" `"https://vcpkgimageminting.blob.core.windows.net/pvms/$($FileName)?$($sas)`"" } - Get-AzCopyWriteCommand -FileName vcpkg-osx-2026-01-12-arm64.aar + Get-AzCopyWriteCommand -FileName vcpkg-osx-YYYY-MM-DD-arm64.aar ``` - Then: - ``` - ssh vcpkg@HOSTMACHINE - cd ~/Parallels - aa archive -d vcpkg-osx--arm64 -o vcpkg-osx--arm64.aar -enable-holes - brew install azcopy - # (The azcopy command line generated above) - exit - ``` -- [ ] Go to https://dev.azure.com/vcpkg/public/_settings/agentqueues and create a new self hosted Agent pool named `PrOsx-YYYY-MM-DD-arm64` based on the current date. Grant microsoft.vcpkg.ci and microsoft.vcpkg.pr access. +- [ ] Paste and run the generated AzCopy command in the host's KVM terminal. +- [ ] Go to https://dev.azure.com/vcpkg/public/_settings/agentqueues and create a new self hosted Agent pool named `PrOsx-YYYY-MM-DD-arm64`. Grant microsoft.vcpkg.ci and microsoft.vcpkg.pr access. - [ ] Follow the "Deploying images" steps below for each machine in the fleet. ## Deploying images @@ -119,15 +156,15 @@ Run these steps on each machine to add to the fleet. Skip steps that were done i - [ ] If this machine was used before, delete it from the pool of which it is a member from https://dev.azure.com/vcpkg/public/_settings/agentqueues - [ ] Log in to the machine using the KVM. - [ ] Check for software updates in macOS system settings -- [ ] (Once only) install `macosvm` to `~` (this tarball is also backed up in our `vcpkg-image-minting` storage account). From a developer machine: +- [ ] Ensure the host's vcpkg clone is at the published working revision, then prepare the host. This + enables Homebrew, installs AzCopy if needed, and installs `macosvm` to `~`: ```sh - ssh vcpkg@HOSTMACHINE - curl -L -o macosvm-0.2-2-arm64-darwin21.tar.gz https://github.com/s-u/macosvm/releases/download/0.2-2/macosvm-0.2-2-arm64-darwin21.tar.gz - tar xvf macosvm-0.2-2-arm64-darwin21.tar.gz - rm macosvm-0.2-2-arm64-darwin21.tar.gz - exit + git -C ~/vcpkg fetch + git -C ~/vcpkg checkout --detach FETCH_HEAD + ~/vcpkg/scripts/azure-pipelines/osx/host-prepare.sh ``` -- [ ] Skip if this is the image building machine. Mint a SAS token URI to the box to use from the Azure portal if you don't already have one, and download the VM. (Recommend running this via SSH from domain joined machine due to containing SAS tokens). From a developer machine, get the azcopy command with: +- [ ] Skip if this is the image building machine. In PowerShell on a workstation, mint a SAS token + and generate the AzCopy command with: ```powershell function Get-AzCopyReadCommand { Param([Parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][string]$FileName) @@ -140,45 +177,43 @@ Run these steps on each machine to add to the fleet. Skip steps that were done i return "azcopy copy `"https://vcpkgimageminting.blob.core.windows.net/pvms/$($FileName)?$($sas)`" `"$($FileName)`"" } - Get-AzCopyReadCommand -FileName vcpkg-osx-2026-01-12-arm64.aar + Get-AzCopyReadCommand -FileName vcpkg-osx-YYYY-MM-DD-arm64.aar ``` - Then run: + In the host's KVM terminal, use the KVM software's "paste from clipboard" function to paste and + run the generated command, then run: ```sh - ssh vcpkg@HOSTMACHINE - brew install azcopy - mkdir -p ~/Parallels - cd ~/Parallels # (The azcopy command line generated above) - aa extract -d vcpkg-osx--arm64 -i ./vcpkg-osx--arm64.aar -enable-holes - exit + aa extract -d vcpkg-osx-YYYY-MM-DD-arm64 -i ./vcpkg-osx-YYYY-MM-DD-arm64.aar -enable-holes ``` - [ ] Open a separate terminal window on the host and start the VM by running: ```sh - cd ~/Parallels/vcpkg-osx--arm64 + cd ~/vcpkg-osx-YYYY-MM-DD-arm64 ~/macosvm ./vm.json ``` -- [ ] Generate an access token to add the agent to the pool: +- [ ] In PowerShell on a workstation, generate a short-lived access token to add the agent to the + pool: ```pwsh az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken --output tsv ``` -- [ ] Copy the guest deploy script to the host, and run it with the access token/OAuth token from the `az account get-access-token` command above as the first parameter. From a developer machine pwsh: - ```pwsh - scp register-guest.sh vcpkg@HOSTMACHINE:/Users/vcpkg/register-guest.sh - ssh vcpkg@HOSTMACHINE - rm .ssh/known_hosts - chmod +x register-guest.sh - ./register-guest.sh TOKEN-GOES-HERE AGENT-NUMBER-GOES-HERE - rm register-guest.sh +- [ ] In the host's KVM terminal, use the KVM software's "paste from clipboard" function to paste + the short-lived access token into the guest deploy command from the vcpkg clone. The script + accepts a host name in the form `vcpkg-m4-NNN` case-insensitively, registers the Azure DevOps + agent as `VCPKG-M4-NNN`, and stops with an error if the host name or agent pool cannot be + determined unambiguously: + ```sh + ~/vcpkg/scripts/azure-pipelines/osx/host-register-guest.sh TOKEN-GOES-HERE ``` -- [ ] That will cleanly shut down the VM. In the KVM's terminal, relaunch the VM in ephemeral mode with: +- [ ] After successful registration, the script will cleanly shut down the VM. If registration fails, + the VM remains running for diagnosis. In the KVM's terminal, relaunch the successfully registered + VM in ephemeral mode: ```sh ~/macosvm --ephemeral ./vm.json ``` - [ ] Open a terminal window on the host and run the agent ```sh - ssh -i ~/Parallels/*/id_guest vcpkg@vcpkgs-Virtual-Machine.local + ssh -i ~/vcpkg-osx-*-arm64/id_guest builduser@buildusers-Virtual-Machine.local ~/myagent/run.sh ``` -- [ ] Check that the machine shows up in the pool, and lock the vcpkg user on the host. +- [ ] Check that the machine shows up in the pool, and lock the current user account on the host. - [ ] Lock the screen on the host. - [ ] Update the "vcpkg Macs" spreadsheet line for the machine with the new pool. diff --git a/scripts/azure-pipelines/osx/azure-pipelines.yml b/scripts/azure-pipelines/osx/azure-pipelines.yml index 650973740c..60bf2a69c5 100644 --- a/scripts/azure-pipelines/osx/azure-pipelines.yml +++ b/scripts/azure-pipelines/osx/azure-pipelines.yml @@ -19,7 +19,7 @@ jobs: - job: ${{ parameters.jobName }} condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}')) pool: - name: PrOsx-2026-01-12-arm64 + name: PrOsx-2026-08-07-arm64 workspace: clean: resources timeoutInMinutes: 2880 # 2 days @@ -64,7 +64,7 @@ jobs: - task: UseNode@1 displayName: 'Ensure Node.js is available' inputs: - version: '22.x' + version: '24.x' - bash: | cd scripts/azure-pipelines/owners-db && npm ci || true # Construct the blob base url using the secret SAS token set earlier diff --git a/scripts/azure-pipelines/osx/guest-prepare.sh b/scripts/azure-pipelines/osx/guest-prepare.sh new file mode 100644 index 0000000000..c699f6e81e --- /dev/null +++ b/scripts/azure-pipelines/osx/guest-prepare.sh @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +hdiutil attach clt.dmg -mountpoint /Volumes/setup-installer +sudo installer -pkg "/Volumes/setup-installer/Command Line Tools.pkg" -target / +hdiutil detach /Volumes/setup-installer +rm clt.dmg +sudo xcode-select -s /Applications/Xcode.app +curl -fsSL -o "$HOME/Downloads/install-homebrew.sh" https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh +NONINTERACTIVE=1 /bin/bash "$HOME/Downloads/install-homebrew.sh" +rm "$HOME/Downloads/install-homebrew.sh" +(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> "$HOME/.zprofile" +eval "$(/opt/homebrew/bin/brew shellenv)" +brew install autoconf-archive autoconf automake azcopy azure-cli bison cmake gettext gfortran gnu-sed gperf libtool meson nasm ninja pkg-config powershell +mkdir "$HOME/Data" +# NOTE: update this URI when publishing a VM update +curl -fsSL -o "$HOME/Downloads/azure-agent.tar.gz" https://download.agent.dev.azure.com/agent/5.277.0/vsts-agent-osx-arm64-5.277.0.tar.gz +mkdir "$HOME/myagent" +tar xf "$HOME/Downloads/azure-agent.tar.gz" -C "$HOME/myagent" +rm "$HOME/Downloads/azure-agent.tar.gz" +rm guest-prepare.sh diff --git a/scripts/azure-pipelines/osx/host-install-xcode.sh b/scripts/azure-pipelines/osx/host-install-xcode.sh new file mode 100755 index 0000000000..69dd332846 --- /dev/null +++ b/scripts/azure-pipelines/osx/host-install-xcode.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +VM_DIRECTORY=`ls "$HOME" | grep vcpkg-osx-` +SSH_KEY="$HOME/$VM_DIRECTORY/id_guest" +SSH_PUBLIC_KEY="$SSH_KEY.pub" + +mkdir -p "$HOME/.ssh" +touch "$HOME/.ssh/known_hosts" +ssh-keygen -R buildusers-Virtual-Machine.local -f "$HOME/.ssh/known_hosts" +ssh-keygen -P '' -f "$SSH_KEY" +echo "Enter the guest builduser password to install the SSH key" +ssh-copy-id -i "$SSH_PUBLIC_KEY" builduser@buildusers-Virtual-Machine.local +echo "Enter the guest builduser password to enable passwordless sudo" +ssh -t -i "$SSH_KEY" builduser@buildusers-Virtual-Machine.local \ + "printf 'builduser\tALL=(ALL)\tNOPASSWD:\tALL\n' | sudo tee /etc/sudoers.d/builduser >/dev/null && sudo chmod 0440 /etc/sudoers.d/builduser" +scp -i "$SSH_KEY" "$HOME/Xcode_26.6_Apple_silicon.xip" builduser@buildusers-Virtual-Machine.local:Xcode.xip +ssh -i "$SSH_KEY" builduser@buildusers-Virtual-Machine.local \ + "sudo mdutil -ad && xip --expand Xcode.xip && sudo mv Xcode.app /Applications/Xcode.app && rm Xcode.xip" \ No newline at end of file diff --git a/scripts/azure-pipelines/osx/host-prepare-guest.sh b/scripts/azure-pipelines/osx/host-prepare-guest.sh new file mode 100755 index 0000000000..29bdb161e2 --- /dev/null +++ b/scripts/azure-pipelines/osx/host-prepare-guest.sh @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +export VM_DIRECTORY=`ls "$HOME" | grep vcpkg-osx-` +export SSH_KEY="$HOME/$VM_DIRECTORY/id_guest" +ssh -i "$SSH_KEY" builduser@buildusers-Virtual-Machine.local echo hello from \`hostname\` +scp -i "$SSH_KEY" "$HOME/Command_Line_Tools_26.6_Apple_silicon.dmg" builduser@buildusers-Virtual-Machine.local:clt.dmg +scp -i "$SSH_KEY" ./guest-prepare.sh builduser@buildusers-Virtual-Machine.local:guest-prepare.sh +ssh -i "$SSH_KEY" builduser@buildusers-Virtual-Machine.local chmod +x guest-prepare.sh +ssh -i "$SSH_KEY" builduser@buildusers-Virtual-Machine.local ./guest-prepare.sh diff --git a/scripts/azure-pipelines/osx/host-prepare.sh b/scripts/azure-pipelines/osx/host-prepare.sh new file mode 100755 index 0000000000..51195bb45b --- /dev/null +++ b/scripts/azure-pipelines/osx/host-prepare.sh @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +if [ ! -x /opt/homebrew/bin/brew ]; then + echo "Homebrew must be installed on the host before running this script" >&2 + exit 1 +fi + +eval "$(/opt/homebrew/bin/brew shellenv)" +grep -Fq '/opt/homebrew/bin/brew shellenv' "$HOME/.zprofile" 2>/dev/null || \ + printf '%s\n' 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> "$HOME/.zprofile" +brew install azcopy + +if [ ! -x "$HOME/macosvm" ]; then + archive="$(mktemp)" + curl -fL -o "$archive" https://github.com/s-u/macosvm/releases/download/0.2-3/macosvm-0.2-3-darwin21.tar.gz + tar -xvf "$archive" -C "$HOME" + rm "$archive" +fi \ No newline at end of file diff --git a/scripts/azure-pipelines/osx/host-register-guest.sh b/scripts/azure-pipelines/osx/host-register-guest.sh new file mode 100755 index 0000000000..a30b325d59 --- /dev/null +++ b/scripts/azure-pipelines/osx/host-register-guest.sh @@ -0,0 +1,41 @@ +#!/bin/sh +set -e + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " >&2 + exit 1 +fi + +HOST_NAME=$(hostname) || { + echo "Failed to determine the host name" >&2 + exit 1 +} +HOST_NAME=${HOST_NAME%%.*} +HOST_NAME=$(printf '%s' "$HOST_NAME" | tr '[:lower:]' '[:upper:]') +case "$HOST_NAME" in + VCPKG-M4-[0-9][0-9][0-9]) ;; + *) + echo "Host name '$HOST_NAME' does not match required format 'VCPKG-M4-NNN'" >&2 + exit 1 + ;; +esac + +export AGENT=$HOST_NAME +echo "THIS IS AGENT: $AGENT" +export POOL=`echo "$HOME"/vcpkg-osx-*-arm64/ | sed -En 's/.+\/vcpkg-osx-([0-9]{4}-[0-9]{2}-[0-9]{2})-arm64\/$/PrOsx-\1-arm64/p'` +case "$POOL" in + PrOsx-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-arm64) ;; + *) + echo "Failed to determine exactly one agent pool from ~/vcpkg-osx-*-arm64" >&2 + exit 1 + ;; +esac +# on arm64, DNS works +export SSH_COOKIE=builduser@buildusers-Virtual-Machine.local +mkdir -p "$HOME/.ssh" +touch "$HOME/.ssh/known_hosts" +ssh-keygen -R buildusers-Virtual-Machine.local -f "$HOME/.ssh/known_hosts" +echo "POOL: $POOL" +echo "SSH_COOKIE: $SSH_COOKIE" +ssh -o "StrictHostKeyChecking=no" -i "$HOME"/vcpkg-osx-*-arm64/id_guest "$SSH_COOKIE" "\$HOME/myagent/config.sh --unattended --url https://dev.azure.com/vcpkg --work \$HOME/Data/work --auth pat --token $1 --pool $POOL --agent $AGENT --replace --acceptTeeEula" +ssh -o "StrictHostKeyChecking=no" -i "$HOME"/vcpkg-osx-*-arm64/id_guest "$SSH_COOKIE" "sudo shutdown -h now" diff --git a/scripts/azure-pipelines/osx/register-guest.sh b/scripts/azure-pipelines/osx/register-guest.sh deleted file mode 100644 index 65fe9f356a..0000000000 --- a/scripts/azure-pipelines/osx/register-guest.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -if [ -z "$1" ]; then - echo "Token missing" - exit 1 -fi -if [ -z "$2" ]; then - echo "Agent number missing" - exit 1 -fi -export AGENT=CPPMAC-ARM64-$2 -echo "THIS IS AGENT: $AGENT" -export POOL=`echo ~/Parallels/*/ | sed -nr 's/\/Users\/vcpkg\/Parallels\/vcpkg-osx-([0-9]{4}-[0-9]{2}-[0-9]{2})-arm64\/$/PrOsx-\1-arm64/p'` -# on arm64, DNS works -export SSH_COOKIE=vcpkg@vcpkgs-Virtual-Machine.local -echo "POOL: $POOL" -echo "SSH_COOKIE: $SSH_COOKIE" -ssh $SSH_COOKIE -o "StrictHostKeyChecking=no" -i ~/Parallels/*/id_guest "~/myagent/config.sh --unattended --url https://dev.azure.com/vcpkg --work ~/Data/work --auth pat --token $1 --pool $POOL --agent $AGENT --replace --acceptTeeEula" -ssh $SSH_COOKIE -o "StrictHostKeyChecking=no" -i ~/Parallels/*/id_guest "sudo shutdown -h now" diff --git a/scripts/azure-pipelines/osx/setup-box.sh b/scripts/azure-pipelines/osx/setup-box.sh deleted file mode 100644 index 1328d2d22e..0000000000 --- a/scripts/azure-pipelines/osx/setup-box.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -hdiutil attach clt.dmg -mountpoint /Volumes/setup-installer -sudo installer -pkg "/Volumes/setup-installer/Command Line Tools.pkg" -target / -hdiutil detach /Volumes/setup-installer -rm clt.dmg -sudo xcode-select -s /Applications/Xcode.app -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/vcpkg/.zprofile -eval "$(/opt/homebrew/bin/brew shellenv)" -brew install autoconf-archive autoconf automake azcopy azure-cli bison cmake gettext gfortran gnu-sed gperf gtk-doc libtool meson mono nasm ninja pkg-config powershell python-setuptools texinfo yasm -mkdir ~/Data -curl -s -o ~/Downloads/azure-agent.tar.gz https://download.agent.dev.azure.com/agent/4.266.2/vsts-agent-osx-arm64-4.266.2.tar.gz -mkdir ~/myagent -tar xf ~/Downloads/azure-agent.tar.gz -C ~/myagent -rm ~/Downloads/azure-agent.tar.gz -rm setup-box.sh diff --git a/scripts/azure-pipelines/osx/setup-guest.sh b/scripts/azure-pipelines/osx/setup-guest.sh deleted file mode 100644 index 092090f508..0000000000 --- a/scripts/azure-pipelines/osx/setup-guest.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -export VM_DIRECTORY=`ls ~/Parallels | grep vcpkg-osx` -export SSH_KEY="$HOME/Parallels/$VM_DIRECTORY/id_guest" -export SSH_PUBLIC_KEY="$SSH_KEY.pub" -ssh-keygen -P '' -f "$SSH_KEY" -echo Type 'vcpkg' and press enter -ssh-copy-id -i "$SSH_PUBLIC_KEY" vcpkg@vcpkgs-Virtual-Machine.local -echo Keys deployed -ssh vcpkg@vcpkgs-Virtual-Machine.local -i "$SSH_KEY" echo hello from \`hostname\` -scp -i "$SSH_KEY" ./clt.dmg vcpkg@vcpkgs-Virtual-Machine.local:/Users/vcpkg/clt.dmg -scp -i "$SSH_KEY" ./setup-box.sh vcpkg@vcpkgs-Virtual-Machine.local:/Users/vcpkg/setup-box.sh -ssh vcpkg@vcpkgs-Virtual-Machine.local -i "$SSH_KEY" chmod +x /Users/vcpkg/setup-box.sh -ssh vcpkg@vcpkgs-Virtual-Machine.local -i "$SSH_KEY" /Users/vcpkg/setup-box.sh diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index e3e4a35dc0..81ca5cf5b5 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -53,6 +53,7 @@ backward-cpp:arm-neon-android=fail backward-cpp:arm64-android=fail backward-cpp:x64-android=fail bddisasm:arm64-linux=fail +bde:arm64-osx=fail # https://github.com/bloomberg/bde-tools/issues/54 berkeleydb:arm-neon-android=fail berkeleydb:arm64-android=fail berkeleydb:x64-android=fail @@ -829,9 +830,6 @@ libressl:x64-windows-static-md=skip libressl:x64-windows-static=skip libressl:x64-windows=skip libressl:x86-windows=skip -libtar:arm-neon-android=fail -libtar:arm64-android=fail -libtar:arm64-linux=fail libtomcrypt:arm64-windows-static-md=fail libtomcrypt:arm64-windows=fail libtorch:x86-windows=fail @@ -1023,9 +1021,6 @@ qtwayland:arm64-osx=skip # Missing system libraries qtwebengine:arm64-android=fail qtwebengine:x64-android=fail quickjs-ng:arm64-linux=fail -realm-core:arm-neon-android=fail # https://github.com/realm/realm-core/issues/8093 -realm-core:arm64-android=fail -realm-core:x64-android=fail rendergraph:arm64-linux=fail restbed:arm64-linux=fail restbed:x64-linux=fail # requires c++23 diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index 2062ab9b01..176306345f 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -138,6 +138,7 @@ awlib[graphics]:arm64-linux=cascade azure-kinect-sensor-sdk:arm64-linux=cascade babl[introspection]:arm64-linux=cascade bddisasm:arm64-linux=fail +bde:arm64-osx=fail # https://github.com/bloomberg/bde-tools/issues/54 bext-text:arm64-linux=pass bgfx:arm64-linux=fail bitserializer[rapidyaml-archive]:arm64-windows=cascade @@ -374,8 +375,6 @@ glpk[dl]:arm64-linux=cascade glpk[dl](!windows | uwp)=cascade glpk[mysql]:arm64-linux=cascade glpk[mysql]:arm64-osx=cascade -glpk[mysql]:arm64-windows=cascade -glpk[mysql]:x86-windows=cascade glpk[odbc]:arm64-linux=cascade glpk[odbc](!windows | uwp)=cascade glui:arm64-linux=cascade @@ -661,7 +660,6 @@ libressl:arm64-linux=skip libsbml[expat, libxml2]=options # have to select excatly one xml lib(they are features) libsmb2[krb5]:arm64-linux=cascade libssh[core,openssl,mbedtls]=options # we have to select feature openssl or mbedtls -libtar:arm64-linux=fail libtcod[sdl]:arm64-linux=cascade libtomcrypt(arm & windows)=fail libtorch:x86-windows=fail @@ -1259,9 +1257,6 @@ qwtw:x64-windows=cascade qzxing:arm64-linux=cascade raylib:arm64-linux=cascade raylib-cpp:arm64-linux=cascade -realm-core:arm-neon-android=fail # https://github.com/realm/realm-core/issues/8093 -realm-core:arm64-android=fail -realm-core:x64-android=fail realsense2:arm64-linux=cascade rendergraph:arm64-linux=fail restbed:arm64-linux=fail @@ -1281,7 +1276,6 @@ rtabmap[opencv-cuda](!x64 | android | osx)=cascade rtabmap[openmp]:arm64-osx=feature-fails # No openmp on default osx toolchain rtaudio[pulse]:arm64-linux=cascade rtlsdr:arm64-linux=cascade -rubberband:arm64-linux=cascade ryml:arm64-windows=cascade s2n=skip # builds too slow sail[jpegxl]:arm-neon-android=cascade diff --git a/versions/baseline.json b/versions/baseline.json index 29051ef3a5..81f90fb547 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2370,7 +2370,7 @@ }, "cyrus-sasl": { "baseline": "2.1.28", - "port-version": 4 + "port-version": 5 }, "czmq": { "baseline": "4.2.1", @@ -3510,7 +3510,7 @@ }, "glpk": { "baseline": "5.0", - "port-version": 3 + "port-version": 4 }, "glslang": { "baseline": "16.4.0", @@ -3850,7 +3850,7 @@ }, "highs": { "baseline": "1.15.1", - "port-version": 0 + "port-version": 1 }, "highway": { "baseline": "1.4.0", @@ -4618,7 +4618,7 @@ }, "krb5": { "baseline": "1.22.2", - "port-version": 1 + "port-version": 2 }, "krpc": { "baseline": "0.6.0", @@ -5782,7 +5782,7 @@ }, "libtar": { "baseline": "1.2.20", - "port-version": 1 + "port-version": 2 }, "libtasn1": { "baseline": "4.19.0", @@ -7102,7 +7102,7 @@ }, "nettle": { "baseline": "3.10", - "port-version": 1 + "port-version": 2 }, "networkdirect-sdk": { "baseline": "2.0.1", @@ -8322,7 +8322,7 @@ }, "qt5-location": { "baseline": "5.15.19", - "port-version": 0 + "port-version": 1 }, "qt5-macextras": { "baseline": "5.15.19", @@ -8798,7 +8798,7 @@ }, "realm-core": { "baseline": "14.14.0", - "port-version": 0 + "port-version": 1 }, "realsense2": { "baseline": "2.56.5", @@ -9042,7 +9042,7 @@ }, "rubberband": { "baseline": "4.0.0", - "port-version": 1 + "port-version": 2 }, "ruckig": { "baseline": "0.17.3", diff --git a/versions/c-/cyrus-sasl.json b/versions/c-/cyrus-sasl.json index 45f34c08b8..52c49d4093 100644 --- a/versions/c-/cyrus-sasl.json +++ b/versions/c-/cyrus-sasl.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "cfd86e8f7f6c334cc47af6291cc22e234e68d36a", + "version": "2.1.28", + "port-version": 5 + }, { "git-tree": "b8f1a9c198fe99f9c37b4ca305f86dfd365e4f37", "version": "2.1.28", diff --git a/versions/g-/glpk.json b/versions/g-/glpk.json index 4490c03ef4..a78037c415 100644 --- a/versions/g-/glpk.json +++ b/versions/g-/glpk.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "2e4e4c4118efd08fdeafc707d9a1590539b84507", + "version": "5.0", + "port-version": 4 + }, { "git-tree": "00933f2c7f77149899b7c69c6d09410fca7f5b1d", "version": "5.0", diff --git a/versions/h-/highs.json b/versions/h-/highs.json index ed8a82cef9..f22010c528 100644 --- a/versions/h-/highs.json +++ b/versions/h-/highs.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "9ce6b8be37e9ea56e12b9dcbc5eb87895c0569cd", + "version": "1.15.1", + "port-version": 1 + }, { "git-tree": "0c70fd2590487bd56505ed8824ae764063330728", "version": "1.15.1", diff --git a/versions/k-/krb5.json b/versions/k-/krb5.json index 56465c061a..6721c4ef91 100644 --- a/versions/k-/krb5.json +++ b/versions/k-/krb5.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "d9285e6e0ec6ac29cd42d0df2f50191a05297942", + "version": "1.22.2", + "port-version": 2 + }, { "git-tree": "95f4778a75c8e514f20fcabea74e41a2e2664f1f", "version": "1.22.2", diff --git a/versions/l-/libtar.json b/versions/l-/libtar.json index 2969f204c5..1a5c3e30f9 100644 --- a/versions/l-/libtar.json +++ b/versions/l-/libtar.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "6b7cb351ee5be6f5011e3bdf8898b49fe8123597", + "version": "1.2.20", + "port-version": 2 + }, { "git-tree": "52ef8acf2b8ff12c21e9a52b9e0f0d14d050f97e", "version": "1.2.20", diff --git a/versions/n-/nettle.json b/versions/n-/nettle.json index e066ad1a77..62f6a7129c 100644 --- a/versions/n-/nettle.json +++ b/versions/n-/nettle.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a09249e27abfa9283fe3117595f60d97950c3a09", + "version": "3.10", + "port-version": 2 + }, { "git-tree": "8e33e188623d99135e4d6db52d98840da86ffc0d", "version": "3.10", diff --git a/versions/q-/qt5-location.json b/versions/q-/qt5-location.json index 0cb5635954..34006c6a64 100644 --- a/versions/q-/qt5-location.json +++ b/versions/q-/qt5-location.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "f82ad6cd2215b194767cca1879dcb48df6ffc8ad", + "version": "5.15.19", + "port-version": 1 + }, { "git-tree": "42e67aecbf59c47a6fa3159b8b58ad3ea8b71deb", "version": "5.15.19", diff --git a/versions/r-/realm-core.json b/versions/r-/realm-core.json index b863b9d47a..1fa302f822 100644 --- a/versions/r-/realm-core.json +++ b/versions/r-/realm-core.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "5fe8525c282bc8b1ab2b1b24071131dbd3634f52", + "version": "14.14.0", + "port-version": 1 + }, { "git-tree": "0b7c8987b46212a0064ac55102fdb71ae057a597", "version": "14.14.0", diff --git a/versions/r-/rubberband.json b/versions/r-/rubberband.json index cd2479afd6..9011caa5b8 100644 --- a/versions/r-/rubberband.json +++ b/versions/r-/rubberband.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "c3471671b12bd26c9c1ab2e555740b48e90d4645", + "version": "4.0.0", + "port-version": 2 + }, { "git-tree": "7d948232485cc496cf6c92b9f09a2274a208db03", "version": "4.0.0",