[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#859151: Bug#859271: thunderbird: Please add build support for m68k



Hi Carsten!

On 05/05/2017 11:47 AM, Carsten Schoenert wrote:
> Could you prepare new updates patches so we can add sparc64 support
> again? We probably need to upload more than one Debian version of 52.1.0
> so we could add a updated changeset in -2 or so.

Attaching an updated patch for sparc64. It compiles, but there are some
issues with xpcshell which I need to figure out:

Executing /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/xpcshell -g /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/ -a /<<PKGBUILDDIR>>/obj-thunderbird/dist/bin/ -f
/<<PKGBUILDDIR>>/mozilla/toolkit/
mozapps/installer/precompile_cache.js -e precompile_startupcache("resource://gre/");
^G[77997] ###!!! ABORT: u_init() failed: file /<<PKGBUILDDIR>>/mozilla/xpcom/build/XPCOMInit.cpp, line 709
[77997] ###!!! ABORT: u_init() failed: file /<<PKGBUILDDIR>>/mozilla/xpcom/build/XPCOMInit.cpp, line 709
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 415, in <module>
    main()
  File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 409, in main
    args.source, gre_path, base)
  File "/<<PKGBUILDDIR>>/mozilla/toolkit/mozapps/installer/packager.py", line 166, in precompile_cache
    errors.fatal('Error while running startup cache precompilation')
  File "/<<PKGBUILDDIR>>/mozilla/python/mozbuild/mozpack/errors.py", line 103, in fatal
    self._handle(self.FATAL, msg)
  File "/<<PKGBUILDDIR>>/mozilla/python/mozbuild/mozpack/errors.py", line 98, in _handle
    raise ErrorMessage(msg)
mozpack.errors.ErrorMessage: Error: Error while running startup cache precompilation

Please include the patch anyway, I will try to figure out what the problem is
in the meantime. Might be a local issue, too.

PS: The folder with the m68k support patch says "porting-mk68". Could you
    fix that to be "porting-m68k"? Thanks :).

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz@debian.org
`. `'   Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Description: Add sparc64 support to Thunderbird
 This is a squashed commit of the following patches cherry-picked
 from Firefox upstream to add sparc64 support:
  - a73e3b7ea901f648ae7e1c4b41d77c45786bff0b
    Bug 1275204 - protobuf: Sync sparc64 pre-processor defines from upstream. r=fitzgen
  - 9fd9034ad9de26cc0cb0c70f9307d501823a79d9
    Bug 1275204 - media:webrtc: Use better pre-processor defines for sparc64. r=jesup
  - 87f559a4d89164c402d0f22b1ff7b8a686ececfd
    Bug 1275204 - js: Use the arm64 allocator on Linux/sparc64. r=ehoogeveen
  - ef8c81a9852551bb4428850687b41f7fb6137a45
    Bug 1275204 - js: Use better pre-processor defines for sparc64. r=glandium
  - 120b9c868b2155c29eb5d18603a04f21620328af
    Bug 1275204 - ipc:chromium: Use better pre-processor defines for sparc64. r=froydnj
  - fde7f4bca8db23193ba04459aef21875f4602aa9
    Bug 1275204 - Use OpenBSD/sparc64 xptcall stubs on Linux/sparc64. r=froydnj
Author: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Last-Update: 2017-06-01

--- icedove-52.1.1.orig/mozilla/ipc/chromium/src/build/build_config.h
+++ icedove-52.1.1/mozilla/ipc/chromium/src/build/build_config.h
@@ -87,7 +87,7 @@
 #elif defined(__ppc__) || defined(__powerpc__)
 #define ARCH_CPU_PPC 1
 #define ARCH_CPU_32_BITS 1
-#elif defined(__sparc64__)
+#elif defined(__sparc__) && defined(__arch64__)
 #define ARCH_CPU_SPARC 1
 #define ARCH_CPU_64_BITS 1
 #elif defined(__sparc__)
--- icedove-52.1.1.orig/mozilla/js/src/gc/Memory.cpp
+++ icedove-52.1.1/mozilla/js/src/gc/Memory.cpp
@@ -501,7 +501,9 @@ static inline void*
 MapMemoryAt(void* desired, size_t length, int prot = PROT_READ | PROT_WRITE,
             int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0)
 {
-#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
+
+#if defined(__ia64__) || defined(__aarch64__) || \
+    (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__)))
     MOZ_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0);
 #endif
     void* region = mmap(desired, length, prot, flags, fd, offset);
@@ -524,7 +526,7 @@ static inline void*
 MapMemory(size_t length, int prot = PROT_READ | PROT_WRITE,
           int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0)
 {
-#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
+#if defined(__ia64__) || (defined(__sparc__) && defined(__arch64__) && defined(__NetBSD__))
     /*
      * The JS engine assumes that all allocated pointers have their high 17 bits clear,
      * which ia64's mmap doesn't support directly. However, we can emulate it by passing
@@ -551,7 +553,7 @@ MapMemory(size_t length, int prot = PROT
         return nullptr;
     }
     return region;
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) || (defined(__sparc__) && defined(__arch64__) && defined(__linux__))
    /*
     * There might be similar virtual address issue on arm64 which depends on
     * hardware and kernel configurations. But the work around is slightly
--- icedove-52.1.1.orig/mozilla/js/src/jsapi-tests/testGCAllocator.cpp
+++ icedove-52.1.1/mozilla/js/src/jsapi-tests/testGCAllocator.cpp
@@ -312,7 +312,9 @@ void unmapPages(void* p, size_t size) {
 void*
 mapMemoryAt(void* desired, size_t length)
 {
-#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
+
+#if defined(__ia64__) || defined(__aarch64__) || \
+    (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__)))
     MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
 #endif
     void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
@@ -334,7 +336,7 @@ mapMemory(size_t length)
     int fd = -1;
     off_t offset = 0;
     // The test code must be aligned with the implementation in gc/Memory.cpp.
-#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
+#if defined(__ia64__) || (defined(__sparc__) && defined(__arch64__) && defined(__NetBSD__))
     void* region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset);
     if (region == MAP_FAILED)
         return nullptr;
@@ -344,7 +346,7 @@ mapMemory(size_t length)
         return nullptr;
     }
     return region;
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) || (defined(__sparc__) && defined(__arch64__) && defined(__linux__))
     const uintptr_t start = UINT64_C(0x0000070000000000);
     const uintptr_t end   = UINT64_C(0x0000800000000000);
     const uintptr_t step  = js::gc::ChunkSize;
--- icedove-52.1.1.orig/mozilla/media/webrtc/trunk/build/build_config.h
+++ icedove-52.1.1/mozilla/media/webrtc/trunk/build/build_config.h
@@ -138,7 +138,7 @@
 #define ARCH_CPU_PPC 1
 #define ARCH_CPU_32_BITS 1
 #define ARCH_CPU_BIG_ENDIAN 1
-#elif defined(__sparc64__)
+#elif defined(__sparc__) && defined(__arch64__)
 #define ARCH_CPU_SPARC_FAMILY 1
 #define ARCH_CPU_SPARC 1
 #define ARCH_CPU_64_BITS 1
--- icedove-52.1.1.orig/mozilla/media/webrtc/trunk/webrtc/typedefs.h
+++ icedove-52.1.1/mozilla/media/webrtc/trunk/webrtc/typedefs.h
@@ -61,7 +61,7 @@
 #define WEBRTC_ARCH_BIG_ENDIAN
 #define WEBRTC_BIG_ENDIAN
 #endif
-#elif defined(__sparc64__)
+#elif defined(__sparc__) && defined(__arch64__)
 #define WEBRTC_ARCH_SPARC 1
 #define WEBRTC_ARCH_64_BITS 1
 #define WEBRTC_ARCH_BIG_ENDIAN
--- icedove-52.1.1.orig/mozilla/toolkit/components/protobuf/m-c-changes.patch
+++ icedove-52.1.1/mozilla/toolkit/components/protobuf/m-c-changes.patch
@@ -408,3 +408,16 @@ diff --git a/toolkit/components/protobuf
  //      return result;
  //
  // I.e., replace "*ptr" with "new_value" if "*ptr" used to be "old_value".
+diff --git a/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h b/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
+index 7956d076dcd5..1bd67d436331 100644
+--- a/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
++++ b/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
+@@ -67,7 +67,7 @@
+ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
+ #elif defined(sparc)
+ #define GOOGLE_PROTOBUF_ARCH_SPARC 1
+-#ifdef SOLARIS_64BIT_ENABLED
++#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
+ #define GOOGLE_PROTOBUF_ARCH_64_BIT 1
+ #else
+ #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
--- icedove-52.1.1.orig/mozilla/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
+++ icedove-52.1.1/mozilla/toolkit/components/protobuf/src/google/protobuf/stubs/platform_macros.h
@@ -67,7 +67,7 @@
 #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
 #elif defined(sparc)
 #define GOOGLE_PROTOBUF_ARCH_SPARC 1
-#ifdef SOLARIS_64BIT_ENABLED
+#if defined(__sparc_v9__) || defined(__sparcv9) || defined(__arch64__)
 #define GOOGLE_PROTOBUF_ARCH_64_BIT 1
 #else
 #define GOOGLE_PROTOBUF_ARCH_32_BIT 1
--- icedove-52.1.1.orig/mozilla/xpcom/reflect/xptcall/md/unix/moz.build
+++ icedove-52.1.1/mozilla/xpcom/reflect/xptcall/md/unix/moz.build
@@ -232,7 +232,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CO
         'xptcstubs_ppc_openbsd.cpp',
     ]
 
-if CONFIG['OS_ARCH'] == 'Linux' and 'sparc' in CONFIG['OS_TEST']:
+if CONFIG['OS_ARCH'] == 'Linux' and CONFIG['OS_TEST'] == 'sparc':
     SOURCES += [
         'xptcinvoke_asm_sparc_linux_GCC3.s',
         'xptcinvoke_sparc_solaris.cpp',
@@ -256,7 +256,7 @@ if CONFIG['OS_ARCH'] == 'OpenBSD' and CO
         'xptcstubs_sparc_openbsd.cpp',
     ]
 
-if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD') and CONFIG['OS_TEST'] == 'sparc64':
+if CONFIG['OS_ARCH'] in ('OpenBSD', 'FreeBSD', 'Linux') and CONFIG['OS_TEST'] == 'sparc64':
     SOURCES += [
         'xptcinvoke_asm_sparc64_openbsd.s',
         'xptcinvoke_sparc64_openbsd.cpp',

Reply to: