import os from lib.make import * from lib import cpp, arch version("1.14.0-beta.1") description("keymap handling library for toolkits and window systems") maintainer("sisungo ") source_url("https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-1.14.0-beta1.tar.gz") builddep("shortcut/c") builddep("shortcut/meson") builddep("flex") builddep("bison") builddep("libxml2-dev @target") builddep("libwayland-dev @target") builddep("wayland-protocols @target") builddep("awk") builddep("bash") builddep("xkeyboard-config-dev (=2.48) @any") def build(): os.environ["PKG_CONFIG_PATH"] = "/share/pkgconfig" # FIXME: Building the package requires `/bin/sh` to be bash. if in_atomic(): os.system("ln -sf /bin/bash /bin/sh") cpp.meson_setup([ f"--libdir={get_prefix('libxkbcommon')}/lib", f"--includedir={get_prefix('libxkbcommon-dev')}/include", f"--bindir={get_prefix('xkbcli')}/bin", f"--libexecdir={get_prefix('xkbcli')}/libexec", "-Denable-x11=false", ]) cpp.meson_compile() cpp.meson_install() on_build(build) def pack_libxkbcommon(composer): composer.makedir("lib") for i in glob.glob("lib/*common*so*"): composer.add(i) package("libxkbcommon") dep("semi-libc @same-arch") cpp.use_auto_pack(["lib"]) def pack_libxkbregistry(composer): composer.makedir("lib") for i in glob.glob("lib/*registry*so*"): composer.add(i) package("libxkbregistry") dep("semi-libc @same-arch") dep("libxml2 @same-arch") dep("xkeyboard-config (=2.48) @any") cpp.use_auto_pack(["lib"]) def pack_libxkbcommon_dev(composer): composer.makedirs("lib/pkgconfig") composer.add("lib/pkgconfig/xkbcommon.pc") composer.makedirs("include/xkbcommon") for i in glob.glob("include/xkbcommon/*"): if "registry" in i: continue composer.add(i) package("libxkbcommon-dev") dep("libxkbcommon (same)") cpp.use_auto_pack(["dev"]) def pack_libxkbregistry_dev(composer): composer.makedirs("lib/pkgconfig") with open("lib/pkgconfig/xkbregistry.pc", "r") as pcf: pc = pcf.read() pc = pc.replace(get_prefix("libxkbcommon"), get_prefix("libxkbregistry")) pc = pc.replace(get_prefix("libxkbcommon-dev"), get_prefix("libxkbregistry-dev")) with open("lib/pkgconfig/xkbregistry.pc", "wt+") as pcf: pcf.write(pc) composer.add("lib/pkgconfig/xkbregistry.pc") composer.makedirs("include/xkbcommon") for i in glob.glob("include/xkbcommon/*"): if "registry" in i: composer.add(i) package("libxkbregistry-dev") dep("libxkbregistry (same)") dep("libxml2-dev @same-arch") dep("xkeyboard-config-dev (=2.48) @any") cpp.use_auto_pack(["dev"]) def pack_bin(composer): composer.add("bin") composer.add("libexec") package("xkbcli") dep("libxkbcommon (same)") on_pack(pack_bin)