From mboxrd@z Thu Jan 1 00:00:00 1970 From: taylanbayirli@gmail.com (Taylan Ulrich =?utf-8?Q?Bay=C4=B1rl=C4=B1?= =?utf-8?Q?=2FKammer?=) Subject: Re: [PATCH] gnu: mesa: Add libva input. Date: Thu, 30 Apr 2015 10:20:09 +0200 Message-ID: <87oam6c9ja.fsf@taylan.uni.cx> References: <87zj5se6o0.fsf@taylan.uni.cx> <87383kbah1.fsf@gmail.com> <87r3r4dmwq.fsf@taylan.uni.cx> <20150429211211.GB9266@debian> <871tj2eh5t.fsf@taylan.uni.cx> <20150430072934.GA4097@debian> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52787) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ynjhd-0004ZL-QB for guix-devel@gnu.org; Thu, 30 Apr 2015 04:20:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ynjhc-0004Dd-I5 for guix-devel@gnu.org; Thu, 30 Apr 2015 04:20:13 -0400 Received: from mail-wi0-x22d.google.com ([2a00:1450:400c:c05::22d]:36055) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ynjhc-0004DV-77 for guix-devel@gnu.org; Thu, 30 Apr 2015 04:20:12 -0400 Received: by wizk4 with SMTP id k4so9524036wiz.1 for ; Thu, 30 Apr 2015 01:20:11 -0700 (PDT) In-Reply-To: <20150430072934.GA4097@debian> (Andreas Enge's message of "Thu, 30 Apr 2015 09:29:34 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Andreas Enge Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Andreas Enge writes: > On Wed, Apr 29, 2015 at 11:52:30PM +0200, Taylan Ulrich Bay=C4=B1rl=C4=B1= /Kammer wrote: >> Right. I don't know what I did wrong before, but it actually seems to >> work fine to put it in gl.scm. New patch: > > Okay, looks good. Actually, I hit the problem again now; it's during the compilation of .scm files. The problem seems to be that 'inherit' fields of packages are evaluated eagerly, so when video.scm directly or indirectly imports gl.scm before having bound the libva variable to its value, and the libva-without-mesa definition in gl.scm tries to reference libva, it errors. I can solve this by wrapping the libva-without-mesa definition in a delay, and forcing it in the input field of mesa. Is that OK? New patch: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0002-gnu-mesa-Add-libva-input.patch >From 8ca6a9ea562f2f20763978c6cfc111a0ce34db16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Taylan=20Ulrich=20Bay=C4=B1rl=C4=B1/Kammer?= Date: Tue, 28 Apr 2015 15:08:47 +0200 Subject: [PATCH 2/3] gnu: mesa: Add libva input. There is a circular dependency between Mesa and libVA, so we use a libva-no-mesa package that builds libVA without GLX and EGL support, and use that for building Mesa. * gnu/packages/gl.scm (libva-for-mesa): New variable. (mesa): Add as input. --- gnu/packages/gl.scm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index e640f83..ea38f1e 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -21,11 +21,13 @@ (define-module (gnu packages gl) #:use-module (ice-9 match) + #:use-module (guix build utils) #:use-module ((guix licenses) #:prefix l:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (gnu packages autotools) #:use-module (gnu packages bison) #:use-module (gnu packages flex) @@ -37,6 +39,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages fontutils) #:use-module (gnu packages guile) + #:use-module (gnu packages video) #:use-module (gnu packages xdisorg)) (define-public glu @@ -159,6 +162,23 @@ Polygon meshes, and Extruded polygon meshes") also known as DXTn or DXTC) for Mesa.") (license l:expat))) +;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation; +;;; LibVA itself depends on Mesa. We use the following to solve the circular +;;; dependency. +(define libva-without-mesa + ;; Delay to work around circular import problem. + (delay + (package + (inherit libva) + (name "libva-without-mesa") + (inputs (alist-delete "mesa" (package-inputs libva))) + (arguments + (strip-keyword-arguments + '(#:make-flags) + (substitute-keyword-arguments (package-arguments libva) + ((#:configure-flags flags) + '(list "--disable-glx" "--disable-egl")))))))) + (define-public mesa (package (name "mesa") @@ -187,8 +207,8 @@ also known as DXTn or DXTC) for Mesa.") ("dri3proto" ,dri3proto) ("presentproto" ,presentproto) ("expat" ,expat) + ("libva" ,(force libva-without-mesa)) ("libxml2" ,libxml2) - ;; TODO: Add 'libva' ;; TODO: Add 'libxml2-python' for OpenGL ES 1.1 and 2.0 support ("makedepend" ,makedepend) ("s2tc" ,s2tc))) -- 2.2.1 --=-=-=--