nss has had its own NSS_DISABLE_NSPR_TESTS switch since 2024, https://bugzilla.mozilla.org/show_bug.cgi?id=1904404, so pass that instead of patching the line out for iOS and Android and skip the test programs universally. On windows that skips 161 of nspr's 253 compiled objects and 159 linked test executables. Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: I743c3827e33a927961156ee2b3b0f24e5c625b36 Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/12846 Reviewed-by: Noel Grandin <noel.grandin@collabora.com> Tested-by: Jenkins CPCI <releng@collaboraoffice.com> (cherry picked from commit 5d38d32be65951c2f4cc59df68e2a96c0bac4b61) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211108 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
293 lines
7.9 KiB
Diff
293 lines
7.9 KiB
Diff
--- a/a/nss/Makefile
|
|
+++ a/a/nss/Makefile
|
|
@@ -91,13 +91,11 @@
|
|
ifdef NS_USE_GCC
|
|
NSPR_CONFIGURE_ENV = CC=gcc CXX=g++
|
|
endif
|
|
-# Make sure to remove -arch arguments. NSPR can't handle that.
|
|
-remove_arch = $(filter-out __REMOVEME%,$(subst $(NULL) -arch , __REMOVEME,$(1)))
|
|
ifdef CC
|
|
-NSPR_CONFIGURE_ENV = CC="$(call remove_arch,$(CC))"
|
|
+NSPR_CONFIGURE_ENV = CC="$(CC)"
|
|
endif
|
|
ifdef CCC
|
|
-NSPR_CONFIGURE_ENV += CXX="$(call remove_arch,$(CCC))"
|
|
+NSPR_CONFIGURE_ENV += CXX="$(CCC)"
|
|
endif
|
|
|
|
#
|
|
--- a/a/nss/lib/ckfw/builtins/manifest.mn
|
|
+++ a/a/nss/lib/ckfw/builtins/manifest.mn
|
|
@@ -5,7 +5,7 @@
|
|
|
|
CORE_DEPTH = ../../..
|
|
|
|
-DIRS = testlib
|
|
+DIRS =
|
|
|
|
MODULE = nss
|
|
|
|
--- a/a/nss/lib/nss/nssinit.c
|
|
+++ a/a/nss/lib/nss/nssinit.c
|
|
@@ -275,6 +275,7 @@
|
|
const char *secmodprefix,
|
|
char **retoldpath, char **retnewpath)
|
|
{
|
|
+#ifndef NSS_STATIC_PKCS11
|
|
char *path, *oldpath = NULL, *lastsep;
|
|
int len, path_len, secmod_len, dll_len;
|
|
|
|
@@ -309,6 +310,10 @@
|
|
}
|
|
*retoldpath = oldpath;
|
|
*retnewpath = path;
|
|
+#else
|
|
+ *retoldpath = NULL;
|
|
+ *retnewpath = PORT_Strdup("NSSCKBI");
|
|
+#endif
|
|
return;
|
|
}
|
|
|
|
--- a/a/nss/lib/pk11wrap/pk11load.c
|
|
+++ a/a/nss/lib/pk11wrap/pk11load.c
|
|
@@ -31,6 +31,8 @@
|
|
#include "debug_module.c"
|
|
#endif
|
|
|
|
+extern CK_RV NSSCKBI_C_GetFunctionList();
|
|
+
|
|
/* build the PKCS #11 2.01 lock files */
|
|
CK_RV PR_CALLBACK
|
|
secmodCreateMutext(CK_VOID_PTR_PTR pmutex)
|
|
@@ -456,6 +456,7 @@
|
|
/* load the library. If this succeeds, then we have to remember to
|
|
* unload the library if anything goes wrong from here on out...
|
|
*/
|
|
+#ifndef NSS_STATIC_PKCS11 // With NSS_STATIC_PKCS11, the only module wodule we load here is nssckbi
|
|
#if defined(_WIN32)
|
|
if (nssUTF8_Length(mod->dllName, NULL)) {
|
|
wchar_t *dllNameWide = _NSSUTIL_UTF8ToWide(mod->dllName);
|
|
@@ -495,6 +496,11 @@
|
|
mod->moduleDBFunc = (void *)
|
|
PR_FindSymbol(library, "NSS_ReturnModuleSpecData");
|
|
}
|
|
+#else
|
|
+ if (strcmp(mod->dllName, "NSSCKBI") == 0)
|
|
+ fentry = NSSCKBI_C_GetFunctionList;
|
|
+#endif
|
|
+
|
|
if (mod->moduleDBFunc == NULL)
|
|
mod->isModuleDB = PR_FALSE;
|
|
if ((ientry == NULL) && (fentry == NULL)) {
|
|
@@ -545,10 +551,12 @@
|
|
|
|
fail:
|
|
mod->functionList = NULL;
|
|
+#ifndef NSS_STATIC_PKCS11
|
|
disableUnload = PR_GetEnvSecure("NSS_DISABLE_UNLOAD");
|
|
if (library && !disableUnload) {
|
|
PR_UnloadLibrary(library);
|
|
}
|
|
+#endif
|
|
return SECFailure;
|
|
}
|
|
|
|
--- a/a/nss/lib/ckfw/nssck.api
|
|
+++ a/a/nss/lib/ckfw/nssck.api
|
|
@@ -1842,7 +1842,11 @@
|
|
|
|
/* This one is always present */
|
|
CK_RV CK_ENTRY
|
|
+#ifndef NSS_STATIC_PKCS11
|
|
C_GetFunctionList
|
|
+#else
|
|
+NSSCKBI_C_GetFunctionList
|
|
+#endif
|
|
(
|
|
CK_FUNCTION_LIST_PTR_PTR ppFunctionList
|
|
)
|
|
--- a/a/nss/lib/freebl/loader.c
|
|
+++ a/a/nss/lib/freebl/loader.c
|
|
@@ -35,6 +35,7 @@
|
|
static PRStatus
|
|
freebl_LoadDSO(void)
|
|
{
|
|
+#ifndef NSS_STATIC_FREEBL
|
|
PRLibrary *handle;
|
|
const char *name = getLibName();
|
|
|
|
@@ -47,32 +48,42 @@
|
|
if (handle) {
|
|
PRFuncPtr address = PR_FindFunctionSymbol(handle, "FREEBL_GetVector");
|
|
if (address) {
|
|
- FREEBLGetVectorFn *getVector = (FREEBLGetVectorFn *)address;
|
|
+#else
|
|
+ FREEBLGetVectorFn *getVector = FREEBL_GetVector;
|
|
+#endif
|
|
const FREEBLVector *dsoVector = getVector();
|
|
if (dsoVector) {
|
|
unsigned short dsoVersion = dsoVector->version;
|
|
unsigned short myVersion = FREEBL_VERSION;
|
|
if (MSB(dsoVersion) == MSB(myVersion) &&
|
|
LSB(dsoVersion) >= LSB(myVersion) &&
|
|
dsoVector->length >= sizeof(FREEBLVector)) {
|
|
vector = dsoVector;
|
|
+#ifndef NSS_STATIC_FREEBL
|
|
libraryName = name;
|
|
blLib = handle;
|
|
+#else
|
|
+ libraryName = "self";
|
|
+#endif
|
|
return PR_SUCCESS;
|
|
}
|
|
}
|
|
+ else
|
|
+ return PR_FAILURE;
|
|
+#ifndef NSS_STATIC_FREEBL
|
|
}
|
|
#ifdef DEBUG
|
|
if (blLib) {
|
|
PRStatus status = PR_UnloadLibrary(blLib);
|
|
PORT_Assert(PR_SUCCESS == status);
|
|
}
|
|
#else
|
|
if (blLib)
|
|
PR_UnloadLibrary(blLib);
|
|
#endif
|
|
}
|
|
return PR_FAILURE;
|
|
+#endif
|
|
}
|
|
|
|
static const PRCallOnceType pristineCallOnce;
|
|
@@ -860,6 +871,7 @@
|
|
void
|
|
BL_Unload(void)
|
|
{
|
|
+#ifndef NSS_STATIC_FREEBL
|
|
/* This function is not thread-safe, but doesn't need to be, because it is
|
|
* only called from functions that are also defined as not thread-safe,
|
|
* namely C_Finalize in softoken, and the SSL bypass shutdown callback called
|
|
@@ -872,6 +884,7 @@
|
|
PR_UnloadLibrary(blLib);
|
|
#endif
|
|
}
|
|
+#endif
|
|
blLib = NULL;
|
|
loadFreeBLOnce = pristineCallOnce;
|
|
}
|
|
--- a/a/nspr/build/autoconf/config.sub 2017-09-07 15:29:45.031246453 +0200
|
|
+++ a/a/nspr/build/autoconf/config.sub 2017-09-07 15:32:13.087235423 +0200
|
|
@@ -110,6 +110,9 @@
|
|
exit 1;;
|
|
esac
|
|
|
|
+if test $1 = "arm64-apple-darwin"; then echo $1; exit; fi
|
|
+if test $1 = "aarch64-apple-darwin"; then echo $1; exit; fi
|
|
+
|
|
# Split fields of configuration type
|
|
# shellcheck disable=SC2162
|
|
IFS="-" read field1 field2 field3 field4 <<EOF
|
|
--- a/a/nspr/config/autoconf.mk.in
|
|
+++ a/a/nspr/config/autoconf.mk.in
|
|
@@ -69,7 +69,7 @@
|
|
MSC_VER = @MSC_VER@
|
|
AR = @AR@
|
|
AR_FLAGS = @AR_FLAGS@
|
|
-LD = @LD@
|
|
+LD = echo
|
|
RANLIB = @RANLIB@
|
|
PERL = @PERL@
|
|
RC = @RC@
|
|
--- a/a/nspr/configure
|
|
+++ a/a/nspr/configure
|
|
@@ -2507,7 +2507,7 @@
|
|
OBJDIR='$(OBJDIR_NAME)'
|
|
OBJDIR_NAME=.
|
|
OBJDIR_SUFFIX=OBJ
|
|
-NSINSTALL='$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'
|
|
+NSINSTALL=${NSINSTALL?'$(MOD_DEPTH)/config/$(OBJDIR_NAME)/nsinstall'}
|
|
NOSUCHFILE=/no-such-file
|
|
LIBNSPR='-L$(dist_libdir) -lnspr$(MOD_MAJOR_VERSION)'
|
|
LIBPLC='-L$(dist_libdir) -lplc$(MOD_MAJOR_VERSION)'
|
|
@@ -5571,7 +5571,7 @@
|
|
LIB_SUFFIX=a
|
|
DLL_SUFFIX=so
|
|
ASM_SUFFIX=s
|
|
-MKSHLIB='$(LD) $(DSO_LDOPTS) -o $@'
|
|
+MKSHLIB='touch $@; echo'
|
|
PR_MD_ASFILES=
|
|
PR_MD_CSRCS=
|
|
PR_MD_ARCH_DIR=unix
|
|
@@ -6485,7 +6485,7 @@
|
|
DSO_CFLAGS=-fPIC
|
|
DSO_LDOPTS='-dynamiclib -compatibility_version 1 -current_version 1 -all_load -install_name @__________________________________________________OOO/$@ -headerpad_max_install_names'
|
|
_OPTIMIZE_FLAGS=-O2
|
|
- MKSHLIB='$(CC) $(DSO_LDOPTS) -o $@'
|
|
+ MKSHLIB=touch $@
|
|
STRIP="$STRIP -x -S"
|
|
DLL_SUFFIX=dylib
|
|
USE_PTHREADS=1
|
|
--- a/a/nss/coreconf/ruleset.mk
|
|
+++ a/a/nss/coreconf/ruleset.mk
|
|
@@ -45,7 +45,7 @@
|
|
endif
|
|
|
|
ifeq ($(MKPROG),)
|
|
- MKPROG = $(CC)
|
|
+ MKPROG = touch $@; echo
|
|
endif
|
|
|
|
#
|
|
--- a/a/nss/coreconf/Darwin.mk
|
|
+++ a/a/nss/coreconf/Darwin.mk
|
|
@@ -116,7 +116,7 @@
|
|
DSO_LDOPTS += --coverage
|
|
endif
|
|
|
|
-MKSHLIB = $(CC) $(DSO_LDOPTS) $(DARWIN_SDK_SHLIBFLAGS)
|
|
+MKSHLIB = touch $@; echo
|
|
DLL_SUFFIX = dylib
|
|
ifdef MAPFILE
|
|
MKSHLIB += -exported_symbols_list $(MAPFILE)
|
|
--- a/a/nss/coreconf/UNIX.mk
|
|
+++ a/a/nss/coreconf/UNIX.mk
|
|
@@ -19,10 +19,14 @@
|
|
|
|
ifdef BUILD_TREE
|
|
NSINSTALL_DIR = $(BUILD_TREE)/nss
|
|
+ifndef NSINSTALL
|
|
NSINSTALL = $(BUILD_TREE)/nss/nsinstall
|
|
+endif
|
|
else
|
|
NSINSTALL_DIR = $(CORE_DEPTH)/coreconf/nsinstall
|
|
+ifndef NSINSTALL
|
|
NSINSTALL = $(NSINSTALL_DIR)/$(OBJDIR_NAME)/nsinstall
|
|
+endif
|
|
endif
|
|
|
|
####################################################################
|
|
--- a/a/nspr/pr/include/md/_darwin.h
|
|
+++ a/a/nspr/pr/include/md/_darwin.h
|
|
@@ -26,6 +26,8 @@
|
|
#define _PR_SI_ARCHITECTURE "ppc"
|
|
#elif defined(__arm__)
|
|
#define _PR_SI_ARCHITECTURE "arm"
|
|
+#elif defined(__arm64__)
|
|
+#define _PR_SI_ARCHITECTURE "arm64"
|
|
#elif defined(__aarch64__)
|
|
#define _PR_SI_ARCHITECTURE "aarch64"
|
|
#else
|
|
--- a/a/nss/cmd/shlibsign/sign.sh
|
|
+++ a/a/nss/cmd/shlibsign/sign.sh
|
|
@@ -2,6 +2,9 @@
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
+
|
|
+# Pointless to sign anything for iOS as we don't build any real shared libraries
|
|
+exit 0
|
|
|
|
# arguments:
|
|
# 1: full path to DIST/OBJDIR (parent dir of "lib")
|