Package Details: waffle 1.8.0-1

Git Clone URL: (read-only, click to copy)
Package Base: waffle
Description: a library for choosing window system and OpenGL API at runtime
Upstream URL:
Licenses: BSD
Submitter: chadversary
Maintainer: 1ace (chadversary, craftyguy, linkmauve, Lone_Wolf, xexaxo)
Last Packager: xexaxo
Votes: 9
Popularity: 0.000000
First Submitted: 2012-10-20 04:31 (UTC)
Last Updated: 2023-10-29 22:01 (UTC)

Dependencies (14)

Sources (2)

Latest Comments

1 2 3 Next › Last »

xexaxo commented on 2023-03-10 11:39 (UTC)

Yup systemd was fixed recently - already sent out a thank you to eworm for the fix. Debug waffle packages are useful here. One has to explicitly install them, so by default they are not hindering anything.

Lone_Wolf commented on 2023-03-09 18:23 (UTC)

systemd-libs include the necessary pkgconfig files now, see

The next time this pacakge is updated the makedepend on systemd can be removed.

Also archlinux devtools now build debug packages by default, is this useful for waffle ?

Lone_Wolf commented on 2022-04-13 15:12 (UTC) has no content and appears to be parked. New waffle homepage seems to be

Omar007 commented on 2021-06-19 20:11 (UTC) (edited on 2021-06-19 20:12 (UTC) by Omar007)

as the name suggests is private (aka internal) dependencies. It is used to gather the private libs when static linking.

That's kinda what I thought until the (non-static) build started failing without it xD

Will look at fixing this within waffle over the next couple of days.

Sounds good. In the mean time the PKGBUILD change I do locally still works fine so no hurry there ;)

CMake itself will still be weird/wrong but others can deal with that :-)

Haha fair enough.

xexaxo commented on 2021-06-19 17:02 (UTC)

Seems like we have a few layered bugs:

Requires.private - as the name suggests is private (aka internal) dependencies. It is used to gather the private libs when static linking. Yet the meson build (used by waffle) is adding the (private) dependencies, even if we do not link against some libraries - for libudev we actually do link against, but meh.

Most importantly, CMake (used by piglit) mandates that linking works (parses the --static variance), even when the user does not static link.

Will look at fixing this within waffle over the next couple of days. CMake itself will still be weird/wrong but others can deal with that :-)

Omar007 commented on 2021-06-16 10:22 (UTC) (edited on 2021-06-16 11:24 (UTC) by Omar007)

Waffle does not leak anything libudev to its users

Clearly it does, otherwise the build process wouldn't fail without it. Maybe not directly but those includes propagate and have their own requirements. And if they do not and it's really not actually used/relevant anywhere in then maybe it's just an issue with waffle's pkgconfig?
The case is that waffle is explicitly saying it needs libudev when you try to build anything.

$ cat /usr/lib/pkgconfig/waffle-1.pc

Name: waffle-1
Description: A library for selecting an OpenGL API and windows system at runtime.
Version: 1.7.0
Requires.private: gl, egl, gbm, libudev, wayland-client >=  1.10, wayland-egl >=  9.1, x11-xcb
Libs: -L${libdir} -lwaffle-1
Libs.private: -ldl -pthread
Cflags: -I${includedir}/waffle-1

See the 'Requires.private' segment.

I suspect the issue is in the package you're building on top waffle.

The build process fails long before ever reaching anything relevant to any package or software one would try to build because of the above. Even if the package was complete broken or doesn't even compile you wouldn't even be able to find out because you're failing out long before reaching that point.

EDIT: Relevant CMake usage/reference line for waffle; pkg_check_modules(Waffle REQUIRED waffle-1).
If you want something to try it with yourself, you could grab the piglit software/package and try with that in a clean chroot or container with waffle and missing libudev.

EDIT2: Figured I'd also add the build process output using the OG PKGBUILD instead of the patched one but I don't have it set up anymore apparently so I'd have to do that again first before I can.

EDIT3: Here we go.

Package libudev was not found in the pkg-config search path.
Perhaps you should add the directory containing `libudev.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libudev', required by 'waffle-1', not found

xexaxo commented on 2021-05-15 14:35 (UTC)

@Omar007 what are you building against waffle?

Waffle does not leak anything libudev to its users - it is an internal detail. You can see that via grep -rw --no-filename include /usr/include/waffle-1/ | sort -u - GL(X), EGL and stdfoo headers. Although perhaps I should finish my upstream waffle MR and stop using libudev altogether :-P

I suspect the issue is in the package you're building on top waffle. In that it uses libudev but is lacking the makedepends. Happy to take a look and help.

Omar007 commented on 2021-05-04 16:23 (UTC) (edited on 2021-05-04 16:34 (UTC) by Omar007)

I've been trying to find out why it wasn't possible to dev against/using the latest package rolling out of this PKGBUILD. I traced it down to the changes made to the 'systemd' dependency in 1.6.2-5; it was removed from the depends array but it's required by the includes provided in this package if you want to make use of this package for development purposes; it needs the libudev headers which isn't covered by the dependency.

I.o.w.; half of this package is broken atm; the runtime side of this package seems to be covered with the dependency but using it for development is currently not possible as it is missing required dependencies (without manually correcting the missing dependency anyway, in the case of Arch being the inclusion of 'systemd').

EDIT: In case someone stumbles upon this later, at the time of writing I'm applying the following patch locally when building this package;

--- PKGBUILD    2021-05-04 18:27:35.399099995 +0200
+++ PKGBUILD    2021-05-04 18:29:59.354997432 +0200
@@ -10,17 +10,11 @@
-depends=('libx11' 'libxcb' '' 'libgl' 'libgles')
+depends=('libx11' 'libxcb' 'libgl' 'libgles' 'systemd')
 optdepends=('libegl: for gbm, surfaceless, x11_egl or wayland support'
             'mesa: for gbm support'
             'wayland: for wayland support')
-# XXX: systemd is a bit of a hack, in particular:
-# The Arch packaging splits the in one package, with the build
-# aka headers/pkg-config in another.
-makedepends=('meson' 'xcb-proto' 'mesa' 'libxslt' 'docbook-xsl' 'cmake' 'systemd' 'wayland-protocols')
+makedepends=('meson' 'xcb-proto' 'mesa' 'libxslt' 'docbook-xsl' 'cmake' 'wayland-protocols')

This ensures the package is ready/correct for both dev and runtime use-cases.

xexaxo commented on 2021-02-28 20:04 (UTC)

Bash-completion does not complement the package (or the other ~250 packages which install their own completion), so optdepends is wrong. Ideally Arch will get a "suggests" at some point instead of (ab)using optdepends.

For everything else you're spot. Thanks for all the corrections o/

Lone_Wolf commented on 2021-02-25 10:21 (UTC) (edited on 2021-02-25 10:21 (UTC) by Lone_Wolf)

  • the package does install completion for wflinfo , so bash-completion should probably have been an optdepend.

  • On AL there is no physical or virtual package. gbm support is included in mesa package and mesa could be listed as optdep instead of

Those are minor issues, but there's another one that causes build failure .

  • having in depends is not sufficient for meson
Found pkg-config: /usr/bin/pkg-config (1.7.3)
Run-time dependency gl found: YES 1.2
Run-time dependency egl found: YES 1.5
Run-time dependency wayland-client found: YES 1.19.0
Run-time dependency wayland-egl found: YES 18.1.0
Run-time dependency x11-xcb found: YES 1.7.0
Run-time dependency gbm found: YES 20.3.4
Found CMake: /usr/bin/cmake (3.19.6)
Run-time dependency libudev found: NO (tried pkgconfig and cmake)

waffle-1.6.3/ ERROR: Dependency "libudev" not found, tried pkgconfig and cmake

while the binary is included with systemd-libs and that package provides it, systemd-libs doesn't include udev.pc . That file is part of the systemd package.

For now listing systemd as makedepend & as depend seems like the best solution .