all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: John Kehayias via Guix-patches via <guix-patches@gnu.org>
To: The Man <squishypinkelephant@gmail.com>
Cc: 73071@debbugs.gnu.org
Subject: [bug#73071] [PATCH mesa-updates 0/8] Various updates for mesa to 24.2.2
Date: Fri, 20 Sep 2024 01:51:34 +0000	[thread overview]
Message-ID: <87msk3ks7x.fsf@protonmail.com> (raw)
In-Reply-To: <cover.1725634153.git.john.kehayias@protonmail.com>

Hello The Man :)

A note that your email went to no one; the debbugs number address is not
an alias for anyone. I happen to see your message via the issues web
interface. I would suggest adding in cc's here to whoever you intended.

On Tue, Sep 17, 2024 at 07:35 PM, The Man wrote:

> Hello, In the interest of creating a future where mesa properly works alongside libglvnd i think there's a few options:
>
> - simply adding "-Dglvnd=true" to mesa configure-flags and tediously adding libglvnd to the inputs of every package
> that links to LibGL, as well as patching anything problematic as mentioned in https://issues.guix.gnu.org/49339#8
>

This didn't seem so tidious but a countable number of packages. The
building and testing will take more time but it didn't seem too bad at
the time at least.

> - create an abomination, the ONE MESA TO RULE THEM ALL. an example follows:
>

This looks the same basically as just propagating libglvnd from mesa,
but I didn't look too carefully or try it.

In any event, we should handle this in a separate issue, get some input,
and then we can do this on a branch. My instinct is to go with what was
started in the linked issue above; add libglvnd to mesa (propagated?)
and fix failing packages assuming it isn't all 4000 or whatever (pretty
sure it is not).

> (define-public mesa/new
>   (package
>     (inherit mesa)
>     (arguments
>       (substitute-keyword-arguments (package-arguments mesa)
>         ((#:configure-flags flags ''())
>           #~(append #$flags
>             (list "-Dglvnd=true")))
>         ((#:phases phases ''())
>           (with-imported-modules '((guix build union))
>           #~(modify-phases #$phases
>             (add-before 'validate-runpath 'unionize
>               (lambda _ ;; unionize with libglvnd, fixing all problems
>                 (use-modules (ice-9 match)
>                              (guix build union))
>                 (union-build (string-append #$output "/tmp")
>                   '#$(list (this-package-input "libglvnd"))
>                   #:create-all-directories? #t)
>                 (copy-recursively (string-append #$output "/tmp") #$output)
>                 (delete-file-recursively (string-append #$output "/tmp"))
>                 ;; leftovers from building with old mesa.
>                 ;; some packages still link to these.
>                 ;; remove for rebuilding after applying graft?
>                 (symlink (string-append #$output "/lib/libEGL.so.1")
>                          (string-append #$output "/lib/libEGL.so.1.0.0"))
>                 (symlink (string-append #$output "/lib/libGLESv1_CM.so.1")
>                          (string-append #$output "/lib/libGLESv1_CM.so.1.1.0"))
>                 (symlink (string-append #$output "/lib/libGLESv2.so.2")
>                          (string-append #$output "/lib/libGLESv2.so.2.0.0"))
>                 (symlink (string-append #$output "/lib/libGL.so.1")
>                          (string-append #$output "/lib/libGL.so.1.2.0"))))
>             (add-after 'install 'fix-paths
>               (lambda _
>                 (substitute*
>                   (string-append #$output "/share/glvnd/egl_vendor.d/50_mesa.json")
>                   (("libEGL_mesa")
>                     (string-append #$output "/lib/libEGL_mesa")))))
>             (add-after 'fix-paths 'add-external-egl
>               (lambda _
>                 (mkdir-p (string-append #$output "/share/egl/egl_external_platform.d")))))))))
>     (native-search-paths (append (package-native-search-paths mesa)
>      (list
>       (search-path-specification
>        (variable "__EGL_VENDOR_LIBRARY_DIRS")
>        (files '("share/glvnd/egl_vendor.d")))
>       (search-path-specification
>        (variable "GBM_BACKENDS_PATH")
>        (files '("lib")))
>       (search-path-specification
>        (variable "XDG_DATA_DIRS")
>        (files '("share")))
>       (search-path-specification
>        (variable "__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS")
>        (files '("share/egl/egl_external_platform.d"))))))
>     (inputs (modify-inputs (package-inputs mesa)
>       (prepend libglvnd)))))
>
> Using this to graft over mesa is a filthy answer to the "GL problem". no rebuilding necessary, it seems to "just work".
>
> Other distributions have settled on packaging mesa build for working with libglvnd and most software seems to expect
> such.
> Perhaps there's another solution?

It is unclear to me in Guix what this all means. I think it would mostly
be helpful on foreign distros (so libglvnd can load host's GL stuff) but
I don't know. Or perhaps for non-free related stuff (which wouldn't be
part of Guix directly in any event).

Thanks for the input!
John





      parent reply	other threads:[~2024-09-20  1:52 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-06 15:00 [bug#73071] [PATCH mesa-updates 0/8] Various updates for mesa to 24.2.2 John Kehayias via Guix-patches via
2024-09-06 15:05 ` [bug#73071] [PATCH mesa-updates 1/8] gnu: libdrm: Update to 2.4.123 John Kehayias via Guix-patches via
2024-09-06 15:06 ` [bug#73071] [PATCH mesa-updates 2/8] gnu: wayland-protocols: Update to 1.37 John Kehayias via Guix-patches via
2024-09-06 15:07 ` [bug#73071] [PATCH mesa-updates 3/8] gnu: Remove wayland-protocols-next John Kehayias via Guix-patches via
2024-09-06 15:07 ` [bug#73071] [PATCH mesa-updates 4/8] gnu: vulkan-headers: Hard-code libvulkan.so file name John Kehayias via Guix-patches via
2024-09-06 15:07 ` [bug#73071] [PATCH mesa-updates 5/8] gnu: volk: Hard-code path of vulkan-loader for dynamic loading John Kehayias via Guix-patches via
2024-09-06 15:07 ` [bug#73071] [PATCH mesa-updates 6/8] gnu: llvm-for-mesa: Update to llvm-18 John Kehayias via Guix-patches via
2024-09-06 15:07 ` [bug#73071] [PATCH mesa-updates 7/8] gnu: llvm-for-mesa: Build all targets John Kehayias via Guix-patches via
2024-09-06 15:08 ` [bug#73071] [PATCH mesa-updates 8/8] gnu: mesa: Update to 24.2.2 John Kehayias via Guix-patches via
2024-09-09  3:43 ` [bug#73071] [PATCH mesa-updates 0/8] Various updates for mesa " John Kehayias via Guix-patches via
2024-09-09 16:12 ` [bug#73071] [PATCH mesa-updates] gnu: mesa: Enable NVK driver for x86_64 architecture aurtzy
2024-09-16  2:59   ` John Kehayias via Guix-patches via
2024-09-17  1:50     ` [bug#73071] [PATCH mesa-updates 0/8] Various updates for mesa to 24.2.2 aurtzy
2024-09-20  1:46       ` John Kehayias via Guix-patches via
2024-11-05 18:51         ` bug#73071: " John Kehayias via Guix-patches via
2024-09-18  0:35 ` [bug#73071] " The Man
2024-09-20  1:51 ` John Kehayias via Guix-patches via [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87msk3ks7x.fsf@protonmail.com \
    --to=guix-patches@gnu.org \
    --cc=73071@debbugs.gnu.org \
    --cc=john.kehayias@protonmail.com \
    --cc=squishypinkelephant@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.