Bug#932893: mozjs60: please add support for riscv64

Aurelien Jarno aurel32 at debian.org
Wed Jul 24 12:15:52 BST 2019


Source: mozjs60
Version: 60.2.3-3
Severity: normal
Tags: patch upstream
User: debian-riscv at lists.debian.org
Usertags: riscv64

Hi,

mozjs60 currently fails to build on the riscv64 architecture as it can
be seen on the following build log excerpt:

| Reexecuting in the virtualenv
| checking for vcs source checkout... no
| checking for a shell... /bin/sh
| checking for host system type... 
| ERROR: Unknown CPU type: riscv64
| make[1]: *** [debian/rules:99: override_dh_auto_configure] Error 1
| make[1]: Leaving directory '/<<PKGBUILDDIR>>'
| make: *** [debian/rules:68: binary-arch] Error 2
| dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2

The full build log is available there:
https://buildd.debian.org/status/fetch.php?pkg=mozjs60&arch=riscv64&ver=60.2.3-3&stamp=1555195397&raw=0

The attached patch adds the missing support for riscv64. It would be
nice if you can include it in the next upload.

Thanks,
Aurelien
-------------- next part --------------
diff -Nru mozjs60-60.2.3/debian/patches/riscv64-support.patch mozjs60-60.2.3/debian/patches/riscv64-support.patch
--- mozjs60-60.2.3/debian/patches/riscv64-support.patch	1970-01-01 01:00:00.000000000 +0100
+++ mozjs60-60.2.3/debian/patches/riscv64-support.patch	2019-07-23 23:42:00.000000000 +0200
@@ -0,0 +1,75 @@
+--- a/build/moz.configure/init.configure
++++ b/build/moz.configure/init.configure
+@@ -676,6 +676,9 @@
+     elif cpu == 'sh4':
+         canonical_cpu = 'sh4'
+         endianness = 'little'
++    elif cpu.startswith('riscv64'):
++        canonical_cpu = 'riscv64'
++        endianness = 'little'
+     elif allow_unknown:
+         canonical_cpu = cpu
+         endianness = 'unknown'
+--- a/mfbt/tests/TestPoisonArea.cpp
++++ b/mfbt/tests/TestPoisonArea.cpp
+@@ -160,6 +160,14 @@
+ #elif defined __aarch64__
+ #define RETURN_INSTR 0xd65f03c0 /* ret */
+ 
++#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
++#if defined(__riscv_compressed)
++#define RETURN_INSTR 0x8082 /* ret */
++#define RETURN_INSTR_TYPE uint16_t
++#else
++#define RETURN_INSTR 0x00008067 /* ret */
++#endif
++
+ #elif defined __ia64
+ struct ia64_instr { uint32_t mI[4]; };
+ static const ia64_instr _return_instr =
+--- a/python/mozbuild/mozbuild/configure/constants.py
++++ b/python/mozbuild/mozbuild/configure/constants.py
+@@ -50,6 +50,7 @@
+     'mips64': 64,
+     'ppc': 32,
+     'ppc64': 64,
++    'riscv64': 64,
+     's390': 32,
+     's390x': 64,
+     'sh4': 32,
+@@ -89,6 +90,7 @@
+     ('mips64', '__mips64'),
+     ('mips32', '__mips__'),
+     ('sh4', '__sh__'),
++    ('riscv64', 'defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64'),
+ ))
+ 
+ assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
+--- a/js/src/jit/AtomicOperations.h
++++ b/js/src/jit/AtomicOperations.h
+@@ -387,6 +387,8 @@
+ # include "jit/none/AtomicOperations-feeling-lucky.h"
+ #elif defined(__s390__) || defined(__s390x__)
+ # include "jit/none/AtomicOperations-feeling-lucky.h"
++#elif defined(__riscv)
++# include "jit/none/AtomicOperations-feeling-lucky.h"
+ #else
+ # error "No AtomicOperations support provided for this platform"
+ #endif
+--- a/js/src/jit/none/AtomicOperations-feeling-lucky.h
++++ b/js/src/jit/none/AtomicOperations-feeling-lucky.h
+@@ -79,6 +79,14 @@
+ #  define GNUC_COMPATIBLE
+ #endif
+ 
++#ifdef __riscv
++#  define GNUC_COMPATIBLE
++#  ifdef __riscv_xlen == 64
++#    define HAS_64BIT_ATOMICS
++#    define HAS_64BIT_LOCKFREE
++#  endif
++#endif
++
+ // The default implementation tactic for gcc/clang is to use the newer
+ // __atomic intrinsics added for use in C++11 <atomic>.  Where that
+ // isn't available, we use GCC's older __sync functions instead.
diff -Nru mozjs60-60.2.3/debian/patches/series mozjs60-60.2.3/debian/patches/series
--- mozjs60-60.2.3/debian/patches/series	2019-04-13 20:40:04.000000000 +0200
+++ mozjs60-60.2.3/debian/patches/series	2019-07-23 23:42:00.000000000 +0200
@@ -22,3 +22,4 @@
 enddianness.patch
 jsproperty-endian.patch
 tests-Skip-a-test-on-s390x.patch
+riscv64-support.patch


More information about the pkg-gnome-maintainers mailing list