Subject: [PATCH] gnu: skia: Honor tests? argument
From: Dariqq <[email-masked]>
To: [email-masked]
Cc: Dariqq <[email-masked]>
Date: Mon, 30 Sep 2024 20:21:44 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/graphics.scm (skia):
[#:phases]: Allow skipping of 'check phase.

Change-Id: I529d91cf9cedfe36fa14a2ae514589810054eac8
---
The tests are failing on i686-linux. This makes it possible to use --without-tests to easily skip them.

 gnu/packages/graphics.scm | 262 +++++++++++++++++++-------------------
 1 file changed, 132 insertions(+), 130 deletions(-)

diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 7ed5cdc92d..f5e0ca7352 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -2223,136 +2223,138 @@ (define-public skia
 Libs: -L${libdir} -lskia
 Cflags: -I${includedir}~%" #$output #$version)))))
             (replace 'check
-              (lambda* (#:key inputs native-inputs #:allow-other-keys)
-                (let ((icu #$(this-package-native-input "icu4c-for-skia")))
-                  ;; Unbundle SPIRV-Tools dependency.
-                  (substitute* "BUILD.gn"
-                    (("deps \\+= \\[ \"//third_party/externals/spirv-tools:spvtools_val\" \\]")
-                      "libs += [ \"SPIRV-Tools\" ]"))
-                  (substitute* "src/sksl/SkSLCompiler.cpp"
-                    (("\"spirv-tools/libspirv.hpp\"")
-                     "<libspirv.hpp>"))
-                  ;; Configure ICU dependency.
-                  (substitute* "third_party/icu/BUILD.gn"
-                    (("data_dir = \"\\.\\./externals/icu/\"")
-                     (string-append "data_dir = \"" icu "/share/data/\""))
-                    (("script = \"\\.\\./externals/icu/scripts/")
-                     (string-append "script = \"" icu "/share/scripts/"))
-                    (("\\.\\./externals/icu/common/icudtl\\.dat")
-                     (string-append icu "/share/data/icudtl.dat"))
-                    (("sources = icu_sources")
-                     "")
-                    (("sources \\+= \\[ \"\\$data_assembly\" \\]")
-                     "sources = [ \"$data_assembly\" ]"))
-                  ;; Enable system libraries without is_official_build=true.
-                  ;; This is necessary because is_official_build prevents from
-                  ;; building dm.
-                  (for-each
-                   (lambda (libname)
-                     (let ((snake (string-join (string-split libname #\-) "_")))
-                       (substitute*
-                           (string-append "third_party/" libname "/BUILD.gn")
-                         (((string-append "skia_use_system_"
-                                          snake
-                                          " = is_official_build.*"))
-                          (string-append "skia_use_system_" snake " = true")))))
-                   '("zlib" "libjpeg-turbo" "harfbuzz" "libpng" "libwebp"))
-                  ;; Configure with gn.
-                  (invoke "gn" "gen" "out/Debug"
-                          (string-append
-                           "--args="
-                           "cc=\"gcc\" "              ;defaults to 'cc'
-                           "skia_compile_sksl_tests=false " ; disable some tests
-                           "skia_use_perfetto=false " ; disable performance tests
-                           "skia_use_wuffs=false "  ; missing performance tool
-                           "skia_use_system_expat=true " ; use system expat library
-                           "skia_use_system_zlib=true " ; use system zlib library
-                           ;; Specify where to locate the includes.
-                           "extra_cflags=["
-                           (string-join
-                            (map
-                             (lambda (lib)
-                               (string-append
-                                "\"-I"
-                                (search-input-directory
-                                 inputs
-                                 (string-append "include/" lib)) "\""))
-                             '("harfbuzz"
-                               "freetype2"
-                               "spirv-tools"
-                               "spirv"
-                               "unicode"))
-                            ",")
-                           "] "
-                           ;; Otherwise the validate-runpath phase fails.
-                           "extra_ldflags=["
-                           "\"-Wl,-rpath=" #$output "/lib\""
-                           "] "
-                           ;; Disabled, otherwise the build system attempts to
-                           ;; download the SDK at build time.
-                           "skia_use_dng_sdk=false "
-                           "skia_use_runtime_icu=true "))
-                  ;; Build dm testing tool.
-                  (symlink
-                   (string-append #$(this-package-native-input "gn") "/bin/gn")
-                   "./bin/gn")
-                  (invoke "ninja" "-C" "out/Debug" "dm")
-                  ;; The test suite requires an X server.
-                  (let ((xvfb (search-input-file (or native-inputs inputs)
-                                                 "bin/Xvfb"))
-                        (display ":1"))
-                    (setenv "DISPLAY" display)
-                    (system (string-append xvfb " " display " &")))
-                  ;; Run tests.
-                  (invoke "out/Debug/dm" "-v"
-                          "-w" "dm_output"
-                          "--codecWritePath" "dm_output"
-                          "--simpleCodec"
-                          "--skip"
-                          ;; The underscores are part of the dm syntax for
-                          ;; skipping tests.
-                          ;; These tests fail with segmentation fault.
-                          "_" "_" "_" "Codec_trunc"
-                          "_" "_" "_" "AnimCodecPlayer"
-                          "_" "_" "_" "Codec_partialAnim"
-                          "_" "_" "_" "Codec_InvalidImages"
-                          "_" "_" "_" "Codec_GifInterlacedTruncated"
-                          ;; This test started failing possibly after mesa
-                          ;; being updated to 23.2.1 and possibly only on some
-                          ;; hardware.
-                          "_" "_" "_" "SkRuntimeBlender_GPU"
-                          "_" "_" "_" "SkText_UnicodeText_Flags"
-                          "_" "_" "_" "SkParagraph_FontStyle"
-                          "_" "_" "_" "flight_animated_image"
-                          ;; These tests fail because of Codec/Sk failure.
-                          "_" "_" "_" "AndroidCodec_computeSampleSize"
-                          "_" "_" "_" "AnimatedImage_invalidCrop"
-                          "_" "_" "_" "AnimatedImage_scaled"
-                          "_" "_" "_" "AnimatedImage_copyOnWrite"
-                          "_" "_" "_" "AnimatedImage"
-                          "_" "_" "_" "BRD_types"
-                          "_" "_" "_" "Codec_frames"
-                          "_" "_" "_" "Codec_partial"
-                          "_" "_" "_" "Codec_partialWuffs"
-                          "_" "_" "_" "Codec_requiredFrame"
-                          "_" "_" "_" "Codec_rewind"
-                          "_" "_" "_" "Codec_incomplete"
-                          "_" "_" "_" "Codec_InvalidAnimated"
-                          "_" "_" "_" "Codec_ossfuzz6274"
-                          "_" "_" "_" "Codec_gif_out_of_palette"
-                          "_" "_" "_" "Codec_xOffsetTooBig"
-                          "_" "_" "_" "Codec_gif"
-                          "_" "_" "_" "Codec_skipFullParse"
-                          "_" "_" "_" "AndroidCodec_animated_gif"
-                          ;; These fail for unknown reasons.
-                          "_" "_" "_" "Gif"
-                          "_" "_" "_" "Wuffs_seek_and_decode"
-                          "_" "_" "_" "Skottie_Shaper_ExplicitFontMgr"
-                          "8888" "skp" "_" "_"
-                          "8888" "lottie" "_" "_"
-                          "gl" "skp" "_" "_"
-                          "gl" "lottie" "_" "_"
-                          "_" "_" "_" "ES2BlendWithNoTexture")))))))
+              (lambda* (#:key tests? inputs native-inputs #:allow-other-keys)
+                (if tests?
+                  (let ((icu #$(this-package-native-input "icu4c-for-skia")))
+                    ;; Unbundle SPIRV-Tools dependency.
+                    (substitute* "BUILD.gn"
+                      (("deps \\+= \\[ \"//third_party/externals/spirv-tools:spvtools_val\" \\]")
+                       "libs += [ \"SPIRV-Tools\" ]"))
+                    (substitute* "src/sksl/SkSLCompiler.cpp"
+                      (("\"spirv-tools/libspirv.hpp\"")
+                       "<libspirv.hpp>"))
+                    ;; Configure ICU dependency.
+                    (substitute* "third_party/icu/BUILD.gn"
+                      (("data_dir = \"\\.\\./externals/icu/\"")
+                       (string-append "data_dir = \"" icu "/share/data/\""))
+                      (("script = \"\\.\\./externals/icu/scripts/")
+                       (string-append "script = \"" icu "/share/scripts/"))
+                      (("\\.\\./externals/icu/common/icudtl\\.dat")
+                       (string-append icu "/share/data/icudtl.dat"))
+                      (("sources = icu_sources")
+                       "")
+                      (("sources \\+= \\[ \"\\$data_assembly\" \\]")
+                       "sources = [ \"$data_assembly\" ]"))
+                    ;; Enable system libraries without is_official_build=true.
+                    ;; This is necessary because is_official_build prevents from
+                    ;; building dm.
+                    (for-each
+                     (lambda (libname)
+                       (let ((snake (string-join (string-split libname #\-) "_")))
+                         (substitute*
+                             (string-append "third_party/" libname "/BUILD.gn")
+                           (((string-append "skia_use_system_"
+                                            snake
+                                            " = is_official_build.*"))
+                            (string-append "skia_use_system_" snake " = true")))))
+                     '("zlib" "libjpeg-turbo" "harfbuzz" "libpng" "libwebp"))
+                    ;; Configure with gn.
+                    (invoke "gn" "gen" "out/Debug"
+                            (string-append
+                             "--args="
+                             "cc=\"gcc\" "                    ;defaults to 'cc'
+                             "skia_compile_sksl_tests=false " ; disable some tests
+                             "skia_use_perfetto=false " ; disable performance tests
+                             "skia_use_wuffs=false " ; missing performance tool
+                             "skia_use_system_expat=true " ; use system expat library
+                             "skia_use_system_zlib=true " ; use system zlib library
+                             ;; Specify where to locate the includes.
+                             "extra_cflags=["
+                             (string-join
+                              (map
+                               (lambda (lib)
+                                 (string-append
+                                  "\"-I"
+                                  (search-input-directory
+                                   inputs
+                                   (string-append "include/" lib)) "\""))
+                               '("harfbuzz"
+                                 "freetype2"
+                                 "spirv-tools"
+                                 "spirv"
+                                 "unicode"))
+                              ",")
+                             "] "
+                             ;; Otherwise the validate-runpath phase fails.
+                             "extra_ldflags=["
+                             "\"-Wl,-rpath=" #$output "/lib\""
+                             "] "
+                             ;; Disabled, otherwise the build system attempts to
+                             ;; download the SDK at build time.
+                             "skia_use_dng_sdk=false "
+                             "skia_use_runtime_icu=true "))
+                    ;; Build dm testing tool.
+                    (symlink
+                     (string-append #$(this-package-native-input "gn") "/bin/gn")
+                     "./bin/gn")
+                    (invoke "ninja" "-C" "out/Debug" "dm")
+                    ;; The test suite requires an X server.
+                    (let ((xvfb (search-input-file (or native-inputs inputs)
+                                                   "bin/Xvfb"))
+                          (display ":1"))
+                      (setenv "DISPLAY" display)
+                      (system (string-append xvfb " " display " &")))
+                    ;; Run tests.
+                    (invoke "out/Debug/dm" "-v"
+                            "-w" "dm_output"
+                            "--codecWritePath" "dm_output"
+                            "--simpleCodec"
+                            "--skip"
+                            ;; The underscores are part of the dm syntax for
+                            ;; skipping tests.
+                            ;; These tests fail with segmentation fault.
+                            "_" "_" "_" "Codec_trunc"
+                            "_" "_" "_" "AnimCodecPlayer"
+                            "_" "_" "_" "Codec_partialAnim"
+                            "_" "_" "_" "Codec_InvalidImages"
+                            "_" "_" "_" "Codec_GifInterlacedTruncated"
+                            ;; This test started failing possibly after mesa
+                            ;; being updated to 23.2.1 and possibly only on some
+                            ;; hardware.
+                            "_" "_" "_" "SkRuntimeBlender_GPU"
+                            "_" "_" "_" "SkText_UnicodeText_Flags"
+                            "_" "_" "_" "SkParagraph_FontStyle"
+                            "_" "_" "_" "flight_animated_image"
+                            ;; These tests fail because of Codec/Sk failure.
+                            "_" "_" "_" "AndroidCodec_computeSampleSize"
+                            "_" "_" "_" "AnimatedImage_invalidCrop"
+                            "_" "_" "_" "AnimatedImage_scaled"
+                            "_" "_" "_" "AnimatedImage_copyOnWrite"
+                            "_" "_" "_" "AnimatedImage"
+                            "_" "_" "_" "BRD_types"
+                            "_" "_" "_" "Codec_frames"
+                            "_" "_" "_" "Codec_partial"
+                            "_" "_" "_" "Codec_partialWuffs"
+                            "_" "_" "_" "Codec_requiredFrame"
+                            "_" "_" "_" "Codec_rewind"
+                            "_" "_" "_" "Codec_incomplete"
+                            "_" "_" "_" "Codec_InvalidAnimated"
+                            "_" "_" "_" "Codec_ossfuzz6274"
+                            "_" "_" "_" "Codec_gif_out_of_palette"
+                            "_" "_" "_" "Codec_xOffsetTooBig"
+                            "_" "_" "_" "Codec_gif"
+                            "_" "_" "_" "Codec_skipFullParse"
+                            "_" "_" "_" "AndroidCodec_animated_gif"
+                            ;; These fail for unknown reasons.
+                            "_" "_" "_" "Gif"
+                            "_" "_" "_" "Wuffs_seek_and_decode"
+                            "_" "_" "_" "Skottie_Shaper_ExplicitFontMgr"
+                            "8888" "skp" "_" "_"
+                            "8888" "lottie" "_" "_"
+                            "gl" "skp" "_" "_"
+                            "gl" "lottie" "_" "_"
+                            "_" "_" "_" "ES2BlendWithNoTexture"))
+                  (format #t "test suite not run~%")))))))
   (native-inputs (list gn libjpeg-turbo ninja pkg-config python-wrapper
                        spirv-tools spirv-headers
                        icu4c-for-skia glu xorg-server-for-tests))

base-commit: 7e63a35ff265f5cb6efa8bbe0bbf62bb9c102cf0
-- 
2.46.0