Compare commits

...

22 Commits

Author SHA1 Message Date
Wildan Mubarok
5756d9d75b Merge branch 'zlib-rs' into 'master'
Draft: Change zlib to zlib-rs

See merge request redox-os/redox!2415
2026-11-03 15:34:38 +00:00
Jeremy Soller
5313cbba62 Merge branch 'strip-ar' into 'master'
cookbook: Also strip ar files

See merge request redox-os/redox!2427
2026-11-02 18:45:37 -07:00
Wildan M
559496cb6d
cookbook: Fix test 2026-11-03 08:23:09 +07:00
Wildan M
4006aee0bf
cookbook: Also strip ar files 2026-11-03 08:19:14 +07:00
Jeremy Soller
da760947f1 Merge branch 'verbosity' into 'master'
cookbook: Adjustable script verbosity and cleaner strip

See merge request redox-os/redox!2426
2026-11-02 18:00:17 -07:00
Jeremy Soller
28f5c3d7cb Merge branch 'prune-fail' into 'master'
cookbook: Don't always prune sysroot with clean-target enabled

See merge request redox-os/redox!2425
2026-11-02 17:46:28 -07:00
Jeremy Soller
4639c04454 Merge branch 'openssl-update' into 'master'
Update curl, openssl3 and nghttp2

See merge request redox-os/redox!2424
2026-11-02 17:43:36 -07:00
Jeremy Soller
3650a613f3 Merge branch 'python315-update' into 'master'
Update python315

See merge request redox-os/redox!2421
2026-11-02 17:42:34 -07:00
Jeremy Soller
d2abc86a7c Merge branch 'ffmpeg-update' into 'master'
Update ffmpeg6 and add ffmpeg9

See merge request redox-os/redox!2420
2026-11-02 17:42:22 -07:00
Jeremy Soller
c33cf12401 Merge branch 'pipelines' into 'master'
docs: Mention how MR pipelines work

See merge request redox-os/redox!2419
2026-11-02 17:42:04 -07:00
Jeremy Soller
f236d86e60 Merge branch 'meson' into 'master'
Port meson

See merge request redox-os/redox!2416
2026-11-02 17:41:33 -07:00
Wildan M
e684b923d1
cookbook: Adjustable script verbosity and cleaner strip 2026-11-03 07:30:21 +07:00
Wildan M
31b4282059
cookbook: Don't always prune sysroot with clean-target enabled 2026-11-03 06:12:25 +07:00
Jeremy Soller
721493ad46 Merge branch 'nix-fixes' into 'master'
nix: Fix stripping

See merge request redox-os/redox!2418
2026-11-02 08:32:12 -07:00
Wildan M
c57bba090a
Update curl, openssl3 and nghttp2 2026-11-02 20:44:57 +07:00
Wildan M
9bf257dbab
Update python315 2026-11-02 17:55:21 +07:00
Wildan M
b7352eecfd
Update ffmpeg6 and add ffmpeg9 2026-11-02 17:52:11 +07:00
Wildan M
d15b5f9220
docs: Mention how MR pipelines work 2026-11-02 17:19:32 +07:00
Konstantin Shabanov
aa6f01bfb2 nix: Drop autoreconf2.69 workaround 2026-11-02 14:30:37 +07:00
Konstantin Shabanov
7992e91522 nix: Fix stripping
Reduces prefix size from 7.6G to 3.1G.
2026-11-02 14:30:35 +07:00
Wildan M
934b84b60b
Change zlib to zlib-rs 2026-11-01 21:35:15 +07:00
Wildan M
858a19e150
Port meson 2026-11-01 19:17:59 +07:00
23 changed files with 283 additions and 222 deletions

View File

@ -141,6 +141,10 @@ You can see all open issues on [this](https://gitlab.redox-os.org/groups/redox-o
Please follow [our process](https://doc.redox-os.org/book/creating-proper-pull-requests.html) for creating proper pull requests.
### Pull Requests Pipelines
The GitLab CI pipelines is runnable only by maintainer review, otherwise it will be seen as "stuck". Please don't hesitate to ask in Matrix for triggering CI pipelines after being reviewed.
## Important Places to Contribute
Before starting to contribute, we recommend reading the [General FAQ](https://www.redox-os.org/faq/) and the [Redox Book](https://doc.redox-os.org/book/).

View File

@ -176,6 +176,7 @@ mesa = {}
mesa-glu = {}
mesa-demos = {}
mesa-demos-x11 = {}
meson = {}
mgba = {}
miniserve = {}
mpc = {}

View File

@ -104,14 +104,13 @@
#TODO: This isn't tested yet, use at your own risk
native = (pkgs.mkShell.override { stdenv = pkgs.gcc14Stdenv; }) rec {
nativeBuildInputs =
let
autoreconf269 = pkgs.writeShellScriptBin "autoreconf2.69" "${pkgs.autoconf269}/bin/autoreconf";
in
with pkgs;
[
(pkgs.writeShellScriptBin "${pkgs.stdenv.hostPlatform.system}-gnu-strip" ''
${pkgs.bintools-unwrapped}/bin/strip $@
'')
ant
autoconf
autoreconf269 # gnu-binutils
autoconf269
automake
bison
cmake

View File

@ -1,76 +0,0 @@
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

View File

@ -1,7 +1,7 @@
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
diff -ruwN source/configure source-new/configure
--- source/configure 2026-05-05 14:22:01.000000000 +0000
+++ source-new/configure 2026-11-02 05:18:51.788806151 +0000
@@ -5814,6 +5814,8 @@
;;
minix)
;;
@ -10,15 +10,3 @@ diff -rupN source-original/configure source/configure
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

View File

@ -1,9 +1,8 @@
[source]
tar = "https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz"
blake3 = "4879074c357102f85932673044c57c144b0c188ae58edec2a115965536ee340f"
tar = "https://ffmpeg.org/releases/ffmpeg-6.1.5.tar.xz"
blake3 = "da8e6743d96f27d5b5425339218f9a954d9440cb27ba449b449d686b411292e9"
patches = [
"ffmpeg.patch",
"binutils-2.41.patch",
]
[build]

View File

@ -1,6 +1,6 @@
[source]
tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.64.0/nghttp2-1.64.0.tar.xz"
blake3 = "1bbc08de4816769d800c42f501a00c1ba3f5efa1b76e1f65d2e5bdf3aa30354d"
tar = "https://github.com/nghttp2/nghttp2/releases/download/v1.69.0/nghttp2-1.69.0.tar.xz"
blake3 = "dd7432762ac454aaa14ff3b29d40d5b8f641ec3c33e4e24c5ed70e971ac6987b"
script = """
autotools_recursive_regenerate
"""
@ -14,4 +14,4 @@ COOKBOOK_CONFIGURE_FLAGS+=(
--enable-lib-only
)
cookbook_configure
"""
"""

View File

@ -1,6 +1,6 @@
[source]
tar = "https://github.com/openssl/openssl/releases/download/openssl-3.5.3/openssl-3.5.3.tar.gz"
blake3 = "e1622a4587c71c278355bf38ff5a619918bd51e3cd37214d53dd5345b187fc10"
tar = "https://github.com/openssl/openssl/releases/download/openssl-3.5.9/openssl-3.5.9.tar.gz"
blake3 = "be2f7530fe5cd02a06e67d8916e6574f1c53b8071393aae2364b4ed817cf0354"
patches = [ "redox.patch" ]
[build]

View File

@ -1,19 +1,19 @@
diff -ruwN source/apps/lib/apps.c source-new/apps/lib/apps.c
--- source/apps/lib/apps.c 2025-09-16 19:05:33.000000000 +0700
+++ source-new/apps/lib/apps.c 2026-05-05 05:08:40.007422945 +0700
@@ -2839,7 +2839,7 @@
--- source/apps/lib/apps.c 2026-09-29 14:05:00.000000000 +0000
+++ source-new/apps/lib/apps.c 2026-11-02 13:12:01.017080874 +0000
@@ -2863,7 +2863,7 @@
return ret;
}
-#elif defined(_SC_CLK_TCK) /* by means of unistd.h */
+#elif defined(_SC_CLK_TCK) && !defined(__RELIBC__) /* by means of unistd.h */
# include <sys/times.h>
-#elif defined(_SC_CLK_TCK) /* by means of unistd.h */
+#elif defined(_SC_CLK_TCK) && !defined(__RELIBC__) /* by means of unistd.h */
#include <sys/times.h>
double app_tminterval(int stop, int usertime)
diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.conf
--- source/Configurations/10-main.conf 2025-09-16 19:05:33.000000000 +0700
+++ source-new/Configurations/10-main.conf 2026-05-05 05:08:44.812616321 +0700
@@ -208,6 +208,40 @@
--- source/Configurations/10-main.conf 2026-09-29 14:05:00.000000000 +0000
+++ source-new/Configurations/10-main.conf 2026-11-02 13:09:11.387128346 +0000
@@ -209,6 +209,40 @@
shared_extension => ".so",
},
@ -54,7 +54,7 @@ diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.
#### Solaris configurations
"solaris-common" => {
inherit_from => [ "BASE_unix" ],
@@ -693,7 +727,6 @@
@@ -694,7 +728,6 @@
shared_target => "linux-shared",
shared_cflag => "-fPIC",
shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
@ -62,7 +62,7 @@ diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.
},
"linux-latomic" => {
inherit_from => [ "linux-generic32" ],
@@ -890,7 +923,6 @@
@@ -891,7 +924,6 @@
bn_ops => "SIXTY_FOUR_BIT_LONG",
asm_arch => 'x86_64',
perlasm_scheme => "elf",
@ -71,14 +71,14 @@ diff -ruwN source/Configurations/10-main.conf source-new/Configurations/10-main.
"linux-x86_64-clang" => {
inherit_from => [ "linux-x86_64" ],
diff -ruwN source/include/crypto/rand.h source-new/include/crypto/rand.h
--- source/include/crypto/rand.h 2025-09-16 19:05:33.000000000 +0700
+++ source-new/include/crypto/rand.h 2026-05-05 05:08:40.007980910 +0700
@@ -41,7 +41,7 @@
--- source/include/crypto/rand.h 2026-09-29 14:05:00.000000000 +0000
+++ source-new/include/crypto/rand.h 2026-11-02 13:10:37.658190042 +0000
@@ -40,7 +40,7 @@
* default, we will try to read at least one of these files
*/
# define DEVRANDOM "/dev/urandom", "/dev/random", "/dev/hwrng", "/dev/srandom"
-# if defined(__linux) && !defined(__ANDROID__)
+# if defined(__linux) && !defined(__RELIBC__) && !defined(__ANDROID__) /* needs sys/shm.h */
# ifndef DEVRANDOM_WAIT
# define DEVRANDOM_WAIT "/dev/random"
# endif
#define DEVRANDOM "/dev/urandom", "/dev/random", "/dev/hwrng", "/dev/srandom"
-#if defined(__linux) && !defined(__ANDROID__)
+#if defined(__linux) && !defined(__ANDROID__) && !defined(__RELIBC__) /* needs sys/shm.h */
#ifndef DEVRANDOM_WAIT
#define DEVRANDOM_WAIT "/dev/random"
#endif

View File

@ -1,22 +1,37 @@
# zlib-rs is compatible with zlib
[source]
tar = "https://www.zlib.net/fossils/zlib-1.3.tar.gz"
blake3 = "ec1abc6f672a7a6ee6f49ba544cc9529f73121b478310473be44fee22a140ebf"
tar = "https://github.com/trifectatechfoundation/zlib-rs/archive/refs/tags/v0.6.8.tar.gz"
blake3 = "933487029f0a79a923545d60e3828da151194fcbff521acccecfb128ca738ee9"
[build]
template = "custom"
compiler = "no-lto"
script = """
DYNAMIC_STATIC_INIT
COOKBOOK_CONFIGURE_FLAGS=(--prefix="/usr" --shared --static)
# TODO: fPIC is the default on linux but not on redox and
# required by libz-sys as zlib statically linked there
export CFLAGS="$CFLAGS -fPIC"
# 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}"
# the dynamic and static lib must exist
COOKBOOK_SOURCE+="/libz-rs-sys-cdylib"
COOKBOOK_CARGO_FLAGS+=(
--no-default-features --features "c-allocator,std,gz,gzprintf"
)
# NOTE: relocation-model=pic is the default on linux and redox,
# it is required by libz-sys as zlib statically linked there
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
${build_flags} -j "${COOKBOOK_MAKE_JOBS}" \
"${COOKBOOK_CARGO_FLAGS[@]}"
mkdir -p "${COOKBOOK_STAGE}/usr/lib/pkgconfig" "${COOKBOOK_STAGE}/usr/include"
cp "./target/$TARGET/$build_type/libz_rs.a" "${COOKBOOK_STAGE}/usr/lib/libz.a"
cp "${COOKBOOK_SOURCE}/include"/*.h "${COOKBOOK_STAGE}/usr/include/"
cp "${COOKBOOK_RECIPE}/zlib.pc" "${COOKBOOK_STAGE}/usr/lib/pkgconfig/"
DYNAMIC_INIT
if [ "${COOKBOOK_DYNAMIC}" = "1" ]; then
"${COOKBOOK_CARGO}" build \
--manifest-path "${COOKBOOK_SOURCE}/Cargo.toml" \
${build_flags} -j "${COOKBOOK_MAKE_JOBS}" \
"${COOKBOOK_CARGO_FLAGS[@]}"
cp "./target/$TARGET/$build_type/libz_rs.so" "${COOKBOOK_STAGE}/usr/lib/libz.so"
fi
"""

13
recipes/libs/zlib/zlib.pc Normal file
View File

@ -0,0 +1,13 @@
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/include
Name: zlib
Description: zlib compression library
Version: 1.3
Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}

View File

@ -1,29 +0,0 @@
diff --git a/lib/asyn-thrdd.c b/lib/asyn-thrdd.c
index 90f055c2..4db5ab02 100644
--- a/lib/asyn-thrdd.c
+++ b/lib/asyn-thrdd.c
@@ -481,7 +481,11 @@ static void async_thrdd_report_item(struct Curl_easy *data,
struct dynbuf tmp;
const char *sep = "";
const struct Curl_addrinfo *ai = item->res;
+#ifdef USE_IPV6
int ai_family = (item->dns_queries & CURL_DNSQ_AAAA) ? AF_INET6 : AF_INET;
+#else
+ int ai_family = AF_INET;
+#endif
CURLcode result;
if(!CURL_TRC_DNS_is_verbose(data))
@@ -789,10 +793,12 @@ const struct Curl_addrinfo *Curl_async_get_ai(struct Curl_easy *data,
if(thrdd->res_A)
return async_thrdd_get_ai(thrdd->res_A->res, ai_family, index);
break;
+#ifdef USE_IPV6
case AF_INET6:
if(thrdd->res_AAAA)
return async_thrdd_get_ai(thrdd->res_AAAA->res, ai_family, index);
break;
+#endif
default:
break;
}

View File

@ -1,7 +1,7 @@
[source]
git = "https://github.com/curl/curl.git"
rev = "curl-8_20_0"
patches = ["ipv6.patch", "redox.patch"]
rev = "curl-8_23_0"
patches = ["redox.patch"]
shallow_clone = true
[build]
@ -16,12 +16,10 @@ cmakeflags = [
"-DCURL_DISABLE_FTP=On",
"-DCURL_DISABLE_TFTP=On",
"-DENABLE_IPV6=Off",
"-DCURL_DISABLE_NTLM=On",
"-DENABLE_THREADED_RESOLVER=On",
"-DCURL_CA_PATH=/etc/ssl/certs",
"-DUSE_NGHTTP2=On",
"-DCURL_USE_OPENSSL=On",
"-DUSE_ZLIB=On",
"-DCURL_USE_LIBPSL=Off",
]

View File

@ -1,5 +1,5 @@
diff --git a/curl-config.in b/curl-config.in
index a1c8185875..326ea2b9d3 100644
index a1c81858..326ea2b9 100644
--- a/curl-config.in
+++ b/curl-config.in
@@ -167,7 +167,7 @@ while test "$#" -gt 0; do
@ -12,7 +12,7 @@ index a1c8185875..326ea2b9d3 100644
echo 'curl was built with static libraries disabled' >&2
exit 1
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 6961a6c4c1..66221b85e3 100644
index ccc9a09a..2aa0e69c 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -88,7 +88,7 @@
@ -24,7 +24,7 @@ index 6961a6c4c1..66221b85e3 100644
defined(ANDROID) || defined(__ANDROID__) || defined(__OpenBSD__) || \
defined(__CYGWIN__) || defined(AMIGA) || defined(__NuttX__) || \
(defined(__FreeBSD_version) && (__FreeBSD_version < 800000)) || \
@@ -975,11 +975,11 @@ typedef enum {
@@ -987,11 +987,11 @@ typedef enum {
/* Backwards compatibility with older names */
/* These are scheduled to disappear by 2009 */
@ -42,10 +42,10 @@ index 6961a6c4c1..66221b85e3 100644
#endif /* !CURL_NO_OLDIES */
diff --git a/libcurl.pc.in b/libcurl.pc.in
index c0ba5244a8..7898dae358 100644
index 8f7e35dd..78650251 100644
--- a/libcurl.pc.in
+++ b/libcurl.pc.in
@@ -36,6 +36,6 @@ Version: @CURLVERSION@
@@ -40,7 +40,7 @@ Source: https://curl.se/download/curl-@CURLVERSION@.tar.gz
Requires: @LIBCURL_PC_REQUIRES@
Requires.private: @LIBCURL_PC_REQUIRES_PRIVATE@
Libs: -L${libdir} -lcurl @LIBCURL_PC_LIBS@
@ -53,3 +53,4 @@ index c0ba5244a8..7898dae358 100644
+Libs.private: @LIBCURL_PC_LIBS_PRIVATE@
Cflags: -I${includedir} @LIBCURL_PC_CFLAGS@
Cflags.private: @LIBCURL_PC_CFLAGS_PRIVATE@
Link.ABI: c

View File

@ -1,5 +1,18 @@
#TODO create a standalone script: https://github.com/mesonbuild/meson#creating-a-standalone-script
#TODO compiled but not tested
[source]
tar = "https://github.com/mesonbuild/meson/releases/download/1.3.0/meson-1.3.0.tar.gz"
git = "https://github.com/mesonbuild/meson"
rev = "1.12.1"
shallow_clone = true
[build]
template = "custom"
template = "python"
dev-dependencies = [
"host:python312",
"python312",
"python3-setuptools",
]
[package]
dependencies = [
"python312",
]

View File

@ -1,7 +1,7 @@
# TODO: Not tested
[source]
tar = "https://www.python.org/ftp/python/3.15.0/Python-3.15.0a8.tar.xz"
blake3 = "b1e24434fc15b352b07222e44e6ff12ce14bbbe8535928a13123ee6a49fa6541"
tar = "https://www.python.org/ftp/python/3.15.2/Python-3.15.2.tar.xz"
blake3 = "be2eb5c42e774473b40d02c6c74839dec00b779ec24c593cb324b4f8c460acf4"
patches = [
"redox.patch"
]
@ -54,7 +54,7 @@ fi
cookbook_configure
# A same file to save 73MB
(cd "${COOKBOOK_STAGE}/usr/lib/python3.15/config-3.15" && \
(cd "${COOKBOOK_STAGE}/usr/lib/python3.15/config-3.15-${ARCH}-${OS}" && \
rm -f libpython3.15.a && ln -s ../../libpython3.15.a)
"""

View File

@ -1,7 +1,7 @@
diff -ruwN source/configure source-new/configure
--- source/configure 2026-04-07 18:24:03.000000000 +0700
+++ source-new/configure 2026-05-07 12:19:48.765197728 +0700
@@ -4163,6 +4163,9 @@
--- source/configure 2026-10-25 16:57:51.000000000 +0000
+++ source-new/configure 2026-11-02 05:14:13.172455982 +0000
@@ -4178,6 +4178,9 @@
*-*-wasi*)
ac_sys_system=WASI
;;
@ -11,7 +11,7 @@ diff -ruwN source/configure source-new/configure
*)
# for now, limit cross builds to known configurations
MACHDEP="unknown"
@@ -4189,6 +4192,7 @@
@@ -4204,6 +4207,7 @@
freebsd*) MACHDEP="freebsd";;
linux-android*) MACHDEP="android";;
linux*) MACHDEP="linux";;
@ -19,7 +19,7 @@ diff -ruwN source/configure source-new/configure
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
'') MACHDEP="unknown";;
@@ -4615,7 +4619,7 @@
@@ -4630,7 +4634,7 @@
if test "$cross_compiling" = yes; then
case "$host" in
@ -28,7 +28,7 @@ diff -ruwN source/configure source-new/configure
case "$host_cpu" in
arm*)
_host_ident=arm
@@ -7771,7 +7775,7 @@
@@ -7813,7 +7817,7 @@
PY3LIBRARY=libpython3.so
fi
;;
@ -37,7 +37,7 @@ diff -ruwN source/configure source-new/configure
LDLIBRARY='libpython$(LDVERSION).so'
BLDLIBRARY='-L. -lpython$(LDVERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
@@ -13777,7 +13781,7 @@
@@ -14234,7 +14238,7 @@
Emscripten*|WASI*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
@ -46,7 +46,7 @@ diff -ruwN source/configure source-new/configure
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
FreeBSD*)
@@ -13862,7 +13866,7 @@
@@ -14319,7 +14323,7 @@
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
@ -55,7 +55,7 @@ diff -ruwN source/configure source-new/configure
Emscripten*|WASI*)
if test "x$enable_wasm_dynamic_linking" = xyes
then :
@@ -13900,7 +13904,7 @@
@@ -14357,7 +14361,7 @@
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";;
@ -65,8 +65,8 @@ diff -ruwN source/configure source-new/configure
Darwin/*|iOS/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
diff -ruwN source/Include/internal/pycore_time.h source-new/Include/internal/pycore_time.h
--- source/Include/internal/pycore_time.h 2026-04-07 18:24:03.000000000 +0700
+++ source-new/Include/internal/pycore_time.h 2026-05-07 12:55:06.797297037 +0700
--- source/Include/internal/pycore_time.h 2026-10-25 16:57:51.000000000 +0000
+++ source-new/Include/internal/pycore_time.h 2026-11-02 05:14:13.172455982 +0000
@@ -49,6 +49,10 @@
#ifndef Py_INTERNAL_TIME_H
@ -79,9 +79,9 @@ diff -ruwN source/Include/internal/pycore_time.h source-new/Include/internal/pyc
extern "C" {
#endif
diff -ruwN source/Include/pyport.h source-new/Include/pyport.h
--- source/Include/pyport.h 2026-04-07 18:24:03.000000000 +0700
+++ source-new/Include/pyport.h 2026-05-07 12:16:56.305047939 +0700
@@ -541,7 +541,7 @@
--- source/Include/pyport.h 2026-10-25 16:57:51.000000000 +0000
+++ source-new/Include/pyport.h 2026-11-02 05:14:13.173456040 +0000
@@ -502,7 +502,7 @@
# endif
#endif
@ -91,9 +91,9 @@ diff -ruwN source/Include/pyport.h source-new/Include/pyport.h
// See _Py_GetLocaleEncoding(), PyUnicode_DecodeLocale()
// and PyUnicode_EncodeLocale().
diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c
--- source/Modules/posixmodule.c 2026-04-07 18:24:03.000000000 +0700
+++ source-new/Modules/posixmodule.c 2026-05-07 12:57:16.208883903 +0700
@@ -11253,7 +11253,7 @@
--- source/Modules/posixmodule.c 2026-10-25 16:57:51.000000000 +0000
+++ source-new/Modules/posixmodule.c 2026-11-02 05:14:13.174456099 +0000
@@ -11340,7 +11340,7 @@
struct tms process;
clock_t elapsed;
errno = 0;
@ -103,8 +103,8 @@ diff -ruwN source/Modules/posixmodule.c source-new/Modules/posixmodule.c
return posix_error();
}
diff -ruwN source/Modules/resource.c source-new/Modules/resource.c
--- source/Modules/resource.c 2026-04-07 18:24:03.000000000 +0700
+++ source-new/Modules/resource.c 2026-05-07 12:16:56.305184305 +0700
--- source/Modules/resource.c 2026-10-25 16:57:51.000000000 +0000
+++ source-new/Modules/resource.c 2026-11-02 05:14:13.174456099 +0000
@@ -245,7 +245,7 @@
{
struct rlimit rl;

View File

@ -0,0 +1,44 @@
# TODO: need j1 relibc function
[source]
tar = "https://ffmpeg.org/releases/ffmpeg-9.0.2.tar.xz"
patches = [
"redox.patch"
]
[build]
template = "custom"
dependencies = [
"liborbital",
"mesa",
"sdl2",
"zlib",
]
dev-dependencies = [
"libstdcxx"
]
compiler = "gcc-no-lto"
script = """
DYNAMIC_INIT
export LDFLAGS="$LDFLAGS -lSDL2 -lorbital -lOSMesa"
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-pic
--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"
"""

View File

@ -0,0 +1,13 @@
diff -ruwN source/configure source-new/configure
--- source/configure 2026-08-03 22:14:47.000000000 +0000
+++ source-new/configure 2026-11-02 10:38:23.591367435 +0000
@@ -6377,6 +6377,9 @@
;;
minix)
;;
+ redox)
+ enable section_data_rel_ro
+ ;;
none)
;;
*)

View File

@ -170,11 +170,10 @@ pub fn init_config() {
config.cook_opt.git_treeless = Some(extract_env("COOKBOOK_GIT_TREELESS", false));
}
if config.cook_opt.verbose.is_none() {
let default = config.cook_opt.logs.unwrap();
config.cook_opt.verbose = Some(extract_env("COOKBOOK_VERBOSE", default));
config.cook_opt.verbose = Some(extract_env("COOKBOOK_VERBOSE", true));
}
if config.cook_opt.verbose_cmd.is_none() {
config.cook_opt.verbose_cmd = Some(extract_env("COOKBOOK_VERBOSE_CMD", true));
config.cook_opt.verbose_cmd = Some(extract_env("COOKBOOK_VERBOSE_CMD", false));
}
if config.cook_opt.nonstop.is_none() {
config.cook_opt.nonstop = Some(extract_env("COOKBOOK_NONSTOP", false));
@ -314,7 +313,7 @@ mod tests {
compressed: false,
git_treeless: false,
verbose: true,
verbose_cmd: true,
verbose_cmd: false,
clean_build: false,
clean_target: false,
write_filetree: false

View File

@ -276,9 +276,21 @@ pub fn build(
};
let have_toolchain = !name.is_host() && !dep_host_pkgars.is_empty();
let (sysroot_cached, toolchain_cached) = (
build_deps_dir(logger, &sysroot_dir, deps_sysroot)?,
build_deps_dir(
logger,
&sysroot_dir,
deps_sysroot,
false,
cook_config.clean_target,
)?,
if have_toolchain {
build_deps_dir(logger, &toolchain_dir, &dep_host_pkgars)?
build_deps_dir(
logger,
&toolchain_dir,
&dep_host_pkgars,
false,
cook_config.clean_target,
)?
} else {
true
},
@ -301,14 +313,12 @@ pub fn build(
remove_stage_dir(stage_dir)?;
}
if cook_config.clean_target {
// no matter what, these two caches are invalid
// both caches are invalid without init tag
if sysroot_cached {
fs::remove_all(&sysroot_dir)?;
build_deps_dir(logger, &sysroot_dir, deps_sysroot)?;
build_deps_dir(logger, &sysroot_dir, deps_sysroot, true, true)?;
}
if toolchain_cached && have_toolchain {
fs::remove_all(&toolchain_dir)?;
build_deps_dir(logger, &toolchain_dir, &dep_host_pkgars)?;
build_deps_dir(logger, &toolchain_dir, &dep_host_pkgars, true, true)?;
}
}
} else {
@ -485,8 +495,15 @@ pub fn build(
}
};
command.env("COOKBOOK_MAKE_JOBS", cli_jobs.to_string());
if cook_config.verbose {
command.env("COOKBOOK_VERBOSE", "true");
} else {
command.env_remove("COOKBOOK_VERBOSE");
}
if cook_config.verbose_cmd {
command.env("COOKBOOK_VERBOSE", "1");
command.env("COOKBOOK_VERBOSE_CMD", "true");
} else {
command.env_remove("COOKBOOK_VERBOSE_CMD");
}
if cook_config.offline && allow_cargo_offline {
command.env("COOKBOOK_OFFLINE", "1");
@ -627,6 +644,8 @@ fn build_deps_dir(
logger: &PtyOut,
deps_dir: &PathBuf,
dep_pkgars: &BTreeSet<(PackageName, PathBuf)>,
check_init_tag: bool,
write_init_tag: bool,
) -> Result<bool> {
let pkey_path = "build/id_ed25519.pub.toml";
let pkey_file = match PublicKeyFile::open(pkey_path) {
@ -675,7 +694,12 @@ fn build_deps_dir(
}
}
}
if cached {
if cached
&& (!check_init_tag || {
let init_tag_file = deps_dir.join(".tags-init");
std::fs::exists(&init_tag_file).unwrap_or(false)
})
{
return Ok(true);
}
fs::remove_all(deps_dir)?;
@ -705,6 +729,13 @@ fn build_deps_dir(
std::fs::write(&tag_file, hash.as_bytes()).map_err(wrap_io_err!("Writing tag"))?;
}
if write_init_tag {
let init_tag_file = deps_dir_tmp.join(".tags-init");
// this file is used to prevent removing deps dir when clean_target
// is enabled, then clean_deps_dir will remove the tag after build.
std::fs::write(init_tag_file, "").map_err(wrap_io_err!("Writing init tag"))?;
}
// Move sysroot.tmp to sysroot atomically
fs::rename(&deps_dir_tmp, deps_dir)?;

View File

@ -64,6 +64,9 @@ pub fn package(
}
if !package_file.is_file() {
if cook_config.compressed && cook_config.verbose {
log_to_pty!(logger, "DEBUG: compressing '{}'", package_file.display());
}
pkgar::create_with_flags(
secret_path,
package_file.to_str().unwrap(),

View File

@ -83,6 +83,16 @@ function DYNAMIC_STATIC_INIT {
function GNU_CONFIG_GET {
wget -O "$1" "https://gitlab.redox-os.org/redox-os/gnu-config/-/raw/master/config.sub?inline=false"
}
# Bash error hook
error_hook() {
local ec=$?;
echo "Cookbook error : failed at line $1 with code $ec" >&2;
echo "Error command : $BASH_COMMAND" >&2;
[ -z "${COOKBOOK_VERBOSE_CMD}" ] && echo "Add 'export COOKBOOK_VERBOSE_CMD=1' in .config to see more" >&2;
exit "$ec";
}
trap 'error_hook $LINENO' ERR
"#;
pub(crate) static BUILD_PRESCRIPT: &str = r#"
@ -215,6 +225,17 @@ COOKBOOK_CONFIGURE_FLAGS=(
--enable-static
)
COOKBOOK_MAKE_FLAGS=()
if [ -n "${COOKBOOK_VERBOSE_CMD}" ]; then
COOKBOOK_MAKE_FLAGS+=(V=1)
else
COOKBOOK_MAKE_FLAGS+=(V=0)
fi
COOKBOOK_NINJA_FLAGS=()
if [ -n "${COOKBOOK_VERBOSE_CMD}" ]; then
COOKBOOK_NINJA_FLAGS+=(--verbose)
fi
COOKBOOK_MAKE="make"
function cookbook_configure {
@ -320,7 +341,7 @@ function cookbook_cmake {
"${COOKBOOK_CMAKE_FLAGS[@]}" \
"$@"
"${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}"
"${COOKBOOK_NINJA}" "${COOKBOOK_NINJA_FLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}"
DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}"
}
@ -381,7 +402,7 @@ function cookbook_meson {
--cross-file cross_file.txt \
"${COOKBOOK_MESON_FLAGS[@]}" \
"$@"
"${COOKBOOK_NINJA}" -j"${COOKBOOK_MAKE_JOBS}"
"${COOKBOOK_NINJA}" "${COOKBOOK_NINJA_FLAGS[@]}" -j"${COOKBOOK_MAKE_JOBS}"
DESTDIR="${COOKBOOK_STAGE}" "${COOKBOOK_NINJA}" install -j"${COOKBOOK_MAKE_JOBS}"
}
COOKBOOK_PYTHON="${COOKBOOK_TOOLCHAIN}/bin/python3"
@ -416,16 +437,38 @@ function cookbook_python {
pub(crate) static BUILD_POSTSCRIPT: &str = r#"
STRIP="${GNU_TARGET}-strip"
STRIP_ARGS=""
if [ -n "${COOKBOOK_VERBOSE_CMD}" ]; then
STRIP_ARGS="-v"
fi
if [[ "$REDOXER_USE_CLANG" = "1" || "$REDOXER_USE_CLANG" = "true" ]]; then
STRIP="llvm-strip"
STRIP_ARGS="--verbose"
# clang 21 does not support verbose flag, only 23 or above
# [ -n "${COOKBOOK_VERBOSE_CMD}" ] && STRIP_ARGS="--verbose"
elif [[ "$REDOXER_USE_LTO" = "1" || "$REDOXER_USE_LTO" = "true" ]]; then
GCC_BIN=$(command -v "${GNU_TARGET}-gcc")
GCC_VER=$("${GNU_TARGET}-gcc" -dumpfullversion)
PLUGIN_PATH=$(realpath "$(dirname "$GCC_BIN")/../libexec/gcc/${GNU_TARGET}/${GCC_VER}/liblto_plugin.so")
[ -f "$PLUGIN_PATH" ] && STRIP_ARGS="--plugin=${PLUGIN_PATH} -v" || echo "DEBUG: $PLUGIN_PATH not found"
# binutils 2.41 does not support strip plugins, only 2.44 or above
# [ -f "$PLUGIN_PATH" ] && STRIP_ARGS="--plugin=${PLUGIN_PATH} -v" || echo "DEBUG: $PLUGIN_PATH not found"
fi
strip_directory() {
local target_dir="$1"
local strip_cmd="${STRIP}"
local strip_flags="${STRIP_ARGS:-}"
find "$target_dir" -type f -print0 | while IFS= read -r -d '' file; do
# check magic bytes for elf and ar before stripping
local magic_bytes="$(od -An -t x1 -N 4 "$file" | tr -d ' \n')"
if [[ "$magic_bytes" = "7f454c46" || "$magic_bytes" = "213c6172" ]]; then
"${STRIP}" ${STRIP_ARGS} "$file"
fi
done
}
if [ -z "${COOKBOOK_NOSTRIP}" ]; then
[ -z "${COOKBOOK_VERBOSE}" ] || echo "DEBUG: stripping binaries and libraries"
fi
# Strip binaries
@ -433,10 +476,12 @@ for dir in "${COOKBOOK_STAGE}/bin" "${COOKBOOK_STAGE}/usr/bin" "${COOKBOOK_STAGE
do
if [ -d "${dir}" ] && [ -z "${COOKBOOK_NOSTRIP}" ]
then
find "${dir}" -type f -exec "${STRIP}" ${STRIP_ARGS} {} ';'
strip_directory "${dir}"
fi
done
# do not strip symbols for libraries
STRIP_ARGS+=" --strip-debug"
# Remove libtool files and strip debugging information
for dir in "${COOKBOOK_STAGE}/lib" "${COOKBOOK_STAGE}/usr/lib"
do
@ -445,7 +490,7 @@ do
find "${dir}" -type f -name '*.la' -exec rm -fv {} ';'
if [ -z "${COOKBOOK_NOSTRIP}" ]
then
find "${dir}" -type f -exec "${STRIP}" ${STRIP_ARGS} --strip-debug {} ';'
strip_directory "${dir}"
fi
fi
done