gnu: skia: Activate tests.

* gnu/packages/graphics.scm (skia): Activate tests.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
This commit is contained in:
Nicolas Graves 2023-08-29 23:11:38 +02:00 committed by Maxim Cournoyer
parent 545b45cc05
commit c1138889d9
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -83,6 +83,7 @@ (define-module (gnu packages graphics)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages gtk)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages imagemagick)
@ -2017,10 +2018,6 @@ (define-public skia
(build-system gnu-build-system) ;actually GN + Ninja
(arguments
(list
;; Running the test suite would require 'dm'; unfortunately the tool
;; can only be built for debug builds, which require fetching third
;; party sources.
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(replace 'configure
@ -2085,13 +2082,139 @@ (define skia.pc (string-append #$output
URL: https://skia.org/
Version: ~a
Libs: -L${libdir} -lskia
Cflags: -I${includedir}~%" #$output #$version))))))))
(native-inputs (list gn libjpeg-turbo ninja pkg-config python-wrapper))
(inputs (list expat fontconfig freetype harfbuzz mesa libwebp zlib))
(home-page "https://skia.org/")
(synopsis "2D graphics library")
(description
"Skia is a 2D graphics library for drawing text, geometries, and images.
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_system_expat=true " ; use system expat 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"
"_" "_" "_" "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")))))))
(native-inputs (list gn libjpeg-turbo ninja pkg-config python-wrapper
spirv-tools spirv-headers
icu4c-for-skia glu xorg-server-for-tests))
(inputs (list expat fontconfig freetype harfbuzz mesa libwebp zlib))
(home-page "https://skia.org/")
(synopsis "2D graphics library")
(description
"Skia is a 2D graphics library for drawing text, geometries, and images.
It supports:
@itemize
@item 3x3 matrices with perspective
@ -2099,7 +2222,7 @@ (define skia.pc (string-append #$output
@item shaders, xfermodes, maskfilters, patheffects
@item subpixel text
@end itemize")
(license license:bsd-3))))
(license license:bsd-3))))
(define-public superfamiconv
(package