diff --git a/mk/prefix.mk b/mk/prefix.mk index 7464dbd2..50ba5c1d 100644 --- a/mk/prefix.mk +++ b/mk/prefix.mk @@ -49,7 +49,7 @@ endif static_clean: | $(FSTOOLS_TAG) $(MAKE) c.relibc $(MAKE) c.base,extrautils,kernel,redoxfs - $(MAKE) c.bash,luajit,gettext,libgcc,libstdcxx,openssl1,openssl3,pcre2,sdl1,zstd,zlib,bzip2,xz + $(MAKE) c.luajit,gettext,libgcc,libstdcxx,openssl1,openssl3,pcre2,sdl1,zstd,zlib,bzip2,xz $(MAKE) c.expat,freetype2,libffi,libiconv,libjpeg,liborbital,libpng,libxml2,ncurses,ncursesw,termcap rm -rf $(REPO_TAG) diff --git a/recipes/terminal/bash/recipe.toml b/recipes/terminal/bash/recipe.toml index fd0fdca4..b1f013ee 100644 --- a/recipes/terminal/bash/recipe.toml +++ b/recipes/terminal/bash/recipe.toml @@ -1,23 +1,22 @@ [source] -tar = "https://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gz" -blake3 = "c1548e3f2a9b6de5296e18c28b3d2007985e647273e03f039efd3e489edaa41f" -patches = [ - "redox.patch" -] +tar = "https://ftp.gnu.org/gnu/bash/bash-5.3.tar.gz" [build] template = "custom" dependencies = [ - "termcap", + "readline", ] script = """ -# compiled statically +DYNAMIC_INIT COOKBOOK_CONFIGURE_FLAGS+=( bash_cv_func_sigsetjmp=no + ac_cv_func_getrlimit=no + ac_cv_func_dlopen=no + ac_cv_func_dlclose=no bash_cv_getenv_redef=no - --enable-static-link # This ensures loadables are not built, which will fail + --with-bash-malloc=no + --with-installed-readline=yes ) -COOKBOOK_MAKE_JOBS=1 # workaround for parallel make bugs cookbook_configure ln -s "bash" "${COOKBOOK_STAGE}/usr/bin/sh" cp -r "${COOKBOOK_RECIPE}/etc" "${COOKBOOK_STAGE}/etc" diff --git a/recipes/terminal/bash/redox.patch b/recipes/terminal/bash/redox.patch deleted file mode 100644 index ec6ab8d4..00000000 --- a/recipes/terminal/bash/redox.patch +++ /dev/null @@ -1,258 +0,0 @@ -diff -ruwN source/bashline.c source-new/bashline.c ---- source/bashline.c 2022-04-18 05:37:12.000000000 +0700 -+++ source-new/bashline.c 2025-09-01 04:36:35.272926519 +0700 -@@ -2645,7 +2645,7 @@ - const char *text; - int state; - { --#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) -+#if defined (__WIN32__) || defined (__OPENNT) || !defined (HAVE_GRP_H) || defined(__redox__) - return ((char *)NULL); - #else - static char *gname = (char *)NULL; -diff -ruwN source/builtins/ulimit.def source-new/builtins/ulimit.def ---- source/builtins/ulimit.def 2021-11-05 20:19:53.000000000 +0700 -+++ source-new/builtins/ulimit.def 2025-09-01 04:36:35.272926519 +0700 -@@ -609,7 +609,7 @@ - } - else - { --#if defined (HAVE_RESOURCE) -+#if defined (HAVE_RESOURCE) && !defined(__redox__) - if (getrlimit (limits[ind].parameter, &limit) < 0) - return -1; - # if defined (HPUX9) -diff -ruwN source/config-top.h source-new/config-top.h ---- source/config-top.h 2021-11-05 20:11:12.000000000 +0700 -+++ source-new/config-top.h 2025-09-19 21:55:55.439030906 +0700 -@@ -199,3 +199,6 @@ - /* Undefine or define to 0 if you don't want to allow associative array - assignment using a compound list of key-value pairs. */ - #define ASSOC_KVPAIR_ASSIGNMENT 1 -+ -+/* Don't check for a valid inode number when pattern matching on Redox */ -+#define BROKEN_DIRENT_D_INO 1 -diff -ruwN source/configure source-new/configure ---- source/configure 2022-09-23 21:13:22.000000000 +0700 -+++ source-new/configure 2025-09-01 04:52:47.542177017 +0700 -@@ -3298,6 +3298,7 @@ - *-nsk*) opt_bash_malloc=no ;; # HP NonStop - *-haiku*) opt_bash_malloc=no ;; # Haiku OS - *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk -+*-redox*) opt_bash_malloc=no ;; # Redox OS - esac - - # memory scrambling on free() -diff -ruwN source/configure.ac source-new/configure.ac ---- source/configure.ac 2022-09-23 21:12:27.000000000 +0700 -+++ source-new/configure.ac 2025-09-01 04:36:35.275926660 +0700 -@@ -92,6 +92,7 @@ - *-nsk*) opt_bash_malloc=no ;; # HP NonStop - *-haiku*) opt_bash_malloc=no ;; # Haiku OS - *-genode*) opt_bash_malloc=no ;; # Genode has no sbrk -+*-redox*) opt_bash_malloc=no ;; # Redox OS - esac - - # memory scrambling on free() -diff -ruwN source/execute_cmd.c source-new/execute_cmd.c ---- source/execute_cmd.c 2022-12-14 00:09:02.000000000 +0700 -+++ source-new/execute_cmd.c 2025-09-01 04:36:35.275926660 +0700 -@@ -1379,11 +1379,11 @@ - nullcmd = (command == 0) || (command->type == cm_simple && command->value.Simple->words == 0 && command->value.Simple->redirects == 0); - if (posixly_correct && nullcmd) - { --#if defined (HAVE_GETRUSAGE) -+#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY) - selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0; - selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0; - before = shellstart; --#else -+#elif defined (HAVE_TIMES) - before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0; - tbefore = shell_start_time; - #endif -diff -ruwN source/general.c source-new/general.c ---- source/general.c 2022-11-24 05:10:12.000000000 +0700 -+++ source-new/general.c 2025-09-19 17:09:24.754782168 +0700 -@@ -589,6 +589,7 @@ - void - check_dev_tty () - { -+#if !defined(__redox__) - int tty_fd; - char *tty; - -@@ -603,6 +604,7 @@ - } - if (tty_fd >= 0) - close (tty_fd); -+#endif - } - - /* Return 1 if PATH1 and PATH2 are the same file. This is kind of -diff -ruwN source/include/posixwait.h source-new/include/posixwait.h ---- source/include/posixwait.h 2019-03-30 00:25:52.000000000 +0700 -+++ source-new/include/posixwait.h 2025-09-01 04:36:35.276926707 +0700 -@@ -34,7 +34,7 @@ - - /* How to get the status of a job. For Posix, this is just an - int, but for other systems we have to crack the union wait. */ --#if !defined (_POSIX_VERSION) -+#if 0 - typedef union wait WAIT; - # define WSTATUS(t) (t.w_status) - #else /* _POSIX_VERSION */ -@@ -50,7 +50,7 @@ - - /* More Posix P1003.1 definitions. In the POSIX versions, the parameter is - passed as an `int', in the non-POSIX version, as `union wait'. */ --#if defined (_POSIX_VERSION) -+#if 1 - - # if !defined (WSTOPSIG) - # define WSTOPSIG(s) ((s) >> 8) -diff -ruwN source/include/timer.h source-new/include/timer.h ---- source/include/timer.h 2021-03-09 04:30:55.000000000 +0700 -+++ source-new/include/timer.h 2026-05-13 08:32:53.062805289 +0700 -@@ -22,6 +22,7 @@ - #include "config.h" - #endif - -+#include - #include "bashjmp.h" - typedef struct _shtimer - { -diff -ruwN source/jobs.c source-new/jobs.c ---- source/jobs.c 2022-12-14 00:09:02.000000000 +0700 -+++ source-new/jobs.c 2026-02-09 23:29:28.811403291 +0700 -@@ -4417,9 +4417,11 @@ - { - shell_pgrp = getpid (); - setpgid (0, shell_pgrp); -+ } -+ -+ // shell pgrep is not set automatically on Redox - if (shell_tty != -1) - tcsetpgrp (shell_tty, shell_pgrp); -- } - - tty_sigs = 0; - while ((terminal_pgrp = tcgetpgrp (shell_tty)) != -1) -diff -ruwN source/lib/readline/input.c source-new/lib/readline/input.c ---- source/lib/readline/input.c 2022-04-09 02:43:24.000000000 +0700 -+++ source-new/lib/readline/input.c 2025-09-01 04:36:35.276926707 +0700 -@@ -805,7 +805,7 @@ - int result; - unsigned char c; - int fd; --#if defined (HAVE_PSELECT) -+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) - sigset_t empty_set; - fd_set readfds; - #endif -diff -ruwN source/lib/readline/terminal.c source-new/lib/readline/terminal.c ---- source/lib/readline/terminal.c 2022-04-05 21:44:17.000000000 +0700 -+++ source-new/lib/readline/terminal.c 2025-09-01 04:36:35.286927174 +0700 -@@ -102,7 +102,7 @@ - - static int tcap_initialized; - --#if !defined (__linux__) && !defined (NCURSES_VERSION) -+#if !defined (__linux__) && !defined (NCURSES_VERSION) && !defined (__redox__) - # if defined (__EMX__) || defined (NEED_EXTERN_PC) - extern - # endif /* __EMX__ || NEED_EXTERN_PC */ -diff -ruwN source/lib/sh/getcwd.c source-new/lib/sh/getcwd.c ---- source/lib/sh/getcwd.c 2012-03-10 22:48:50.000000000 +0700 -+++ source-new/lib/sh/getcwd.c 2025-09-01 04:36:35.286927174 +0700 -@@ -20,7 +20,7 @@ - - #include - --#if !defined (HAVE_GETCWD) -+#if !defined (HAVE_GETCWD) && !defined(__redox__) - - #if !defined (__GNUC__) && !defined (HAVE_ALLOCA_H) && defined (_AIX) - #pragma alloca -diff -ruwN source/lib/sh/input_avail.c source-new/lib/sh/input_avail.c ---- source/lib/sh/input_avail.c 2021-05-24 22:16:33.000000000 +0700 -+++ source-new/lib/sh/input_avail.c 2025-09-01 04:36:35.298927735 +0700 -@@ -33,7 +33,7 @@ - # include - #endif /* HAVE_SYS_FILE_H */ - --#if defined (HAVE_PSELECT) -+#if defined (HAVE_PSELECT) || defined (HAVE_SELECT) - # include - #endif - -diff -ruwN source/lib/sh/random.c source-new/lib/sh/random.c ---- source/lib/sh/random.c 2020-05-30 01:21:10.000000000 +0700 -+++ source-new/lib/sh/random.c 2026-05-13 08:34:01.486529163 +0700 -@@ -32,6 +32,7 @@ - #include "filecntl.h" - - #include -+#include - #include "bashansi.h" - - #include "shell.h" -diff -ruwN source/lib/sh/strtoimax.c source-new/lib/sh/strtoimax.c ---- source/lib/sh/strtoimax.c 2021-09-10 21:32:35.000000000 +0700 -+++ source-new/lib/sh/strtoimax.c 2025-09-01 04:36:35.301927876 +0700 -@@ -55,6 +55,8 @@ - extern long long strtoll PARAMS((const char *, char **, int)); - #endif - -+#if !defined (__redox__) -+ - #ifdef strtoimax - #undef strtoimax - #endif -@@ -79,6 +81,8 @@ - return (strtol (ptr, endptr, base)); - } - -+#endif -+ - #ifdef TESTING - # include - int -diff -ruwN source/parse.y source-new/parse.y ---- source/parse.y 2022-12-14 00:09:02.000000000 +0700 -+++ source-new/parse.y 2025-09-01 04:36:35.302927923 +0700 -@@ -2625,6 +2625,7 @@ - parser_state |= PST_ENDALIAS; - /* We need to do this to make sure last_shell_getc_is_singlebyte returns - true, since we are returning a single-byte space. */ -+#if defined (HANDLE_MULTIBYTE) - if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) - { - #if 0 -@@ -2638,6 +2639,7 @@ - shell_input_line_property[shell_input_line_index - 1] = 1; - #endif - } -+#endif /* HANDLE_MULTIBYTE */ - return ' '; /* END_ALIAS */ - } - #endif -diff -ruwN source/y.tab.c source-new/y.tab.c ---- source/y.tab.c 2022-12-14 00:09:02.000000000 +0700 -+++ source-new/y.tab.c 2025-09-01 04:36:35.307928157 +0700 -@@ -4936,6 +4936,7 @@ - parser_state |= PST_ENDALIAS; - /* We need to do this to make sure last_shell_getc_is_singlebyte returns - true, since we are returning a single-byte space. */ -+#if defined (HANDLE_MULTIBYTE) - if (shell_input_line_index == shell_input_line_len && last_shell_getc_is_singlebyte == 0) - { - #if 0 -@@ -4949,6 +4950,7 @@ - shell_input_line_property[shell_input_line_index - 1] = 1; - #endif - } -+#endif /* HANDLE_MULTIBYTE */ - return ' '; /* END_ALIAS */ - } - #endif