Red Bear OS — microkernel OS in Rust, based on Redox

Derivative of Redox OS (https://www.redox-os.org) adding:
- AMD GPU driver (amdgpu) via LinuxKPI compat layer
- ext4 filesystem support (ext4d scheme daemon)
- ACPI fixes for AMD bare metal (x2APIC, DMAR, IVRS, MCFG)
- Custom branding (hostname, os-release, boot identity)

Build system is full upstream Redox with RBOS overlay in local/.
Patches for kernel, base, and relibc are symlinked from local/patches/
and protected from make clean/distclean. Custom recipes live in
local/recipes/ with symlinks into the recipes/ search path.

Build:  make all CONFIG_NAME=redbear-full
Sync:   ./local/scripts/sync-upstream.sh
This commit is contained in:
2026-04-12 19:05:00 +01:00
commit 50b731f1b7
3392 changed files with 98327 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
[source]
tar = "https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz"
blake3 = "cbc1b7ba03009ee5cc0e646d8a86117e0d65bf8d105f2e8714fbde0299a8012e"
script = """
GNU_CONFIG_GET config.sub
"""
[build]
dependencies = [
"gettext",
"glib",
#TODO "gobject-introspection",
"libffi",
"libiconv",
"pcre2",
]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_meson -Dintrospection=false
"""
+35
View File
@@ -0,0 +1,35 @@
[source]
tar = "https://www.cairographics.org/releases/cairo-1.18.4.tar.xz"
blake3 = "b9fa14e02f85ec4e72396c62236c98502d04dbbdf8daf01ab9557a1c7aa7106e"
patches = ["redox.patch"]
[build]
dependencies = [
"expat",
"freetype2",
"fontconfig",
"gettext",
"glib",
"libffi",
"libiconv",
"libpng",
"libpthread-stubs",
"libx11",
"libxau",
"libxcb",
"libxext",
"pcre2",
"pixman",
"x11proto",
"zlib",
]
template = "custom"
script = """
DYNAMIC_INIT
#TODO: fix mutex implementation
#TODO: why are math defines missing?
CFLAGS="${CFLAGS} -DCAIRO_NO_MUTEX=1 -DM_SQRT2=1.41421356237309504880 -DM_LN2=0.69314718055994530942"
cookbook_meson \
-Dxlib-xcb=enabled \
-Dtests=disabled
"""
+50
View File
@@ -0,0 +1,50 @@
diff -ruwN cairo-1.18.4/meson.build source/meson.build
--- cairo-1.18.4/meson.build 2025-03-08 05:35:35.000000000 -0700
+++ source/meson.build 2025-05-04 18:07:04.594213814 -0600
@@ -440,13 +440,13 @@
if feature_conf.get('CAIRO_HAS_XCB_SURFACE', 0) == 1
xcbshm_dep = dependency('xcb-shm', required: get_option('xcb'))
if xcbshm_dep.found()
- feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1)
- deps += [xcbshm_dep]
- built_features += [{
- 'name': 'cairo-xcb-shm',
- 'description': 'XCB/SHM functions',
- 'deps': [xcbshm_dep],
- }]
+ #feature_conf.set('CAIRO_HAS_XCB_SHM_FUNCTIONS', 1)
+ #deps += [xcbshm_dep]
+ #built_features += [{
+ # 'name': 'cairo-xcb-shm',
+ # 'description': 'XCB/SHM functions',
+ # 'deps': [xcbshm_dep],
+ #}]
endif
endif
diff -ruwN cairo-1.18.4/perf/Makefile.in source/perf/Makefile.in
--- cairo-1.18.4/perf/Makefile.in 1969-12-31 17:00:00.000000000 -0700
+++ source/perf/Makefile.in 2025-05-01 12:52:11.400963345 -0600
@@ -0,0 +1,3 @@
+all:
+
+install:
diff -ruwN cairo-1.18.4/src/cairo-ps-surface.c source/src/cairo-ps-surface.c
--- cairo-1.18.4/src/cairo-ps-surface.c 2025-03-08 05:35:35.000000000 -0700
+++ source/src/cairo-ps-surface.c 2025-05-04 18:08:43.821264417 -0600
@@ -102,7 +102,7 @@
#define DEBUG_FALLBACK(s)
#endif
-#ifndef HAVE_CTIME_R
+#if !defined(HAVE_CTIME_R) && !defined(__redox__)
static char *ctime_r(const time_t *timep, char *buf)
{
(void)buf;
diff -ruwN cairo-1.18.4/test/Makefile.in source/test/Makefile.in
--- cairo-1.18.4/test/Makefile.in 1969-12-31 17:00:00.000000000 -0700
+++ source/test/Makefile.in 2025-05-01 12:52:11.400963345 -0600
@@ -0,0 +1,3 @@
+all:
+
+install:
+16
View File
@@ -0,0 +1,16 @@
[source]
tar = "https://duktape.org/duktape-2.7.0.tar.xz"
blake3 = "b0a17da888847bc9c73624ae3ba7f858ec327a9bbce9d287aee6a2489e518448"
[build]
template = "custom"
script = """
rsync -av --delete "${COOKBOOK_SOURCE}/" ./
sed -i "s/= gcc/= ${TARGET}-gcc/g" Makefile.cmdline
"${COOKBOOK_MAKE}" -f Makefile.cmdline -j"$COOKBOOK_MAKE_JOBS"
mkdir -pv "${COOKBOOK_STAGE}/usr/bin"
cp ./duk "${COOKBOOK_STAGE}/usr/bin/duk"
"""
+19
View File
@@ -0,0 +1,19 @@
[source]
tar = "https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.xz"
blake3 = "ea89dd9a5a2e48d5e44fed38554b36a8f2e365a5091a99d08e30bfb1c15dda5e"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--without-docbook
--without-examples
--without-tests
--without-xmlwf
)
cookbook_configure
"""
+76
View File
@@ -0,0 +1,76 @@
From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
Date: Sun, 16 Jul 2023 18:18:02 +0300
Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
instructions within inline assembly
Fixes assembling with binutil as >= 2.41
Signed-off-by: James Almer <jamrial@gmail.com>
---
libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
index 6298f5ed19..ca7e2dffc1 100644
--- a/libavcodec/x86/mathops.h
+++ b/libavcodec/x86/mathops.h
@@ -35,12 +35,20 @@
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
{
int rt, dummy;
+ if (__builtin_constant_p(shift))
__asm__ (
"imull %3 \n\t"
"shrdl %4, %%edx, %%eax \n\t"
:"=a"(rt), "=d"(dummy)
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
);
+ else
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
+ );
return rt;
}
@@ -113,19 +121,31 @@ __asm__ volatile(\
// avoid +32 for shift optimization (gcc should do that ...)
#define NEG_SSR32 NEG_SSR32
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
+ if (__builtin_constant_p(s))
__asm__ ("sarl %1, %0\n\t"
: "+r" (a)
- : "ic" ((uint8_t)(-s))
+ : "i" (-s & 0x1F)
);
+ else
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+ : "c" ((uint8_t)(-s))
+ );
return a;
}
#define NEG_USR32 NEG_USR32
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+ if (__builtin_constant_p(s))
__asm__ ("shrl %1, %0\n\t"
: "+r" (a)
- : "ic" ((uint8_t)(-s))
+ : "i" (-s & 0x1F)
);
+ else
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+ : "c" ((uint8_t)(-s))
+ );
return a;
}
--
2.30.2
+24
View File
@@ -0,0 +1,24 @@
diff -rupN source-original/configure source/configure
--- source-original/configure 2018-03-04 11:13:59.000000000 +0100
+++ source/configure 2018-03-04 11:18:10.026033282 +0100
@@ -5141,6 +5141,8 @@ case $target_os in
;;
minix)
;;
+ redox)
+ ;;
none)
;;
*)
diff -rupN source-original/fftools/ffmpeg.c source/fftools/ffmpeg.c
--- source-original/fftools/ffmpeg.c 2018-03-04 11:13:59.000000000 +0100
+++ source/fftools/ffmpeg.c 2018-03-04 11:45:38.326394016 +0100
@@ -91,7 +91,7 @@
#if HAVE_TERMIOS_H
#include <fcntl.h>
-#include <sys/ioctl.h>
+//#include <sys/ioctl.h>
#include <sys/time.h>
#include <termios.h>
#elif HAVE_KBHIT
+15
View File
@@ -0,0 +1,15 @@
name=ffplay
binary=/usr/bin/ffplay
accept=*.mp3
accept=*.ogg
accept=*.opus
accept=*.m4a
accept=*.flac
accept=*.wav
accept=*.mp4
accept=*.mkv
accept=*.webm
accept=*.3gp
accept=*.mov
author=FFMPEG Developers
description=FFMPEG Media Player
+40
View File
@@ -0,0 +1,40 @@
[source]
tar = "https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz"
blake3 = "4879074c357102f85932673044c57c144b0c188ae58edec2a115965536ee340f"
patches = [
"ffmpeg.patch",
"binutils-2.41.patch",
]
[build]
template = "custom"
dependencies = [
"liborbital",
"mesa",
"sdl2",
"zlib",
]
script = """
DYNAMIC_INIT
export LDFLAGS="$LDFLAGS -lSDL2 -lorbital -lOSMesa -lstdc++"
ARCH="${TARGET%%-*}"
COOKBOOK_CONFIGURE_FLAGS=(
--enable-cross-compile
--target-os=redox
--arch="${ARCH}"
--cross_prefix="${TARGET}-"
--prefix=/usr
--disable-doc
--enable-shared
--disable-static
--disable-network
--enable-sdl2
--enable-zlib
--enable-encoder=png
--enable-decoder=png
)
cookbook_configure
mkdir -pv "${COOKBOOK_STAGE}/usr/share/ui/apps"
cp -v "${COOKBOOK_RECIPE}/manifest" "${COOKBOOK_STAGE}/usr/share/ui/apps/ffplay"
"""
+14
View File
@@ -0,0 +1,14 @@
[source]
tar = "https://sourceforge.net/projects/freetype/files/freetype2/2.13.3/freetype-2.13.3.tar.xz/download"
blake3 = "07a01894ccdb584943ce817b57341a8595ce9a92bfaa77c602ec4757dfabd5e2"
[build]
template = "custom"
dependencies = [
"libpng",
"zlib"
]
script = """
DYNAMIC_STATIC_INIT
cookbook_meson
"""
+10
View File
@@ -0,0 +1,10 @@
[source]
tar = "https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz"
blake3 = "c16ee250f73f149d7d52dc7d285eb73ac755bad7907d237391e23f429b2b71d5"
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_meson -Dbin=false -Dtests=false
"""
+22
View File
@@ -0,0 +1,22 @@
[source]
tar = "https://download.gnome.org/sources/glib/2.87/glib-2.87.0.tar.xz"
blake3 = "26b77ae24bc02f85d1c6742fe601167b056085f117cda70da7b805cefa6195e9"
patches = [
"redox.patch",
]
[build]
template = "custom"
dependencies = [
"gettext",
"libffi",
"libiconv",
"pcre2",
"zlib",
]
script = """
DYNAMIC_INIT
cookbook_meson \
-Ddefault_library=shared \
-Dxattr=false
"""
+275
View File
@@ -0,0 +1,275 @@
diff -ruwN glib-2.87.0/fuzzing/fuzz_resolver.c source/fuzzing/fuzz_resolver.c
--- glib-2.87.0/fuzzing/fuzz_resolver.c 2025-11-03 19:42:10.000000000 +0700
+++ source/fuzzing/fuzz_resolver.c 2026-02-19 13:53:45.717898735 +0700
@@ -29,7 +29,7 @@
gint rrtype)
{
/* g_resolver_records_from_res_query() is only available on Unix */
-#ifdef G_OS_UNIX
+#if defined(G_OS_UNIX) && !defined(__redox__)
GList *record_list = NULL;
/* Data too long? */
diff -ruwN glib-2.87.0/gio/gcredentialsprivate.h source/gio/gcredentialsprivate.h
--- glib-2.87.0/gio/gcredentialsprivate.h 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/gcredentialsprivate.h 2026-02-19 13:53:45.717995965 +0700
@@ -104,7 +104,7 @@
*/
#undef G_CREDENTIALS_HAS_PID
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
#define G_CREDENTIALS_SUPPORTED 1
#define G_CREDENTIALS_USE_LINUX_UCRED 1
#define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_LINUX_UCRED
diff -ruwN glib-2.87.0/gio/glocalfile.c source/gio/glocalfile.c
--- glib-2.87.0/gio/glocalfile.c 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/glocalfile.c 2026-02-19 13:53:45.718204283 +0700
@@ -47,6 +47,10 @@
#include <sys/mount.h>
#endif
+#if defined(__redox__)
+#undef AT_FDCWD
+#endif
+
#ifndef O_BINARY
#define O_BINARY 0
#endif
diff -ruwN glib-2.87.0/gio/gnetworking.h.in source/gio/gnetworking.h.in
--- glib-2.87.0/gio/gnetworking.h.in 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/gnetworking.h.in 2026-02-19 13:53:45.718380100 +0700
@@ -40,13 +40,17 @@
#include <netdb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
+#if !defined(__redox__)
#include <resolv.h>
+#endif
#include <sys/socket.h>
#include <sys/un.h>
#include <net/if.h>
#include <arpa/inet.h>
+#if !defined(__redox__)
#include <arpa/nameser.h>
+#endif
@NAMESER_COMPAT_INCLUDE@
#ifndef __GI_SCANNER__
diff -ruwN glib-2.87.0/gio/gsocket.c source/gio/gsocket.c
--- glib-2.87.0/gio/gsocket.c 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/gsocket.c 2026-03-05 11:29:00.807439664 +0700
@@ -3133,7 +3133,8 @@
{
int errsv = get_socket_errno ();
- if (errsv == EINTR)
+ // TODO: uds connect() in redox is blocking
+ if (errsv == EINTR || errsv == EAGAIN)
continue;
#ifndef G_OS_WIN32
diff -ruwN glib-2.87.0/gio/gthreadedresolver.c source/gio/gthreadedresolver.c
--- glib-2.87.0/gio/gthreadedresolver.c 2025-11-03 05:42:10.000000000 -0700
+++ source/gio/gthreadedresolver.c 2026-01-15 18:35:07.059664185 -0700
@@ -698,7 +698,7 @@
}
-#if defined(G_OS_UNIX)
+#if defined(G_OS_UNIX) && !defined(__redox__)
#if defined __BIONIC__ && !defined BIND_4_COMPAT
/* Copy from bionic/libc/private/arpa_nameser_compat.h
@@ -1393,7 +1393,11 @@
{
GList *records;
-#if defined(G_OS_UNIX)
+#if defined(__redox__)
+ g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+ _("No support for resolving “%s” on redox"), rrname);
+ return NULL;
+#elif defined(G_OS_UNIX)
gint len = 512;
gint herr;
GByteArray *answer;
diff -ruwN glib-2.87.0/gio/gunixconnection.c source/gio/gunixconnection.c
--- glib-2.87.0/gio/gunixconnection.c 2025-11-03 05:42:10.000000000 -0700
+++ source/gio/gunixconnection.c 2026-01-15 18:35:07.059895298 -0700
@@ -496,7 +496,7 @@
GSocket *socket;
gint n;
gssize num_bytes_read;
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
gboolean turn_off_so_passcreds;
#endif
@@ -512,7 +512,7 @@
* already. We also need to turn it off when we're done. See
* #617483 for more discussion.
*/
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
{
gint opt_val;
@@ -626,7 +626,7 @@
out:
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
if (turn_off_so_passcreds)
{
if (!g_socket_set_option (socket,
diff -ruwN glib-2.87.0/gio/gunixmounts.c source/gio/gunixmounts.c
--- glib-2.87.0/gio/gunixmounts.c 2025-11-03 05:42:10.000000000 -0700
+++ source/gio/gunixmounts.c 2026-01-15 18:35:07.060167680 -0700
@@ -1114,7 +1114,7 @@
}
/* QNX {{{2 */
-#elif defined (HAVE_QNX)
+#elif defined (HAVE_QNX) || defined(__redox__)
static char *
get_mtab_monitor_file (void)
@@ -1758,6 +1758,28 @@
return NULL;
}
+#elif defined(__redox__)
+
+static GUnixMountPoint **
+_g_unix_mount_points_get_from_file (const char *table_path,
+ uint64_t *time_read_out,
+ size_t *n_points_out)
+{
+ /* Not supported on Redox. */
+ if (time_read_out != NULL)
+ *time_read_out = 0;
+ if (n_points_out != NULL)
+ *n_points_out = 0;
+ return NULL;
+}
+
+static GList *
+_g_get_unix_mount_points (void)
+{
+ /* Not supported on Redox. */
+ return NULL;
+}
+
/* Common code {{{2 */
#else
#error No g_get_mount_table() implementation for system
diff -ruwN glib-2.87.0/gio/meson.build source/gio/meson.build
--- glib-2.87.0/gio/meson.build 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/meson.build 2026-02-19 13:53:45.718994535 +0700
@@ -18,7 +18,7 @@
gnetworking_h_nameser_compat_include = ''
-if host_system not in ['windows', 'android']
+if host_system not in ['windows', 'android', 'redox']
# Don't check for C_IN on Android since it does not define it in public
# headers, we define it ourselves wherever necessary
if not cc.compiles('''#include <sys/types.h>
@@ -39,7 +39,7 @@
network_libs = [ ]
network_args = [ ]
-if host_system != 'windows'
+if host_system not in ['windows', 'redox']
# res_query()
res_query_test = '''#include <resolv.h>
int main (int argc, char ** argv) {
diff -ruwN glib-2.87.0/gio/tests/gdbus-server-auth.c source/gio/tests/gdbus-server-auth.c
--- glib-2.87.0/gio/tests/gdbus-server-auth.c 2025-11-03 19:42:10.000000000 +0700
+++ source/gio/tests/gdbus-server-auth.c 2026-02-19 13:53:45.719091042 +0700
@@ -243,7 +243,7 @@
}
else /* We should prefer EXTERNAL whenever it is allowed. */
{
-#ifdef __linux__
+#if defined(__linux__) || defined(__redox__)
/* We know that both GDBus and libdbus support full credentials-passing
* on Linux. */
g_assert_cmpint (uid, ==, getuid ());
diff -ruwN glib-2.87.0/glib/glib-unix.c source/glib/glib-unix.c
--- glib-2.87.0/glib/glib-unix.c 2025-11-03 19:42:10.000000000 +0700
+++ source/glib/glib-unix.c 2026-02-19 13:53:45.719219012 +0700
@@ -74,6 +74,10 @@
#include <sys/user.h>
#endif /* defined (__FreeBSD__ )*/
+#if defined(__redox__)
+#include <sys/redox.h>
+#endif
+
G_STATIC_ASSERT (sizeof (ssize_t) == GLIB_SIZEOF_SSIZE_T);
G_STATIC_ASSERT (G_ALIGNOF (gssize) == G_ALIGNOF (ssize_t));
G_STATIC_ASSERT (G_SIGNEDNESS_OF (ssize_t) == 1);
@@ -1004,6 +1008,20 @@
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOSYS,
"g_unix_fd_query_path() not supported on HURD");
return NULL;
+#elif defined(__redox__)
+ char file_path[PATH_MAX] = {0};
+
+ if (redox_fpath (fd, file_path, PATH_MAX) < 0)
+ {
+ int errsv = errno;
+
+ g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errsv),
+ "Error querying file information for FD %d: %s",
+ fd, g_strerror (errsv));
+ return NULL;
+ }
+
+ return g_strdup (file_path);
#else
#error "g_unix_fd_query_path() not supported on this platform"
#endif
diff -ruwN glib-2.87.0/glib/gstrfuncs.c source/glib/gstrfuncs.c
--- glib-2.87.0/glib/gstrfuncs.c 2025-11-03 19:42:10.000000000 +0700
+++ source/glib/gstrfuncs.c 2026-02-19 13:53:45.719384853 +0700
@@ -707,7 +707,7 @@
gchar *fail_pos;
gdouble val;
-#ifndef __BIONIC__
+#if !defined(__BIONIC__) && !defined(__redox__)
struct lconv *locale_data;
#endif
const char *decimal_point;
@@ -720,7 +720,7 @@
fail_pos = NULL;
-#ifndef __BIONIC__
+#if !defined(__BIONIC__) && !defined(__redox__)
locale_data = localeconv ();
decimal_point = locale_data->decimal_point;
decimal_point_len = strlen (decimal_point);
@@ -931,7 +931,7 @@
return buffer;
#else
-#ifndef __BIONIC__
+#if !defined(__BIONIC__) && !defined(__redox__)
struct lconv *locale_data;
#endif
const char *decimal_point;
@@ -964,7 +964,7 @@
_g_snprintf (buffer, buf_len, format, d);
-#ifndef __BIONIC__
+#if !defined(__BIONIC__) && !defined(__redox__)
locale_data = localeconv ();
decimal_point = locale_data->decimal_point;
decimal_point_len = strlen (decimal_point);
+79
View File
@@ -0,0 +1,79 @@
[source]
tar = "https://gitlab.freedesktop.org/gstreamer/gstreamer/-/archive/1.24.12/gstreamer-1.24.12.tar.gz"
blake3 = "181daf73050f7472ec656e7461b7f67028d6002c1133870576033a32e43a364f"
patches = ["redox.patch"]
[build]
template = "custom"
dependencies = [
"bzip2",
"cairo",
"curl",
"expat",
#TODO: "ffmpeg6",
"fontconfig",
"freetype2",
"fribidi",
"gdk-pixbuf",
"gettext",
"glib",
"harfbuzz",
"libass",
"libffi",
"libgmp",
"libiconv",
"libicu",
"libjpeg",
"libmodplug1",
"libnettle",
"libogg",
"libpng",
"libpsl",
"libpthread-stubs",
"libsndfile",
"libsoup",
"libvorbis",
"libwebp",
"libx11",
"libxau",
"libxcb",
#TODO: "libxdamage",
"libxext",
"libxfixes",
"libxi",
"libxml2",
"libxxf86vm",
"mesa-x11",
"nghttp2",
#TODO: "openal",
"openssl1",
"pango",
"pcre2",
"pixman",
"sqlite3",
"x11proto",
"xextproto",
"xz",
"zlib",
]
script = """
DYNAMIC_INIT
export GLIB_GENMARSHAL="$(which glib-genmarshal)"
export GLIB_MKENUMS="$(which glib-mkenums)"
CFLAGS="${CFLAGS} -DM_LN2=0.69314718055994530942"
cookbook_meson \
-Ddevtools=disabled \
-Dexamples=disabled \
-Dlibav=disabled \
-Dlibnice=disabled \
-Dorc=disabled \
-Dtests=disabled \
-Dtools=enabled \
-Dgstreamer:check=disabled \
-Dgstreamer:coretracers=disabled \
-Dgst-plugins-bad:shm=disabled \
-Dgst-plugins-base:xshm=disabled \
-Dgst-plugins-good:ximagesrc-xshm=disabled
"""
+34
View File
@@ -0,0 +1,34 @@
diff -ruw gstreamer-1.24.12/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c source/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c
--- gstreamer-1.24.12/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c 2025-01-29 13:12:29.000000000 -0700
+++ source/subprojects/gst-plugins-bad/ext/dtls/gstdtlsconnection.c 2026-02-10 19:13:12.530288659 -0700
@@ -49,6 +49,10 @@
#include <errno.h>
#endif
+#if defined(__redox__)
+#include <sys/time.h> // For struct timeval
+#endif
+
GST_DEBUG_CATEGORY_STATIC (gst_dtls_connection_debug);
#define GST_CAT_DEFAULT gst_dtls_connection_debug
diff -ruw gstreamer-1.24.12/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build
--- gstreamer-1.24.12/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2025-01-29 13:12:29.000000000 -0700
+++ source/subprojects/gst-plugins-base/gst-libs/gst/tag/meson.build 2026-02-10 19:09:53.259120404 -0700
@@ -136,10 +136,10 @@
install: false)
endif
-executable('mklicensestables', 'mklicensestables.c',
- c_args : gst_plugins_base_args,
- include_directories: [configinc],
- dependencies : [tag_dep, gst_base_dep],
- install : false)
+#executable('mklicensestables', 'mklicensestables.c',
+# c_args : gst_plugins_base_args,
+# include_directories: [configinc],
+# dependencies : [tag_dep, gst_base_dep],
+# install : false)
gst_tag_dir = meson.current_source_dir()
Only in source/subprojects/gst-plugins-base/gst-libs/gst/tag: meson.build.orig
+23
View File
@@ -0,0 +1,23 @@
[source]
tar = "https://github.com/harfbuzz/harfbuzz/releases/download/11.0.1/harfbuzz-11.0.1.tar.xz"
blake3 = "51f0edaaf2e9b7a7176d3252f15d03d409ef7ad35f77b050c407de89f85b77c5"
[build]
template = "custom"
dependencies = [
"freetype2",
"gettext",
"glib",
"libffi",
"libiconv",
"libicu",
"libpng",
"pcre2",
"zlib"
]
script = """
DYNAMIC_INIT
cookbook_meson \
-Ddocs=disabled \
-Dtests=disabled
"""
+12
View File
@@ -0,0 +1,12 @@
diff -ru source-new/config.sub source/config.sub
--- source-new/config.sub 2017-11-06 18:59:18.499577613 -0800
+++ source/config.sub 2017-11-02 19:26:02.253397873 -0700
@@ -1368,7 +1368,7 @@
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
- -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ -gnu* | -bsd* | -redox* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
+13
View File
@@ -0,0 +1,13 @@
[source]
tar = "https://github.com/akheron/jansson/releases/download/v2.10/jansson-2.10.tar.gz"
blake3 = "3c74f374a6c7ac5e323f72d87e49e5309ca922ca26cfe4992873b31f28776624"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_configure
"""
+9
View File
@@ -0,0 +1,9 @@
[source]
tar = "https://libarchive.org/downloads/libarchive-3.6.2.tar.xz"
blake3 = "f98695fe81235a74fa3fc2c3ba0f0d4f13ea15f9be3850b83e304cf5d78be710"
patches = [
"redox.patch"
]
[build]
template = "configure"
+13
View File
@@ -0,0 +1,13 @@
diff -ruwN source/configure source-new/configure
--- source/configure 2022-12-09 20:38:47.000000000 +0700
+++ source-new/configure 2025-09-14 17:17:50.138530195 +0700
@@ -19039,7 +19039,8 @@
ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat"
if test "x$ac_cv_func_fstatat" = xyes
then :
- printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h
+# When fstatat works, remove this patch
+# printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "fstatfs" "ac_cv_func_fstatfs"
+16
View File
@@ -0,0 +1,16 @@
[source]
same_as = "../../dev/gcc13"
[build]
template = "custom"
dependencies = [
"libgmp",
"libmpfr",
"mpc",
"zlib"
]
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libatomic/configure"
cookbook_configure
"""
+9
View File
@@ -0,0 +1,9 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/libcosmic.git"
branch = "redox"
[build]
template = "custom"
script = """
cookbook_cargo_packages cosmic
"""
+18
View File
@@ -0,0 +1,18 @@
[source]
tar = "https://github.com/libffi/libffi/releases/download/v3.4.5/libffi-3.4.5.tar.gz"
blake3 = "f9a2cfe1d2ac8d211c18c99f9cfafe5537925101bfb92c2d44d844680dd82264"
script = """
DYNAMIC_INIT
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/
cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/
autotools_recursive_regenerate -I$(realpath ./m4)
"""
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+19
View File
@@ -0,0 +1,19 @@
[source]
tar = "https://github.com/xiph/flac/releases/download/1.5.0/flac-1.5.0.tar.xz"
blake3 = "2adca3cd8da4b577ebb9c12e73c91cf6f6a7feb7485b3f003853b82710bada84"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = [
"libogg",
]
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--with-ogg="${COOKBOOK_SYSROOT}"
)
cookbook_configure
"""
+6
View File
@@ -0,0 +1,6 @@
[build]
template = "custom"
script = """
mkdir -p "${COOKBOOK_STAGE}/usr/lib"
cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libgcc_s.so* ${COOKBOOK_STAGE}/usr/lib/
"""
+26
View File
@@ -0,0 +1,26 @@
# GNU Multiple Precision Arithmetic Library (GMP) is a free and open source
# library for arbitrary-precision arithmetic, operating on signed integers,
# rational numbers, and floating-point numbers.
[source]
tar = "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz"
blake3 = "fffe4996713928ae19331c8ef39129e46d3bf5b7182820656fd4639435cd83a4"
[build]
template = "custom"
script = """
# libgmp fails to regenerate autotools when building for host toolchain
# To workaround this, the source is copied to the build dir and autotools is
# only regenerated when not building for the host
rsync -a --delete "${COOKBOOK_SOURCE}/" ./
COOKBOOK_SOURCE="${COOKBOOK_BUILD}"
if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then
autotools_recursive_regenerate
# need to invoke configure in specific way to make shared libs work
./configure --host="${GNU_TARGET}" --prefix="/usr"
COOKBOOK_CONFIGURE=true
fi
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+36
View File
@@ -0,0 +1,36 @@
diff '--color=auto' -ur source/srclib/getprogname.c source-new/srclib/getprogname.c
--- source/srclib/getprogname.c 2022-01-04 19:33:29.000000000 +1100
+++ source-new/srclib/getprogname.c 2024-11-24 00:42:48.384997609 +1100
@@ -28,6 +28,14 @@
# include <string.h>
#endif
+#if defined(__redox__)
+# include <string.h>
+# include <unistd.h>
+# include <stdio.h>
+# include <fcntl.h>
+# include <limits.h>
+#endif
+
#ifdef __MVS__
# ifndef _OPEN_SYS
# define _OPEN_SYS
@@ -287,6 +295,17 @@
close (fd);
}
return "?";
+# elif defined(__redox__)
+ char filename[PATH_MAX];
+ int fd = open ("sys:exe", O_RDONLY);
+ if (fd > 0) {
+ int len = read(fd, filename, PATH_MAX-1);
+ if (len > 0) {
+ filename[len] = '\0';
+ return strdup(filename);
+ }
+ }
+ return NULL;
# else
# error "getprogname module not ported to this OS"
# endif
+27
View File
@@ -0,0 +1,27 @@
[source]
tar = "https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz"
blake3 = "820b3b9fd3e2181bfb95475f01e9a3451e6d751e4f8c98ebcdcca1d8aa720f7f"
patches = [
"01_redox.patch"
]
script = """
DYNAMIC_INIT
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./m4/
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/libtool.m4 ./libcharset/m4/
cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./build-aux/
cp -fp ${COOKBOOK_HOST_SYSROOT}/share/libtool/build-aux/ltmain.sh ./libcharset/build-aux/
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./m4/
cp ${COOKBOOK_HOST_SYSROOT}/share/aclocal/ltversion.m4 ./libcharset/m4/
autotools_recursive_regenerate -I$(realpath ./m4) -I$(realpath ./srcm4)
"""
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
ac_cv_have_decl_program_invocation_name=no
)
cookbook_configure
"""
+11
View File
@@ -0,0 +1,11 @@
# libjpeg-turbo is compatible with libjpeg
[source]
tar = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.0/libjpeg-turbo-3.1.0.tar.gz"
blake3 = "3efc14da55c56fc0a6a50f109d9e1ee8a91f5ae7dd17a21d3aebe04a65f3ee96"
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
cookbook_cmake
"""
+13
View File
@@ -0,0 +1,13 @@
[source]
tar = "https://pilotfiber.dl.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz"
blake3 = "01d71f7fe4e1abeb848db02b74c70ab2fd51e824f5ea7e9e18631571a76c3592"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_configure
"""
+16
View File
@@ -0,0 +1,16 @@
[source]
tar = "https://www.mpfr.org/mpfr-current/mpfr-4.2.2.tar.xz"
blake3 = "11d59d061ef8db588650bc7dc5172594a6e5aad013994801c6f63011a62b191d"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = [
"libgmp",
]
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+16
View File
@@ -0,0 +1,16 @@
[source]
tar = "https://ftp.gnu.org/gnu/nettle/nettle-3.9.1.tar.gz"
blake3 = "e4bfbda32f4fdf5ed96c152efe3a3867193b690faa5378d02a2a6fd052ee3393"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = [
"libgmp"
]
script = """
DYNAMIC_INIT
cookbook_configure
"""
+9
View File
@@ -0,0 +1,9 @@
[source]
tar = "https://github.com/xiph/ogg/releases/download/v1.3.4/libogg-1.3.4.tar.xz"
blake3 = "1cffbe7c498555ddfdb1390d7a38179c4bead6129ea37b1b1d54f3a76b816304"
script = """
autotools_recursive_regenerate
"""
[build]
template = "configure"
+18
View File
@@ -0,0 +1,18 @@
[source]
tar = "https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz"
blake3 = "874bd7d28e24f10d88105c7d846a2e5bf085284af91a0ee36b05674a8f78e759"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
# Redox does not support any of the aarch64 run-time cpu capability detection
# APIs supported by libopus
case "${TARGET}" in
aarch64-*-redox) COOKBOOK_CONFIGURE_FLAGS+=(--disable-rtcd);;
esac
cookbook_configure
"""
+12
View File
@@ -0,0 +1,12 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/liborbital.git"
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
rsync -av --delete "${COOKBOOK_SOURCE}/" ./
"${COOKBOOK_CARGO}" build --release
# other than x86_64 this will trigger error because of lacking .so files, which is fine
"${COOKBOOK_MAKE}" install HOST="${TARGET}" DESTDIR="${COOKBOOK_STAGE}" || true
"""
+17
View File
@@ -0,0 +1,17 @@
[source]
tar = "https://github.com/pnggroup/libpng/archive/refs/tags/v1.6.46.tar.gz"
blake3 = "36f4bbb48c70975116b00ab0cff577931b96f703b2774ac3b33131d001419435"
script = """
DYNAMIC_INIT
chmod +w config.sub
GNU_CONFIG_GET config.sub
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = ["zlib"]
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+13
View File
@@ -0,0 +1,13 @@
[source]
tar = "https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.lz"
blake3 = "91318b7b876b12ff4649b7a0d6f6ed4ab1ab44f48a49508c8978ab7b4ccf3298"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_configure
"""
+14
View File
@@ -0,0 +1,14 @@
[source]
tar = "https://github.com/jedisct1/libsodium/archive/1.0.16.tar.gz"
blake3 = "2482633f872c173f9a42e6badb44c3efb042e783e664fdf8b1046babfa2405e7"
script = """
autotools_recursive_regenerate
wget -O build-aux/config.sub "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false"
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_configure
"""
+14
View File
@@ -0,0 +1,14 @@
[source]
tar = "https://www.libssh2.org/download/libssh2-1.10.0.tar.gz"
blake3 = "2447216ce82c1d22301456bb02f60dfb6688f1461417b90f900c099a87f1292f"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = ["openssl1"]
script = """
DYNAMIC_INIT
cookbook_configure
"""
+23
View File
@@ -0,0 +1,23 @@
[source]
same_as = "../../dev/gcc13"
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--enable-threads=posix
--enable-libstdcxx-threads
)
# TODO: Investigate why mutex is not available in riscv64
if [ "${TARGET}" = "riscv64gc-unknown-redox" ]; then
COOKBOOK_CONFIGURE_FLAGS+=( --without-libstdcxx-zoneinfo )
fi
CPPINCLUDE="${COOKBOOK_HOST_SYSROOT}/$TARGET/include/c++/13.2.0"
export CPPFLAGS+=" -I${CPPINCLUDE} -I${CPPINCLUDE}/$TARGET/bits"
COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/libstdc++-v3/configure"
cookbook_configure
"""
+9
View File
@@ -0,0 +1,9 @@
[build]
template = "custom"
script = """
# Avoid replacing host libstdc++ when using "host:"
if [ "$TARGET" != "$COOKBOOK_HOST_TARGET" ]; then
mkdir -p "${COOKBOOK_STAGE}/usr/lib"
cp -av ${COOKBOOK_HOST_SYSROOT}/${GNU_TARGET}/lib/libstdc++.so* ${COOKBOOK_STAGE}/usr/lib/
fi
"""
@@ -0,0 +1,25 @@
From: bjorn3 <17426603+bjorn3@users.noreply.github.com>
Date: Sat, 6 Dec 2025 15:59:20 +0100
Subject: [PATCH] Fix compilation on Redox OS
---
include/urcu/syscall-compat.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/urcu/syscall-compat.h b/include/urcu/syscall-compat.h
index 23b266e..2c3b03f 100644
--- a/include/urcu/syscall-compat.h
+++ b/include/urcu/syscall-compat.h
@@ -33,7 +33,8 @@
#include <syscall.h>
#elif defined(__CYGWIN__) || defined(__APPLE__) || \
- defined(__FreeBSD__) || defined(__DragonFly__)
+ defined(__FreeBSD__) || defined(__DragonFly__) || \
+ defined(__redox__)
/* Don't include anything on these platforms. */
#else
--
2.47.3
+6
View File
@@ -0,0 +1,6 @@
[source]
tar = "https://lttng.org/files/urcu/userspace-rcu-0.14.0.tar.bz2"
patches = ["0001-Fix-compilation-on-Redox-OS.patch"]
[build]
template = "configure"
+15
View File
@@ -0,0 +1,15 @@
[source]
tar = "https://dist.libuv.org/dist/v1.51.0/libuv-v1.51.0.tar.gz"
blake3 = "e8b5e68bc2d0776ac4ea67df59d694fca58d5cc570c103443a2284e723d01fc2"
patches = ["redox.patch"]
[build]
template = "custom"
script = """
DYNAMIC_INIT
COOKBOOK_CMAKE_FLAGS+=(
-DBUILD_TESTING=Off
)
cookbook_cmake
"""
+355
View File
@@ -0,0 +1,355 @@
diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt
--- source/CMakeLists.txt 2025-04-25 16:50:27.000000000 +0700
+++ source-new/CMakeLists.txt 2025-10-10 11:19:40.329762962 +0700
@@ -1,3 +1,4 @@
+set (CMAKE_CXX_STANDARD 99)
cmake_minimum_required(VERSION 3.10)
if(POLICY CMP0091)
@@ -323,6 +324,18 @@
src/unix/hurd.c)
endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL "UnixPaths") # Redox
+ list(APPEND uv_libraries dl)
+ list(APPEND uv_sources
+ src/unix/no-fsevents.c
+ src/unix/proctitle.c
+ src/unix/posix-hrtime.c
+ src/unix/posix-poll.c
+ src/unix/redox.c
+ )
+endif()
+
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
list(APPEND uv_defines _GNU_SOURCE _POSIX_C_SOURCE=200112)
list(APPEND uv_libraries dl rt)
diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h
--- source/include/uv/unix.h 2025-04-25 16:50:27.000000000 +0700
+++ source-new/include/uv/unix.h 2025-10-10 11:18:29.024386515 +0700
@@ -66,6 +66,7 @@
defined(__MSYS__) || \
defined(__HAIKU__) || \
defined(__QNX__) || \
+ defined(__redox__) || \
defined(__GNU__)
# include "uv/posix.h"
#endif
diff -ruwN source/src/unix/core.c source-new/src/unix/core.c
--- source/src/unix/core.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/core.c 2025-10-10 11:23:22.143824390 +0700
@@ -110,6 +110,10 @@
# include <sanitizer/linux_syscall_hooks.h>
#endif
+#if defined(__redox__)
+#define MSG_CMSG_CLOEXEC 0x40000000 //linux specific flag
+#endif
+
static void uv__run_pending(uv_loop_t* loop);
/* Verify that uv_buf_t is ABI-compatible with struct iovec. */
@@ -722,7 +726,8 @@
defined(__FreeBSD__) || \
defined(__NetBSD__) || \
defined(__OpenBSD__) || \
- defined(__linux__)
+ defined(__linux__) || \
+ defined(__redox__)
ssize_t rc;
rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC);
if (rc == -1)
@@ -1644,6 +1649,11 @@
* So the output parameter priority is actually the nice value.
*/
int uv_thread_getpriority(uv_thread_t tid, int* priority) {
+#ifdef __redox__
+ if (priority == NULL)
+ return UV_EINVAL;
+ *priority = 0;
+#else
int r;
int policy;
struct sched_param param;
@@ -1670,6 +1680,7 @@
#endif
*priority = param.sched_priority;
+#endif
return 0;
}
@@ -1695,7 +1706,7 @@
* If the function fails, the return value is non-zero.
*/
int uv_thread_setpriority(uv_thread_t tid, int priority) {
-#if !defined(__GNU__)
+#if !defined(__GNU__) && !defined(__redox__)
int r;
int min;
int max;
diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c
--- source/src/unix/fs.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/fs.c 2025-10-10 11:18:29.024993834 +0700
@@ -77,7 +77,8 @@
defined(__MVS__) || \
defined(__NetBSD__) || \
defined(__HAIKU__) || \
- defined(__QNX__)
+ defined(__QNX__) || \
+ defined(__redox__)
# include <sys/statvfs.h>
#else
# include <sys/statfs.h>
@@ -683,13 +684,13 @@
defined(__MVS__) || \
defined(__NetBSD__) || \
defined(__HAIKU__) || \
- defined(__QNX__)
+ defined(__QNX__) || \
+ defined(__redox__)
struct statvfs buf;
if (0 != statvfs(req->path, &buf))
#else
struct statfs buf;
-
if (0 != statfs(req->path, &buf))
#endif /* defined(__sun) */
return -1;
@@ -705,7 +706,8 @@
defined(__OpenBSD__) || \
defined(__NetBSD__) || \
defined(__HAIKU__) || \
- defined(__QNX__)
+ defined(__QNX__) || \
+ defined(__redox__)
stat_fs->f_type = 0; /* f_type is not supported. */
#else
stat_fs->f_type = buf.f_type;
diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c
--- source/src/unix/proctitle.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/proctitle.c 2025-10-10 11:18:29.025229760 +0700
@@ -30,7 +30,13 @@
size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */
};
+#if defined(__redox__)
+void uv__set_process_title(const char* title) {
+ // requires sys/prctl
+}
+#else
extern void uv__set_process_title(const char* title);
+#endif
static uv_mutex_t process_title_mutex;
static uv_once_t process_title_mutex_once = UV_ONCE_INIT;
diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c
--- source/src/unix/redox.c 1970-01-01 07:00:00.000000000 +0700
+++ source-new/src/unix/redox.c 2025-10-10 11:18:29.028345924 +0700
@@ -0,0 +1,104 @@
+/* Copyright libuv contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "uv.h"
+#include "internal.h"
+
+#include <errno.h>
+#include <string.h>
+#include <stdio.h>
+
+static void
+get_mem_info(uint64_t* totalmem, uint64_t* freemem) {
+ *totalmem = 0;
+ *freemem = 0;
+}
+
+
+void uv_loadavg(double avg[3]) {
+ avg[0] = 0.0;
+ avg[1] = 0.0;
+ avg[2] = 0.0;
+}
+
+
+int uv_exepath(char* buffer, size_t* size) {
+ if (buffer == NULL || size == NULL || *size == 0) {
+ return UV_EINVAL;
+ }
+ FILE* fp = fopen("/scheme/sys/exe", "r");
+ if (fp == NULL) {
+ return -errno;
+ }
+ if (fgets(buffer, *size, fp) == NULL) {
+ fclose(fp);
+ return UV_EIO;
+ }
+ fclose(fp);
+ buffer[strcspn(buffer, "\r\n")] = '\0';
+ *size = strlen(buffer);
+ return 0;
+}
+
+int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
+ *count = 0;
+ return 0;
+}
+
+
+uint64_t uv_get_free_memory(void) {
+ return 0;
+}
+
+
+uint64_t uv_get_total_memory(void) {
+ return 0;
+}
+
+
+uint64_t uv_get_constrained_memory(void) {
+ return 0;
+}
+
+
+uint64_t uv_get_available_memory(void) {
+ return uv_get_free_memory();
+}
+
+
+int uv_resident_set_memory(size_t* rss) {
+ return 0;
+}
+
+
+int uv_uptime(double* uptime) {
+ return 0;
+}
+
+
+int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
+ *count = 0;
+ return 0;
+}
+
+void uv_free_interface_addresses(uv_interface_address_t* addresses,
+ int count) {
+}
diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c
--- source/src/unix/stream.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/stream.c 2025-10-10 11:18:29.028522718 +0700
@@ -29,7 +29,14 @@
#include <errno.h>
#include <sys/types.h>
+#if defined(__redox__)
+#define _GNU_SOURCE
+#include <stdint.h>
#include <sys/socket.h>
+#include <netinet/in.h>
+#else
+#include <sys/socket.h>
+#endif
#include <sys/uio.h>
#include <sys/un.h>
#include <unistd.h>
@@ -39,6 +46,7 @@
# include <sys/event.h>
# include <sys/time.h>
# include <sys/select.h>
+#endif
/* Forward declaration */
typedef struct uv__stream_select_s uv__stream_select_t;
@@ -58,7 +66,6 @@
fd_set* swrite;
size_t swrite_sz;
};
-#endif /* defined(__APPLE__) */
union uv__cmsg {
struct cmsghdr hdr;
diff -ruwN source/src/unix/tcp.c source-new/src/unix/tcp.c
--- source/src/unix/tcp.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/tcp.c 2025-10-10 11:26:03.504101758 +0700
@@ -31,7 +31,7 @@
#include <sys/socket.h>
/* ifaddrs is not implemented on AIX and IBM i PASE */
-#if !defined(_AIX)
+#if !defined(_AIX) && !defined(__redox__)
#include <ifaddrs.h>
#endif
@@ -228,7 +228,7 @@
static int uv__ipv6_link_local_scope_id(void) {
struct sockaddr_in6* a6;
int rv;
-#if defined(_AIX)
+#if defined(_AIX) || defined(__redox__)
/* AIX & IBM i do not have ifaddrs
* so fallback to use uv_interface_addresses */
uv_interface_address_t* interfaces;
@@ -268,7 +268,7 @@
}
freeifaddrs(ifa);
-#endif /* defined(_AIX) */
+#endif /* defined(_AIX) || defined(__redox__) */
return rv;
}
diff -ruwN source/src/unix/thread.c source-new/src/unix/thread.c
--- source/src/unix/thread.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/thread.c 2025-10-10 11:25:10.712328011 +0700
@@ -897,7 +897,7 @@
abort();
}
-#if defined(_AIX) || defined(__MVS__) || defined(__PASE__)
+#if defined(_AIX) || defined(__redox__) || defined(__MVS__) || defined(__PASE__)
int uv__thread_setname(const char* name) {
return UV_ENOSYS;
}
@@ -937,6 +937,7 @@
#if (defined(__ANDROID_API__) && __ANDROID_API__ < 26) || \
defined(_AIX) || \
+ defined(__redox__) || \
defined(__MVS__) || \
defined(__PASE__)
int uv__thread_getname(uv_thread_t* tid, char* name, size_t size) {
diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c
--- source/src/unix/udp.c 2025-04-25 16:50:27.000000000 +0700
+++ source-new/src/unix/udp.c 2025-10-10 11:18:29.028778883 +0700
@@ -31,6 +31,12 @@
#include <xti.h>
#endif
#include <sys/un.h>
+#if defined(__redox__)
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#endif
#if defined(IPV6_JOIN_GROUP) && !defined(IPV6_ADD_MEMBERSHIP)
# define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
+14
View File
@@ -0,0 +1,14 @@
[source]
tar = "https://github.com/xiph/vorbis/releases/download/v1.3.7/libvorbis-1.3.7.tar.xz"
blake3 = "c67f3f74ec26d93a5571c4404a64eb6e6587d7d77b46b552f7b410f5bc5b1f03"
script = """
DYNAMIC_INIT
GNU_CONFIG_GET config.sub
autotools_recursive_regenerate
"""
[build]
template = "configure"
dependencies = [
"libogg"
]
+20
View File
@@ -0,0 +1,20 @@
[source]
tar = "https://download.gnome.org/sources/libxml2/2.11/libxml2-2.11.3.tar.xz"
blake3 = "0653d3750576299c4cb88740942165671b576ff93019f3d669b3f37136225ab7"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = [
"xz",
"zlib"
]
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--without-python
)
cookbook_configure
"""
+11
View File
@@ -0,0 +1,11 @@
[source]
git = "https://github.com/lunarmodules/lua-compat-5.3.git"
[build]
template = "custom"
dependencies = [
"lua54"
]
script = """
mkdir -pv "${COOKBOOK_STAGE}/include"
cp -r "$COOKBOOK_SOURCE/c-api/." "${COOKBOOK_STAGE}/include"
"""
+17
View File
@@ -0,0 +1,17 @@
[source]
git = "https://github.com/luvit/luv.git"
[build]
template = "custom"
dependencies = [
"libuv",
"luajit"
]
script = """
DYNAMIC_INIT
COOKBOOK_CMAKE_FLAGS+=(
-DWITH_LUA_ENGINE=Luajit
-DLUA_BUILD_TYPE=System
-DWITH_SHARED_LIBUV=On
)
cookbook_cmake
"""
+12
View File
@@ -0,0 +1,12 @@
[source]
tar = "https://archive.mesa3d.org/glu/glu-9.0.3.tar.xz"
blake3 = "beed1665ed983540e7502289ec50c7e66d840820af3e9ef21c9c4a7e9686ab9f"
[build]
dependencies = ["mesa"]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_meson -Dgl_provider=osmesa
"""
+46
View File
@@ -0,0 +1,46 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/mesa.git"
upstream = "https://gitlab.freedesktop.org/mesa/mesa"
branch = "redox-24.0"
shallow_clone = true
[build]
template = "custom"
dependencies = [
"expat",
"libdrm",
"liborbital",
"llvm21",
"zlib",
]
dev-dependencies = [
"llvm21.dev",
]
script = """
DYNAMIC_INIT
#TODO: Should be CPPFLAGS but cookbook_meson isn't reading it
export CFLAGS+=" -DHAVE_PTHREAD=1 -I${COOKBOOK_SYSROOT}/include/libdrm"
export LLVM_CONFIG="${TARGET}-llvm-config"
export LDFLAGS+=" -lorbital"
if [ "${COOKBOOK_DYNAMIC}" == "1" ]; then
COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=enabled)
else
COOKBOOK_MESON_FLAGS+=(-Dshared-llvm=disabled)
fi
cookbook_meson \
-Ddri-drivers-path=/usr/lib/dri \
-Degl=enabled \
-Dglx=disabled \
-Dllvm=enabled \
-Dosmesa=true \
-Dplatforms=redox \
-Dshader-cache=disabled \
-Dvulkan-drivers=swrast
# Hack to add LLVM libs, the list can be seen from meson log and check for matches $("${LLVM_CONFIG}" --libs)
LLVMLIBS="-lLLVMBitReader -lLLVMCore -lLLVMExecutionEngine -lLLVMInstCombine -lLLVMMCDisassembler"
LLVMLIBS+=" -lLLVMMCJIT -lLLVMScalarOpts -lLLVMTransformUtils -lLLVMCoroutines -lLLVMLTO"
sed -i "s/ -lOSMesa / -lOSMesa ${LLVMLIBS} -lstdc++ /" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/osmesa.pc"
"""
+19
View File
@@ -0,0 +1,19 @@
# C library for the arithmetic of complex numbers with arbitrarily high
# precision and correct rounding of the result.
[source]
tar = "https://ftp.gnu.org/gnu/mpc/mpc-1.3.1.tar.gz"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
dependencies = [
"libgmp",
"libmpfr",
]
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+34
View File
@@ -0,0 +1,34 @@
[source]
tar = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.6.tar.gz"
blake3 = "fbec55697a01f99b9cc3f25be55e73ae7091f4c53e5d81a1ea15734c4e5b7238"
patches = [
"redox.patch"
]
[build]
template = "custom"
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-db-install
--disable-stripping
--disable-widec
--enable-pc-files
--without-ada
--without-manpages
--without-tests
--with-terminfo-dirs=/usr/share/terminfo
--with-pkg-config-libdir=/usr/lib/pkgconfig
cf_cv_func_mkstemp=yes
)
if [ "${COOKBOOK_DYNAMIC}" == "1" ]
then
COOKBOOK_CONFIGURE_FLAGS+=(--with-shared)
fi
cookbook_configure
"""
[package]
dependencies = [
"terminfo",
]
+21
View File
@@ -0,0 +1,21 @@
diff -ruwN source/configure source-new/configure
--- source/configure 2022-11-06 04:13:26.000000000 +0700
+++ source-new/configure 2026-02-17 13:42:38.449890407 +0700
@@ -3480,8 +3480,6 @@
echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
save_CPPFLAGS="$CPPFLAGS"
- eval cf_includedir=${includedir}
- CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
cat >"conftest.$ac_ext" <<_ACEOF
#line 3487 "configure"
@@ -6386,7 +6384,7 @@
fi
cf_cv_rm_so_locs=yes
;;
- (linux*|gnu*|k*bsd*-gnu)
+ (linux*|gnu*|k*bsd*-gnu|redox*)
if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+32
View File
@@ -0,0 +1,32 @@
[source]
same_as = "../ncurses"
[build]
template = "custom"
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-db-install
--disable-ext-colors
--disable-stripping
--enable-widec
--without-ada
--without-manpages
--without-tests
--enable-pc-files
--with-terminfo-dirs=/usr/share/terminfo
--with-pkg-config-libdir=/usr/lib/pkgconfig
cf_cv_func_mkstemp=yes
cf_cv_wint_t=yes
)
if [ "${COOKBOOK_DYNAMIC}" == "1" ]
then
COOKBOOK_CONFIGURE_FLAGS+=(--with-shared)
fi
cookbook_configure
"""
[package]
dependencies = [
"terminfo",
]
+17
View File
@@ -0,0 +1,17 @@
[source]
tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.64.0/nghttp2-1.64.0.tar.xz"
blake3 = "1bbc08de4816769d800c42f501a00c1ba3f5efa1b76e1f65d2e5bdf3aa30354d"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--enable-lib-only
)
cookbook_configure
"""
+30
View File
@@ -0,0 +1,30 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/openssl.git"
branch = "redox-v1"
shallow_clone = true
[build]
template = "custom"
script = """
DYNAMIC_INIT
ARCH="${TARGET%%-*}"
OS=$(echo "${TARGET}" | cut -d - -f3)
COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/Configure"
COOKBOOK_CONFIGURE_FLAGS=(
threads
no-dgram
"${OS}-${ARCH}"
--prefix="/"
)
if [ "${COOKBOOK_DYNAMIC}" = "1" ]; then
COOKBOOK_CONFIGURE_FLAGS+=(shared)
else
COOKBOOK_CONFIGURE_FLAGS+=(no-shared)
fi
export CC="${CC_WRAPPER} ${GNU_TARGET}-gcc"
"${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}"
"${COOKBOOK_MAKE}" -j"${COOKBOOK_MAKE_JOBS}"
"${COOKBOOK_MAKE}" install_sw install_ssldirs DESTDIR="${COOKBOOK_STAGE}"
rm -rfv "${COOKBOOK_STAGE}/"{share,ssl}
"""
+19
View File
@@ -0,0 +1,19 @@
[source]
tar = "https://downloads.xiph.org/releases/opus/opusfile-0.12.tar.gz"
blake3 = "1b6a5c371a0ea2ae8e37ab2e921388dfef9252dbf7f60045192dabbdd898f2bf"
script = """
autotools_recursive_regenerate
"""
[build]
template = "configure"
dependencies = [
"openssl3",
"libogg",
"libopus",
]
[package]
dependencies = [
"ca-certificates"
]
+40
View File
@@ -0,0 +1,40 @@
[source]
tar = "https://download.gnome.org/sources/pango/1.56/pango-1.56.3.tar.xz"
blake3 = "78542feaaf007c1d648b94c4e9b6655ed7515d27ce434766aea99bef886c21ac"
patches = ["redox.patch"]
[build]
dependencies = [
"cairo",
"expat",
"fontconfig",
"freetype2",
"fribidi",
"gettext",
"glib",
"harfbuzz",
"libffi",
"libiconv",
"libpng",
"libpthread-stubs",
"libx11",
"libxau",
"libxcb",
"libxext",
"libxft",
"libxrender",
"pcre",
"pcre2",
"pixman",
"x11proto",
"xcb-proto",
"xextproto",
"zlib",
]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_meson \
-Dbuild-examples=false \
-Dbuild-testsuite=false
"""
+14
View File
@@ -0,0 +1,14 @@
diff -ruwN pango-1.56.3/meson.build source/meson.build
--- pango-1.56.3/meson.build 2025-03-16 05:45:47.000000000 -0600
+++ source/meson.build 2025-05-01 13:51:05.834742120 -0600
@@ -551,8 +551,8 @@
pango_inc = include_directories('pango')
subdir('pango')
-subdir('utils')
-subdir('tools')
+#TODO: fails to build on Redox: subdir('utils')
+#TODO: fails to build on Redox: subdir('tools')
subdir('docs')
if get_option('build-testsuite')
subdir('tests')
+16
View File
@@ -0,0 +1,16 @@
[source]
tar = "https://mirrors.gigenet.com/OSDN//sfnet/p/pc/pcre/pcre/8.42/pcre-8.42.tar.gz"
blake3 = "12d515ba12a816994def6b1e7196b5783fd2cfe495733a9167fa4d71dbe10248"
script = """
autotools_recursive_regenerate
"""
patches = [
"redox.patch"
]
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+17
View File
@@ -0,0 +1,17 @@
diff -ruwN source/pcretest.c source-new/pcretest.c
--- source/pcretest.c 2017-06-13 10:49:46.000000000 -0600
+++ source-new/pcretest.c 2019-01-05 11:04:15.198224299 -0700
@@ -3168,7 +3168,7 @@
((stack_size = get_value((pcre_uint8 *)argv[op+1], &endptr)),
*endptr == 0))
{
-#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS)
+#if defined(_WIN32) || defined(WIN32) || defined(__minix) || defined(NATIVE_ZOS) || defined(__VMS) || defined(__redox__)
printf("PCRE: -S not supported on this OS\n");
exit(1);
#else
@@ -5770,4 +5770,3 @@
}
/* End of pcretest.c */
-
+13
View File
@@ -0,0 +1,13 @@
[source]
tar = "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.45/pcre2-10.45.tar.bz2"
blake3 = "aea544846f9a03c1ec62c9f8d1c9a4187cc3cce557e53e6876eb6a58c7cdd9fe"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
cookbook_configure
"""
+11
View File
@@ -0,0 +1,11 @@
[source]
tar = "https://www.cairographics.org/releases/pixman-0.46.0.tar.xz"
blake3 = "379369245a0bbd13784bf550c87622964a6aba87edf598ffa137dc10201746e0"
patches = ["redox.patch"]
[build]
template = "custom"
script = """
DYNAMIC_INIT
cookbook_meson -Dtests=disabled
"""
+12
View File
@@ -0,0 +1,12 @@
diff -ruwN source/test/fence-image-self-test.c source-new/test/fence-image-self-test.c
--- source/test/fence-image-self-test.c 2018-04-11 06:07:58.000000000 -0600
+++ source-new/test/fence-image-self-test.c 2019-01-06 15:29:38.878720123 -0700
@@ -29,7 +29,7 @@
#include "utils.h"
-#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION)
+#if FENCE_MALLOC_ACTIVE && defined (HAVE_SIGACTION) && !defined(__redox__)
#include <stdlib.h>
#include <stdio.h>
+19
View File
@@ -0,0 +1,19 @@
[source]
tar = "https://ftp.gnu.org/gnu/readline/readline-8.3.tar.gz"
blake3 = "7109f094062bda387a0c16b4875375b96e36437bebbbd8d8f91bb27ba01d687f"
[build]
template = "custom"
dependencies = [
"ncursesw",
]
script = """
DYNAMIC_INIT
cookbook_configure
OS=$(echo "${TARGET}" | cut -d - -f3)
if [ "${OS}" = "redox" ]; then
ln -s "libhistory.so.8" "${COOKBOOK_STAGE}"/usr/lib/libhistory.so
ln -s "libreadline.so.8" "${COOKBOOK_STAGE}"/usr/lib/libreadline.so
patchelf --add-needed libncursesw.so "${COOKBOOK_STAGE}/usr/lib/libreadline.so.8"
fi
"""
+4
View File
@@ -0,0 +1,4 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/redox-fatfs.git"
[build]
template = "cargo"
+27
View File
@@ -0,0 +1,27 @@
[source]
tar = "https://sourceforge.net/projects/sdlgfx/files/SDL_gfx-2.0.25.tar.gz"
blake3 = "e6f571a38e51d369b010f4b10eb35b95e3d2edae2edd796241c47ea8376581e6"
patches = ["redox.patch"]
script = """
./autogen.sh
"""
[build]
template = "custom"
dependencies = [
"sdl1",
"liborbital",
"libiconv",
]
script = """
COOKBOOK_CONFIGURE_FLAGS=(
--prefix=/
--build="$(gcc -dumpmachine)"
--host="${TARGET}"
--disable-shared
)
cookbook_configure
rm -f "${COOKBOOK_STAGE}/lib/"*.la
"""
+20
View File
@@ -0,0 +1,20 @@
--- source/config.sub 2013-10-27 23:04:13.000000000 +0100
+++ build/config.sub 2019-08-13 10:13:07.072063540 +0200
@@ -125,7 +125,7 @@ case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
- kopensolaris*-gnu* | \
+ kopensolaris*-gnu* | redox* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -1346,7 +1346,7 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -redox* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+26
View File
@@ -0,0 +1,26 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz"
blake3 = "731a6f8cad9fff22c82394bd1c0c34ce4aa60fa8923f3755a3e3239f1e269389"
patches = ["redox.patch"]
script = """
./autogen.sh
"""
[build]
template = "custom"
dependencies = [
"sdl1",
"liborbital",
"libiconv",
"libjpeg",
"libpng",
"zlib"
]
script = """
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-sdltest
--enable-png
--enable-jpg
)
cookbook_configure
"""
+12
View File
@@ -0,0 +1,12 @@
diff -rupNw source-original/config.sub source/config.sub
--- source-original/config.sub 2012-01-19 07:30:05.000000000 +0100
+++ source/config.sub 2018-05-01 17:31:52.766229515 +0200
@@ -1276,7 +1276,7 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -kopensolaris* | -redox* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+30
View File
@@ -0,0 +1,30 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz"
blake3 = "ef23bab2d42250dfdc51ce6939ee7b393973ff11a0dd3481f32180b489d2661c"
patches = ["redox.patch"]
script = """
./autogen.sh
"""
[build]
dependencies = [
"libogg",
"liborbital",
"libvorbis",
"sdl1",
]
template = "custom"
script = """
DYNAMIC_INIT
export LIBS="-lvorbis -logg"
COOKBOOK_CONFIGURE_FLAGS+=(
--enable-music-ogg
--enable-music-midi
--disable-sdltest
--disable-music-cmd
--disable-music-mp3
--disable-smpegtest
--disable-music-mod
)
cookbook_configure
"""
+55
View File
@@ -0,0 +1,55 @@
diff -ruwN source/build-scripts/config.sub source-new/build-scripts/config.sub
--- source/build-scripts/config.sub 2012-01-15 15:01:05.000000000 -0700
+++ source-new/build-scripts/config.sub 2022-11-20 12:23:50.849108724 -0700
@@ -1276,7 +1276,7 @@
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -kopensolaris* | -redox* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
diff -ruwN source/Makefile.in source-new/Makefile.in
--- source/Makefile.in 2012-01-15 15:01:04.000000000 -0700
+++ source-new/Makefile.in 2022-11-20 12:23:50.849108724 -0700
@@ -66,10 +66,10 @@
$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
$(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET)
- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
+ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static
$(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET)
- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET)
+ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(SDL_LIBS) $(objects)/$(TARGET) --static
install: all install-hdrs install-lib #install-bin
install-hdrs:
diff -ruwN source/timidity/config.h source-new/timidity/config.h
--- source/timidity/config.h 2012-01-15 15:01:05.000000000 -0700
+++ source-new/timidity/config.h 2022-11-20 12:26:04.067581857 -0700
@@ -162,6 +162,7 @@
then specify the library directory in the configuration file. */
#define CONFIG_FILE "timidity.cfg"
#define CONFIG_FILE_ETC "/etc/timidity.cfg"
+#define CONFIG_FILE_ETC_TIMIDITY_FREEPATS "/etc/timidity/freepats.cfg"
#if defined(__WIN32__) || defined(__OS2__)
#define DEFAULT_PATH "C:\\TIMIDITY"
diff -ruwN source/timidity/timidity.c source-new/timidity/timidity.c
--- source/timidity/timidity.c 2012-01-15 15:01:05.000000000 -0700
+++ source-new/timidity/timidity.c 2022-11-20 12:26:42.248290658 -0700
@@ -286,10 +286,12 @@
if (!env || read_config_file(env)<0) {
if (read_config_file(CONFIG_FILE)<0) {
if (read_config_file(CONFIG_FILE_ETC)<0) {
+ if (read_config_file(CONFIG_FILE_ETC_TIMIDITY_FREEPATS)<0) {
return(-1);
}
}
}
+ }
if (channels < 1 || channels == 3 || channels == 5 || channels > 6) return(-1);
+31
View File
@@ -0,0 +1,31 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz"
blake3 = "a684e57553e43b55ab28b064d1d5d44b8749299f259da31a62d671fc1d5505ee"
patches = ["redox.patch"]
script = """
./autogen.sh
"""
[build]
template = "custom"
dependencies = [
"sdl1",
"liborbital",
"freetype2",
"libpng",
"zlib",
]
script = """
export CFLAGS="${CFLAGS} -I${COOKBOOK_SYSROOT}/include/freetype2"
COOKBOOK_CONFIGURE_FLAGS=(
--prefix=/
--build="$(gcc -dumpmachine)"
--host="${TARGET}"
--disable-shared
)
cookbook_configure
rm -f "${COOKBOOK_STAGE}/lib/"*.la
"""
+62
View File
@@ -0,0 +1,62 @@
diff -ruw source/config.sub source-new/config.sub
--- source/config.sub 2012-01-14 21:44:08.000000000 -0700
+++ source-new/config.sub 2018-12-10 12:17:28.136784814 -0700
@@ -1276,7 +1276,7 @@
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
- | -kopensolaris* \
+ | -kopensolaris* | -redox* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
Only in source-new: config.sub.orig
diff -ruw source/configure.in source-new/configure.in
--- source/configure.in 2012-01-14 21:44:08.000000000 -0700
+++ source-new/configure.in 2018-12-10 12:17:12.724883206 -0700
@@ -91,38 +91,13 @@
AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue)
dnl Check for the FreeType 2 library
-dnl
-dnl Get the cflags and libraries from the freetype-config script
-dnl
-AC_ARG_WITH(freetype-prefix,[ --with-freetype-prefix=PFX Prefix where FREETYPE is
-installed (optional)],
- freetype_prefix="$withval", freetype_prefix="")
-AC_ARG_WITH(freetype-exec-prefix,[ --with-freetype-exec-prefix=PFX Exec prefix
-where FREETYPE is installed (optional)],
- freetype_exec_prefix="$withval", freetype_exec_prefix="")
-
-if test x$freetype_exec_prefix != x ; then
- freetype_args="$freetype_args --exec-prefix=$freetype_exec_prefix"
- if test x${FREETYPE_CONFIG+set} != xset ; then
- FREETYPE_CONFIG=$freetype_exec_prefix/bin/freetype-config
- fi
-fi
-if test x$freetype_prefix != x ; then
- freetype_args="$freetype_args --prefix=$freetype_prefix"
- if test x${FREETYPE_CONFIG+set} != xset ; then
- FREETYPE_CONFIG=$freetype_prefix/bin/freetype-config
- fi
-fi
-AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
-no_freetype=""
-if test "$FREETYPE_CONFIG" = "no" ; then
- AC_MSG_ERROR([
-*** Unable to find FreeType2 library (http://www.freetype.org/)
+#PKG_CHECK_MODULES([FT2], [freetype2 >= 7.0.1], [], [dnl
+# AC_CHECK_FT2(,,[AC_MSG_ERROR([dnl
+#*** Unable to find FreeType2 library (http://www.freetype.org/)])]
+# )
+#])
-])
-else
- CFLAGS="$CFLAGS `$FREETYPE_CONFIG $freetypeconf_args --cflags`"
- LIBS="$LIBS `$FREETYPE_CONFIG $freetypeconf_args --libs`"
-fi
+CFLAGS="$CFLAGS $FT2_CFLAGS"
+LIBS="$LIBS $FT2_LIBS -lfreetype -lpng -lz"
dnl Check for SDL
SDL_VERSION=1.2.4
+20
View File
@@ -0,0 +1,20 @@
[source]
git = "https://gitlab.redox-os.org/redox-os/sdl1.2.git"
[build]
template = "custom"
dependencies = [
"liborbital"
]
script = """
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-loadso
--disable-pulseaudio
--disable-video-x11
--enable-clock_gettime
--enable-pthread-sem
--enable-redoxaudio
--enable-video-orbital
)
cookbook_configure
"""
+25
View File
@@ -0,0 +1,25 @@
[source]
tar = "http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-1.0.4.tar.gz"
blake3 = "2e9bd2dc0f004349b51418f33219ebf5cd69f25ed0ba660373652a662cbb857c"
script = """
GNU_CONFIG_GET config.sub
"""
[build]
dependencies = [
"freetype2",
"liborbital",
"libpng",
"mesa",
"sdl2",
"zlib",
]
template = "custom"
script = """
DYNAMIC_INIT
export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++"
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-sdltest
)
cookbook_configure
"""
+26
View File
@@ -0,0 +1,26 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.4.tar.gz"
[build]
template = "custom"
dependencies = [
"libjpeg",
"liborbital",
"libpng",
"mesa",
"sdl2",
"zlib",
]
script = """
DYNAMIC_INIT
export SDL_LIBS="-lSDL2 -lorbital $("${TARGET}-pkg-config" --libs osmesa) -lstdc++"
COOKBOOK_CONFIGURE_FLAGS=(
--prefix=/usr
--host="${TARGET}"
--disable-sdltest
--enable-shared
--enable-png
--enable-jpg
)
cookbook_configure
"""
+31
View File
@@ -0,0 +1,31 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.8.1.tar.gz"
blake3 = "fa0798ce7ffdb5f89545311292374e5b7af479df8bc99a4aacfb40d2ab2f8384"
[build]
template = "custom"
dependencies = [
"sdl2",
"liborbital",
"mesa",
"zlib",
"libogg",
"libvorbis",
]
script = """
DYNAMIC_INIT
export SDL_LIBS="-lSDL2 -lorbital -lOSMesa -lvorbis -logg -lz -lm -lpthread -lstdc++"
COOKBOOK_CONFIGURE_FLAGS=(
--prefix=/
--host="${TARGET}"
--disable-sdltest
--enable-music-ogg
--disable-music-cmd
--disable-music-mp3
--disable-smpegtest
--disable-music-midi
--disable-music-mod
)
cookbook_configure
"""
+16
View File
@@ -0,0 +1,16 @@
diff -ruw source/Makefile.in source-new/Makefile.in
--- source/Makefile.in 2018-10-31 08:58:59.000000000 -0600
+++ source-new/Makefile.in 2019-06-19 15:23:18.015149749 -0600
@@ -65,10 +65,10 @@
$(LIBTOOL) --mode=link $(CC) -o $@ $(OBJECTS) $(VERSION_OBJECTS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LT_LDFLAGS)
$(objects)/playwave$(EXE): $(objects)/playwave.lo $(objects)/$(TARGET)
- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS)
+ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playwave.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static
$(objects)/playmus$(EXE): $(objects)/playmus.lo $(objects)/$(TARGET)
- $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS)
+ $(LIBTOOL) --mode=link $(CC) -o $@ $(objects)/playmus.lo $(SDL_CFLAGS) $(objects)/$(TARGET) $(SDL_LIBS) $(LDFLAGS) --static
install: all install-hdrs install-lib #install-bin
install-hdrs:
+29
View File
@@ -0,0 +1,29 @@
[source]
tar = "https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.15.tar.gz"
blake3 = "9814a07f33a3501b414f0fc7fa962e7d7ffc56748406f3798b7698b8d7e7fe12"
script = """
DYNAMIC_INIT
./autogen.sh
"""
[build]
dependencies = [
"expat",
"freetype2",
"libdrm",
"liborbital",
"libpng",
"mesa",
"sdl2",
"zlib",
]
template = "custom"
script = """
DYNAMIC_INIT
export SDL_LIBS="-lSDL2 -lorbital $("${PKG_CONFIG}" --libs osmesa) -lpng -lz -lm -lpthread -lstdc++"
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-sdltest
--enable-opengl
)
cookbook_configure
"""
+28
View File
@@ -0,0 +1,28 @@
#TODO: TEST
[source]
git = "https://gitlab.redox-os.org/redox-os/sdl2.git"
[build]
template = "custom"
dependencies = [
"liborbital",
"mesa",
"zlib",
]
script = """
DYNAMIC_INIT
export LDFLAGS="${LDFLAGS} -lorbital -lOSMesa -lstdc++"
COOKBOOK_CONFIGURE_FLAGS+=(
--disable-pulseaudio
--disable-video-x11
--enable-audio
--enable-dummyaudio
--enable-redoxaudio
--enable-threads
--enable-video-orbital
)
cookbook_configure
# Hack to add OSMesa
sed -i "s/Requires:/Requires: osmesa >= 8.0.0/" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/sdl2.pc"
"""
+12
View File
@@ -0,0 +1,12 @@
[source]
tar = "https://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz"
blake3 = "57c095e0bb6e60e7b4a0597f51f7ac15b501ca0f95d37424d8d13978d28b8da3"
[build]
template = "custom"
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS+=(
--prefix="${COOKBOOK_STAGE}/usr"
)
cookbook_configure
"""
+14
View File
@@ -0,0 +1,14 @@
[source]
tar = "https://github.com/neovim/unibilium/archive/refs/tags/v2.1.2.tar.gz"
blake3 = "856a7593a412942f4716bb55bfdd225f3ce92cb013b9d4a44693255f0570b1c7"
script = """
autotools_recursive_regenerate
"""
[build]
template = "custom"
script = """
DYNAMIC_INIT
rsync -av --delete "${COOKBOOK_SOURCE}/" ./
cookbook_configure
"""
+6
View File
@@ -0,0 +1,6 @@
[source]
tar = "https://github.com/JuliaStrings/utf8proc/archive/refs/tags/v2.10.0.tar.gz"
blake3 = "6f675db5d1ae55ad0825351ba9c58a5b5c24c862f559cc7bfed1cb63c1185594"
[build]
template = "cmake"
+25
View File
@@ -0,0 +1,25 @@
[source]
tar = "https://www.zlib.net/fossils/zlib-1.3.tar.gz"
blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf"
[build]
template = "custom"
script = """
DYNAMIC_INIT
COOKBOOK_CONFIGURE_FLAGS=(--prefix="/usr")
if [ "${COOKBOOK_DYNAMIC}" == "1" ]
then
COOKBOOK_CONFIGURE_FLAGS+=(--shared)
else
COOKBOOK_CONFIGURE_FLAGS+=(--static)
fi
# See https://stackoverflow.com/questions/21396988/zlib-build-not-configuring-properly-with-cross-compiler-ignores-ar.
env CHOST="${TARGET}" "${COOKBOOK_CONFIGURE}" "${COOKBOOK_CONFIGURE_FLAGS[@]}"
"${COOKBOOK_MAKE}" -j "$(nproc)"
"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}"
solib="${COOKBOOK_STAGE}/usr/lib/libz.so.1.3"
if [ -e "${solib}" ]
then
patchelf --set-soname 'libz.so.1.3' "${solib}"
fi
"""