From fd5592d05d5db9aef8017ac29e178c13dce435ee Mon Sep 17 00:00:00 2001 From: "Stuart D. Gathman" Date: Thu, 31 May 2018 11:04:56 -0400 Subject: [PATCH] Add cnacl s390x support BZ#1584480 --- cjdns.s390x.patch | 182 ++++++++++++++++++++++++++++++++++++++++++++++ cjdns.spec | 10 ++- 2 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 cjdns.s390x.patch diff --git a/cjdns.s390x.patch b/cjdns.s390x.patch new file mode 100644 index 0000000..ef9b11f --- /dev/null +++ b/cjdns.s390x.patch @@ -0,0 +1,182 @@ +--- cjdns-cjdns-v20.2/node_build/dependencies/cnacl/cpucycles/osfreq.c.s390x 2018-05-31 12:03:56.321045469 +0200 ++++ cjdns-cjdns-v20.2/node_build/dependencies/cnacl/cpucycles/osfreq.c 2018-05-31 12:04:07.901045469 +0200 +@@ -33,6 +33,18 @@ static double osfreq(void) + f = fopen("/proc/cpuinfo","r"); + if (f) { + for (;;) { ++ s = fscanf(f,"cpu MHz dynamic : %lf",&result); ++ if (s > 0) break; ++ if (s == 0) s = fscanf(f,"%*[^\n]\n"); ++ if (s < 0) { result = 0; break; } ++ } ++ fclose(f); ++ if (result) return 1000000.0 * result; ++ } ++ ++ f = fopen("/proc/cpuinfo","r"); ++ if (f) { ++ for (;;) { + s = fscanf(f,"clock : %lf",&result); + if (s > 0) break; + if (s == 0) s = fscanf(f,"%*[^\n]\n"); +--- cjdns-cjdns-v20.2/node_build/dependencies/cnacl/do.s390x 2018-04-18 09:35:41.000000000 +0200 ++++ cjdns-cjdns-v20.2/node_build/dependencies/cnacl/do 2018-05-31 11:56:41.881045469 +0200 +@@ -418,7 +418,7 @@ echo "=== `date` === starting curvecp" + + okabi \ + | awk ' +- { if ($1=="amd64" || $1=="ia64" || $1=="ppc64" || $1=="sparcv9" || $1=="mips64") print 1,$1 ++ { if ($1=="amd64" || $1=="ia64" || $1=="ppc64" || $1=="sparcv9" || $1=="mips64" || $1=="s390x") print 1,$1 + else if ($1 == "mips32") print 2,$1 + else print 3,$1 + } +--- cjdns-cjdns-v20.2/node_build/dependencies/cnacl/node_build/plans/s390x_plan.json.s390x 2018-05-31 11:56:41.881045469 +0200 ++++ cjdns-cjdns-v20.2/node_build/dependencies/cnacl/node_build/plans/s390x_plan.json 2018-05-31 11:56:41.881045469 +0200 +@@ -0,0 +1,124 @@ ++{ ++ "PLAN_IMPLEMENTATIONS": [ ++ [ ++ "crypto_sign", ++ "ed25519", ++ "ref10" ++ ], ++ [ ++ "crypto_stream", ++ "aes128ctr", ++ "portable" ++ ], ++ [ ++ "crypto_auth", ++ "hmacsha256", ++ "ref" ++ ], ++ [ ++ "crypto_core", ++ "hsalsa20", ++ "ref" ++ ], ++ [ ++ "crypto_scalarmult", ++ "curve25519", ++ "ref" ++ ], ++ [ ++ "crypto_core", ++ "salsa20", ++ "ref" ++ ], ++ [ ++ "crypto_verify", ++ "16", ++ "ref" ++ ], ++ [ ++ "crypto_onetimeauth", ++ "poly1305", ++ "donna" ++ ], ++ [ ++ "crypto_core", ++ "salsa208", ++ "ref" ++ ], ++ [ ++ "crypto_hashblocks", ++ "sha512", ++ "inplace" ++ ], ++ [ ++ "crypto_stream", ++ "salsa2012", ++ "ref" ++ ], ++ [ ++ "crypto_stream", ++ "xsalsa20", ++ "ref" ++ ], ++ [ ++ "crypto_secretbox", ++ "xsalsa20poly1305", ++ "ref" ++ ], ++ [ ++ "crypto_core", ++ "salsa2012", ++ "ref" ++ ], ++ [ ++ "crypto_verify", ++ "32", ++ "ref" ++ ], ++ [ ++ "crypto_stream", ++ "salsa208", ++ "ref" ++ ], ++ [ ++ "crypto_hash", ++ "sha256", ++ "ref" ++ ], ++ [ ++ "crypto_hashblocks", ++ "sha256", ++ "ref" ++ ], ++ [ ++ "crypto_hash", ++ "sha512", ++ "ref" ++ ], ++ [ ++ "crypto_box", ++ "curve25519xsalsa20poly1305", ++ "ref" ++ ], ++ [ ++ "crypto_auth", ++ "hmacsha512256", ++ "ref" ++ ], ++ [ ++ "crypto_stream", ++ "salsa20", ++ "ref" ++ ] ++ ], ++ "PLAN_TYPES": [ ++ "typedef short crypto_int16;", ++ "typedef unsigned int crypto_uint32;", ++ "typedef unsigned short crypto_uint16;", ++ "typedef long long crypto_int64;", ++ "typedef int crypto_int32;", ++ "typedef unsigned char crypto_uint8;", ++ "typedef signed char crypto_int8;", ++ "typedef unsigned long long crypto_uint64;" ++ ] ++} +--- cjdns-cjdns-v20.2/node_build/dependencies/cnacl/okcompilers/abiname.c.s390x 2018-04-18 09:35:41.000000000 +0200 ++++ cjdns-cjdns-v20.2/node_build/dependencies/cnacl/okcompilers/abiname.c 2018-05-31 11:56:41.881045469 +0200 +@@ -14,6 +14,8 @@ const char *abi(void) + return "ppc64"; + #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) + return "ppc32"; ++#elif defined(__s390x__) ++ return "s390x" + #elif defined(__sparcv9__) || defined(__sparcv9) + return "sparcv9"; + #elif defined(__sparc_v8__) +--- cjdns-cjdns-v20.2/node_build/dependencies/cnacl/okcompilers/abiname_xcompile.c.s390x 2018-04-18 09:35:41.000000000 +0200 ++++ cjdns-cjdns-v20.2/node_build/dependencies/cnacl/okcompilers/abiname_xcompile.c 2018-05-31 11:56:41.881045469 +0200 +@@ -20,6 +20,8 @@ + #error ABI_IS_ppc64__ + #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) + #error ABI_IS_ppc32__ ++#elif defined(__s390x__) ++ #error ABI_IS_s390x__ + #elif defined(__sparcv9__) || defined(__sparcv9) + #error ABI_IS_sparcv9__ + #elif defined(__sparc_v8__) + diff --git a/cjdns.spec b/cjdns.spec index c16ae03..b59487b 100644 --- a/cjdns.spec +++ b/cjdns.spec @@ -50,7 +50,7 @@ Name: cjdns # major version is cjdns protocol version: Version: 20.2 -Release: 1%{?dist} +Release: 2%{?dist} Summary: The privacy-friendly network without borders Group: System Environment/Base # cjdns is all GPLv3 except libuv which is MIT and BSD and ISC @@ -108,6 +108,8 @@ Patch12: cjdns.sign.patch #Patch15: cjdns.benc.patch # Specify python2 for systems that default to python3 Patch16: cjdns.python3.patch +# s390x support for embedded cnacl library from Dan HorĂ¡k +Patch17: cjdns.s390x.patch BuildRequires: nodejs, nodejs-ronn, python2 @@ -133,7 +135,7 @@ Provides: bundled(nacl) = 20110221 %endif # build system requires nodejs, unfortunately ExclusiveArch: %{nodejs_arches} -%if 0%{use_embedded} +%if 0 && 0%{use_embedded} # The nodejs build system for embedded cnacl has no "plan" for s390x. # It might work to copy another big endian plan like ppc64. ExcludeArch: s390x @@ -236,6 +238,7 @@ fi #patch14 -b .entropy #patch15 -b .benc %patch16 -b .python3 +%patch17 -p1 -b .s390x cp %{SOURCE1} README_Fedora.md @@ -542,6 +545,9 @@ fi %{_bindir}/graphStats %changelog +* Thu May 31 2018 Stuart Gathman - 20.2-2 +- Add cnacl s390x support BZ#1584480 + * Tue May 22 2018 Stuart Gathman - 20.2-1 - New upstream release BZ#1464671