Add bash 2.05b

This commit is contained in:
fosslinux 2021-01-15 12:19:43 +11:00
parent e0d72a85b2
commit c1454a5db6
12 changed files with 293 additions and 2 deletions

View File

@ -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

View File

@ -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 ..

View File

@ -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

53
sysa/bash-2.05b-common.mk Normal file
View File

@ -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

31
sysa/bash-2.05b.kaem Executable file
View File

@ -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

84
sysa/bash-2.05b.mk Normal file
View File

@ -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

View File

@ -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 ();

View File

@ -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"

View File

@ -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) */

View File

@ -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 \
{ \

View File

@ -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;
}

View File

@ -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';