commit: c1454a5db6b56ef5b0c90511adddfec2f3211d73
parent e0d72a85b24b9708766eae67f6e0c1a5090c1e12
Author: fosslinux <fosslinux@aussies.space>
Date: Fri, 15 Jan 2021 12:19:43 +1100
Add bash 2.05b
Diffstat:
12 files changed, 293 insertions(+), 2 deletions(-)
diff --git a/rootfs.sh b/rootfs.sh
@@ -133,6 +133,9 @@ get_file https://ftp.gnu.org/gnu/make/make-3.80.tar.gz
# bzip2 1.0.8
get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
+# bash 2.05b
+get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
+
# m4 1.4
get_file https://ftp.gnu.org/gnu/m4/m4-1.4.tar.gz
diff --git a/sysa/after.kaem.run b/sysa/after.kaem.run
@@ -97,9 +97,15 @@ cd bzip2-1.0.8
kaem --file ../bzip2-1.0.8.kaem
cd ..
-# Part 15: m4
+# Part 15: bash
+/after/bin/gunzip bash-2.05b.tar.gz
+/after/bin/tar xf bash-2.05b.tar
+cd bash-2.05b
+kaem --file ../bash-2.05b.kaem
+cd ..
+
+# Part 16: m4
/after/bin/gunzip m4-1.4.tar.gz
/after/bin/tar xf m4-1.4.tar
cd m4-1.4
kaem --file ../m4-1.4.kaem
-cd ..
diff --git a/sysa/bash-2.05b-builtins.mk b/sysa/bash-2.05b-builtins.mk
@@ -0,0 +1,23 @@
+.SUFFIXES = .def
+
+include ../common.mk
+
+CFLAGS = \
+ -I. \
+ -I.. \
+ -I../include \
+ -I../lib \
+ $(COMMON_CFLAGS)
+
+BUILTINS_DEFS = $(addsuffix .def, $(BUILTINS_DEF_FILES))
+BUILTINS_DEF_OBJS = $(addsuffix .o, $(BUILTINS_DEF_FILES))
+BUILTINS_STATIC_FILES = common evalstring evalfile getopt bashgetopt
+BUILTINS_STATIC_OBJS = $(addsuffix .o, $(BUILTINS_STATIC_FILES))
+BUILTINS_OBJS = $(BUILTINS_DEF_OBJS) $(BUILTINS_STATIC_OBJS)
+
+%.o: %.def
+ ../mkbuiltins $<
+ $(CC) -c $(CFLAGS) -o $@ $*.c
+
+libbuiltins.a: $(BUILTINS_OBJS) builtins.o
+ $(AR) cr $@ $(BUILTINS_OBJS) builtins.o
diff --git a/sysa/bash-2.05b-common.mk b/sysa/bash-2.05b-common.mk
@@ -0,0 +1,53 @@
+CC = tcc
+LD = tcc
+AR = tcc -ar
+
+COMMON_CFLAGS = \
+ -DHAVE_DIRENT_H \
+ -DSTRUCT_DIRENT_HAS_D_INO \
+ -DHAVE_STDINT_H \
+ -DHAVE_LIMITS_H \
+ -DHAVE_STRING_H \
+ -DHAVE_INTTYPES_H \
+ -DRETSIGTYPE=void \
+ -DHUGE_VAL=10000000000.0 \
+ -DTERMIO_TTY_DRIVER \
+ -DPREFER_STDARG \
+ -DHAVE_DECL_STRTOL \
+ -DHAVE_DECL_STRTOLL \
+ -DHAVE_DECL_STRTOUL \
+ -DHAVE_DECL_STRTOULL \
+ -DHAVE_TZNAME \
+ -DPIPESIZE=4096 \
+ -DDEFAULT_PATH_VALUE=\"/after/bin\" \
+ -DSTANDARD_UTILS_PATH=\"/after/bin\" \
+ -DPPROMPT=\"$ \" \
+ -DSPROMPT=\"$ \" \
+ -DCONF_MACHTYPE=\"bootstrap\" \
+ -DGETGROUPS_T=int \
+ -DCOND_COMMAND \
+ -DCONF_HOSTTYPE=\"i386\" \
+ -DCONF_OSTYPE=\"linux\" \
+ -DDEFAULT_MAIL_DIRECTORY=\"/fake-mail\" \
+ -DVOID_SIGHANDLER \
+ -DDISTVERSION=\"2.05b\" \
+ -DBUILDVERSION=\"0\" \
+ -DSCCSVERSION=\"2.05b\" \
+ -DLC_ALL=\"C\" \
+ -DHAVE_STRERROR \
+ -DHAVE_MEMSET \
+ -DHAVE_DUP2 \
+ -DHAVE_STRTOUL \
+ -DHAVE_STRTOULL \
+ -DHAVE_STRCHR \
+ -DHAVE_BCOPY \
+ -DHAVE_BZERO \
+ -DHAVE_POSIX_SIGNALS \
+ -DHAVE_GETCWD \
+ -Dendpwent\(x\)=0 \
+ -Denable_hostname_completion\(on_or_off\)=0
+
+BUILTINS_DEF_FILES = alias bind break builtin cd colon command complete declare \
+ echo enable eval exec exit fc fg_bg hash history jobs kill let read return \
+ set setattr shift source suspend test times trap type ulimit umask wait \
+ getopts pushd shopt printf
diff --git a/sysa/bash-2.05b.kaem b/sysa/bash-2.05b.kaem
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+set -ex
+
+# Variables
+bindir=/after/bin
+
+catm config.h
+catm include/version.h
+catm include/pipesize.h
+
+# Patch
+patch -Np0 -i ../patches/bash-2.05b/mes-libc.patch
+patch -Np0 -i ../patches/bash-2.05b/tinycc.patch
+patch -Np0 -i ../patches/bash-2.05b/missing-defines.patch
+patch -Np0 -i ../patches/bash-2.05b/locale.patch
+patch -Np0 -i ../patches/bash-2.05b/dev-tty.patch
+
+# Compile
+cp ../bash-2.05b.mk Makefile
+cp ../bash-2.05b-builtins.mk builtins/Makefile
+cp ../bash-2.05b-common.mk common.mk
+make mkbuiltins
+cd builtins
+make libbuiltins.a
+cd ..
+make
+
+# Install
+cp bash /after/bin/
+chmod 755 /after/bin/bash
diff --git a/sysa/bash-2.05b.mk b/sysa/bash-2.05b.mk
@@ -0,0 +1,84 @@
+include common.mk
+
+CFLAGS = \
+ -I. \
+ -Iinclude \
+ -Ilib \
+ -Ilib/sh \
+ -Ibuiltins \
+ $(COMMON_CFLAGS)
+
+LDFLAGS = -L. -Lbuiltins
+LIBRARIES = libsh.a builtins/libbuiltins.a libglob.a libtilde.a
+
+SHLIB_FILES = clktck getcwd getenv oslib setlinebuf strcasecmp strerror strtod \
+ vprint itos rename zread zwrite shtty inet_aton netopen \
+ strpbrk timeval clock makepath pathcanon pathphys stringlist stringvec \
+ tmpfile spell strtrans strindex shquote snprintf mailstat fmtulong \
+ fmtullong strtoll strtoull strtoimax strtoumax fmtumax netconn mktime \
+ strftime xstrchr zcatfd
+# FIXME: for some reason these don't get picked up correctly in the
+# final linking cmd
+SHLIB_ODD_FILES = zcatfd strtoumax spell pathphys
+SHLIB_OBJS = $(addprefix lib/sh/, $(addsuffix .o, $(SHLIB_FILES)))
+SHLIB_ODD_OBJS = $(addprefix lib/sh/, $(addsuffix .o, $(SHLIB_ODD_FILES)))
+
+MKBUILTINS_OBJS = builtins/mkbuiltins.o
+BUILTINS_DEFS = $(addprefix builtins/, $(addsuffix .def, $(BUILTINS_DEF_FILES)))
+
+GLOB_FILES = glob strmatch smatch xmbsrtowcs
+GLOB_OBJS = $(addprefix lib/glob/, $(addsuffix .o, $(GLOB_FILES)))
+
+TILDE_OBJS = lib/tilde/tilde.o
+
+MKSYNTAX_OBJS = mksyntax.o
+MKSIGNAMES_OBJS = support/mksignames.o
+
+FILES = shell eval y.tab general make_cmd print_cmd dispose_cmd execute_cmd \
+ variables copy_cmd error expr flags nojobs subst hashcmd hashlib mailcheck \
+ trap input unwind_prot pathexp sig test version alias array arrayfunc \
+ braces bracecomp bashhist bashline list stringlib locale findcmd redir \
+ pcomplete pcomplib syntax xmalloc siglist
+OBJS = $(addsuffix .o, $(FILES))
+
+all: bash
+
+# Builtins
+
+mkbuiltins: $(MKBUILTINS_OBJS)
+ $(CC) $(CFLAGS) $(MKBUILTINS_OBJS) $(LDFLAGS) -o $@
+ ./mkbuiltins -externfile builtins/builtext.h -structfile builtins/builtins.c -noproduction $(BUILTINS_DEFS)
+
+# libsh
+
+libsh.a: $(SHLIB_OBJS)
+ $(AR) cr $@ $(SHLIB_OBJS)
+
+# libglob
+
+libglob.a: $(GLOB_OBJS)
+ $(AR) cr $@ $(GLOB_OBJS)
+
+# libtilde
+
+libtilde.a: $(TILDE_OBJS)
+ $(AR) cr $@ $(TILDE_OBJS)
+
+# The actual program
+
+mksyntax: $(MKSYNTAX_OBJS)
+ $(CC) $(MKSYNTAX_OBJS) $(LDFLAGS) -o $@ -lgetopt
+
+syntax.c: mksyntax
+ ./mksyntax -o $@
+
+mksignames: $(MKSIGNAMES_OBJS)
+ $(CC) $(MKSIGNAMES_OBJS) $(LDFLAGS) -o $@ -lgetopt
+
+signames.h: mksignames
+ ./mksignames $@
+
+trap.c: signames.h
+
+bash: libsh.a libglob.a libtilde.a $(OBJS)
+ $(CC) -o bash $(LIBRARIES) $(OBJS) $(SHLIB_ODD_OBJS) $(LDFLAGS) -lsh -lbuiltins -lglob -ltilde
diff --git a/sysa/patches/bash-2.05b/dev-tty.patch b/sysa/patches/bash-2.05b/dev-tty.patch
@@ -0,0 +1,11 @@
+diff --color -ru shell.c
+--- shell.c 2002-07-02 01:27:11.000000000 +1000
++++ shell.c 2021-01-16 11:23:36.407287955 +1100
+@@ -342,8 +342,6 @@
+ # endif
+ #endif
+
+- check_dev_tty ();
+-
+ #ifdef __CYGWIN__
+ _cygwin32_check_tmp ();
diff --git a/sysa/patches/bash-2.05b/extern.patch b/sysa/patches/bash-2.05b/extern.patch
@@ -0,0 +1,12 @@
+--- builtins/common.c.bak 2021-01-15 21:32:56.938683418 +1100
++++ builtins/common.c 2021-01-15 21:34:09.102153806 +1100
+@@ -46,6 +46,9 @@
+ #include "../flags.h"
+ #include "../jobs.h"
+ #include "../builtins.h"
++int num_shell_builtins;
++struct builtin *shell_builtins;
++struct builtin *current_builtin;
+ #include "../input.h"
+ #include "../execute_cmd.h"
+ #include "../trap.h"
diff --git a/sysa/patches/bash-2.05b/locale.patch b/sysa/patches/bash-2.05b/locale.patch
@@ -0,0 +1,11 @@
+--- locale.c 2021-01-15 09:38:55.729307629 +1100
++++ locale.c 2021-01-15 11:19:01.929391346 +1100
+@@ -190,7 +190,7 @@
+ set_lang (var, value)
+ char *var, *value;
+ {
+- return ((lc_all == 0 || *lc_all == 0) ? setlocale (LC_ALL, value?value:"") != NULL : 0);
++ return 0;
+ }
+
+ /* Get the value of one of the locale variables (LC_MESSAGES, LC_CTYPE) */
diff --git a/sysa/patches/bash-2.05b/mes-libc.patch b/sysa/patches/bash-2.05b/mes-libc.patch
@@ -0,0 +1,13 @@
+diff --git lib/sh/snprintf.c lib/sh/snprintf.c
+index 7669576..747aeba 100644
+--- lib/sh/snprintf.c
++++ lib/sh/snprintf.c
+@@ -376,7 +376,7 @@ static void xfree __P((void *));
+ if ((p)->flags & PF_STAR_P) \
+ (p)->precision = GETARG (int)
+
+-#if defined (HAVE_LOCALE_H)
++#if 0
+ # define GETLOCALEDATA(d, t, g) \
+ do \
+ { \
diff --git a/sysa/patches/bash-2.05b/missing-defines.patch b/sysa/patches/bash-2.05b/missing-defines.patch
@@ -0,0 +1,21 @@
+--- ../bash-2.05b.bak/execute_cmd.c 2021-01-15 09:38:55.730307635 +1100
++++ execute_cmd.c 2021-01-15 09:43:41.046896754 +1100
+@@ -286,12 +286,18 @@
+ {
+ if (currently_executing_command->type == cm_simple)
+ return currently_executing_command->value.Simple->line;
++#ifdef COND_COMMAND
+ else if (currently_executing_command->type == cm_cond)
+ return currently_executing_command->value.Cond->line;
++#endif
++#ifdef DPAREN_ARITHMETIC
+ else if (currently_executing_command->type == cm_arith)
+ return currently_executing_command->value.Arith->line;
++#endif
++#ifdef ARITH_FOR_COMMAND
+ else if (currently_executing_command->type == cm_arith_for)
+ return currently_executing_command->value.ArithFor->line;
++#endif
+ else
+ return line_number;
+ }
diff --git a/sysa/patches/bash-2.05b/tinycc.patch b/sysa/patches/bash-2.05b/tinycc.patch
@@ -0,0 +1,23 @@
+diff --git lib/sh/oslib.c lib/sh/oslib.c
+index 90d7be9..37fdf2a 100644
+--- lib/sh/oslib.c
++++ lib/sh/oslib.c
+@@ -192,8 +192,7 @@ bzero (s, n)
+ # include <sys/utsname.h>
+ int
+ gethostname (name, namelen)
+- char *name;
+- int namelen;
++ char *name; int namelen;
+ {
+ int i;
+ struct utsname ut;
+@@ -209,7 +208,7 @@ gethostname (name, namelen)
+ # else /* !HAVE_UNAME */
+ int
+ gethostname (name, namelen)
+- int name, namelen;
++ char* name; int namelen;
+ {
+ strncpy (name, "unknown", namelen);
+ name[namelen] = '\0';