From patchwork Thu Jan 5 12:18:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Graves X-Patchwork-Id: 45862 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id D963827BBEB; Thu, 5 Jan 2023 12:21:28 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-3.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 85A1427BBE9 for ; Thu, 5 Jan 2023 12:21:26 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pDPEe-0001Vi-H8; Thu, 05 Jan 2023 07:20:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pDPE4-0001MH-Hf for guix-patches@gnu.org; Thu, 05 Jan 2023 07:20:34 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pDPE4-0003BN-1X for guix-patches@gnu.org; Thu, 05 Jan 2023 07:20:04 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pDPE3-0002ue-Sh for guix-patches@gnu.org; Thu, 05 Jan 2023 07:20:03 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#60571] [PATCH 4/4] gnu: skia: Activate tests. Resent-From: Nicolas Graves Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 05 Jan 2023 12:20:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60571 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 60571@debbugs.gnu.org Cc: ngraves@ngraves.fr Received: via spool by 60571-submit@debbugs.gnu.org id=B60571.167292115611105 (code B ref 60571); Thu, 05 Jan 2023 12:20:03 +0000 Received: (at 60571) by debbugs.gnu.org; 5 Jan 2023 12:19:16 +0000 Received: from localhost ([127.0.0.1]:50447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pDPDI-0002t2-0n for submit@debbugs.gnu.org; Thu, 05 Jan 2023 07:19:16 -0500 Received: from 12.mo582.mail-out.ovh.net ([178.32.125.228]:44285) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pDPDF-0002ss-HJ for 60571@debbugs.gnu.org; Thu, 05 Jan 2023 07:19:14 -0500 Received: from director7.ghost.mail-out.ovh.net (unknown [10.108.4.44]) by mo582.mail-out.ovh.net (Postfix) with ESMTP id EC4DE25AFA for <60571@debbugs.gnu.org>; Thu, 5 Jan 2023 12:19:11 +0000 (UTC) Received: from ghost-submission-6684bf9d7b-ps6sb (unknown [10.110.103.53]) by director7.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 0F88B1FF02; Thu, 5 Jan 2023 12:19:10 +0000 (UTC) Received: from ngraves.fr ([37.59.142.108]) by ghost-submission-6684bf9d7b-ps6sb with ESMTPSA id oa53BD7AtmMhgQAAKOSeTw (envelope-from ); Thu, 05 Jan 2023 12:19:10 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-108S002913756fe-ae5f-4b1e-80a4-b2599b5f259c, CCCEE37B4F29B2D663A2C00FBFAE6261951393C8) smtp.auth=ngraves@ngraves.fr X-OVh-ClientIp: 194.57.247.3 Date: Thu, 5 Jan 2023 13:18:42 +0100 Message-Id: <20230105121842.18662-4-ngraves@ngraves.fr> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20230105121842.18662-1-ngraves@ngraves.fr> References: <20230105121842.18662-1-ngraves@ngraves.fr> MIME-Version: 1.0 X-Ovh-Tracer-Id: 13852790981114061538 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedvhedrjeekgdeflecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfqggfjpdevjffgvefmvefgnecuuegrihhlohhuthemucehtddtnecunecujfgurhephffvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomheppfhitgholhgrshcuifhrrghvvghsuceonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqeenucggtffrrghtthgvrhhnpefhieekvddtveevgeeiiefgleelieehvdfghfeuvdevheffveekieettdeuhfeiteenucffohhmrghinhepshhkihgrrdhorhhgnecukfhppeduvdejrddtrddtrddupdefjedrheelrddugedvrddutdeknecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepuddvjedrtddrtddruddpmhgrihhlfhhrohhmpeeonhhgrhgrvhgvshesnhhgrhgrvhgvshdrfhhrqedpnhgspghrtghpthhtohepuddprhgtphhtthhopeeitdehjeduseguvggssghughhsrdhgnhhurdhorhhgpdfovfetjfhoshhtpehmohehkedvpdhmohguvgepshhmthhpohhuth X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Nicolas Graves X-ACL-Warn: , Nicolas Graves via Guix-patches X-Patchwork-Original-From: Nicolas Graves via Guix-patches via From: Nicolas Graves Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * gnu/packages/graphics.scm (skia): Activate tests. --- gnu/packages/graphics.scm | 144 ++++++++++++++++++++++++++++++++++---- 1 file changed, 132 insertions(+), 12 deletions(-) diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index f23fad7c50..2392a63d33 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -80,6 +80,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) @@ -1876,10 +1877,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 @@ -1944,13 +1941,136 @@ (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"))) + ;; Configure 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\"") + "")) + ;; 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. + ;; Necessary because is_official_build prevents 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") + ;; Test require 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" + ;; 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" + ;; Other failures + "_" "_" "_" "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-for-skia spirv-headers-for-skia + 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 @@ -1958,7 +2078,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