From f9c128a6f7a96f5fa2f6f089f37ed6788a90e4b0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 6 Jul 2025 07:20:51 +0200 Subject: [PATCH] [nspr,nss] Update, overhaul, test port (#46227) --- ports/nspr/android.diff | 14 + ports/nspr/library-linkage.diff | 69 +++ ports/nspr/nsinstall-windows.diff | 17 + ports/nspr/parallel.diff | 12 + ports/nspr/portfile.cmake | 157 ++++--- ports/nspr/vcpkg.json | 11 +- ports/nss/01-nspr-no-lib-prefix.patch | 12 - ports/nss/configure | 14 + ports/nss/include-dirs.diff | 49 ++ ports/nss/portfile.cmake | 417 ++++++++++-------- ports/nss/vcpkg.json | 26 +- scripts/ci.feature.baseline.txt | 1 - .../test_ports/vcpkg-ci-nss/portfile.cmake | 10 + .../vcpkg-ci-nss/project/CMakeLists.txt | 10 + .../test_ports/vcpkg-ci-nss/project/main.c | 9 + scripts/test_ports/vcpkg-ci-nss/vcpkg.json | 17 + versions/baseline.json | 8 +- versions/n-/nspr.json | 5 + versions/n-/nss.json | 5 + 19 files changed, 583 insertions(+), 280 deletions(-) create mode 100644 ports/nspr/android.diff create mode 100644 ports/nspr/library-linkage.diff create mode 100644 ports/nspr/nsinstall-windows.diff create mode 100644 ports/nspr/parallel.diff delete mode 100644 ports/nss/01-nspr-no-lib-prefix.patch create mode 100755 ports/nss/configure create mode 100644 ports/nss/include-dirs.diff create mode 100644 scripts/test_ports/vcpkg-ci-nss/portfile.cmake create mode 100644 scripts/test_ports/vcpkg-ci-nss/project/CMakeLists.txt create mode 100644 scripts/test_ports/vcpkg-ci-nss/project/main.c create mode 100644 scripts/test_ports/vcpkg-ci-nss/vcpkg.json diff --git a/ports/nspr/android.diff b/ports/nspr/android.diff new file mode 100644 index 0000000000..873ba121a5 --- /dev/null +++ b/ports/nspr/android.diff @@ -0,0 +1,14 @@ +diff --git a/nspr/configure.in b/nspr/configure.in +index 1a3e489..59e6347 100644 +--- a/nspr/configure.in ++++ b/nspr/configure.in +@@ -153,6 +153,9 @@ mipsel-*android*) + esac + + case "$target" in ++*-android*) ++ AC_DEFINE(ANDROID) ++ ;; + *-android*|*-linuxandroid*) + if test -z "$android_ndk" ; then + AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.]) diff --git a/ports/nspr/library-linkage.diff b/ports/nspr/library-linkage.diff new file mode 100644 index 0000000000..a80e5c75d5 --- /dev/null +++ b/ports/nspr/library-linkage.diff @@ -0,0 +1,69 @@ +diff --git a/nspr/config/rules.mk b/nspr/config/rules.mk +index 8f3f926..1ddfffd 100644 +--- a/nspr/config/rules.mk ++++ b/nspr/config/rules.mk +@@ -113,7 +113,8 @@ endif + + ifndef TARGETS + ifeq (,$(filter-out WINNT WINCE,$(OS_ARCH))) +-TARGETS = $(LIBRARY) $(SHARED_LIBRARY) $(IMPORT_LIBRARY) ++ifdef BUILD_SHARED_LIBS ++TARGETS = $(SHARED_LIBRARY) $(IMPORT_LIBRARY) + ifdef MOZ_DEBUG_SYMBOLS + ifdef MSC_VER + ifneq (,$(filter-out 1100 1200,$(MSC_VER))) +@@ -122,7 +123,14 @@ endif + endif + endif + else +-TARGETS = $(LIBRARY) $(SHARED_LIBRARY) ++TARGETS = $(LIBRARY) ++endif ++else ++ifdef BUILD_SHARED_LIBS ++TARGETS = $(SHARED_LIBRARY) ++else ++TARGETS = $(LIBRARY) ++endif + endif + endif + +diff --git a/nspr/lib/ds/Makefile.in b/nspr/lib/ds/Makefile.in +index fa8c783..b102b04 100644 +--- a/nspr/lib/ds/Makefile.in ++++ b/nspr/lib/ds/Makefile.in +@@ -131,7 +131,7 @@ endif + export:: $(TARGETS) + $(INSTALL) -m 444 $(HEADERS) $(dist_includedir) + $(INSTALL) -m 444 $(TARGETS) $(dist_libdir) +-ifdef SHARED_LIBRARY ++ifdef BUILD_SHARED_LIBS + ifeq ($(OS_ARCH),HP-UX) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir) +diff --git a/nspr/lib/libc/src/Makefile.in b/nspr/lib/libc/src/Makefile.in +index 9ef2007..4f5ddbe 100644 +--- a/nspr/lib/libc/src/Makefile.in ++++ b/nspr/lib/libc/src/Makefile.in +@@ -132,7 +132,7 @@ endif + + export:: $(TARGETS) + $(INSTALL) -m 444 $(TARGETS) $(dist_libdir) +-ifdef SHARED_LIBRARY ++ifdef BUILD_SHARED_LIBS + ifeq ($(OS_ARCH),HP-UX) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir) +diff --git a/nspr/pr/src/Makefile.in b/nspr/pr/src/Makefile.in +index a9e86f5..88e626e 100644 +--- a/nspr/pr/src/Makefile.in ++++ b/nspr/pr/src/Makefile.in +@@ -325,7 +325,7 @@ export:: + + build:: $(TARGETS) + $(INSTALL) -m 444 $(TARGETS) $(dist_libdir) +-ifdef SHARED_LIBRARY ++ifdef BUILD_SHARED_LIBS + ifeq ($(OS_ARCH),HP-UX) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_libdir) + $(INSTALL) -m 755 $(SHARED_LIBRARY) $(dist_bindir) diff --git a/ports/nspr/nsinstall-windows.diff b/ports/nspr/nsinstall-windows.diff new file mode 100644 index 0000000000..8a21214267 --- /dev/null +++ b/ports/nspr/nsinstall-windows.diff @@ -0,0 +1,17 @@ +diff --git a/nspr/config/Makefile.in b/nspr/config/Makefile.in +index 54357b7..fd59e1a 100644 +--- a/nspr/config/Makefile.in ++++ b/nspr/config/Makefile.in +@@ -54,10 +54,10 @@ include $(topsrcdir)/config/rules.mk + + PROGS = $(OBJDIR)/now$(PROG_SUFFIX) + +-ifeq (,$(CROSS_COMPILE)$(filter-out WINNT,$(OS_ARCH))) ++ifneq (,$(CROSS_COMPILE)) + TARGETS = $(PROGS) + else +-ifeq (,$(filter-out WINCE,$(OS_ARCH))) ++ifeq (,$(filter-out WIN95 WINCE WINMO,$(OS_TARGET))) + TARGETS = $(PROGS) + else + PROGS += $(OBJDIR)/nsinstall$(PROG_SUFFIX) diff --git a/ports/nspr/parallel.diff b/ports/nspr/parallel.diff new file mode 100644 index 0000000000..f274e88ec2 --- /dev/null +++ b/ports/nspr/parallel.diff @@ -0,0 +1,12 @@ +diff --git a/nspr/config/rules.mk b/nspr/config/rules.mk +index 37bd49a..d6c6f6d 100644 +--- a/nspr/config/rules.mk ++++ b/nspr/config/rules.mk +@@ -495,7 +495,6 @@ $(filter $(OBJDIR)/%.$(OBJ_SUFFIX),$(OBJS)): $(OBJDIR)/%.$(OBJ_SUFFIX): $(DUMMY_ + # parallel. + # + ifeq (,$(filter-out 1200 1300 1310,$(MSC_VER))) +-.NOTPARALLEL: + endif + + # diff --git a/ports/nspr/portfile.cmake b/ports/nspr/portfile.cmake index 5735dede5d..a16616393d 100644 --- a/ports/nspr/portfile.cmake +++ b/ports/nspr/portfile.cmake @@ -1,87 +1,95 @@ +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) +endif() vcpkg_download_distfile(ARCHIVE URLS "https://releases.mozilla.org/pub/nspr/releases/v${VERSION}/src/nspr-${VERSION}.tar.gz" FILENAME "nspr-${VERSION}.tar.gz" - SHA512 502815833116e25f79ddf71d1526484908aa92fbc55f8a892729cb404a4daafcc0470a89854cd080d2d20299fdb7d9662507c5362c7ae661cbacf308ac56ef7f + SHA512 55d21e196508ad29a179639fc8006f44b04dc2c0b5a85895e727f0a4f0ea37aeeceb936e37ac6b271b882a18e9f06d96133a60f19cee6345f8424c1c66e270ee ) vcpkg_extract_source_archive( SOURCE_PATH - ARCHIVE ${ARCHIVE} + ARCHIVE "${ARCHIVE}" SOURCE_BASE "${VERSION}" + PATCHES + android.diff + library-linkage.diff + nsinstall-windows.diff + parallel.diff ) -set(MOZBUILD_ROOT "${CURRENT_HOST_INSTALLED_DIR}/tools/mozbuild") - -set(MOZBUILD_BINDIR "${MOZBUILD_ROOT}/bin") -vcpkg_add_to_path("${MOZBUILD_BINDIR}") - -set(MOZBUILD_MSYS_ROOT "${MOZBUILD_ROOT}/msys") -vcpkg_add_to_path(PREPEND "${MOZBUILD_MSYS_ROOT}") - set(OPTIONS "") -if (VCPKG_CRT_LINKAGE STREQUAL "dynamic") - list(APPEND OPTIONS "--disable-static-rtl") -else() - list(APPEND OPTIONS "--enable-static-rtl") -endif() - -list(APPEND OPTIONS "--enable-win32-target=win95") - -if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - list(APPEND OPTIONS "--enable-64bit") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - list(APPEND OPTIONS "--disable-64bit") -else() - message(FATAL_ERROR "Unsupported arch: ${VCPKG_TARGET_ARCHITECTURE}") -endif() - -set(OPTIONS_DEBUG - "--enable-debug-rtl" -) - -set(OPTIONS_RELEASE - "--disable-debug-rtl" -) - -vcpkg_configure_make( - SOURCE_PATH "${SOURCE_PATH}" - CONFIGURE_ENVIRONMENT_VARIABLES CC CXX LD - PROJECT_SUBPATH "nspr" - OPTIONS ${OPTIONS} - OPTIONS_DEBUG ${OPTIONS_DEBUG} - OPTIONS_RELEASE ${OPTIONS_RELEASE} - DISABLE_VERBOSE_FLAGS -) -vcpkg_install_make() -vcpkg_copy_pdbs() - -# -# VCPKG FHS adjustments -# - -# Release -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - file(GLOB BIN_RELEASE "${CURRENT_PACKAGES_DIR}/lib/*.dll" "${CURRENT_PACKAGES_DIR}/lib/*.pdb") - list(LENGTH BIN_RELEASE BIN_RELEASE_SIZE) - if (BIN_RELEASE_SIZE GREATER 0) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") - - foreach(path ${BIN_RELEASE}) - get_filename_component(name "${path}" NAME) - file(RENAME "${CURRENT_PACKAGES_DIR}/lib/${name}" "${CURRENT_PACKAGES_DIR}/bin/${name}") - endforeach() +if(VCPKG_TARGET_IS_WINDOWS) + # https://firefox-source-docs.mozilla.org/nspr/nspr_build_instructions.html#enable-win32-target-win95 + list(APPEND OPTIONS "--enable-win32-target=WIN95") + if(VCPKG_CRT_LINKAGE STREQUAL "static") + list(APPEND OPTIONS "--enable-static-rtl") + else() + list(APPEND OPTIONS "--disable-static-rtl") endif() endif() -# Debug -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") +if(VCPKG_TARGET_ARCHITECTURE MATCHES "64") + list(APPEND OPTIONS "--enable-64bit") +else() + list(APPEND OPTIONS "--disable-64bit") +endif() + +set(MAKE_OPTIONS "") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + list(APPEND MAKE_OPTIONS BUILD_SHARED_LIBS=1) +endif() + +if(VCPKG_CROSSCOMPILING) + list(APPEND MAKE_OPTIONS "NOW=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/now${VCPKG_HOST_EXECUTABLE_SUFFIX}") + if(NOT CMAKE_HOST_WIN32) + list(APPEND MAKE_OPTIONS "NSINSTALL=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/nsinstall${VCPKG_HOST_EXECUTABLE_SUFFIX}") + endif() +endif() +if(CMAKE_HOST_WIN32) + vcpkg_acquire_msys(MSYS_NSINSTALL + NO_DEFAULT_PACKAGES + DIRECT_PACKAGES + "https://mirror.msys2.org/msys/x86_64/nsinstall-4.36-1-x86_64.pkg.tar.zst" + 36ceaf44db4368ef6319397cef1d82a752c68f3f7a16ca00e753ee7ae825058f22c38ccd750b53ea773212dffae838700be0d09288353db33d2f5197df9091df + ) + list(APPEND MAKE_OPTIONS "NSINSTALL=${MSYS_NSINSTALL}/usr/bin/nsinstall${VCPKG_HOST_EXECUTABLE_SUFFIX}") +endif() + +vcpkg_make_configure( + SOURCE_PATH "${SOURCE_PATH}/nspr" + AUTORECONF + OPTIONS + ${OPTIONS} + OPTIONS_DEBUG + --enable-debug-rtl + OPTIONS_RELEASE + --disable-debug-rtl +) +vcpkg_make_install(OPTIONS ${MAKE_OPTIONS}) +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() + +set(install_dir_pattern "${CURRENT_INSTALLED_DIR}") +if(CMAKE_HOST_WIN32) + string(REGEX REPLACE [[^([a-zA-Z]):/]] [[/\1/]] install_dir_pattern "${install_dir_pattern}") +endif() +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/nspr-config" "${install_dir_pattern}" "`dirname $0`/../../..") +file(GLOB BIN_RELEASE "${CURRENT_PACKAGES_DIR}/lib/*.dll" "${CURRENT_PACKAGES_DIR}/lib/*.pdb") +if(NOT BIN_RELEASE STREQUAL "") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") + foreach(path ${BIN_RELEASE}) + get_filename_component(name "${path}" NAME) + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/${name}" "${CURRENT_PACKAGES_DIR}/bin/${name}") + endforeach() +endif() +if(NOT VCPKG_BUILD_TYPE) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/nspr-config" "${install_dir_pattern}/debug" "`dirname $0`/../../../..") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") file(GLOB BIN_DEBUG "${CURRENT_PACKAGES_DIR}/debug/lib/*.dll" "${CURRENT_PACKAGES_DIR}/debug/lib/*.pdb") - list(LENGTH BIN_DEBUG BIN_DEBUG_SIZE) - if (BIN_DEBUG_SIZE GREATER 0) + if(NOT BIN_DEBUG STREQUAL "") file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") - foreach(path IN LISTS BIN_DEBUG) get_filename_component(name "${path}" NAME) file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/${name}" "${CURRENT_PACKAGES_DIR}/debug/bin/${name}") @@ -89,11 +97,16 @@ if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") endif() endif() -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin/nspr-config" "${CURRENT_INSTALLED_DIR}" "`dirname $0`/../../..") - -if(NOT VCPKG_BUILD_TYPE) - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin/nspr-config" "${CURRENT_INSTALLED_DIR}/debug" "`dirname $0`/../../../..") +if(NOT VCPKG_CROSSCOMPILING) + set(tool_names now nsinstall) + if(CMAKE_HOST_WIN32) + list(REMOVE_ITEM tool_names nsinstall) + endif() + vcpkg_copy_tools( + TOOL_NAMES ${tool_names} + SEARCH_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/config" + DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + ) endif() -# Copy license -file(INSTALL "${SOURCE_PATH}/nspr/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/nspr/LICENSE") diff --git a/ports/nspr/vcpkg.json b/ports/nspr/vcpkg.json index 8d5c7115ee..3481efdc6b 100644 --- a/ports/nspr/vcpkg.json +++ b/ports/nspr/vcpkg.json @@ -1,14 +1,17 @@ { "name": "nspr", - "version": "4.35", - "port-version": 4, + "version": "4.36", "description": "Netscape portable runtime", "homepage": "https://releases.mozilla.org/pub/nspr/", "license": "MPL-2.0", - "supports": "windows & !(arm | uwp | static | xbox)", + "supports": "!uwp & !xbox & !(windows & static & staticcrt)", "dependencies": [ { - "name": "vcpkg-tool-mozbuild", + "name": "nspr", + "host": true + }, + { + "name": "vcpkg-make", "host": true } ] diff --git a/ports/nss/01-nspr-no-lib-prefix.patch b/ports/nss/01-nspr-no-lib-prefix.patch deleted file mode 100644 index 0351c0db6a..0000000000 --- a/ports/nss/01-nspr-no-lib-prefix.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -ur x64-windows-rel/nss/coreconf/config.gypi src/3.66-485ec2a7fc.clean/nss/coreconf/config.gypi ---- a/nss/coreconf/config.gypi 2021-05-28 02:50:43.000000000 -0700 -+++ b/nss/coreconf/config.gypi 2021-11-09 07:51:35.884650900 -0800 -@@ -44,7 +44,7 @@ - }], - ['OS=="win"', { - 'use_system_zlib%': 0, -- 'nspr_libs%': ['libnspr4.lib', 'libplc4.lib', 'libplds4.lib'], -+ 'nspr_libs%': ['nspr4.lib', 'plc4.lib', 'plds4.lib'], - 'zlib_libs%': [], - #TODO - 'moz_debug_flags%': '', diff --git a/ports/nss/configure b/ports/nss/configure new file mode 100755 index 0000000000..bb8882c8fc --- /dev/null +++ b/ports/nss/configure @@ -0,0 +1,14 @@ +#!/bin/bash + +filtered_options=() +for option +do + accept=yes + case "${option}" in + --host=* | --build=*) accept=no ;; + esac + if test "${accept}" = "yes"; then filtered_options+=("${option}"); fi +done + +echo Invoking nss/build.sh "${filtered_options[@]}" +exec nss/build.sh "${filtered_options[@]}" diff --git a/ports/nss/include-dirs.diff b/ports/nss/include-dirs.diff new file mode 100644 index 0000000000..c83a4b491c --- /dev/null +++ b/ports/nss/include-dirs.diff @@ -0,0 +1,49 @@ +diff --git a/nss/lib/sqlite/exports.gyp b/nss/lib/sqlite/exports.gyp +index 0a424ba..935b223 100644 +--- a/nss/lib/sqlite/exports.gyp ++++ b/nss/lib/sqlite/exports.gyp +@@ -12,7 +12,6 @@ + 'copies': [ + { + 'files': [ +- 'sqlite3.h' + ], + 'destination': '<(nss_private_dist_dir)/<(module)' + } +diff --git a/nss/lib/sqlite/sqlite.gyp b/nss/lib/sqlite/sqlite.gyp +index 6a9ab3a..b98ab00 100644 +--- a/nss/lib/sqlite/sqlite.gyp ++++ b/nss/lib/sqlite/sqlite.gyp +@@ -10,8 +10,14 @@ + 'targets': [{ + 'target_name': 'sqlite3', + 'type': 'none', ++ 'direct_dependent_settings': { ++ 'variables': { ++ 'sqlite_include_dirs%': [], ++ }, ++ 'include_dirs': ['<@(sqlite_include_dirs)'], ++ }, + 'link_settings': { +- 'libraries': ['<(sqlite_libs)'], ++ 'libraries': ['<@(sqlite_libs)'], + }, + }], + }, { +diff --git a/nss/lib/zlib/zlib.gyp b/nss/lib/zlib/zlib.gyp +index 07df9a8..215732d 100644 +--- a/nss/lib/zlib/zlib.gyp ++++ b/nss/lib/zlib/zlib.gyp +@@ -13,6 +13,12 @@ + 'targets': [{ + 'target_name': 'nss_zlib', + 'type': 'none', ++ 'direct_dependent_settings': { ++ 'variables': { ++ 'zlib_include_dirs%': [], ++ }, ++ 'include_dirs': ['<@(zlib_include_dirs)'], ++ }, + 'link_settings': { + 'libraries': ['<@(zlib_libs)'], + }, diff --git a/ports/nss/portfile.cmake b/ports/nss/portfile.cmake index 7ed61e861c..a0140c610f 100644 --- a/ports/nss/portfile.cmake +++ b/ports/nss/portfile.cmake @@ -1,196 +1,275 @@ +# - The static lib is named "ssl", conflicting with the "ssl" lib from openssl. +# - The tools use the shared libs. +# - The pkgconfig file refers to "ssl3" +# - Linux distros don't install the static lib. +# (Renaming the static lib to "ssl3" might be an alternative solution.) +vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) string(REPLACE "." "_" V_URL ${VERSION}) vcpkg_download_distfile(ARCHIVE URLS "https://ftp.mozilla.org/pub/security/nss/releases/NSS_${V_URL}_RTM/src/nss-${VERSION}.tar.gz" FILENAME "nss-${VERSION}.tar.gz" - SHA512 8ae032f3cb8eadfe524505d20e430b90ed25af2b4732b2cf286c435b0fcd5701d2f5c48bd2cfb3f9aa0bfdf503c1f3d5394cf34f860f51a1141cc4a7586bba32 + SHA512 5ffb1182e7d65f8895c09656d20bc7146d1616cd4f09046469b2f79f60b57083094c78da39a3f3faa5087742a19f706ce9e7928a662f9f0d3c410514cba2028f ) vcpkg_extract_source_archive( SOURCE_PATH - ARCHIVE ${ARCHIVE} + ARCHIVE "${ARCHIVE}" SOURCE_BASE "${VERSION}" PATCHES - "01-nspr-no-lib-prefix.patch" "02-gen-debug-info-for-release.patch" "03-use-debug-crt-for-debug.patch" # See https://learn.microsoft.com/dotnet/api/microsoft.visualstudio.vcprojectengine.runtimelibraryoption + include-dirs.diff ) +file(GLOB devendor "${SOURCE_PATH}/nss/lib/sqlite/*.?" "${SOURCE_PATH}/nss/lib/zlib/*.?") +file(REMOVE ${devendor}) +file(COPY "${CURRENT_PORT_DIR}/configure" DESTINATION "${SOURCE_PATH}") -# setup mozbuild for windows -if (VCPKG_TARGET_IS_WINDOWS) - set(MOZBUILD_ROOT "${CURRENT_HOST_INSTALLED_DIR}/tools/mozbuild") - - set(MOZBUILD_BINDIR "${MOZBUILD_ROOT}/bin") - vcpkg_add_to_path(PREPEND "${MOZBUILD_BINDIR}") - - set(MOZBUILD_MSYS_ROOT "${MOZBUILD_ROOT}/msys2") - vcpkg_add_to_path(PREPEND "${MOZBUILD_MSYS_ROOT}/usr/bin") - - # setup mozbuild - find_program(MOZBUILD_ENV env PATHS "${MOZBUILD_MSYS_ROOT}/usr/bin" NO_DEFAULT_PATH REQUIRED) - execute_process( - COMMAND ${MOZBUILD_ENV} mkdir -p /tmp - ) - - find_program(MOZBUILD_BASH bash PATHS "${MOZBUILD_MSYS_ROOT}/usr/bin" NO_DEFAULT_PATH REQUIRED) - message(STATUS "Found bash: ${MOZBUILD_BASH}") - - # setup mozbuild python - set(MOZBUILD_PYTHON_ROOT "${MOZBUILD_ROOT}/python3") - find_program(MOZBUILD_PYTHON python PATHS "${MOZBUILD_PYTHON_ROOT}" NO_DEFAULT_PATH REQUIRED) - message(STATUS "Found python: ${MOZBUILD_PYTHON}") - vcpkg_add_to_path(PREPEND "${MOZBUILD_PYTHON_ROOT}") - - # setup paths - execute_process( - COMMAND ${MOZBUILD_BASH} -c pwd - WORKING_DIRECTORY ${CURRENT_INSTALLED_DIR}/include - OUTPUT_VARIABLE VCPKG_INCLUDEDIR - OUTPUT_STRIP_TRAILING_WHITESPACE +function(download_distfile var url sha512) + string(REGEX REPLACE ".*/" "" filename "${url}") + vcpkg_download_distfile(archive + URLS "${url}" + FILENAME "${filename}" + SHA512 "${sha512}" ) - message(STATUS "Using headers from: ${VCPKG_INCLUDEDIR} arch: ${VCPKG_TARGET_ARCHITECTURE}") + set("${var}" "${archive}" PARENT_SCOPE) +endfunction() - execute_process( - COMMAND ${MOZBUILD_BASH} -c pwd - WORKING_DIRECTORY ${CURRENT_INSTALLED_DIR}/lib - OUTPUT_VARIABLE VCPKG_LIBDIR - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - message(STATUS "Using libraries from: ${VCPKG_LIBDIR} arch: ${VCPKG_TARGET_ARCHITECTURE}") +download_distfile(gyp_next + "https://files.pythonhosted.org/packages/37/3e/d920a254ad927c942a541388c84dd1af0db1af6f6c2b96e99d9ec3f3a148/gyp_next-0.20.2-py3-none-any.whl" + 53feff516d0de8738910e04e4e5664af27947c0a2bca856c290f9082d18678b03e917403e2c842edb62b6dd5412c625f34edb52d6d9b295c07ef34b3c18981f8 +) +download_distfile(packaging + "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl" + a726fb46cce24f781fc8b55a3e6dea0a884ebc3b2b400ea74aa02333699f4955a5dc1e2ec5927ac72f35a624401f3f3b442882ba1cc4cadaf9c88558b5b8bdae +) +download_distfile(setuptools + "https://files.pythonhosted.org/packages/a3/dc/17031897dae0efacfea57dfd3a82fdd2a2aeb58e0ff71b77b87e44edc772/setuptools-80.9.0-py3-none-any.whl" + 2a0420f7faaa33d2132b82895a8282688030e939db0225ad8abb95a47bdb87b45318f10985fc3cee271a9121441c1526caa363d7f2e4a4b18b1a674068766e87 +) +x_vcpkg_get_python_packages( + OUT_PYTHON_VAR PYTHON3 + PYTHON_VERSION 3 + PACKAGES "${gyp_next}" "${packaging}" "${setuptools}" +) +cmake_path(GET PYTHON3 PARENT_PATH GYP_NEXT_ROOT) -else() - # TODO: setup non-windows build environment - -endif() - -# setup gyp-next -set(GYP_NEXT_ROOT "${CURRENT_HOST_INSTALLED_DIR}/tools/gyp-next") -if (VCPKG_HOST_IS_WINDOWS) - find_file(GYP_NEXT NAMES gyp.bat PATHS "${GYP_NEXT_ROOT}" NO_DEFAULT_PATH REQUIRED) -else() - find_program(GYP_NEXT NAMES gyp PATHS "${GYP_NEXT_ROOT}" NO_DEFAULT_PATH REQUIRED) -endif() - -vcpkg_add_to_path(PREPEND "${GYP_NEXT_ROOT}") -message(STATUS "Found gyp-next: ${GYP_NEXT}") - -# setup ninja +# Prepend to PATH in controlled order vcpkg_find_acquire_program(NINJA) get_filename_component(NINJA_ROOT "${NINJA}" DIRECTORY) -list(APPEND CMAKE_PROGRAM_PATH "${NINJA_ROOT}") -vcpkg_add_to_path(APPEND "${NINJA_ROOT}") +vcpkg_add_to_path(PREPEND "${NINJA_ROOT}") + +find_program(GYP_NEXT NAMES gyp PATHS "${GYP_NEXT_ROOT}" NO_DEFAULT_PATH REQUIRED) +message(STATUS "Using ${GYP_NEXT}") +vcpkg_add_to_path(PREPEND "${GYP_NEXT_ROOT}") # setup build.sh options -- see help.txt in nss root -set(OPTIONS - "-v" - "-g" - "--disable-tests" - "--with-nspr=${VCPKG_INCLUDEDIR}/nspr:${VCPKG_LIBDIR}" - "--system-sqlite" - "-Dsign_libs=0" -) +set(OPTIONS "") +if(VCPKG_TARGET_IS_ANDROID) + list(APPEND OPTIONS "-DOS=android") +elseif(VCPKG_TARGET_IS_FREEBSD) + list(APPEND OPTIONS "-DOS=freebsd") +elseif(VCPKG_TARGET_IS_IOS) + list(APPEND OPTIONS "-DOS=ios") +elseif(VCPKG_TARGET_IS_LINUX) + list(APPEND OPTIONS "-DOS=linux") +elseif(VCPKG_TARGET_IS_OSX) + list(APPEND OPTIONS "-DOS=mac") +elseif(VCPKG_TARGET_IS_OPENBSD) + list(APPEND OPTIONS "-DOS=openbsd") +elseif(VCPKG_TARGET_IS_WINDOWS) + list(APPEND OPTIONS "-DOS=win") +elseif(VCPKG_CROSSCOMPILING) + message(WARNING "Cannot determine OS setting for ${TARGET_TRIPLET}") +endif() -if (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - list(APPEND OPTIONS "--target=x64") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") list(APPEND OPTIONS "--target=ia32") else() - message(FATAL_ERROR "Unsupported arch: ${VCPKG_TARGET_ARCHITECTURE}") + list(APPEND OPTIONS "--target=${VCPKG_TARGET_ARCHITECTURE}") endif() -if (VCPKG_TARGET_IS_WINDOWS) - list(APPEND OPTIONS - "--msvc" - ) +function(cygpath_u out_var input) # equivalent to cygpath -u + string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" input "${input}") + set("${out_var}" "${input}" PARENT_SCOPE) +endfunction() - # prevent homemade vcvarsall.sh from running - set(VSCOMPONENT "Microsoft.VisualStudio.Component.VC.Tools.x86.x64") - execute_process( - COMMAND ${MOZBUILD_ENV} cygpath --unix $ENV{VSINSTALLDIR} - OUTPUT_VARIABLE GYP_MSVS_OVERRIDE_PATH - OUTPUT_STRIP_TRAILING_WHITESPACE - ) +if(CMAKE_HOST_WIN32 AND VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_MSVC) + list(APPEND OPTIONS "--msvc") + set(ENV{PYTHONUTF8} 1) - execute_process( - COMMAND vswhere -latest -requires ${VSCOMPONENT} -property catalog_productLineVersion - OUTPUT_VARIABLE GYP_MSVS_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) + # vswhere needed in PATH + cmake_path(SET vswhere "$ENV{ProgramFiles\(x86\)}/Microsoft Visual Studio/Installer/vswhere.exe") + if(NOT EXISTS "${vswhere}") + vcpkg_execute_in_download_mode( + COMMAND "$ENV{VCPKG_COMMAND}" fetch vswhere --x-stderr-status + OUTPUT_VARIABLE vswhere + RESULT_VARIABLE error_code + OUTPUT_STRIP_TRAILING_WHITESPACE + WORKING_DIRECTORY "${DOWNLOADS}" + ) + if(NOT error_code STREQUAL "0") + message(FATAL_ERROR "Failed to fetch vswhere.") + endif() + string(REGEX REPLACE "^.*\n *" "" vswhere "${vswhere}") + endif() + message(STATUS "Using ${vswhere}") + cmake_path(GET vswhere PARENT_PATH vswhere_dir) + vcpkg_host_path_list(APPEND ENV{PATH} "${vswhere_dir}") - list(APPEND GYPENV - "PYTHONUTF8=1" - "VSPATH=${GYP_MSVS_OVERRIDE_PATH}" - "GYP_MSVS_OVERRIDE_PATH=${GYP_MSVS_OVERRIDE_PATH}" - "GYP_MSVS_VERSION=${GYP_MSVS_VERSION}" - ) + # Set GYP_MSVS_OVERRIDE_PATH and GYP_MSVS_VERSION for actual cl.exe + if("$ENV{GYP_MSVS_OVERRIDE_PATH}" STREQUAL "" OR "$ENV{GYP_MSVS_VERSION}" STREQUAL "") + execute_process( + COMMAND "${vswhere}" + -nologo + -property resolvedInstallationPath + -path "${VCPKG_DETECTED_CMAKE_C_COMPILER}" + OUTPUT_VARIABLE msvs_installdir + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + message(STATUS "MSVS resolvedInstallationPath: ${msvs_installdir}") + if(NOT EXISTS "${msvs_installdir}") + message(FATAL_ERROR "Failed to determine MSVS dir for ${VCPKG_DETECTED_CMAKE_C_COMPILER}.") + endif() + cygpath_u(vspath "${msvs_installdir}") + set(ENV{VSPATH} "${vspath}") + set(ENV{GYP_MSVS_OVERRIDE_PATH} "${vspath}") + + execute_process( + COMMAND "${vswhere}" + -nologo + -property catalog_productLineVersion + -path "${VCPKG_DETECTED_CMAKE_C_COMPILER}" + OUTPUT_VARIABLE msvs_version + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + message(STATUS "MSVS catalog_productLineVersion: ${msvs_version}") + if(NOT msvs_version MATCHES "^20..e?\$") + message(FATAL_ERROR "Failed to determine MSVS version for ${VCPKG_DETECTED_CMAKE_C_COMPILER}.") + endif() + set(ENV{GYP_MSVS_VERSION} "${msvs_version}") + endif() + endif() endif() -# -# get to work -# - -set(VCPKG_BINARY_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}") - -# build debug -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - message(STATUS "Copying sources to debug build dir ...") - file(COPY "${SOURCE_PATH}/nss" DESTINATION "${VCPKG_BINARY_DIR}-dbg") - message(STATUS "Building debug ...") - vcpkg_execute_required_process( - COMMAND ${MOZBUILD_ENV} ${GYPENV} bash ./build.sh ${OPTIONS} - WORKING_DIRECTORY ${VCPKG_BINARY_DIR}-dbg/nss - LOGNAME build-${TARGET_TRIPLET}${short_buildtype} - ) -endif() - -# build release -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") - message(STATUS "Copying sources to release build dir ...") - file(COPY "${SOURCE_PATH}/nss" DESTINATION "${VCPKG_BINARY_DIR}-rel") - message(STATUS "Building release ...") - vcpkg_execute_required_process( - COMMAND ${MOZBUILD_ENV} ${GYPENV} bash ./build.sh ${OPTIONS} --opt - WORKING_DIRECTORY ${VCPKG_BINARY_DIR}-rel/nss - LOGNAME build-${TARGET_TRIPLET}${short_buildtype} - ) -endif() - -# -# VCPKG FHS adjustments -# - -# Headers -file( - COPY "${VCPKG_BINARY_DIR}-rel/dist/public/nss" - DESTINATION "${CURRENT_PACKAGES_DIR}/include" -) - -file( - COPY "${VCPKG_BINARY_DIR}-rel/dist/private/nss/" - DESTINATION "${CURRENT_PACKAGES_DIR}/include/nss/private" -) - -# Release libraries -file(GLOB LIB_RELEASE - "${VCPKG_BINARY_DIR}-rel/dist/Release/lib/*.dll" - "${VCPKG_BINARY_DIR}-rel/dist/Release/lib/*.pdb" -) -list(LENGTH LIB_RELEASE LIB_RELEASE_SIZE) - -if (LIB_RELEASE_SIZE GREATER 0) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin") - - foreach(path ${LIB_RELEASE}) - get_filename_component(name "${path}" NAME) - file(RENAME "${path}" "${CURRENT_PACKAGES_DIR}/bin/${name}") +x_vcpkg_pkgconfig_get_modules(PREFIX PC_NSPR MODULES nspr CFLAGS LIBS) +x_vcpkg_pkgconfig_get_modules(PREFIX PC_SQLITE MODULES sqlite3 CFLAGS LIBS) +x_vcpkg_pkgconfig_get_modules(PREFIX PC_ZLIB MODULES zlib CFLAGS LIBS) +# Produce absolute include dirs and library dirs filepaths. +# Manually managing MSVC syntax because gyp converts foo.lib as if it were a relative path. +foreach(key IN ITEMS NSPR_CFLAGS_RELEASE SQLITE_CFLAGS_RELEASE ZLIB_CFLAGS_RELEASE) + separate_arguments(cflags UNIX_COMMAND "${PC_${key}}") + string(REPLACE "CFLAGS_RELEASE" "INCLUDE_DIRS" out_var "${key}") + set(${out_var} "") + foreach(item IN LISTS cflags) + if(item MATCHES "^-I(.*)") + cmake_path(SET dir NORMALIZE "${CMAKE_MATCH_1}") + if(CMAKE_HOST_WIN32) + cygpath_u(dir "${dir}") + else() + endif() + list(APPEND ${out_var} "${dir}") + endif() endforeach() + list(JOIN ${key}_INCLUDE_DIRS ":" ${key}_INCLUDE_DIRS) +endforeach() +foreach(out_var IN ITEMS NSPR_LIBS_RELEASE NSPR_LIBS_DEBUG SQLITE_LIBS_RELEASE SQLITE_LIBS_DEBUG ZLIB_LIBS_RELEASE ZLIB_LIBS_DEBUG) + separate_arguments(libs UNIX_COMMAND "${PC_${out_var}}") + set(${out_var} "") + foreach(item IN LISTS libs) + if(item MATCHES "^-L(.*)") + cmake_path(SET dir NORMALIZE "${CMAKE_MATCH_1}") + if(CMAKE_HOST_WIN32) + cygpath_u(dir "${dir}") + endif() + if(VCPKG_DETECTED_MSVC) + list(APPEND ${out_var} "-LIBPATH:${dir}") + else() + list(APPEND ${out_var} "-L${dir}") + endif() + elseif(item MATCHES "^-l(.*)") + list(APPEND ${out_var} "${item}") + endif() + endforeach() +endforeach() - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/lib") - file(COPY "${VCPKG_BINARY_DIR}-rel/dist/Release/lib" DESTINATION "${CURRENT_PACKAGES_DIR}") +# configuring and building in an autotools-like environment, but using gyp-next and ninja +vcpkg_make_configure( + SOURCE_PATH "${SOURCE_PATH}" + COPY_SOURCE + DISABLE_DEFAULT_OPTIONS + DISABLE_MSVC_WRAPPERS + DISABLE_MSVC_TRANSFORMATIONS + OPTIONS + -g + -v + -j "${VCPKG_CONCURRENCY}" + ${OPTIONS} + -Ddisable_tests=1 + -Ddisable_werror=1 + -Dsign_libs=0 + -Duse_system_sqlite=1 + -Duse_system_zlib=1 + "--with-nspr=${NSPR_INCLUDE_DIRS}:" + "-Dsqlite_include_dirs=${SQLITE_INCLUDE_DIRS}" + "-Dzlib_include_dirs=${ZLIB_INCLUDE_DIRS}" + OPTIONS_DEBUG + "-Dnspr_libs=${NSPR_LIBS_DEBUG}" + "-Dsqlite_libs=${SQLITE_LIBS_DEBUG}" + "-Dzlib_libs=${ZLIB_LIBS_DEBUG}" + OPTIONS_RELEASE + --opt + "-Dnspr_libs=${NSPR_LIBS_RELEASE}" + "-Dsqlite_libs=${SQLITE_LIBS_RELEASE}" + "-Dzlib_libs=${ZLIB_LIBS_RELEASE}" +) + +if(NOT VCPKG_BUILD_TYPE) + set(label "${TARGET_TRIPLET}-dbg") + set(binary_dir "${CURRENT_BUILDTREES_DIR}/${label}") + message(STATUS "Installing ${label} ...") + file(COPY "${binary_dir}/dist/Debug/lib" + DESTINATION "${CURRENT_PACKAGES_DIR}/debug" + FILES_MATCHING REGEX "[.](a|dylib|lib|so([.][0-9]+)*)\$" + ) + file(GLOB runtime_debug "${binary_dir}/dist/Debug/lib/*.dll" "${binary_dir}/dist/Debug/lib/*.pdb") + if(NOT runtime_debug STREQUAL "") + file(COPY ${runtime_debug} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() endif() -# Tools from the release build +set(label "${TARGET_TRIPLET}-rel") +set(binary_dir "${CURRENT_BUILDTREES_DIR}/${label}") +message(STATUS "Installing ${label} ...") +file(COPY "${binary_dir}/dist/Release/lib" + DESTINATION "${CURRENT_PACKAGES_DIR}" + FILES_MATCHING REGEX "[.](a|dylib|lib|so([.][0-9]+)*)\$" +) +file(GLOB runtime_release "${binary_dir}/dist/Release/lib/*.dll" "${binary_dir}/dist/Release/lib/*.pdb") +if(NOT runtime_release STREQUAL "") + file(COPY ${runtime_release} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") +endif() + +file(COPY "${binary_dir}/dist/public/nss" DESTINATION "${CURRENT_PACKAGES_DIR}/include") +file(COPY "${binary_dir}/dist/private/nss/" DESTINATION "${CURRENT_PACKAGES_DIR}/include/nss/private") + +file(READ "${SOURCE_PATH}/nss/pkg/pkg-config/nss.pc.in" pkgconfig) +string(REPLACE "%exec_prefix%" "\${prefix}" pkgconfig "${pkgconfig}") +string(REPLACE "%libdir%" "\${prefix}/lib" pkgconfig "${pkgconfig}") +string(REPLACE "%includedir%" "\${prefix}/include/nss" pkgconfig "${pkgconfig}") +string(REPLACE "%NSS_VERSION%" "${VERSION}" pkgconfig "${pkgconfig}") +string(REPLACE "%NSPR_VERSION%" "4.36" pkgconfig "${pkgconfig}") +string(APPEND pkgconfig "Requires.private: sqlite3\n") +file(WRITE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/nss.pc" "${pkgconfig}") +if(NOT VCPKG_BUILD_TYPE) + file(WRITE "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/nss.pc" "${pkgconfig}") +endif() +vcpkg_fixup_pkgconfig() + vcpkg_copy_tools( TOOL_NAMES "certutil" @@ -207,30 +286,8 @@ vcpkg_copy_tools( "ssltap" "symkeyutil" "validation" - SEARCH_DIR "${VCPKG_BINARY_DIR}-rel/dist/Release/bin/" + SEARCH_DIR "${binary_dir}/dist/Release/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}" ) -# Debug libraries -if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") - file(GLOB LIB_DEBUG - "${VCPKG_BINARY_DIR}-dbg/dist/Debug/lib/*.dll" - "${VCPKG_BINARY_DIR}-dbg/dist/Debug/lib/*.pdb" - ) - list(LENGTH LIB_DEBUG LIB_DEBUG_SIZE) - - if (LIB_DEBUG_SIZE GREATER 0) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/bin") - - foreach(path ${LIB_DEBUG}) - get_filename_component(name "${path}" NAME) - file(RENAME "${path}" "${CURRENT_PACKAGES_DIR}/debug/bin/${name}") - endforeach() - - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/lib") - file(COPY "${VCPKG_BINARY_DIR}-dbg/dist/Debug/lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug") - endif() -endif() - -# License -file(INSTALL "${SOURCE_PATH}/nss/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/nss" RENAME copyright) +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/nss/COPYING") diff --git a/ports/nss/vcpkg.json b/ports/nss/vcpkg.json index de7b721cde..df586c1cb6 100644 --- a/ports/nss/vcpkg.json +++ b/ports/nss/vcpkg.json @@ -1,21 +1,33 @@ { "name": "nss", - "version": "3.99", - "port-version": 1, + "version": "3.113.1", "description": "Network Security Services from Mozilla", "homepage": "https://ftp.mozilla.org/pub/security/nss/releases/", "license": "MPL-2.0", - "supports": "windows & !arm & !xbox", + "supports": "!arm32 & !(arm & windows)", "dependencies": [ "nspr", - "sqlite3", { - "name": "vcpkg-tool-gyp-next", + "name": "sqlite3", + "default-features": false + }, + { + "name": "vcpkg-cmake-get-vars", + "host": true, + "platform": "windows & !mingw" + }, + { + "name": "vcpkg-get-python-packages", "host": true }, { - "name": "vcpkg-tool-mozbuild", + "name": "vcpkg-make", "host": true - } + }, + { + "name": "vcpkg-pkgconfig-get-modules", + "host": true + }, + "zlib" ] } diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index 7f989dc0d6..e3eb15b044 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -1465,7 +1465,6 @@ nngpp:arm64-uwp = cascade nngpp:x64-uwp = cascade nss:x64-uwp = cascade nss:x64-windows-static = cascade -nss:x64-windows-static-md = cascade numcpp:arm64-uwp = cascade numcpp:x64-uwp = cascade numcpp[python]:arm64-windows = cascade diff --git a/scripts/test_ports/vcpkg-ci-nss/portfile.cmake b/scripts/test_ports/vcpkg-ci-nss/portfile.cmake new file mode 100644 index 0000000000..dd25706120 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-nss/portfile.cmake @@ -0,0 +1,10 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +vcpkg_find_acquire_program(PKGCONFIG) + +vcpkg_cmake_configure( + SOURCE_PATH "${CURRENT_PORT_DIR}/project" + OPTIONS + "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" +) +vcpkg_cmake_build() diff --git a/scripts/test_ports/vcpkg-ci-nss/project/CMakeLists.txt b/scripts/test_ports/vcpkg-ci-nss/project/CMakeLists.txt new file mode 100644 index 0000000000..d51af06058 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-nss/project/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.30) +project(nss-test C) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(nss_pc nss REQUIRED IMPORTED_TARGET) + +add_executable(main-pkconfig main.c) +target_link_libraries(main-pkconfig PRIVATE + PkgConfig::nss_pc +) diff --git a/scripts/test_ports/vcpkg-ci-nss/project/main.c b/scripts/test_ports/vcpkg-ci-nss/project/main.c new file mode 100644 index 0000000000..dc5c8ce6b3 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-nss/project/main.c @@ -0,0 +1,9 @@ +#include + +int main() +{ + const char* configdir = "./DONOTUSE"; + SECStatus rv = NSS_Initialize(configdir, "", "", SECMOD_DB, NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE); + NSS_Shutdown(); + return 0; +} diff --git a/scripts/test_ports/vcpkg-ci-nss/vcpkg.json b/scripts/test_ports/vcpkg-ci-nss/vcpkg.json new file mode 100644 index 0000000000..301ed63fe0 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-nss/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "vcpkg-ci-nss", + "version-string": "ci", + "description": "Port to validate nss in CI", + "homepage": "https://github.com/microsoft/vcpkg", + "license": "MIT", + "dependencies": [ + { + "name": "nss", + "default-features": false + }, + { + "name": "vcpkg-cmake", + "host": true + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 02eebda79b..8f917c0ba0 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -6713,12 +6713,12 @@ "port-version": 2 }, "nspr": { - "baseline": "4.35", - "port-version": 4 + "baseline": "4.36", + "port-version": 0 }, "nss": { - "baseline": "3.99", - "port-version": 1 + "baseline": "3.113.1", + "port-version": 0 }, "nsync": { "baseline": "1.29.2", diff --git a/versions/n-/nspr.json b/versions/n-/nspr.json index a2cf668733..dbff713965 100644 --- a/versions/n-/nspr.json +++ b/versions/n-/nspr.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e8e42a8f8cc4970fecbe6d6e671031078c562c0e", + "version": "4.36", + "port-version": 0 + }, { "git-tree": "2ac026e89f8d32d1b421bdc000ca17f0c7d3e3c7", "version": "4.35", diff --git a/versions/n-/nss.json b/versions/n-/nss.json index fe53894478..71fa89653f 100644 --- a/versions/n-/nss.json +++ b/versions/n-/nss.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "9ebeab29c2c5137eafaafbd20bde91f40a2faba1", + "version": "3.113.1", + "port-version": 0 + }, { "git-tree": "93c8abd74523ba189511a0846810848b9a0ed9b5", "version": "3.99",