muon: update recipe to 0.4.0. (#12404)

Had to switch to a non-boostrap build, to avoid pretty early errors.
This commit is contained in:
OscarL
2025-05-26 05:57:53 +00:00
committed by GitHub
parent cdea3e77c0
commit 765994d7c8
4 changed files with 253 additions and 82 deletions

View File

@@ -1,58 +0,0 @@
SUMMARY="A meson implementation in C"
DESCRIPTION="Muon is a meson implementation in c99 with minimal dependencies"
HOMEPAGE="https://sr.ht/~lattis/muon"
COPYRIGHT="2022-2024 Stone Tickle"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://git.sr.ht/~lattis/muon/archive/$portVersion.tar.gz"
CHECKSUM_SHA256="d73db1be5388821179a25a15ba76fd59a8bf7c8709347a4ec2cb91755203f36c"
PATCHES="muon-$portVersion.patchset"
ARCHITECTURES="!all"
PROVIDES="
muon = $portVersion
cmd:muon = $portVersion
"
REQUIRES="
haiku
lib:libarchive$secondaryArchSuffix
lib:libcurl$secondaryArchSuffix
lib:libpkgconf$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku_devel
devel:libarchive$secondaryArchSuffix
devel:libcurl$secondaryArchSuffix
devel:libpkgconf$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:sed
cmd:gcc
cmd:ninja
"
BUILD()
{
export CC=gcc
# Stage 1
./bootstrap.sh build-stage1
# Stage 2
build-stage1/muon setup build-stage2
ninja -C build-stage2
# Stage 3
build-stage2/muon setup \
-D prefix=$prefix \
build
ninja -C build
}
INSTALL()
{
cd build
DESTDIR="$prefix" ./muon install
}

View File

@@ -0,0 +1,129 @@
SUMMARY="A meson implementation in C"
DESCRIPTION="Muon is a meson implementation in c99 with minimal dependencies"
HOMEPAGE="https://muon.build/"
COPYRIGHT="2022-2025 Stone Tickle"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://muon.build/releases/v$portVersion/muon-v$portVersion.tar.gz"
CHECKSUM_SHA256="9121f2521fb5037a87a922573b7fd886f0c4e7eb17696dd80901d810b9b56609"
SOURCE_DIR="muon-v$portVersion"
PATCHES="muon-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
# Bootstrap build fails pretty early on.
BOOSTRAP_BUILD=false
PROVIDES="
muon = $portVersion
cmd:muon = $portVersion
"
REQUIRES="
haiku
lib:libarchive$secondaryArchSuffix
lib:libcurl$secondaryArchSuffix
lib:libpkgconf$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku_devel
devel:libarchive$secondaryArchSuffix
devel:libcurl$secondaryArchSuffix
devel:libpkgconf$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:sed
cmd:gcc$secondaryArchSuffix
"
if $BoostrapBuild; then
BUILD_PREREQUIRES+="
cmd:ninja
cmd:meson
"
fi
BUILD_BOOSTRAP()
{
export CC=gcc
# Stage 1
./bootstrap.sh build
# Stage 2
CFLAGS="-Dprefix=$prefix" \
build/muon-bootstrap setup build
build/muon-bootstrap -C build samu
}
BUILD_NON_BOOSTRAP()
{
unset meson
meson setup build \
--buildtype=release \
--prefix="$prefix" \
-Ddocs=disabled \
-Dwebsite=false
ninja -C build
}
BUILD()
{
if $BOOSTRAP_BUILD; then
BUILD_BOOSTRAP
else
BUILD_NON_BOOSTRAP
fi
}
INSTALL_BOOSTRAP()
{
build/muon install -C build
}
INSTALL_NON_BOOSTRAP()
{
unset meson
meson install -C build
}
INSTALL()
{
if $BOOSTRAP_BUILD; then
INSTALL_BOOSTRAP
else
INSTALL_NON_BOOSTRAP
fi
}
TEST_BOOSTRAP()
{
build/muon test -C build
}
TEST_NON_BOOSTRAP()
{
unset meson
meson test -C build
}
# For reference, results on beta5 64 bits:
# Ok: 291
# Expected Fail: 3
# Fail: 38
# Unexpected Pass: 0
# Skipped: 16
# Timeout: 2
TEST()
{
if $BOOSTRAP_BUILD; then
TEST_BOOSTRAP
else
TEST_NON_BOOSTRAP
fi
}

View File

@@ -1,24 +0,0 @@
From 5a643d304767a91a1bdb2dff91dc55e288b767d3 Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Sat, 16 Mar 2024 15:38:54 -0500
Subject: [PATCH] build: Add haiku to posix operating systems
---
meson.build | 1 +
1 file changed, 1 insertion(+)
diff --git a/meson.build b/meson.build
index 80ac7ea..455f402 100644
--- a/meson.build
+++ b/meson.build
@@ -41,6 +41,7 @@ if (
'cygwin',
'darwin',
'freebsd',
+ 'haiku',
'linux',
'msys2',
'netbsd',
--
2.43.2

View File

@@ -0,0 +1,124 @@
From 070e391bb1cb4e36a07f2da0351e9aeb5ffff4e1 Mon Sep 17 00:00:00 2001
From: Oscar Lesta <oscar.lesta@gmail.com>
Date: Sun, 18 May 2025 21:10:21 -0300
Subject: Replace `os_getopt()` with the one from `src/platform/windows/os.c`.
See: https://dev.haiku-os.org/ticket/18852
Fixes almost all the test failures. (from 260 down to 4 on nightlies).
diff --git a/src/platform/posix/os.c b/src/platform/posix/os.c
index c537aa0..b38c3ab 100644
--- a/src/platform/posix/os.c
+++ b/src/platform/posix/os.c
@@ -33,12 +33,107 @@ os_getcwd(char *buf, size_t size)
return getcwd(buf, size);
}
+#define REPLACE_GETOPT 1
+#if REPLACE_GETOPT
+/*
+ * getopt ported from musl libc
+ */
+char *optarg;
+int optind = 1, opterr = 1, optopt, __optpos, __optreset = 0;
+
+#define optpos __optpos
+
+int
+os_getopt(int argc, char *const argv[], const char *optstring)
+{
+ int i;
+ char c, d;
+
+ if (!optind || __optreset) {
+ __optreset = 0;
+ __optpos = 0;
+ optind = 1;
+ }
+
+ if (optind >= argc || !argv[optind]) {
+ return -1;
+ }
+
+ if (argv[optind][0] != '-') {
+ if (optstring[0] == '-') {
+ optarg = argv[optind++];
+ return 1;
+ }
+ return -1;
+ }
+
+ if (!argv[optind][1]) {
+ return -1;
+ }
+
+ if (argv[optind][1] == '-' && !argv[optind][2]) {
+ return optind++, -1;
+ }
+
+ if (!optpos) {
+ optpos++;
+ }
+
+ c = argv[optind][optpos];
+ ++optpos;
+
+ if (!argv[optind][optpos]) {
+ optind++;
+ optpos = 0;
+ }
+
+ if (optstring[0] == '-' || optstring[0] == '+') {
+ optstring++;
+ }
+
+ i = 0;
+ do {
+ d = optstring[i];
+ i++;
+ } while (d != c);
+
+ if (d != c || c == ':') {
+ optopt = c;
+ if (optstring[0] != ':' && opterr) {
+ fprintf(stderr, "%s: unrecognized option: %c\n", argv[0], c);
+ }
+ return '?';
+ }
+ if (optstring[i] == ':') {
+ optarg = 0;
+ if (optstring[i + 1] != ':' || optpos) {
+ optarg = argv[optind++] + optpos;
+ optpos = 0;
+ }
+ if (optind > argc) {
+ optopt = c;
+ if (optstring[0] == ':') {
+ return ':';
+ }
+ if (opterr) {
+ fprintf(stderr, "%s: option requires an argument: %c\n", argv[0], c);
+ }
+ return '?';
+ }
+ }
+ return c;
+
+}
+#else
+
int
os_getopt(int argc, char *const argv[], const char *optstring)
{
return getopt(argc, argv, optstring);
}
+#endif // REPLACE_GETOPT
+
int32_t
os_ncpus(void)
{
--
2.48.1