From b21cf967d4730ebcb7e6a74f0b03d0fed87d8766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:26:06 +0100 Subject: [PATCH 01/33] core::seatd: bump to 0.9.1 --- recipes/core/seatd.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/core/seatd.yaml b/recipes/core/seatd.yaml index 1dd97956..0fa8680f 100644 --- a/recipes/core/seatd.yaml +++ b/recipes/core/seatd.yaml @@ -1,13 +1,13 @@ inherit: [meson, init] metaEnvironment: - PKG_VERSION: "0.8.0" + PKG_VERSION: "0.9.1" PKG_LICENSE: "MIT" checkoutSCM: scm: url url: https://git.sr.ht/~kennylevinsen/seatd/archive/${PKG_VERSION}.tar.gz - digestSHA1: e33c99d9b0dce48f82618de2849ef3128305d28a + digestSHA1: cde15ad79adf2de055c717ea31b1e1e8ba230b6b stripComponents: 1 buildScript: | From 4ac271f29616b4d1fa824ceaa1a03d24cffce7c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:31:13 +0100 Subject: [PATCH 02/33] graphics::fonts::font-util: fix fontrootdir value Some packages will use the fontutil.pc file to get the font root directory. As pc files are relocated in Bob, the value must be hard coded path. Interestingly, pkg-config has a heuristic that detects if variables start with the same string as the "prefix" variable. But we only want the include and library directories to be relocated. To work around this problem, use a dummy prefix. It will be overwritten anyway by the actual pc file location. On the other hand, the "mapdir" path must be relocated. It is used to find the mapping data at runtime when the tools are invoked. This is at cross-compile time of other packages. --- recipes/graphics/fonts/font-util.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recipes/graphics/fonts/font-util.yaml b/recipes/graphics/fonts/font-util.yaml index 272a67f5..a9c646d5 100644 --- a/recipes/graphics/fonts/font-util.yaml +++ b/recipes/graphics/fonts/font-util.yaml @@ -18,7 +18,16 @@ buildScript: | multiPackage: dev: - packageScript: autotoolsPackageDev $1 "/usr/share/***" + packageScript: | + autotoolsPackageDev $1 "/usr/share/***" + + # Workaround so that 'fontrootdir' is not affected by pc-file + # relocation. + sed -i -e '/^prefix=/c prefix=/dummy' \ + -e '/^libdir=/c libdir=${prefix}/lib' \ + -e '/^datarootdir=/c datarootdir=/usr/share' \ + -e '/^mapdir=/c mapdir=/dummy/share/fonts/X11/util' \ + usr/lib/pkgconfig/fontutil.pc tgt: packageScript: autotoolsPackageTgt $1 "/usr/share/***" From 5eda0f2ed66b0acd2c7a09a23913486a51e2f014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:37:02 +0100 Subject: [PATCH 03/33] graphics::xorg::xkbcomp: fix xkbconfigdir value Some packages will use the xkbcomp.pc file to get the X11 keymaps directory. As pc files are relocated in Bob, the value must be hard coded path. Interestingly, pkg-config has a heuristic that detects if variables start with the same string as the "prefix" variable. But we only want the include and library directories to be relocated. To work around this problem, use a dummy prefix. It will be overwritten anyway by the actual pc file location. --- recipes/graphics/xorg/xkbcomp.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recipes/graphics/xorg/xkbcomp.yaml b/recipes/graphics/xorg/xkbcomp.yaml index e30fa132..ef08a88c 100644 --- a/recipes/graphics/xorg/xkbcomp.yaml +++ b/recipes/graphics/xorg/xkbcomp.yaml @@ -30,4 +30,11 @@ multiPackage: packageScript: autotoolsPackageTgt dev: provideDeps: ['*-dev'] - packageScript: autotoolsPackageDev + packageScript: | + autotoolsPackageDev + + # Workaround so that 'xkbconfigdir' is not affected by pc-file + # relocation. + sed -i -e '/^prefix=/c prefix=/dummy' \ + -e 's|${prefix}|/usr|' \ + usr/lib/pkgconfig/xkbcomp.pc From e13b36871142b92f50a31152ef64465c38a15950 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:41:49 +0100 Subject: [PATCH 04/33] libs::xorg::libXcursor: fix icondir value Some packages will use the xcursor.pc file to get the icons directory. As pc files are relocated in Bob, the value must be hard coded path. Interestingly, pkg-config has a heuristic that detects if variables start with the same string as the "prefix" variable. But we only want the include and library directories to be relocated. To work around this problem, use a dummy prefix. It will be overwritten anyway by the actual pc file location. --- recipes/libs/xorg/libXcursor.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/libs/xorg/libXcursor.yaml b/recipes/libs/xorg/libXcursor.yaml index d32407a1..a046daa7 100644 --- a/recipes/libs/xorg/libXcursor.yaml +++ b/recipes/libs/xorg/libXcursor.yaml @@ -24,7 +24,12 @@ buildScript: | multiPackage: dev: provideDeps: ['*-dev'] - packageScript: autotoolsPackageDev + packageScript: | + autotoolsPackageDev + sed -e '/^prefix=/c prefix=/dummy' \ + -e '/^libdir=/c libdir=${prefix}/lib' \ + -e '/^datarootdir=/c datarootdir=/usr/share' \ + -i usr/lib/pkgconfig/xcursor.pc tgt: provideDeps: ['*-tgt'] packageScript: autotoolsPackageTgt From c24dea01e9e2c5ef7e704d2b64593f33c59bce6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:43:21 +0100 Subject: [PATCH 05/33] libs::libinput: bump to 1.29.1 --- recipes/libs/libinput.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libinput.yaml b/recipes/libs/libinput.yaml index f3da5c96..715d8878 100644 --- a/recipes/libs/libinput.yaml +++ b/recipes/libs/libinput.yaml @@ -1,7 +1,7 @@ inherit: [meson] metaEnvironment: - PKG_VERSION: "1.26.1" + PKG_VERSION: "1.29.1" PKG_LICENSE: "MIT" depends: @@ -18,7 +18,7 @@ depends: checkoutSCM: scm: url url: https://gitlab.freedesktop.org/libinput/libinput/-/archive/${PKG_VERSION}/libinput-${PKG_VERSION}.tar.bz2 - digestSHA1: 1fe73b4e30d01e1d6b18b8815cc93316d1a51de3 + digestSHA1: f62c126edacac59444dd4ccf5f9df0c38bd4576e stripComponents: 1 buildScript: | From bf91629559fab0a40f763843adf2b4d45ca823b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:44:01 +0100 Subject: [PATCH 06/33] libs::xcb::util-wm: use m4 as weak tool --- recipes/libs/xcb/util-wm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/xcb/util-wm.yaml b/recipes/libs/xcb/util-wm.yaml index 21a9fec1..bca7e42a 100644 --- a/recipes/libs/xcb/util-wm.yaml +++ b/recipes/libs/xcb/util-wm.yaml @@ -19,7 +19,7 @@ checkoutSCM: digestSHA256: dcecaaa535802fd57c84cceeff50c64efe7f2326bf752e16d2b77945649c8cd7 stripComponents: 1 -buildTools: [m4] +buildToolsWeak: [m4] buildScript: | autotoolsBuild $1 From 7683df60182d1674448664dd2bf2de93d0807016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:46:51 +0100 Subject: [PATCH 07/33] libs::mesa3d: remove bin package The mesa3d library does not have any applications. Remove the libs::mesa3d package because it just holds a configuration file. Install it with the libraries directly instead. --- recipes/libs/mesa3d.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/recipes/libs/mesa3d.yaml b/recipes/libs/mesa3d.yaml index 5a3e59ce..d7f2fd09 100644 --- a/recipes/libs/mesa3d.yaml +++ b/recipes/libs/mesa3d.yaml @@ -187,17 +187,10 @@ multiPackage: -Dosmesa=false multiPackage: - "": - depends: - - name: libs::mesa3d-tgt - use: [] - packageScript: mesonPackageBin - provideDeps: [ "*-tgt" ] - dev: packageScript: mesonPackageDev provideDeps: [ "*-dev" ] tgt: - packageScript: mesonPackageLib + packageScript: mesonPackageTgt provideDeps: [ "*-tgt" ] From 0c47454bb29c994cd5a3afc8ec11ea29d10bb8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 17:53:03 +0100 Subject: [PATCH 08/33] libs::mesa3d: fix dridriverdir value Some packages will use the dri.pc file to get the DRI drivers directory. As pc files are relocated in Bob, the value must be hard coded path. Interestingly, pkg-config has a heuristic that detects if variables start with the same string as the "prefix" variable. But we only want the include and library directories to be relocated. To work around this problem, use a dummy prefix. It will be overwritten anyway by the actual pc file location. --- recipes/libs/mesa3d.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/recipes/libs/mesa3d.yaml b/recipes/libs/mesa3d.yaml index d7f2fd09..3c4e62d7 100644 --- a/recipes/libs/mesa3d.yaml +++ b/recipes/libs/mesa3d.yaml @@ -188,7 +188,12 @@ multiPackage: multiPackage: dev: - packageScript: mesonPackageDev + packageScript: | + mesonPackageDev + + # Workaround so that 'dridriverdir' is not affected by + # pc-file relocation. + sed -i -e '/^prefix=/c prefix=/dummy' usr/lib/pkgconfig/dri.pc provideDeps: [ "*-dev" ] tgt: From 09bd63bf9ce4b20b2c0c852aac17a56c890fe6d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 20:49:33 +0100 Subject: [PATCH 09/33] libs::mesa3d: fix gbmbackendspath value Some packages may use the gbm.pc file to get the GBM drivers directory. As pc files are relocated in Bob, the value must be hard coded path. Interestingly, pkg-config has a heuristic that detects if variables start with the same string as the "prefix" variable. But we only want the include and library directories to be relocated. To work around this problem, use a dummy prefix. It will be overwritten anyway by the actual pc file location. --- recipes/libs/mesa3d.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/libs/mesa3d.yaml b/recipes/libs/mesa3d.yaml index 3c4e62d7..a32cd7cd 100644 --- a/recipes/libs/mesa3d.yaml +++ b/recipes/libs/mesa3d.yaml @@ -194,6 +194,10 @@ multiPackage: # Workaround so that 'dridriverdir' is not affected by # pc-file relocation. sed -i -e '/^prefix=/c prefix=/dummy' usr/lib/pkgconfig/dri.pc + + # Workaround so that 'gbmbackendspath' is not affected by + # pc-file relocation. + sed -i -e '/^prefix=/c prefix=/dummy' usr/lib/pkgconfig/gbm.pc provideDeps: [ "*-dev" ] tgt: From f6666bfe319e2d343c0a42353bc2192f516ba1da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 20:52:35 +0100 Subject: [PATCH 10/33] libs::libxkbcommon: fix provideDeps --- recipes/libs/libxkbcommon.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/libxkbcommon.yaml b/recipes/libs/libxkbcommon.yaml index 7234890f..11d66680 100644 --- a/recipes/libs/libxkbcommon.yaml +++ b/recipes/libs/libxkbcommon.yaml @@ -28,8 +28,8 @@ buildScript: | multiPackage: dev: packageScript: mesonPackageDev + provideDeps: ['*-dev'] tgt: packageScript: mesonPackageTgt - -provideDeps: [ "*-tgt", "*xkeyboard-config" ] + provideDeps: ['*-tgt', "graphics::xorg::xkeyboard-config"] From 3dbc76bb767e01ba914092f82fd759c3832cb0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:08:19 +0100 Subject: [PATCH 11/33] Add graphics::xorg::mcookie A helper to create an xauth cookie. It comes with no apparent version and is public domain. --- recipes/graphics/xorg/mcookie.yaml | 11 + recipes/graphics/xorg/mcookie/mcookie.c | 425 ++++++++++++++++++++++++ 2 files changed, 436 insertions(+) create mode 100644 recipes/graphics/xorg/mcookie.yaml create mode 100644 recipes/graphics/xorg/mcookie/mcookie.c diff --git a/recipes/graphics/xorg/mcookie.yaml b/recipes/graphics/xorg/mcookie.yaml new file mode 100644 index 00000000..78ee0132 --- /dev/null +++ b/recipes/graphics/xorg/mcookie.yaml @@ -0,0 +1,11 @@ +inherit: [install] + +buildTools: [target-toolchain] +buildVars: [CC, CPPFLAGS, CFLAGS, LDFLAGS] +buildScript: | + mkdir -p usr/bin + $CC ${CPPFLAGS:-} ${CFLAGS:-} ${LDFLAGS:-} -o usr/bin/mcookie -xc $<> + chmod 755 usr/bin/mcookie + +packageScript: | + installPackageBin "$1/" diff --git a/recipes/graphics/xorg/mcookie/mcookie.c b/recipes/graphics/xorg/mcookie/mcookie.c new file mode 100644 index 00000000..3c38f6f3 --- /dev/null +++ b/recipes/graphics/xorg/mcookie/mcookie.c @@ -0,0 +1,425 @@ +/* mcookie.c -- Generates random numbers for xauth + * Created: Fri Feb 3 10:42:48 1995 by faith@cs.unc.edu + * Revised: Fri Mar 19 07:48:01 1999 by faith@acm.org + * Public Domain 1995, 1999 Rickard E. Faith (faith@acm.org) + * This program comes with ABSOLUTELY NO WARRANTY. + * + * $Id: mcookie.c,v 1.5 1997/07/06 00:13:06 aebr Exp $ + * + * This program gathers some random bits of data and used the MD5 + * message-digest algorithm to generate a 128-bit hexadecimal number for + * use with xauth(1). + * + * NOTE: Unless /dev/random is available, this program does not actually + * gather 128 bits of random information, so the magic cookie generated + * will be considerably easier to guess than one might expect. + * + * 1999-02-22 Arkadiusz Mi¶kiewicz + * - added Native Language Support + * 1999-03-21 aeb: Added some fragments of code from Colin Plumb. + * + */ + +#include +#include +#include +#include +#include +#include + +#define BUFFERSIZE 4096 + + +#ifndef MD5_H +#define MD5_H + +#if defined (__alpha__) || defined (__ia64__) || defined (__x86_64__) +typedef unsigned int uint32; +#else +typedef unsigned long uint32; +#endif + +struct MD5Context { + uint32 buf[4]; + uint32 bits[2]; + unsigned char in[64]; +}; + +void MD5Init(struct MD5Context *context); +void MD5Update(struct MD5Context *context, unsigned char const *buf, + unsigned len); +void MD5Final(unsigned char digest[16], struct MD5Context *context); +void MD5Transform(uint32 buf[4], uint32 const in[16]); + +/* + * This is needed to make RSAREF happy on some MS-DOS compilers. + */ +typedef struct MD5Context MD5_CTX; + +#endif /* !MD5_H */ + + + +/* + * This code implements the MD5 message-digest algorithm. + * The algorithm is due to Ron Rivest. This code was + * written by Colin Plumb in 1993, no copyright is claimed. + * This code is in the public domain; do with it what you wish. + * + * Equivalent code is available from RSA Data Security, Inc. + * This code has been tested against that, and is equivalent, + * except that you don't need to include two pages of legalese + * with every copy. + * + * To compute the message digest of a chunk of bytes, declare an + * MD5Context structure, pass it to MD5Init, call MD5Update as + * needed on buffers full of bytes, and then call MD5Final, which + * will fill a supplied 16-byte array with the digest. + */ +#include /* for memcpy() */ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define byteReverse(buf, len) /* Nothing */ +#else +void byteReverse(unsigned char *buf, unsigned longs); + +/* + * Note: this code is harmless on little-endian machines. + */ +void byteReverse(unsigned char *buf, unsigned longs) +{ + uint32 t; + do { + t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 | + ((unsigned) buf[1] << 8 | buf[0]); + *(uint32 *) buf = t; + buf += 4; + } while (--longs); +} +#endif + +/* + * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious + * initialization constants. + */ +void MD5Init(struct MD5Context *ctx) +{ + ctx->buf[0] = 0x67452301; + ctx->buf[1] = 0xefcdab89; + ctx->buf[2] = 0x98badcfe; + ctx->buf[3] = 0x10325476; + + ctx->bits[0] = 0; + ctx->bits[1] = 0; +} + +/* + * Update context to reflect the concatenation of another buffer full + * of bytes. + */ +void MD5Update(struct MD5Context *ctx, unsigned char const *buf, unsigned len) +{ + uint32 t; + + /* Update bitcount */ + + t = ctx->bits[0]; + if ((ctx->bits[0] = t + ((uint32) len << 3)) < t) + ctx->bits[1]++; /* Carry from low to high */ + ctx->bits[1] += len >> 29; + + t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ + + /* Handle any leading odd-sized chunks */ + + if (t) { + unsigned char *p = (unsigned char *) ctx->in + t; + + t = 64 - t; + if (len < t) { + memcpy(p, buf, len); + return; + } + memcpy(p, buf, t); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += t; + len -= t; + } + /* Process data in 64-byte chunks */ + + while (len >= 64) { + memcpy(ctx->in, buf, 64); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + buf += 64; + len -= 64; + } + + /* Handle any remaining bytes of data. */ + + memcpy(ctx->in, buf, len); +} + +/* + * Final wrapup - pad to 64-byte boundary with the bit pattern + * 1 0* (64-bit count of bits processed, MSB-first) + */ +void MD5Final(unsigned char digest[16], struct MD5Context *ctx) +{ + unsigned count; + unsigned char *p; + + /* Compute number of bytes mod 64 */ + count = (ctx->bits[0] >> 3) & 0x3F; + + /* Set the first char of padding to 0x80. This is safe since there is + always at least one byte free */ + p = ctx->in + count; + *p++ = 0x80; + + /* Bytes of padding needed to make 64 bytes */ + count = 64 - 1 - count; + + /* Pad out to 56 mod 64 */ + if (count < 8) { + /* Two lots of padding: Pad the first block to 64 bytes */ + memset(p, 0, count); + byteReverse(ctx->in, 16); + MD5Transform(ctx->buf, (uint32 *) ctx->in); + + /* Now fill the next block with 56 bytes */ + memset(ctx->in, 0, 56); + } else { + /* Pad block to 56 bytes */ + memset(p, 0, count - 8); + } + byteReverse(ctx->in, 14); + + /* Append length in bits and transform */ + ((uint32 *) ctx->in)[14] = ctx->bits[0]; + ((uint32 *) ctx->in)[15] = ctx->bits[1]; + + MD5Transform(ctx->buf, (uint32 *) ctx->in); + byteReverse((unsigned char *) ctx->buf, 4); + memcpy(digest, ctx->buf, 16); + memset(ctx, 0, sizeof(*ctx)); /* In case it's sensitive */ +} + +/* The four core functions - F1 is optimized somewhat */ + +/* #define F1(x, y, z) (x & y | ~x & z) */ +#define F1(x, y, z) (z ^ (x & (y ^ z))) +#define F2(x, y, z) F1(z, x, y) +#define F3(x, y, z) (x ^ y ^ z) +#define F4(x, y, z) (y ^ (x | ~z)) + +/* This is the central step in the MD5 algorithm. */ +#define MD5STEP(f, w, x, y, z, data, s) \ + ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) + +/* + * The core of the MD5 algorithm, this alters an existing MD5 hash to + * reflect the addition of 16 longwords of new data. MD5Update blocks + * the data and converts bytes into longwords for this routine. + */ +void MD5Transform(uint32 buf[4], uint32 const in[16]) +{ + register uint32 a, b, c, d; + + a = buf[0]; + b = buf[1]; + c = buf[2]; + d = buf[3]; + + MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); + MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); + MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); + MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); + MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); + MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); + MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); + MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); + MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); + MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); + MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); + MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); + MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); + MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); + MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); + MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); + + MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); + MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); + MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); + MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); + MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); + MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); + MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); + MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); + MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); + MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); + MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); + MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); + MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); + MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); + MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); + MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); + + MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); + MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); + MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); + MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); + MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); + MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); + MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); + MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); + MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); + MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); + MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); + MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); + MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); + MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); + MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); + MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); + + MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); + MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); + MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); + MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); + MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); + MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); + MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); + MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); + MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); + MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); + MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); + MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); + MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); + MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); + MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); + MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); + + buf[0] += a; + buf[1] += b; + buf[2] += c; + buf[3] += d; +} + + + + +struct rngs { + const char *path; + int minlength, maxlength; +} rngs[] = { + { "/dev/random", 16, 16 }, /* 16 bytes = 128 bits suffice */ + { "/proc/interrupts", 0, 0 }, + { "/proc/slabinfo", 0, 0 }, + { "/proc/stat", 0, 0 }, + { "/dev/urandom", 32, 64 }, +}; +#define RNGS (sizeof(rngs)/sizeof(struct rngs)) + +int Verbose = 0; + +/* The basic function to hash a file */ +static off_t +hash_file(struct MD5Context *ctx, int fd) +{ + off_t count = 0; + ssize_t r; + unsigned char buf[BUFFERSIZE]; + + while ((r = read(fd, buf, sizeof(buf))) > 0) { + MD5Update(ctx, buf, r); + count += r; + } + /* Separate files with a null byte */ + buf[0] = 0; + MD5Update(ctx, buf, 1); + return count; +} + +int main( int argc, char **argv ) +{ + int i; + struct MD5Context ctx; + unsigned char digest[16]; + unsigned char buf[BUFFERSIZE]; + int fd; + int c; + pid_t pid; + char *file = NULL; + int r; + struct timeval tv; + struct timezone tz; + + while ((c = getopt( argc, argv, "vf:" )) != -1) + switch (c) { + case 'v': ++Verbose; break; + case 'f': file = optarg; break; + } + + MD5Init( &ctx ); + + gettimeofday( &tv, &tz ); + MD5Update( &ctx, (unsigned char *)&tv, sizeof( tv ) ); + pid = getppid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + pid = getpid(); + MD5Update( &ctx, (unsigned char *)&pid, sizeof( pid )); + + if (file) { + int count = 0; + + if (file[0] == '-' && !file[1]) + fd = fileno(stdin); + else + fd = open( file, O_RDONLY ); + + if (fd < 0) { + fprintf( stderr, "Could not open %s\n", file ); + } else { + count = hash_file( &ctx, fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", count, file ); + + if (file[0] != '-' || file[1]) close( fd ); + } + } + + for (i = 0; i < RNGS; i++) { + if ((fd = open( rngs[i].path, O_RDONLY|O_NONBLOCK )) >= 0) { + int count = sizeof(buf); + + if (rngs[i].maxlength && count > rngs[i].maxlength) + count = rngs[i].maxlength; + r = read( fd, buf, count ); + if (r > 0) + MD5Update( &ctx, buf, r ); + else + r = 0; + close( fd ); + if (Verbose) + fprintf( stderr, "Got %d bytes from %s\n", r, rngs[i].path ); + if (rngs[i].minlength && r >= rngs[i].minlength) + break; + } else if (Verbose) + fprintf( stderr, "Could not open %s\n", rngs[i].path ); + } + + MD5Final( digest, &ctx ); + for (i = 0; i < 16; i++) printf( "%02x", digest[i] ); + putchar ( '\n' ); + + /* + * The following is important for cases like disk full, so shell scripts + * can bomb out properly rather than think they succeeded. + */ + if (fflush(stdout) < 0 || fclose(stdout) < 0) + return 1; + + return 0; +} From e21f7a3c06e4990d6a5b375b449aa64ec048662c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:11:55 +0100 Subject: [PATCH 12/33] Add graphics::xorg::xcursorgen version 1.0.9 --- recipes/graphics/xorg/xcursorgen.yaml | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 recipes/graphics/xorg/xcursorgen.yaml diff --git a/recipes/graphics/xorg/xcursorgen.yaml b/recipes/graphics/xorg/xcursorgen.yaml new file mode 100644 index 00000000..e9ab53d7 --- /dev/null +++ b/recipes/graphics/xorg/xcursorgen.yaml @@ -0,0 +1,31 @@ +inherit: [autotools] + +metaEnvironment: + PKG_VERSION: "1.0.9" + PKG_LICENSE: MIT + +depends: + - libs::xorg::libX11-dev + - libs::xorg::libXcursor-dev + - libs::libpng-dev + - use: [] + depends: + - libs::xorg::libX11-tgt + - libs::xorg::libXcursor-tgt + - libs::libpng-tgt + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/app/xcursorgen-${PKG_VERSION}.tar.xz + digestSHA256: 0cc9e156ac84ca16ea902710af35e0faffa51d13797071e3b4b6cc7cbd493bbc + stripComponents: 1 + +buildScript: | + LDFLAGS+=" -ldl" + autotoolsBuild $1 \ + --disable-malloc0returnsnull + +provideDeps: ['*-tgt'] +packageScript: autotoolsPackageBin +provideTools: + xcursorgen: usr/bin From 39d85bebe3a5bbdf8c1fb4aea382869916682616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:13:37 +0100 Subject: [PATCH 13/33] Add graphics::xorg::utils::bdftopcf version 1.1.2 --- recipes/graphics/xorg/utils/bdftopcf.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recipes/graphics/xorg/utils/bdftopcf.yaml diff --git a/recipes/graphics/xorg/utils/bdftopcf.yaml b/recipes/graphics/xorg/utils/bdftopcf.yaml new file mode 100644 index 00000000..ffc96a9e --- /dev/null +++ b/recipes/graphics/xorg/utils/bdftopcf.yaml @@ -0,0 +1,23 @@ +inherit: [autotools] + +metaEnvironment: + PKG_VERSION: "1.1.2" + PKG_LICENSE: MIT + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/util/bdftopcf-${PKG_VERSION}.tar.xz + digestSHA256: bc60be5904330faaa3ddd2aed7874bee2f29e4387c245d6787552f067eb0523a + stripComponents: 1 + +depends: + - graphics::xorg::proto::xorgproto-dev + - graphics::xorg::utils::util-macros-dev + +buildScript: | + autotoolsBuild "$1" + +packageScript: | + autotoolsPackageTgt +provideTools: + bdftopcf: usr/bin From f08409f1b732c10e8d4d8e437e80ca0a76467fbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:14:35 +0100 Subject: [PATCH 14/33] Add graphics::xorg::mkfontscale version 1.2.3 --- recipes/graphics/xorg/mkfontscale.yaml | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 recipes/graphics/xorg/mkfontscale.yaml diff --git a/recipes/graphics/xorg/mkfontscale.yaml b/recipes/graphics/xorg/mkfontscale.yaml new file mode 100644 index 00000000..d11b2075 --- /dev/null +++ b/recipes/graphics/xorg/mkfontscale.yaml @@ -0,0 +1,32 @@ +inherit: [autotools] + +metaEnvironment: + PKG_VERSION: "1.2.3" + PKG_LICENSE: MIT + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/app/mkfontscale-${PKG_VERSION}.tar.xz + digestSHA256: 2921cdc344f1acee04bcd6ea1e29565c1308263006e134a9ee38cf9c9d6fe75e + stripComponents: 1 + +depends: + - libs::freetype-dev + - libs::xorg::libfontenc-dev + + - use: [] + depends: + - libs::freetype-tgt + - libs::xorg::libfontenc-tgt + +buildScript: | + autotoolsBuild "$1" + +packageScript: | + autotoolsPackageTgt + +provideDeps: [ "*-tgt" ] + +provideTools: + mkfontscale: usr/bin + mkfontdir: usr/bin From 05144f4367a2e9985ede1f922c80ec5d34e7456f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:16:31 +0100 Subject: [PATCH 15/33] Add graphics::xorg::xcursor-themes version 1.0.7 --- recipes/graphics/xorg/xcursor-themes.yaml | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 recipes/graphics/xorg/xcursor-themes.yaml diff --git a/recipes/graphics/xorg/xcursor-themes.yaml b/recipes/graphics/xorg/xcursor-themes.yaml new file mode 100644 index 00000000..ffb07827 --- /dev/null +++ b/recipes/graphics/xorg/xcursor-themes.yaml @@ -0,0 +1,27 @@ +inherit: [autotools] + +metaEnvironment: + PKG_VERSION: "1.0.7" + PKG_LICENSE: MIT + +depends: + - tools: + target-toolchain: host-compat-toolchain + use: [tools] + depends: + - graphics::xorg::xcursorgen + + - libs::xorg::libXcursor-dev + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/data/xcursor-themes-${PKG_VERSION}.tar.xz + digestSHA256: 95bae8f48823d894a05bf42dfbf453674ab7dbdeb11e2bc079e8525ad47378c8 + stripComponents: 1 + +buildTools: [xcursorgen] +buildScript: | + autotoolsBuild $1 + +packageScript: | + installCopy $1/install/ From f044d133a7037a7c6a815561ef0ddfd1fc336d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:18:48 +0100 Subject: [PATCH 16/33] Add graphics::xorg::xeyes version 1.3.1 --- recipes/graphics/xorg/xeyes.yaml | 37 ++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 recipes/graphics/xorg/xeyes.yaml diff --git a/recipes/graphics/xorg/xeyes.yaml b/recipes/graphics/xorg/xeyes.yaml new file mode 100644 index 00000000..389156b1 --- /dev/null +++ b/recipes/graphics/xorg/xeyes.yaml @@ -0,0 +1,37 @@ +inherit: [meson] + +metaEnvironment: + PKG_VERSION: "1.3.1" + PKG_LICENSE: MIT + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/app/xeyes-${PKG_VERSION}.tar.xz + digestSHA256: 5608d76b7b1aac5ed7f22f1b6b5ad74ef98c8693220f32b4b87dccee4a956eaa + stripComponents: 1 + +depends: + - libs::xcb::libxcb-dev + - libs::xorg::libX11-dev + - libs::xorg::libXext-dev + - libs::xorg::libXi-dev + - libs::xorg::libXmu-dev + - libs::xorg::libXrender-dev + - libs::xorg::libXt-dev + + - use: [] + depends: + - libs::xcb::libxcb-tgt + - libs::xorg::libX11-tgt + - libs::xorg::libXext-tgt + - libs::xorg::libXi-tgt + - libs::xorg::libXmu-tgt + - libs::xorg::libXrender-tgt + - libs::xorg::libXt-tgt + +buildScript: | + mesonBuild $1 + +packageScript: | + mesonPackageTgt +provideDeps: [ "*-tgt" ] From 5e484155ac1609cc648c18018954e28ddf93b3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:20:21 +0100 Subject: [PATCH 17/33] Add graphics::xorg::twm version 1.0.13.1 --- recipes/graphics/xorg/twm.yaml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 recipes/graphics/xorg/twm.yaml diff --git a/recipes/graphics/xorg/twm.yaml b/recipes/graphics/xorg/twm.yaml new file mode 100644 index 00000000..568d436a --- /dev/null +++ b/recipes/graphics/xorg/twm.yaml @@ -0,0 +1,32 @@ +inherit: [autotools] + +metaEnvironment: + PKG_VERSION: "1.0.13.1" + PKG_LICENSE: MIT + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/app/twm-${PKG_VERSION}.tar.xz + digestSHA256: a52534755aa8b492c884e52fa988bac84ab4d54641954679b9aaf08e323df2c5 + stripComponents: 1 + +depends: + - libs::xorg::libX11-dev + - libs::xorg::libXext-dev + - libs::xorg::libXmu-dev + - libs::xorg::libXt-dev + + - use: [] + depends: + - libs::xorg::libX11-tgt + - libs::xorg::libXext-tgt + - libs::xorg::libXmu-tgt + - libs::xorg::libXt-tgt + +buildTools: [bison] +buildScript: | + autotoolsBuild $1 + +packageScript: | + autotoolsPackageTgt +provideDeps: [ "*-tgt" ] From bf8765d3b78913491d4972925f9821ff7a122b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 22:46:44 +0100 Subject: [PATCH 18/33] graphics::fonts::font-util: make a pure binary package The font-utils package produces only two executables with some development meta data. It's used by other packages to process font data at compile time. In particular, it is *not* a library. Hence, it makes no sense to have a -dev and -tgt multiPackage. Because some packages require pkg-config to find the font-util binaries, add a class that adds the tool to the pkg-config search path. --- classes/xorg/font-util.yaml | 10 ++++++++ recipes/graphics/fonts/font-util.yaml | 34 ++++++++++----------------- recipes/graphics/xorg/xserver.yaml | 4 +--- 3 files changed, 24 insertions(+), 24 deletions(-) create mode 100644 classes/xorg/font-util.yaml diff --git a/classes/xorg/font-util.yaml b/classes/xorg/font-util.yaml new file mode 100644 index 00000000..530c4880 --- /dev/null +++ b/classes/xorg/font-util.yaml @@ -0,0 +1,10 @@ +depends: + - tools: + target-toolchain: host-compat-toolchain + use: [tools] + depends: + - graphics::fonts::font-util + +buildTools: [fontUtil] +buildScript: | + PKG_CONFIG_LIBDIR+=":${BOB_TOOL_PATHS[fontUtil]}/../lib/pkgconfig" diff --git a/recipes/graphics/fonts/font-util.yaml b/recipes/graphics/fonts/font-util.yaml index a9c646d5..6a44b9ce 100644 --- a/recipes/graphics/fonts/font-util.yaml +++ b/recipes/graphics/fonts/font-util.yaml @@ -16,26 +16,18 @@ checkoutSCM: buildScript: | autotoolsBuild $1 -multiPackage: - dev: - packageScript: | - autotoolsPackageDev $1 "/usr/share/***" +packageScript: | + # The tools need to be accompanied by the .pc-file and other data... + autotoolsPackageDev + autotoolsPackageTgt - # Workaround so that 'fontrootdir' is not affected by pc-file - # relocation. - sed -i -e '/^prefix=/c prefix=/dummy' \ - -e '/^libdir=/c libdir=${prefix}/lib' \ - -e '/^datarootdir=/c datarootdir=/usr/share' \ - -e '/^mapdir=/c mapdir=/dummy/share/fonts/X11/util' \ - usr/lib/pkgconfig/fontutil.pc + # Workaround so that 'fontrootdir' is not affected by pc-file + # relocation. + sed -i -e '/^prefix=/c prefix=/dummy' \ + -e '/^libdir=/c libdir=${prefix}/lib' \ + -e '/^datarootdir=/c datarootdir=/usr/share' \ + -e '/^mapdir=/c mapdir=/dummy/share/fonts/X11/util' \ + usr/lib/pkgconfig/fontutil.pc - tgt: - packageScript: autotoolsPackageTgt $1 "/usr/share/***" - "": - depends: - - name: graphics::fonts::font-util-tgt - use: [] - provideDeps: ['*-tgt'] - packageScript: autotoolsPackageBin $1 - provideTools: - fontUtil: "usr/bin" +provideTools: + fontUtil: "usr/bin" diff --git a/recipes/graphics/xorg/xserver.yaml b/recipes/graphics/xorg/xserver.yaml index 9065bee7..a01bad0f 100644 --- a/recipes/graphics/xorg/xserver.yaml +++ b/recipes/graphics/xorg/xserver.yaml @@ -1,4 +1,4 @@ -inherit: [meson] +inherit: [meson, "xorg::font-util"] metaEnvironment: PKG_VERSION: "21.1.18" @@ -14,7 +14,6 @@ checkoutSCM: depends: - graphics::xorg::xkbcomp-dev - - graphics::fonts::font-util-dev - libs::libepoxy-dev - libs::xcb::util-image-dev @@ -53,7 +52,6 @@ depends: - use: [] depends: - graphics::xorg::xkbcomp-tgt - - graphics::fonts::font-util-tgt - libs::libepoxy-tgt - libs::xcb::util-image-tgt From 770851203d9b1da3548bfce30697aa523beb34a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:22:03 +0100 Subject: [PATCH 19/33] Add graphics::fonts::xorg::alias version 1.0.5 --- recipes/graphics/fonts/xorg/alias.yaml | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 recipes/graphics/fonts/xorg/alias.yaml diff --git a/recipes/graphics/fonts/xorg/alias.yaml b/recipes/graphics/fonts/xorg/alias.yaml new file mode 100644 index 00000000..44681e41 --- /dev/null +++ b/recipes/graphics/fonts/xorg/alias.yaml @@ -0,0 +1,29 @@ +inherit: [autotools, "xorg::font-util"] + +metaEnvironment: + PKG_VERSION: "1.0.5" + PKG_LICENSE: LicenseRef-xorg-font-alias + PKG_LICENSE_PATH: | + xorg-font-alias:COPYING + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/font/font-alias-${PKG_VERSION}.tar.xz + digestSHA256: 9f89e217bb73e0e3636a0a493fbf8b7c995156e0c53d9a0476d201b67c2d6b6e + stripComponents: 1 + +depends: + - tools: + target-toolchain: host-compat-toolchain + use: [tools] + depends: + - graphics::xorg::utils::bdftopcf + + - graphics::xorg::utils::util-macros-dev + +buildTools: [bdftopcf] +buildScript: | + autotoolsBuild "$1" + +packageScript: | + autotoolsPackageTgt From 026620157fd1d4773ec689dd40301f2027074a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 21:22:44 +0100 Subject: [PATCH 20/33] Add graphics::fonts::xorg::cursor-misc version 1.0.4 --- recipes/graphics/fonts/xorg/cursor-misc.yaml | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 recipes/graphics/fonts/xorg/cursor-misc.yaml diff --git a/recipes/graphics/fonts/xorg/cursor-misc.yaml b/recipes/graphics/fonts/xorg/cursor-misc.yaml new file mode 100644 index 00000000..59029958 --- /dev/null +++ b/recipes/graphics/fonts/xorg/cursor-misc.yaml @@ -0,0 +1,29 @@ +inherit: [autotools, "xorg::font-util"] + +metaEnvironment: + PKG_VERSION: "1.0.4" + PKG_LICENSE: LicenseRef-xorg-font-cursor-misc + PKG_LICENSE_PATH: | + xorg-font-cursor-misc:COPYING + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/font/font-cursor-misc-${PKG_VERSION}.tar.xz + digestSHA256: 25d9c9595013cb8ca08420509993a6434c917e53ca1fec3f63acd45a19d4f982 + stripComponents: 1 + +depends: + - tools: + target-toolchain: host-compat-toolchain + use: [tools] + depends: + - graphics::xorg::utils::bdftopcf + + - graphics::xorg::utils::util-macros-dev + +buildTools: [bdftopcf] +buildScript: | + autotoolsBuild "$1" + +packageScript: | + autotoolsPackageTgt From 512bd401a5aed6f03d3d92940a3a69d94f467e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 22:57:27 +0100 Subject: [PATCH 21/33] Add graphics::fonts::xorg::misc-misc version 1.1.3 --- recipes/graphics/fonts/xorg/misc-misc.yaml | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 recipes/graphics/fonts/xorg/misc-misc.yaml diff --git a/recipes/graphics/fonts/xorg/misc-misc.yaml b/recipes/graphics/fonts/xorg/misc-misc.yaml new file mode 100644 index 00000000..3d603764 --- /dev/null +++ b/recipes/graphics/fonts/xorg/misc-misc.yaml @@ -0,0 +1,29 @@ +inherit: [autotools, "xorg::font-util"] + +metaEnvironment: + PKG_VERSION: "1.1.3" + PKG_LICENSE: LicenseRef-xorg-font-misc-misc + PKG_LICENSE_PATH: | + xorg-font-misc-misc:COPYING + +checkoutSCM: + scm: url + url: https://xorg.freedesktop.org/releases/individual/font/font-misc-misc-${PKG_VERSION}.tar.xz + digestSHA256: 79abe361f58bb21ade9f565898e486300ce1cc621d5285bec26e14b6a8618fed + stripComponents: 1 + +depends: + - tools: + target-toolchain: host-compat-toolchain + use: [tools] + depends: + - graphics::xorg::utils::bdftopcf + + - graphics::xorg::utils::util-macros-dev + +buildTools: [bdftopcf] +buildScript: | + autotoolsBuild "$1" + +packageScript: | + autotoolsPackageTgt From 0c487bb7e5726ef1227d0bf4094dfe6a034fe2f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 23:00:49 +0100 Subject: [PATCH 22/33] graphics::xorg::xserver: add xkeyboard-config runtime dependency The xserver won't work without xkeyboard-config files. Add the package as a standard runtime dependency because there is no sane configuration with xserver where those are not needed. --- recipes/graphics/xorg/xserver.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/recipes/graphics/xorg/xserver.yaml b/recipes/graphics/xorg/xserver.yaml index a01bad0f..7dd773f9 100644 --- a/recipes/graphics/xorg/xserver.yaml +++ b/recipes/graphics/xorg/xserver.yaml @@ -88,13 +88,17 @@ depends: - virtual::core::udev-tgt - virtual::libs::libdrm-tgt + - graphics::xorg::xkeyboard-config + buildScript: | mesonBuild $1 \ -Dsecure-rpc=false multiPackage: "": - provideDeps: ['*-tgt'] + provideDeps: + - '*-tgt' + - graphics::xorg::xkeyboard-config packageScript: mesonPackageTgt dev: provideDeps: ['*-dev'] From 83a7e7186ef815fbb793388324d8da531b86fed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 14:23:12 +0100 Subject: [PATCH 23/33] init: add helper to query for systemd --- classes/init.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/classes/init.yaml b/classes/init.yaml index 78dc6348..7d0863fc 100644 --- a/classes/init.yaml +++ b/classes/init.yaml @@ -17,3 +17,9 @@ buildSetup: | { [[ ${CONFIG_INIT:-} == "sysvinit" ]] || initIsSysvinitSysv || initIsSysvinitBusybox } + + # Check if the init system is systemd + initIsSystemd() + { + [[ ${CONFIG_INIT:-} == systemd ]] + } From 4d245ba9ce704e97a23141db4186a69684455c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 14:23:42 +0100 Subject: [PATCH 24/33] init: constrain the values of CONFIG_INIT Centrally define the allowed values of CONFIG_INIT. Ensures consistency between recipes that are dependent on the init system. --- classes/init.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/classes/init.yaml b/classes/init.yaml index 7d0863fc..6a8567ab 100644 --- a/classes/init.yaml +++ b/classes/init.yaml @@ -1,3 +1,11 @@ +Config: + CONFIG_INIT: + type: choice + choice: + systemd: + sysvinit/sysv: + sysvinit/busybox: + buildVars: [CONFIG_INIT] buildSetup: | # Checks if the init system is the sysv sysvinit variant. From b53e835a8e25e334d33ffc2d6b61546bd7f72cbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 14:25:32 +0100 Subject: [PATCH 25/33] core::dbus: remove breaking configure options The data- and sysconf-directories were set to inconsistent values. This had the effect that files provided by other packages for dbus were not picked up. Consequently, the services would not run. Remove the options and use the default values as expected by other packages. --- recipes/core/dbus.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes/core/dbus.yaml b/recipes/core/dbus.yaml index d061e3c2..3cf4068e 100644 --- a/recipes/core/dbus.yaml +++ b/recipes/core/dbus.yaml @@ -27,8 +27,6 @@ Config: buildVars: [DBUS_DEBUG] buildScript: | CONFIG_OPTS=(\ - "-Ddatadir=/etc" \ - "-Dsysconfdir=/legacy" \ "-Dinotify=enabled" \ "-Dxml_docs=disabled" \ "-Ddoxygen_docs=disabled" \ From 0b7fd26c95d3d2c934f334c621e628fed5395831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:40:27 +0100 Subject: [PATCH 26/33] core::dbus: split into binary and library package The dbus-dev package contains only libdbus-1.so. Consequently, the dbus-tgt package should only hold the shared library as well. If the dbus daemon is to be installed on the target, it must be selected explicitly by the core::dbus package. --- recipes/core/dbus.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/recipes/core/dbus.yaml b/recipes/core/dbus.yaml index 3cf4068e..e9021d5a 100644 --- a/recipes/core/dbus.yaml +++ b/recipes/core/dbus.yaml @@ -44,9 +44,15 @@ buildScript: | mesonBuild $1 ${CONFIG_OPTS[@]} multiPackage: + "": + depends: + - use: [] + name: core::dbus-tgt + packageScript: mesonPackageBin + provideDeps: [ "*-tgt" ] dev: provideDeps: ['*-dev'] packageScript: mesonPackageDev $1 "/usr/lib/dbus-1.0/***" tgt: provideDeps: ['*-tgt'] - packageScript: mesonPackageTgt + packageScript: mesonPackageLib From 2c8e6e90d4739554dd4a697eb8c4e1ceac132a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:44:14 +0100 Subject: [PATCH 27/33] core::dbus: add systemd support --- recipes/core/dbus.yaml | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/recipes/core/dbus.yaml b/recipes/core/dbus.yaml index e9021d5a..784620bf 100644 --- a/recipes/core/dbus.yaml +++ b/recipes/core/dbus.yaml @@ -1,4 +1,4 @@ -inherit: [meson] +inherit: [meson, init] metaEnvironment: PKG_DESCRIPTION: "D-Bus is a simple system for interprocess communication and coordination." @@ -13,6 +13,12 @@ depends: - libs::expat-tgt - libs::glib-tgt + - if: "$(eq,${CONFIG_INIT:-},systemd)" + depends: + - core::systemd-libsystemd-dev + - use: [] + name: core::systemd-libsystemd-tgt + checkoutSCM: scm: url url: https://dbus.freedesktop.org/releases/dbus/dbus-${PKG_VERSION}.tar.xz @@ -41,6 +47,17 @@ buildScript: | else CONFIG_OPTS+=("-Dstats=false") fi + + if initIsSystemd ; then + CONFIG_OPTS+=( + -Dsystemd=enabled + -Dsystemd_system_unitdir=/usr/lib/systemd/system + -Dsystemd_user_unitdir=/usr/lib/systemd/user + ) + else + CONFIG_OPTS+=( -Dsystemd=disabled ) + fi + mesonBuild $1 ${CONFIG_OPTS[@]} multiPackage: @@ -48,7 +65,12 @@ multiPackage: depends: - use: [] name: core::dbus-tgt - packageScript: mesonPackageBin + packageScript: | + mesonPackageBin + mkdir -p .bob + cat >.bob/dbus.user-table < Date: Sun, 23 Nov 2025 16:48:00 +0100 Subject: [PATCH 28/33] core::seatd: add systemd support --- recipes/core/seatd.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/recipes/core/seatd.yaml b/recipes/core/seatd.yaml index 0fa8680f..6050b7f0 100644 --- a/recipes/core/seatd.yaml +++ b/recipes/core/seatd.yaml @@ -4,18 +4,29 @@ metaEnvironment: PKG_VERSION: "0.9.1" PKG_LICENSE: "MIT" +depends: + - if: "$(eq,${CONFIG_INIT:-}-${SYSTEMD_LOGIND:-},systemd-1)" + depends: + - core::systemd-libsystemd-dev + - use: [] + name: core::systemd-libsystemd-tgt + +privateEnvironment: + ENABLE_LOGIND: "$(if-then-else,$(eq,${CONFIG_INIT:-}-${SYSTEMD_LOGIND:-},systemd-1),systemd,disabled)" + checkoutSCM: scm: url url: https://git.sr.ht/~kennylevinsen/seatd/archive/${PKG_VERSION}.tar.gz digestSHA1: cde15ad79adf2de055c717ea31b1e1e8ba230b6b stripComponents: 1 +buildVars: [ENABLE_LOGIND] buildScript: | mesonBuild $1 \ -Dman-pages=disabled \ -Dexamples=disabled \ -Dwerror=false \ - -Dlibseat-logind=disabled \ + -Dlibseat-logind=$ENABLE_LOGIND \ -Dlibseat-builtin=enabled # add init script @@ -32,9 +43,10 @@ multiPackage: multiPackage: dev: packageScript: mesonPackageDev + provideDeps: [ "core::systemd-libsystemd-dev" ] tgt: depends: - name: core::seatd use: [] packageScript: mesonPackageLib - provideDeps: [ "core::seatd" ] + provideDeps: [ "core::seatd", "core::systemd-libsystemd-tgt" ] From 7040dcdb95195d72f1acac18ce9ce387f2258cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:48:59 +0100 Subject: [PATCH 29/33] core::systemd: fix url --- recipes/core/systemd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/core/systemd.yaml b/recipes/core/systemd.yaml index a669664f..59aa0cc5 100644 --- a/recipes/core/systemd.yaml +++ b/recipes/core/systemd.yaml @@ -50,7 +50,7 @@ depends: checkoutSCM: scm: url - url: https://github.com/systemd/systemd/archive/refs/tags/${PKG_VERSION}.tar.gz + url: ${GITHUB_MIRROR}/systemd/systemd/archive/refs/tags/${PKG_VERSION}.tar.gz digestSHA1: 508c4cae4a78fb84d2daf0fe31412cc5c6177460 stripComponents: 1 From 8f576a15c556f8f85cca03c895a67a487d67b267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:49:28 +0100 Subject: [PATCH 30/33] core::systemd: add systemd-logind support --- recipes/core/systemd.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/recipes/core/systemd.yaml b/recipes/core/systemd.yaml index 59aa0cc5..727b7121 100644 --- a/recipes/core/systemd.yaml +++ b/recipes/core/systemd.yaml @@ -48,6 +48,12 @@ depends: - kernel::kmod-lib-tgt - libs::libxcrypt-tgt + - if: "$SYSTEMD_LOGIND" + depends: + - core::linux-pam-dev + - use: [] + name: core::linux-pam-tgt + checkoutSCM: scm: url url: ${GITHUB_MIRROR}/systemd/systemd/archive/refs/tags/${PKG_VERSION}.tar.gz @@ -86,6 +92,7 @@ buildScript: | -Dnologin-path=/usr/sbin/nologin # Feature switches + -Dpam=${BOOL[$SYSTEMD_LOGIND]} -Danalyze=${BOOL[$SYSTEMD_ANALYZE]} -Dcoredump=${BOOL[$SYSTEMD_COREDUMP]} -Dhwdb=${BOOL[$SYSTEMD_HWDB]} From 86cbbf144776c1086988fd3a8cb67c038cfdfc32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:50:21 +0100 Subject: [PATCH 31/33] libs::mesa3d: ignore MESA3D_GLX if not building for x11 If the x11 platform is not selected, the "glx" switch must be disabled. Do this in the recipe because so that the user of the recipe does not have to bother. --- recipes/libs/mesa3d.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libs/mesa3d.yaml b/recipes/libs/mesa3d.yaml index a32cd7cd..8d5f7f13 100644 --- a/recipes/libs/mesa3d.yaml +++ b/recipes/libs/mesa3d.yaml @@ -167,7 +167,7 @@ multiPackage: MESA3D_GLX_READ_ONLY_TEXT] buildScript: | mesonBuild $1 \ - -Dglx=${MESA3D_GLX} \ + -Dglx=$([[ $MESA3D_PLATFORM == x11 ]] && echo ${MESA3D_GLX} || echo disabled) \ -Dgallium-xa=disabled \ -Dglvnd=disabled \ -Dgallium-opencl=disabled \ From 55fcfdc2a642a0ea1c5c6916016776a8c803e388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:52:31 +0100 Subject: [PATCH 32/33] libs::mesa3d: default MESA3D_GLX to auto This is a good default when building for x11. When building for wayland, the switch is forced to "disabled" by the build script, so its value does not matter. --- recipes/libs/mesa3d.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/libs/mesa3d.yaml b/recipes/libs/mesa3d.yaml index 8d5f7f13..1abb693d 100644 --- a/recipes/libs/mesa3d.yaml +++ b/recipes/libs/mesa3d.yaml @@ -13,14 +13,14 @@ Config: # this is the maximum we support right now: default: "crocus,lima,panfrost,svga,nouveau,tegra,v3d,vc4,virgl" MESA3D_GLX: - help: "Build support for GLX platform. Default: disabled" + help: "Build support for GLX platform. Ignored if building for wayland. Default: auto." type: choice choice: auto: disabled: dri: xlib: - default: "disabled" + default: "auto" MESA3D_GLX_READ_ONLY_TEXT: help: "Disable writable .text section on x86" type: bool From 07e0a166648f82dda800d8c1274a31a2733dbb99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Sun, 23 Nov 2025 16:55:20 +0100 Subject: [PATCH 33/33] graphics::wayland::weston: install profile script only on sysv The setup of the XDG_RUNTIME_DIR variable is only necessary on sysvinit based systems. On systemd, the variable will have the correct setting already. --- recipes/graphics/wayland/weston.yaml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/recipes/graphics/wayland/weston.yaml b/recipes/graphics/wayland/weston.yaml index 8396899b..a909437c 100644 --- a/recipes/graphics/wayland/weston.yaml +++ b/recipes/graphics/wayland/weston.yaml @@ -68,12 +68,11 @@ buildScript: | -Dbackend-drm=true \ -Drenderer-gl=true - # install profile file - install -D -m 0644 $<@weston/weston.sh@> \ - install/etc/profile.d/weston.sh - # add init script if initIsAnySysvinit; then + # install profile file + install -D -m 0644 $<@weston/weston.sh@> \ + install/etc/profile.d/weston.sh install -D -m 0755 $<@weston/S80weston.sh@> \ install/etc/init.d/S80weston.sh fi