Mesa dependency in gtk3

Clemens Lang cal at macports.org
Fri Oct 18 18:49:22 UTC 2024


Hi Vincent,

On Fri, Oct 18, 2024 at 08:37:50PM +0200, Clemens Lang wrote:
> This seems to only work on your system, or at least not in general.
> For example, on my system libepoxy is installed with +quartz -x11, but
> still has
> 
>     Requires.private: gl
> 
> in its pkg-config file.

Following up on this, I believe this is a reproducibility bug in
libepoxy.

Its src/meson.build file contains

| gl_reqs = []
| if gl_dep.found() and gl_dep.type_name() == 'pkgconfig'
|   gl_reqs += 'gl'
| endif
| […]
| pkg = import('pkgconfig')
| pkg.generate(
|   libraries: libepoxy,
|   name: 'epoxy',
|   description: 'GL dispatch library',
|   version: meson.project_version(),
|   variables: [
|     'epoxy_has_glx=@0@'.format(epoxy_has_glx),
|     'epoxy_has_egl=@0@'.format(epoxy_has_egl),
|     'epoxy_has_wgl=@0@'.format(epoxy_has_wgl),
|   ],
|   filebase: 'epoxy',
|   requires_private: ' '.join(gl_reqs),
| )

In other words, when libepoxy is built in an environment where mesa is
available, its pkg-config file will reference it. If mesa isn't
installed while libepoxy is built, gtk3 will configure fine. If it is
installed, gtk3 configure will fail when mesa is not installed.

The correct fix is to patch this meson build file to not include the
reference to gl when libepoxy is built -x11 +quartz. Until this is
fixed, we should keep the build dependency in gtk3, because a broken
build is a bad user experience, and a build-time dependency isn't the
end of the world.

-- 
Clemens



More information about the macports-dev mailing list