Bug#888898: firefox: Please add patch for big-endian support

John Paul Adrian Glaubitz glaubitz at physik.fu-berlin.de
Tue Jan 30 23:21:35 UTC 2018


Source: firefox
Version: 59.0~b4-1
Severity: normal
Tags: patch
User: debian-powerpc at lists.debian.org
Usertags: powerpc ppc64

Hello!

src:firefox currently FTBFS on big-endian powerpc/ppc64 because skia
needs to be patched to support big-endian systems [1]:

n file included from /<<PKGBUILDDIR>>/gfx/skia/skia/src/core/SkRasterPipeline.h:11:0,
                 from /<<PKGBUILDDIR>>/gfx/skia/skia/src/core/SkOpts.h:12,
                 from /<<PKGBUILDDIR>>/gfx/2d/ConvolutionFilter.cpp:11:
/<<PKGBUILDDIR>>/gfx/skia/skia/include/core/SkImageInfo.h:86:6: error: #error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
     #error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
      ^~~~~

This is achieved by applying the attached patch which I have taken from
the Firefox package in Fedora [2].

Adrian

> [1] https://buildd.debian.org/status/fetch.php?pkg=firefox&arch=ppc64&ver=59.0%7Eb4-1&stamp=1517354143&raw=0
> [2] https://koji.fedoraproject.org/koji/buildinfo?buildID=1020385

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz at debian.org
`. `'   Freie Universitaet Berlin - glaubitz at physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
-------------- next part --------------
diff -up firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h
--- firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h.big-endian	2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/core/SkColorPriv.h	2017-09-29 17:25:04.651876330 +0200
@@ -31,7 +31,7 @@
  *
  *  Here we enforce this constraint.
  */
-
+/*
 #ifdef SK_CPU_BENDIAN
     #define SK_RGBA_R32_SHIFT   24
     #define SK_RGBA_G32_SHIFT   16
@@ -43,6 +43,7 @@
     #define SK_BGRA_R32_SHIFT   8
     #define SK_BGRA_A32_SHIFT   0
 #else
+*/
     #define SK_RGBA_R32_SHIFT   0
     #define SK_RGBA_G32_SHIFT   8
     #define SK_RGBA_B32_SHIFT   16
@@ -52,7 +53,7 @@
     #define SK_BGRA_G32_SHIFT   8
     #define SK_BGRA_R32_SHIFT   16
     #define SK_BGRA_A32_SHIFT   24
-#endif
+/*#endif*/
 
 #if defined(SK_PMCOLOR_IS_RGBA) && defined(SK_PMCOLOR_IS_BGRA)
     #error "can't define PMCOLOR to be RGBA and BGRA"
diff -up firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h
--- firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h.big-endian	2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/core/SkImageInfo.h	2017-09-29 17:25:04.651876330 +0200
@@ -83,7 +83,8 @@ enum SkColorType {
 #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
     kN32_SkColorType = kRGBA_8888_SkColorType,
 #else
-    #error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
+    //#error "SK_*32_SHFIT values must correspond to BGRA or RGBA byte order"
+    kN32_SkColorType = kBGRA_8888_SkColorType
 #endif
 };
 
diff -up firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h.big-endian firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h
--- firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h.big-endian	2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/gpu/GrColor.h	2017-09-29 17:25:04.652876327 +0200
@@ -74,8 +74,13 @@ static inline GrColor GrColorPackA4(unsi
  *  Since premultiplied means that alpha >= color, we construct a color with
  *  each component==255 and alpha == 0 to be "illegal"
  */
-#define GrColor_ILLEGAL     (~(0xFF << GrColor_SHIFT_A))
+//Just for big endian platforms, little has: (~(0xFF << GrColor_SHIFT_A))
+#ifdef SK_CPU_BENDIAN
+#define GrColor_ILLEGAL     0xFFFFFF00
+#else
+#define GrColor_ILLEGAL     (~(0xFF << GrColor_SHIFT_A)) 
 
+#endif
 #define GrColor_WHITE 0xFFFFFFFF
 #define GrColor_TRANSPARENT_BLACK 0x0
 
diff -up firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h
--- firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h.big-endian	2017-07-31 18:20:55.000000000 +0200
+++ firefox-56.0/gfx/skia/skia/include/gpu/GrTypes.h	2017-09-29 17:25:04.652876327 +0200
@@ -326,15 +326,13 @@ enum GrPixelConfig {
 static const int kGrPixelConfigCnt = kLast_GrPixelConfig + 1;
 
 // Aliases for pixel configs that match skia's byte order.
-#ifndef SK_CPU_LENDIAN
-    #error "Skia gpu currently assumes little endian"
-#endif
 #if SK_PMCOLOR_BYTE_ORDER(B,G,R,A)
     static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
 #elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A)
     static const GrPixelConfig kSkia8888_GrPixelConfig = kRGBA_8888_GrPixelConfig;
 #else
-    #error "SK_*32_SHIFT values must correspond to GL_BGRA or GL_RGBA format."
+    static const GrPixelConfig kSkia8888_GrPixelConfig = kBGRA_8888_GrPixelConfig;
+    static const GrPixelConfig kSkiaGamma8888_GrPixelConfig = kSBGRA_8888_GrPixelConfig;
 #endif
 
 // Returns true if the pixel config is a GPU-specific compressed format


More information about the pkg-mozilla-maintainers mailing list