KhronosGroup / KhronosGroup/Vulkan-Loader

Downstream packaging best practices in combination with Vulkan-Headers

Open
#1,463 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
695
Forks
343
Avg merge
1d 1h
Merged PRs (30d)
17

Description

We have the problem that Vulkan-Loader contains the pkg-config file, which some project use for detecting how to build against vulkan, while the headers are in the separate https://github.com/KhronosGroup/Vulkan-Headers project. This results in downstream packages needing to do extra check for headers etc.

In Arch Linux for example loader and headers are separate packages, resulting in build issues:

https://github.com/mesonbuild/meson/issues/7956

In MSYS2 we follow what Arch does, leading to the same issue:

https://github.com/mesonbuild/meson/issues/13016

Some downstream projects work around that by manually checking for headers:

https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/3fc66d4525916b9301236a000a6ed03311ed25a7/render/vulkan/meson.build#L17-25

In Debian the packages are built together and the development files are split out into a separate combined package (so the .pc files and the headers are together) https://packages.debian.org/source/trixie/vulkan-loader

What would be a good strategy to handle this split downstream?

* Make loader depend on headers?
* Build them together as if they were the same project? (In Arch this would mean one package, while in Debian this means runtime and dev files are split, according to the distro rules)
* Make downstream projects not assume the the .pc file is relevant for the headers and do manual header checking, in the same prefix I'd guess?

Thanks!

Contributor guide

Open the contributing guide

Research direction

Review the downstream examples and linked Meson, wlroots, Arch, MSYS2, and Debian references to compare how the loader package, headers, and pkg-config file are currently handled. A useful outcome would be a documented, agreed strategy for downstream packaging and whether any Vulkan-Loader changes are needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.