[nspr,nss] Update, overhaul, test port (#46227)

This commit is contained in:
Kai Pastor
2025-07-06 07:20:51 +02:00
committed by GitHub
parent f312567211
commit f9c128a6f7
19 changed files with 583 additions and 280 deletions

14
ports/nspr/android.diff Normal file
View File

@@ -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.])

View File

@@ -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)

View File

@@ -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)

12
ports/nspr/parallel.diff Normal file
View File

@@ -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
#

View File

@@ -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")

View File

@@ -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
}
]

View File

@@ -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%': '',

14
ports/nss/configure vendored Executable file
View File

@@ -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[@]}"

View File

@@ -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)'],
},

View File

@@ -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")

View File

@@ -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"
]
}

View File

@@ -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

View File

@@ -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()

View File

@@ -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
)

View File

@@ -0,0 +1,9 @@
#include <nss.h>
int main()
{
const char* configdir = "./DONOTUSE";
SECStatus rv = NSS_Initialize(configdir, "", "", SECMOD_DB, NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE);
NSS_Shutdown();
return 0;
}

View File

@@ -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
}
]
}

View File

@@ -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",

View File

@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "e8e42a8f8cc4970fecbe6d6e671031078c562c0e",
"version": "4.36",
"port-version": 0
},
{
"git-tree": "2ac026e89f8d32d1b421bdc000ca17f0c7d3e3c7",
"version": "4.35",

View File

@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "9ebeab29c2c5137eafaafbd20bde91f40a2faba1",
"version": "3.113.1",
"port-version": 0
},
{
"git-tree": "93c8abd74523ba189511a0846810848b9a0ed9b5",
"version": "3.99",