diff options
| author | Koen Kooi <koen@openembedded.org> | 2010-04-16 10:17:50 +0200 |
|---|---|---|
| committer | Koen Kooi <koen@openembedded.org> | 2010-04-16 10:17:50 +0200 |
| commit | bf18c876b0b6dd542f80dfccd575d9fa2c3a4fdf (patch) | |
| tree | 279c8491ed91af425aee0a675591a351948f3975 /recipes/mozilla | |
| parent | 199effd4c7b1b62bc133a577e42d7043ee7202e7 (diff) | |
nss 3.12: import from jalimo, convert to new style staging, convert to new style checksums, fix QA errors, fix packaging
Diffstat (limited to 'recipes/mozilla')
| -rw-r--r-- | recipes/mozilla/nss-3.12/25_entropy.dpatch | 16 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/38_mips64_build.dpatch | 22 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/80_security_build.dpatch | 11 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/80_security_tools.dpatch | 31 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/81_sonames.dpatch | 333 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/85_security_load.dpatch | 57 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/90_realpath.dpatch | 29 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/91_build_pwdecrypt.dpatch | 12 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/95_add_spi+cacert_ca_certs.dpatch | 1145 | ||||
| -rw-r--r-- | recipes/mozilla/nss-3.12/build-fix.patch | 63 | ||||
| -rw-r--r-- | recipes/mozilla/nss_3.12.bb | 99 |
11 files changed, 1818 insertions, 0 deletions
diff --git a/recipes/mozilla/nss-3.12/25_entropy.dpatch b/recipes/mozilla/nss-3.12/25_entropy.dpatch new file mode 100644 index 0000000000..7453929eb0 --- /dev/null +++ b/recipes/mozilla/nss-3.12/25_entropy.dpatch @@ -0,0 +1,16 @@ +Index: mozilla/security/nss/lib/freebl/unix_rand.c +=================================================================== +--- mozilla.orig/security/nss/lib/freebl/unix_rand.c 2008-07-23 20:20:15.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/unix_rand.c 2008-07-23 20:20:18.000000000 +0200 +@@ -888,7 +888,11 @@ + /* Fork netstat to collect its output by default. Do not unset this unless + * another source of entropy is available + */ ++#ifndef LINUX + #define DO_NETSTAT 1 ++#else ++#undef DO_NETSTAT ++#endif + + void RNG_SystemInfoForRNG(void) + { diff --git a/recipes/mozilla/nss-3.12/38_mips64_build.dpatch b/recipes/mozilla/nss-3.12/38_mips64_build.dpatch new file mode 100644 index 0000000000..66c0c9576f --- /dev/null +++ b/recipes/mozilla/nss-3.12/38_mips64_build.dpatch @@ -0,0 +1,22 @@ +Index: mozilla/security/coreconf/Linux.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux.mk 2008-07-23 20:20:14.000000000 +0200 ++++ mozilla/security/coreconf/Linux.mk 2008-07-23 20:20:28.000000000 +0200 +@@ -105,6 +105,9 @@ + OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE + CPU_ARCH = hppa + else ++ ifeq ($(OS_TEST),mips64) ++ CPU_ARCH = mips ++else + ifeq ($(OS_TEST),s390) + OS_REL_CFLAGS = -DLINUX1_2 -D_XOPEN_SOURCE + CPU_ARCH = s390 +@@ -133,6 +136,7 @@ + endif + endif + endif ++endif + + + LIBC_TAG = _glibc diff --git a/recipes/mozilla/nss-3.12/80_security_build.dpatch b/recipes/mozilla/nss-3.12/80_security_build.dpatch new file mode 100644 index 0000000000..473c2729a8 --- /dev/null +++ b/recipes/mozilla/nss-3.12/80_security_build.dpatch @@ -0,0 +1,11 @@ +Index: mozilla/security/nss/cmd/shlibsign/Makefile +=================================================================== +--- mozilla.orig/security/nss/cmd/shlibsign/Makefile 2008-07-23 20:20:14.000000000 +0200 ++++ mozilla/security/nss/cmd/shlibsign/Makefile 2008-07-23 20:20:30.000000000 +0200 +@@ -99,5 +99,5 @@ + $(call core_abspath,$(NSPR_LIB_DIR)) $(call core_abspath,$<) + endif + +-libs install :: $(CHECKLOC) ++libs install :: + diff --git a/recipes/mozilla/nss-3.12/80_security_tools.dpatch b/recipes/mozilla/nss-3.12/80_security_tools.dpatch new file mode 100644 index 0000000000..f7df38c973 --- /dev/null +++ b/recipes/mozilla/nss-3.12/80_security_tools.dpatch @@ -0,0 +1,31 @@ +Index: mozilla/security/coreconf/Linux.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux.mk 2008-07-23 20:20:28.000000000 +0200 ++++ mozilla/security/coreconf/Linux.mk 2008-07-23 20:20:33.000000000 +0200 +@@ -184,3 +184,6 @@ + # Always set CPU_TAG on Linux, OpenVMS, WINCE. + # + CPU_TAG = _$(CPU_ARCH) ++ ++USE_SYSTEM_ZLIB = 1 ++ZLIB_LIBS = -lz +Index: mozilla/security/nss/cmd/platlibs.mk +=================================================================== +--- mozilla.orig/security/nss/cmd/platlibs.mk 2008-07-23 20:20:13.000000000 +0200 ++++ mozilla/security/nss/cmd/platlibs.mk 2008-07-23 20:20:33.000000000 +0200 +@@ -38,6 +38,7 @@ + # set RPATH-type linker instructions here so they can be used in the shared + # version and in the mixed (static nss libs/shared NSPR libs) version. + ++ifdef ENABLE_RPATH + ifeq ($(OS_ARCH), SunOS) + ifeq ($(BUILD_SUN_PKG), 1) + ifeq ($(USE_64), 1) +@@ -71,6 +72,7 @@ + endif + endif + endif ++endif + + SQLITE=-lsqlite3 + diff --git a/recipes/mozilla/nss-3.12/81_sonames.dpatch b/recipes/mozilla/nss-3.12/81_sonames.dpatch new file mode 100644 index 0000000000..77a72abdb1 --- /dev/null +++ b/recipes/mozilla/nss-3.12/81_sonames.dpatch @@ -0,0 +1,333 @@ +Index: mozilla/security/coreconf/BSD_OS.mk +=================================================================== +--- mozilla.orig/security/coreconf/BSD_OS.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/BSD_OS.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -73,7 +73,7 @@ + DSO_CFLAGS = -fPIC -DPIC + DSO_LDOPTS = -shared + DSO_LDFLAGS = +-DSO_LDOPTS += -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) ++DSO_LDOPTS += -Wl,-soname,$(SONAME) + + ifdef LIBRUNPATH + DSO_LDOPTS += -Wl,-R$(LIBRUNPATH) +Index: mozilla/security/coreconf/BeOS.mk +=================================================================== +--- mozilla.orig/security/coreconf/BeOS.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/BeOS.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -59,7 +59,7 @@ + CPU_ARCH = x86 + endif + +-MKSHLIB = $(CC) -nostart -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB = $(CC) -nostart -Wl,-soname -Wl,$(SONAME) + ifdef BUILD_OPT + OPTIMIZER = -O2 + endif +Index: mozilla/security/coreconf/FreeBSD.mk +=================================================================== +--- mozilla.orig/security/coreconf/FreeBSD.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/FreeBSD.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -51,7 +51,7 @@ + OS_CFLAGS = $(DSO_CFLAGS) -ansi -Wall -Wno-switch -DFREEBSD -DHAVE_STRERROR -DHAVE_BSD_FLOCK + + DSO_CFLAGS = -fPIC +-DSO_LDOPTS = -shared -Wl,-soname -Wl,$(notdir $@) ++DSO_LDOPTS = -shared -Wl,-soname -Wl,$(SONAME) + + # + # The default implementation strategy for FreeBSD is pthreads. +Index: mozilla/security/coreconf/HP-UX.mk +=================================================================== +--- mozilla.orig/security/coreconf/HP-UX.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/HP-UX.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -83,7 +83,7 @@ + PROCESS_MAP_FILE = grep -v ';+' $< | grep -v ';-' | \ + sed -e 's; DATA ;;' -e 's,;;,,' -e 's,;.*,,' -e 's,^,+e ,' > $@ + +-DSO_LDOPTS = -b +h $(notdir $@) ++DSO_LDOPTS = -b +h $(SONAME) + ifeq ($(OS_TEST),ia64) + DSO_LDOPTS += +b '$$ORIGIN' + endif +Index: mozilla/security/coreconf/IRIX.mk +=================================================================== +--- mozilla.orig/security/coreconf/IRIX.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/IRIX.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -102,7 +102,7 @@ + SHLIB_LD_OPTS += -n32 -mips3 + endif + +-MKSHLIB += $(LD) $(SHLIB_LD_OPTS) -shared -soname $(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB += $(LD) $(SHLIB_LD_OPTS) -shared -soname $(SONAME) + ifdef MAPFILE + # Add LD options to restrict exported symbols to those in the map file + endif +Index: mozilla/security/coreconf/Linux.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux.mk 2008-07-23 20:27:31.000000000 +0200 ++++ mozilla/security/coreconf/Linux.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -143,7 +143,7 @@ + + ifeq ($(OS_RELEASE),2.0) + OS_REL_CFLAGS += -DLINUX2_0 +- MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++ MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(SONAME) + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) + endif +Index: mozilla/security/coreconf/Linux2.1.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux2.1.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/Linux2.1.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -38,7 +38,7 @@ + include $(CORE_DEPTH)/coreconf/Linux.mk + ifeq ($(OS_RELEASE),2.1) + OS_REL_CFLAGS += -DLINUX2_1 +- MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++ MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(SONAME) + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) + endif +Index: mozilla/security/coreconf/Linux2.2.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux2.2.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/Linux2.2.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -38,7 +38,7 @@ + include $(CORE_DEPTH)/coreconf/Linux.mk + + OS_REL_CFLAGS += -DLINUX2_1 +-MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(SONAME) + + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) +Index: mozilla/security/coreconf/Linux2.4.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux2.4.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/Linux2.4.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -38,7 +38,7 @@ + include $(CORE_DEPTH)/coreconf/Linux.mk + + OS_REL_CFLAGS += -DLINUX2_1 +-MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(SONAME) + + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) +Index: mozilla/security/coreconf/Linux2.5.mk +=================================================================== +--- mozilla.orig/security/coreconf/Linux2.5.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/Linux2.5.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -38,7 +38,7 @@ + include $(CORE_DEPTH)/coreconf/Linux.mk + + OS_REL_CFLAGS += -DLINUX2_1 +-MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(SONAME) + + ifdef MAPFILE + MKSHLIB += -Wl,--version-script,$(MAPFILE) +Index: mozilla/security/coreconf/NetBSD.mk +=================================================================== +--- mozilla.orig/security/coreconf/NetBSD.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/NetBSD.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -68,7 +68,7 @@ + DSO_LDOPTS = -shared + DSO_LDFLAGS = + ifeq ($(OBJECT_FMT),ELF) +-DSO_LDOPTS += -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) ++DSO_LDOPTS += -Wl,-soname,$(SONAME) + endif + + ifdef LIBRUNPATH +Index: mozilla/security/coreconf/OSF1.mk +=================================================================== +--- mozilla.orig/security/coreconf/OSF1.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/OSF1.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -64,7 +64,7 @@ + endif + + # The command to build a shared library on OSF1. +-MKSHLIB += ld -shared -expect_unresolved "*" -soname $(notdir $@) ++MKSHLIB += ld -shared -expect_unresolved "*" -soname $(SONAME) + ifdef MAPFILE + MKSHLIB += -hidden -input $(MAPFILE) + endif +Index: mozilla/security/coreconf/OpenBSD.mk +=================================================================== +--- mozilla.orig/security/coreconf/OpenBSD.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/OpenBSD.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -65,7 +65,7 @@ + ARCH = openbsd + + DSO_CFLAGS = -fPIC -DPIC +-DSO_LDOPTS = -shared -fPIC -Wl,-soname,lib$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX) ++DSO_LDOPTS = -shared -fPIC -Wl,-soname,$(SONAME) + DSO_LDFLAGS = + + MKSHLIB = $(CC) $(DSO_LDOPTS) +Index: mozilla/security/coreconf/QNX.mk +=================================================================== +--- mozilla.orig/security/coreconf/QNX.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/QNX.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -54,7 +54,7 @@ + CPU_ARCH = x86 + endif + +-MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) ++MKSHLIB = $(CC) -shared -Wl,-soname -Wl,$(SONAME) + ifdef BUILD_OPT + OPTIMIZER = -O2 + endif +Index: mozilla/security/coreconf/ReliantUNIX.mk +=================================================================== +--- mozilla.orig/security/coreconf/ReliantUNIX.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/ReliantUNIX.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -51,7 +51,7 @@ + OPTIMIZER += -O6 + endif + MKSHLIB = $(LD) +- MKSHLIB += -G -h $(@:$(OBJDIR)/%.so=%.so) ++ MKSHLIB += -G -h $(SONAME) + DSO_LDOPTS += -G -Xlinker -Blargedynsym + else + ## native compiler (CDS++ 1.0) +Index: mozilla/security/coreconf/SunOS5.mk +=================================================================== +--- mozilla.orig/security/coreconf/SunOS5.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/SunOS5.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -143,7 +143,7 @@ + ifeq ($(USE_64), 1) + DSO_LDOPTS += -m64 + endif +- DSO_LDOPTS += -shared -h $(notdir $@) ++ DSO_LDOPTS += -shared -h $(SONAME) + else + ifeq ($(USE_64), 1) + ifeq ($(OS_TEST),i86pc) +@@ -152,7 +152,7 @@ + DSO_LDOPTS +=-xarch=v9 + endif + endif +- DSO_LDOPTS += -G -h $(notdir $@) ++ DSO_LDOPTS += -G -h $(SONAME) + endif + DSO_LDOPTS += -z combreloc -z defs -z ignore + +Index: mozilla/security/coreconf/rules.mk +=================================================================== +--- mozilla.orig/security/coreconf/rules.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/rules.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -115,6 +115,7 @@ + $(INSTALL) -m 644 $(SHARED_LIBRARY:$(DLL_SUFFIX)=pdb) $(SOURCE_LIB_DIR) + endif + endif ++ $(call MKSHLINKS,$(SOURCE_LIB_DIR)) + endif + ifdef IMPORT_LIBRARY + $(INSTALL) -m 775 $(IMPORT_LIBRARY) $(SOURCE_LIB_DIR) +@@ -258,6 +259,7 @@ + release_md:: + ifneq ($(MD_LIB_RELEASE_FILES),) + $(INSTALL) -m 444 $(MD_LIB_RELEASE_FILES) $(SOURCE_RELEASE_PREFIX)/$(SOURCE_RELEASE_LIB_DIR) ++ $(call MKSHLINKS,$(SOURCE_RELEASE_PREFIX)/$(SOURCE_RELEASE_LIB_DIR)) + endif + ifneq ($(MD_BIN_RELEASE_FILES),) + $(INSTALL) -m 555 $(MD_BIN_RELEASE_FILES) $(SOURCE_RELEASE_PREFIX)/$(SOURCE_RELEASE_BIN_DIR) +@@ -313,6 +315,8 @@ + endif + endif + ++$(SHARED_LIBRARY_LINKS): %: $(SHARED_LIBRARY) ++ + $(SHARED_LIBRARY): $(OBJS) $(RES) $(MAPFILE) $(SUB_SHLOBJS) + @$(MAKE_OBJDIR) + rm -f $@ +Index: mozilla/security/coreconf/ruleset.mk +=================================================================== +--- mozilla.orig/security/coreconf/ruleset.mk 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/coreconf/ruleset.mk 2008-07-23 20:28:04.000000000 +0200 +@@ -123,6 +123,25 @@ + ifndef SHARED_LIBRARY + SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION)$(JDK_DEBUG_SUFFIX).$(DLL_SUFFIX) + endif ++ SONAME = $(notdir $(SHARED_LIBRARY)) ++ ifdef SO_VERSION ++ ifneq (,$(findstring $(SONAME),$(MKSHLIB))) ++ SO_VERSION_MAJOR := $(shell echo $(SO_VERSION) | sed 's/^\([^.]*\)\(\.[^.]*\)\?\(\.[^.]*\)\?/\1/') ++ SO_VERSION_MINOR := $(shell echo $(SO_VERSION) | sed 's/^\([^.]*\)\(\.[^.]*\)\?\(\.[^.]*\)\?/\2/') ++ SO_VERSION_MICRO := $(shell echo $(SO_VERSION) | sed 's/^\([^.]*\)\(\.[^.]*\)\?\(\.[^.]*\)\?/\3/') ++ ++ SHARED_LIBRARY_LINKS := $(SONAME) ++ ifdef SO_VERSION_MINOR ++ SHARED_LIBRARY_LINKS += $(SONAME).$(SO_VERSION_MAJOR) ++ endif ++ ++ SONAME := $(SONAME).$(SO_VERSION_MAJOR) ++ SHARED_LIBRARY := $(SHARED_LIBRARY).$(SO_VERSION) ++ ++ MKSHLINKS = (cd $(1) && for link in $(SHARED_LIBRARY_LINKS); do rm -f $$link; ln -s $(notdir $(SHARED_LIBRARY)) $$link; done) ++ endif ++ endif ++ + ifndef MAPFILE_SOURCE + MAPFILE_SOURCE = $(LIBRARY_NAME).def + endif +@@ -189,7 +208,7 @@ + endif + + ALL_TRASH = $(TARGETS) $(OBJS) $(OBJDIR) LOGS TAGS $(GARBAGE) \ +- so_locations $(BUILT_SRCS) $(NOSUCHFILE) ++ so_locations $(BUILT_SRCS) $(NOSUCHFILE) $(SHARED_LIBRARY_LINKS) + + ifdef NS_USE_JDK + ALL_TRASH += $(JDK_HEADER_CFILES) $(JDK_STUB_CFILES) \ +Index: mozilla/security/nss/lib/nss/manifest.mn +=================================================================== +--- mozilla.orig/security/nss/lib/nss/manifest.mn 2008-07-23 20:27:09.000000000 +0200 ++++ mozilla/security/nss/lib/nss/manifest.mn 2008-07-23 20:28:04.000000000 +0200 +@@ -58,6 +58,7 @@ + + LIBRARY_NAME = nss + LIBRARY_VERSION = 3 ++SO_VERSION = 1d + + # This part of the code, including all sub-dirs, can be optimized for size + export ALLOW_OPT_CODE_SIZE = 1 +Index: mozilla/security/nss/lib/smime/manifest.mn +=================================================================== +--- mozilla.orig/security/nss/lib/smime/manifest.mn 2008-07-23 20:27:10.000000000 +0200 ++++ mozilla/security/nss/lib/smime/manifest.mn 2008-07-23 20:28:04.000000000 +0200 +@@ -79,6 +79,7 @@ + + LIBRARY_NAME = smime + LIBRARY_VERSION = 3 ++SO_VERSION = 1d + + # This part of the code, including all sub-dirs, can be optimized for size + export ALLOW_OPT_CODE_SIZE = 1 +Index: mozilla/security/nss/lib/ssl/manifest.mn +=================================================================== +--- mozilla.orig/security/nss/lib/ssl/manifest.mn 2008-07-23 20:27:09.000000000 +0200 ++++ mozilla/security/nss/lib/ssl/manifest.mn 2008-07-23 20:28:04.000000000 +0200 +@@ -83,6 +83,7 @@ + + LIBRARY_NAME = ssl + LIBRARY_VERSION = 3 ++SO_VERSION = 1d + + # This part of the code, including all sub-dirs, can be optimized for size + export ALLOW_OPT_CODE_SIZE = 1 +Index: mozilla/security/nss/lib/util/manifest.mn +=================================================================== +--- mozilla.orig/security/nss/lib/util/manifest.mn 2008-07-23 20:27:09.000000000 +0200 ++++ mozilla/security/nss/lib/util/manifest.mn 2008-07-23 20:28:04.000000000 +0200 +@@ -100,6 +100,7 @@ + + LIBRARY_NAME = nssutil + LIBRARY_VERSION = 3 ++SO_VERSION = 1d + + # This part of the code, including all sub-dirs, can be optimized for size + export ALLOW_OPT_CODE_SIZE = 1 diff --git a/recipes/mozilla/nss-3.12/85_security_load.dpatch b/recipes/mozilla/nss-3.12/85_security_load.dpatch new file mode 100644 index 0000000000..8581f9b28f --- /dev/null +++ b/recipes/mozilla/nss-3.12/85_security_load.dpatch @@ -0,0 +1,57 @@ +Index: mozilla/security/nss/lib/freebl/genload.c +=================================================================== +--- mozilla.orig/security/nss/lib/freebl/genload.c 2008-07-23 20:27:21.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/genload.c 2008-07-23 20:28:57.000000000 +0200 +@@ -113,9 +113,14 @@ + + /* Remove the trailing filename from referencePath and add the new one */ + c = strrchr(referencePath, PR_GetDirectorySeparator()); ++ if (!c) { /* referencePath doesn't contain a / means that dladdr gave us argv[0] ++ * and program was called from $PATH. Hack to get libs from /usr/lib */ ++ referencePath = "/usr/lib/"; ++ c = &referencePath[8]; /* last / */ ++ } + if (c) { + size_t referencePathSize = 1 + c - referencePath; +- fullName = (char*) PORT_Alloc(strlen(name) + referencePathSize + 1); ++ fullName = (char*) PORT_Alloc(strlen(name) + referencePathSize + 5); + if (fullName) { + memcpy(fullName, referencePath, referencePathSize); + strcpy(fullName + referencePathSize, name); +@@ -125,7 +130,17 @@ + #endif + libSpec.type = PR_LibSpec_Pathname; + libSpec.value.pathname = fullName; ++ if ((referencePathSize >= 4) && ++ (strncmp(fullName + referencePathSize - 4, "bin", 3) == 0)) { ++ memcpy(fullName + referencePathSize -4, "lib", 3); ++ } ++ strcpy(fullName + referencePathSize, "nss/"); ++ strcpy(fullName + referencePathSize + 4, name); + dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL); ++ if (! dlh) { ++ strcpy(fullName + referencePathSize, name); ++ dlh = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL); ++ } + PORT_Free(fullName); + } + } +Index: mozilla/security/nss/lib/pk11wrap/pk11load.c +=================================================================== +--- mozilla.orig/security/nss/lib/pk11wrap/pk11load.c 2008-07-23 20:27:22.000000000 +0200 ++++ mozilla/security/nss/lib/pk11wrap/pk11load.c 2008-07-23 20:28:57.000000000 +0200 +@@ -331,6 +331,14 @@ + #endif + + if (library == NULL) { ++ full_name = rindex(mod->dllName, PR_GetDirectorySeparator()); ++ if (full_name) ++ full_name++; ++ else ++ full_name = mod->dllName; ++ library = loader_LoadLibrary(full_name); ++ } ++ if (library == NULL) { + return SECFailure; + } + diff --git a/recipes/mozilla/nss-3.12/90_realpath.dpatch b/recipes/mozilla/nss-3.12/90_realpath.dpatch new file mode 100644 index 0000000000..46e12d05b0 --- /dev/null +++ b/recipes/mozilla/nss-3.12/90_realpath.dpatch @@ -0,0 +1,29 @@ +Index: mozilla/security/nss/lib/freebl/genload.c +=================================================================== +--- mozilla.orig/security/nss/lib/freebl/genload.c 2008-07-23 20:20:36.000000000 +0200 ++++ mozilla/security/nss/lib/freebl/genload.c 2008-07-23 20:20:39.000000000 +0200 +@@ -62,6 +62,16 @@ + */ + static char* loader_GetOriginalPathname(const char* link) + { ++#ifdef __GLIBC__ ++ char* tmp = realpath(link, NULL); ++ char* resolved; ++ if (! tmp) ++ return NULL; ++ resolved = PR_Malloc(strlen(tmp) + 1); ++ strcpy(resolved, tmp); /* This is necessary because PR_Free might not be using free() */ ++ free(tmp); ++ return resolved; ++#else + char* resolved = NULL; + char* input = NULL; + PRUint32 iterations = 0; +@@ -96,6 +106,7 @@ + input = NULL; + } + return input; ++#endif + } + #endif /* XP_UNIX */ + diff --git a/recipes/mozilla/nss-3.12/91_build_pwdecrypt.dpatch b/recipes/mozilla/nss-3.12/91_build_pwdecrypt.dpatch new file mode 100644 index 0000000000..db77140f47 --- /dev/null +++ b/recipes/mozilla/nss-3.12/91_build_pwdecrypt.dpatch @@ -0,0 +1,12 @@ +Index: mozilla/security/nss/cmd/manifest.mn +=================================================================== +--- mozilla.orig/security/nss/cmd/manifest.mn 2008-07-23 20:20:10.000000000 +0200 ++++ mozilla/security/nss/cmd/manifest.mn 2008-07-23 20:20:42.000000000 +0200 +@@ -65,6 +65,7 @@ + pk12util \ + pk11mode \ + pp \ ++ pwdecrypt \ + rsaperf \ + sdrtest \ + selfserv \ diff --git a/recipes/mozilla/nss-3.12/95_add_spi+cacert_ca_certs.dpatch b/recipes/mozilla/nss-3.12/95_add_spi+cacert_ca_certs.dpatch new file mode 100644 index 0000000000..d299f69ae5 --- /dev/null +++ b/recipes/mozilla/nss-3.12/95_add_spi+cacert_ca_certs.dpatch @@ -0,0 +1,1145 @@ +Index: mozilla/security/nss/lib/ckfw/builtins/certdata.c +=================================================================== +--- mozilla.orig/security/nss/lib/ckfw/builtins/certdata.c 2008-07-23 20:20:09.000000000 +0200 ++++ mozilla/security/nss/lib/ckfw/builtins/certdata.c 2008-07-23 20:20:45.000000000 +0200 +@@ -797,6 +797,24 @@ + static const CK_ATTRIBUTE_TYPE nss_builtins_types_247 [] = { + CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_TRUST_SERVER_AUTH, CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_CODE_SIGNING, CKA_TRUST_STEP_UP_APPROVED + }; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_248 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERTIFICATE_TYPE, CKA_SUBJECT, CKA_ID, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_VALUE ++}; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_249 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_TRUST_SERVER_AUTH, CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_CODE_SIGNING, CKA_TRUST_STEP_UP_APPROVED ++}; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_250 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERTIFICATE_TYPE, CKA_SUBJECT, CKA_ID, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_VALUE ++}; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_251 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_TRUST_SERVER_AUTH, CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_CODE_SIGNING, CKA_TRUST_STEP_UP_APPROVED ++}; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_252 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERTIFICATE_TYPE, CKA_SUBJECT, CKA_ID, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_VALUE ++}; ++static const CK_ATTRIBUTE_TYPE nss_builtins_types_253 [] = { ++ CKA_CLASS, CKA_TOKEN, CKA_PRIVATE, CKA_MODIFIABLE, CKA_LABEL, CKA_CERT_SHA1_HASH, CKA_CERT_MD5_HASH, CKA_ISSUER, CKA_SERIAL_NUMBER, CKA_TRUST_SERVER_AUTH, CKA_TRUST_EMAIL_PROTECTION, CKA_TRUST_CODE_SIGNING, CKA_TRUST_STEP_UP_APPROVED ++}; + #ifdef DEBUG + static const NSSItem nss_builtins_items_0 [] = { + { (void *)&cko_data, (PRUint32)sizeof(CK_OBJECT_CLASS) }, +@@ -16725,6 +16743,531 @@ + { (void *)&ckt_netscape_trust_unknown, (PRUint32)sizeof(CK_TRUST) }, + { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) } + }; ++static const NSSItem nss_builtins_items_248 [] = { ++ { (void *)&cko_certificate, (PRUint32)sizeof(CK_OBJECT_CLASS) }, ++ { (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)"CAcert.org Class 1 Root CA", (PRUint32)27 }, ++ { (void *)&ckc_x_509, (PRUint32)sizeof(CK_CERTIFICATE_TYPE) }, ++ { (void *)"\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157" ++"\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150" ++"\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164" ++"\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103" ++"\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101" ++"\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206" ++"\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164" ++"\100\143\141\143\145\162\164\056\157\162\147" ++, (PRUint32)123 }, ++ { (void *)"0", (PRUint32)2 }, ++ { (void *)"\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157" ++"\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150" ++"\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164" ++"\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103" ++"\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101" ++"\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206" ++"\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164" ++"\100\143\141\143\145\162\164\056\157\162\147" ++, (PRUint32)123 }, ++ { (void *)"\002\001\000" ++, (PRUint32)3 }, ++ { (void *)"\060\202\007\075\060\202\005\045\240\003\002\001\002\002\001\000" ++"\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060" ++"\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157\164" ++"\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150\164" ++"\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164\056" ++"\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103\101" ++"\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101\165" ++"\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110" ++"\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164\100" ++"\143\141\143\145\162\164\056\157\162\147\060\036\027\015\060\063" ++"\060\063\063\060\061\062\062\071\064\071\132\027\015\063\063\060" ++"\063\062\071\061\062\062\071\064\071\132\060\171\061\020\060\016" ++"\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036" ++"\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057" ++"\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042" ++"\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164" ++"\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151" ++"\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011" ++"\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162" ++"\164\056\157\162\147\060\202\002\042\060\015\006\011\052\206\110" ++"\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002" ++"\012\002\202\002\001\000\316\042\300\342\106\175\354\066\050\007" ++"\120\226\362\240\063\100\214\113\361\073\146\077\061\345\153\002" ++"\066\333\326\174\366\361\210\217\116\167\066\005\101\225\371\011" ++"\360\022\317\106\206\163\140\267\156\176\350\300\130\144\256\315" ++"\260\255\105\027\014\143\372\147\012\350\326\322\277\076\347\230" ++"\304\360\114\372\340\003\273\065\135\154\041\336\236\040\331\272" ++"\315\146\062\067\162\372\367\010\365\307\315\130\311\216\347\016" ++"\136\352\076\376\034\241\024\012\025\154\206\204\133\144\146\052" ++"\172\251\113\123\171\365\210\242\173\356\057\012\141\053\215\262" ++"\176\115\126\245\023\354\352\332\222\236\254\104\101\036\130\140" ++"\145\005\146\370\300\104\275\313\224\367\102\176\013\367\145\150" ++"\230\121\005\360\363\005\221\004\035\033\027\202\354\310\127\273" ++"\303\153\172\210\361\260\162\314\045\133\040\221\354\026\002\022" ++"\217\062\351\027\030\110\320\307\005\056\002\060\102\270\045\234" ++"\005\153\077\252\072\247\353\123\110\367\350\322\266\007\230\334" ++"\033\306\064\177\177\311\034\202\172\005\130\053\010\133\363\070" ++"\242\253\027\135\146\311\230\327\236\020\213\242\322\335\164\232" ++"\367\161\014\162\140\337\315\157\230\063\235\226\064\166\076\044" ++"\172\222\260\016\225\036\157\346\240\105\070\107\252\327\101\355" ++"\112\267\022\366\327\033\203\212\017\056\330\011\266\131\327\252" ++"\004\377\322\223\175\150\056\335\213\113\253\130\272\057\215\352" ++"\225\247\240\303\124\211\245\373\333\213\121\042\235\262\303\276" ++"\021\276\054\221\206\213\226\170\255\040\323\212\057\032\077\306" ++"\320\121\145\207\041\261\031\001\145\177\105\034\207\365\174\320" ++"\101\114\117\051\230\041\375\063\037\165\014\004\121\372\031\167" ++"\333\324\024\034\356\201\303\035\365\230\267\151\006\221\042\335" ++"\000\120\314\201\061\254\022\007\173\070\332\150\133\346\053\324" ++"\176\311\137\255\350\353\162\114\363\001\345\113\040\277\232\246" ++"\127\312\221\000\001\213\241\165\041\067\265\143\015\147\076\106" ++"\117\160\040\147\316\305\326\131\333\002\340\360\322\313\315\272" ++"\142\267\220\101\350\335\040\344\051\274\144\051\102\310\042\334" ++"\170\232\377\103\354\230\033\011\121\113\132\132\302\161\361\304" ++"\313\163\251\345\241\013\002\003\001\000\001\243\202\001\316\060" ++"\202\001\312\060\035\006\003\125\035\016\004\026\004\024\026\265" ++"\062\033\324\307\363\340\346\216\363\275\322\260\072\356\262\071" ++"\030\321\060\201\243\006\003\125\035\043\004\201\233\060\201\230" ++"\200\024\026\265\062\033\324\307\363\340\346\216\363\275\322\260" ++"\072\356\262\071\030\321\241\175\244\173\060\171\061\020\060\016" ++"\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036" ++"\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057" ++"\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042" ++"\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164" ++"\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151" ++"\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011" ++"\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162" ++"\164\056\157\162\147\202\001\000\060\017\006\003\125\035\023\001" ++"\001\377\004\005\060\003\001\001\377\060\062\006\003\125\035\037" ++"\004\053\060\051\060\047\240\045\240\043\206\041\150\164\164\160" ++"\163\072\057\057\167\167\167\056\143\141\143\145\162\164\056\157" ++"\162\147\057\162\145\166\157\153\145\056\143\162\154\060\060\006" ++"\011\140\206\110\001\206\370\102\001\004\004\043\026\041\150\164" ++"\164\160\163\072\057\057\167\167\167\056\143\141\143\145\162\164" ++"\056\157\162\147\057\162\145\166\157\153\145\056\143\162\154\060" ++"\064\006\011\140\206\110\001\206\370\102\001\010\004\047\026\045" ++"\150\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162" ++"\164\056\157\162\147\057\151\156\144\145\170\056\160\150\160\077" ++"\151\144\075\061\060\060\126\006\011\140\206\110\001\206\370\102" ++"\001\015\004\111\026\107\124\157\040\147\145\164\040\171\157\165" ++"\162\040\157\167\156\040\143\145\162\164\151\146\151\143\141\164" ++"\145\040\146\157\162\040\106\122\105\105\040\150\145\141\144\040" ++"\157\166\145\162\040\164\157\040\150\164\164\160\072\057\057\167" ++"\167\167\056\143\141\143\145\162\164\056\157\162\147\060\015\006" ++"\011\052\206\110\206\367\015\001\001\004\005\000\003\202\002\001" ++"\000\050\307\356\234\202\002\272\134\200\022\312\065\012\035\201" ++"\157\211\152\231\314\362\150\017\177\247\341\215\130\225\076\275" ++"\362\006\303\220\132\254\265\140\366\231\103\001\243\210\160\234" ++"\235\142\235\244\207\257\147\130\015\060\066\073\346\255\110\323" ++"\313\164\002\206\161\076\342\053\003\150\361\064\142\100\106\073" ++"\123\352\050\364\254\373\146\225\123\212\115\135\375\073\331\140" ++"\327\312\171\151\073\261\145\222\246\306\201\202\134\234\315\353" ++"\115\001\212\245\337\021\125\252\025\312\037\067\300\202\230\160" ++"\141\333\152\174\226\243\216\056\124\076\117\041\251\220\357\334" ++"\202\277\334\350\105\255\115\220\163\010\074\224\145\260\004\231" ++"\166\177\342\274\302\152\025\252\227\004\067\044\330\036\224\116" ++"\155\016\121\276\326\304\217\312\226\155\367\103\337\350\060\145" ++"\047\073\173\273\103\103\143\304\103\367\262\354\150\314\341\031" ++"\216\042\373\230\341\173\132\076\001\067\073\213\010\260\242\363" ++"\225\116\032\313\233\315\232\261\333\262\160\360\055\112\333\330" ++"\260\343\157\105\110\063\022\377\376\074\062\052\124\367\304\367" ++"\212\360\210\043\302\107\376\144\172\161\300\321\036\246\143\260" ++"\007\176\244\057\323\001\217\334\237\053\266\306\010\251\017\223" ++"\110\045\374\022\375\237\102\334\363\304\076\366\127\260\327\335" ++"\151\321\006\167\064\012\113\322\312\240\377\034\306\214\311\026" ++"\276\304\314\062\067\150\163\137\010\373\121\367\111\123\066\005" ++"\012\225\002\114\362\171\032\020\366\330\072\165\234\363\035\361" ++"\242\015\160\147\206\033\263\026\365\057\345\244\353\171\206\371" ++"\075\013\302\163\013\245\231\254\157\374\147\270\345\057\013\246" ++"\030\044\215\173\321\110\065\051\030\100\254\223\140\341\226\206" ++"\120\264\172\131\330\217\041\013\237\317\202\221\306\073\277\153" ++"\334\007\221\271\227\126\043\252\266\154\224\306\110\006\074\344" ++"\316\116\252\344\366\057\011\334\123\157\056\374\164\353\072\143" ++"\231\302\246\254\211\274\247\262\104\240\015\212\020\343\154\362" ++"\044\313\372\233\237\160\107\056\336\024\213\324\262\040\011\226" ++"\242\144\361\044\034\334\241\065\234\025\262\324\274\125\056\175" ++"\006\365\234\016\125\364\132\326\223\332\166\255\045\163\114\305" ++"\103" ++, (PRUint32)1857 } ++}; ++static const NSSItem nss_builtins_items_249 [] = { ++ { (void *)&cko_netscape_trust, (PRUint32)sizeof(CK_OBJECT_CLASS) }, ++ { (void *)&ck_true, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)&ck_false, (PRUint32)sizeof(CK_BBOOL) }, ++ { (void *)"CAcert.org Class 1 Root CA", (PRUint32)27 }, ++ { (void *)"\023\134\354\066\364\234\270\351\073\032\262\160\315\200\210\106" ++"\166\316\217\063" ++, (PRUint32)20 }, ++ { (void *)"\246\033\067\136\071\015\234\066\124\356\275\040\061\106\037\153" ++, (PRUint32)16 }, ++ { (void *)"\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157" ++"\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150" ++"\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164" ++"\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103" ++"\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101" ++"\165\164\150\157\162\151\164\171\061\ |
