logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>
commit: 88f3b52c352651ad8e10b61d5802f8531dcb4869
parent e9c83134589dc1c9ac6b6116db6cc92eed225884
Author: fosslinux <fosslinux@aussies.space>
Date:   Sat,  6 Feb 2021 10:00:39 +1100

Merge pull request #29 from stikonas/flex

Add flex 2.6.4.

Diffstat:

MREADME.md36+++++++++++++++++++-----------------
Mrootfs.sh16++++++++--------
Msysa/after.kaem.run10++--------
Msysa/flex-2.5.11/flex-2.5.11.sh9+++------
Dsysa/flex-2.5.11/mk/main2.mk28----------------------------
Dsysa/flex-2.5.14/flex-2.5.14.sh6------
Dsysa/flex-2.5.14/mk/main.mk29-----------------------------
Dsysa/flex-2.5.14/src/.placeholder0
Asysa/flex-2.6.4/flex-2.6.4.sh23+++++++++++++++++++++++
Asysa/flex-2.6.4/mk/main.mk41+++++++++++++++++++++++++++++++++++++++++
Dsysa/grep-2.4/grep-2.4.kaem23-----------------------
Msysa/grep-2.4/mk/main.mk9++++++++-
Asysa/m4-1.4.4/mk/main.mk33+++++++++++++++++++++++++++++++++
Dsysa/m4-1.4/mk/main.mk31-------------------------------
Dsysa/m4-1.4/patches/signal-include.patch15---------------
Msysa/run.sh13++++++++-----
16 files changed, 145 insertions(+), 177 deletions(-)

diff --git a/README.md b/README.md @@ -240,17 +240,12 @@ GNU Coreutils is a collection of widely used utilities such as `cat`, `chmod`, ` A few of the utilities cannot be easily compiled with Mes C library, so we skip them. -#### Part 18: grep 2.4 - -GNU `grep` is a pattern matching utility. Is is not immediately needed but will -be useful later for autotools. - -#### Part 19: heirloom devtools +#### Part 18: heirloom devtools `lex` and `yacc` from the Heirloom project. The Heirloom project is a collection of standard UNIX utilities derived from code by Caldera and Sun. Differently from the analogous utilities from the GNU project, they can be compiled with a simple `Makefile`. -#### Part 20: bash 2.05b +#### Part 19: bash 2.05b GNU `bash` is the most well known shell and the most complex piece of software so far. However, it comes with a number of great benefits over kaem, including @@ -260,12 +255,12 @@ Bash ships with a bison pre-generated file here which we delete. Unfortunately, we have not bootstrapped bison but fortunately for us, heirloom yacc is able to cope here. -#### Part 21: m4 1.4 +#### Part 20: m4 1.4.4 -`m4` is the first piece of software we need in the autotools suite. It allows -macros to be defined and files to be generated from those macros. +`m4` is the first piece of software we need in the autotools suite and flex 2.6.4. +It allows macros to be defined and files to be generated from those macros. -#### Part 22: flex 2.5.11 +#### Part 21: flex 2.5.11 `flex` is a tool for generating lexers or scanners: programs that recognize lexical patters. @@ -274,11 +269,7 @@ first flex 2.5.11 is compiled, with its scanner definition manually modified so it can be processed by lex for the Heirloom project (the required modifications are mostly syntactical, plus a few workarounds to avoid some flex advanced features). -#### Part 23 flex 2.5.14 - -Then we recompile unpatched `flex` using its own lexer. - -#### Part 24 musl 1.1.24 +#### Part 22 musl 1.1.24 `musl` is a C standard library that is lightweight, fast, simple, free, and strives to be correct in the sense of standards-conformance and safety. `musl` is used by some distributions of GNU/Linux @@ -289,8 +280,19 @@ newer or more complex programs. we replace all weak symbols with strong symbols and will patch `tcc` in the next step to ignore duplicate symbols. -#### Part 25 tcc 0.9.27 (musl) +#### Part 23 tcc 0.9.27 (musl) We recompile `tcc` against musl. This is a two stage process. First we build tcc-0.9.27 that itself links to Mes C library but produces binaries linked to musl. Then we recompile newly produced tcc with itself. Interestingly, tcc-0.9.27 linked against musl is self hosting. + +#### Part 24 flex 2.6.14 + +We recompile unpatched GNU `flex` using older flex 2.5.11. This is again two stage process, +first compile flex using scanner generated by old flex, then recompile scan.l using the new version +of flex to remove any buggy artificats from the old flex. + +#### Part 25: grep 2.4 + +GNU `grep` is a pattern matching utility. Is is not immediately needed but will +be useful later for autotools. diff --git a/rootfs.sh b/rootfs.sh @@ -121,27 +121,27 @@ get_file ftp://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz 1 # coreutils 5.0 get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2 1 -# grep 2.4 -get_file https://ftp.gnu.org/gnu/grep/grep-2.4.tar.gz - # heirloom-devtools get_file http://downloads.sourceforge.net/project/heirloom/heirloom-devtools/070527/heirloom-devtools-070527.tar.bz2 # 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 +# m4 1.4.4 +get_file https://ftp.gnu.org/gnu/m4/m4-1.4.4.tar.gz # flex 2.5.11 get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.11.tar.gz -# flex 2.5.14 -get_file http://download.nust.na/pub2/openpkg1/sources/DST/flex/flex-2.5.14.tar.gz - # musl 1.1.24 get_file https://musl.libc.org/releases/musl-1.1.24.tar.gz +# flex 2.6.4 +get_file https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz + +# grep 2.4 +get_file https://ftp.gnu.org/gnu/grep/grep-2.4.tar.gz + # General cleanup find tmp -name .git -exec rm -rf \; diff --git a/sysa/after.kaem.run b/sysa/after.kaem.run @@ -129,19 +129,13 @@ cd ${pkg} kaem --file ${pkg}.kaem cd .. -# Part 18: grep -pkg="grep-2.4" -cd ${pkg} -kaem --file ${pkg}.kaem -cd .. - -# Part 19: heirloom-devtools +# Part 18: heirloom-devtools pkg="heirloom-devtools-070527" cd ${pkg} kaem --file ${pkg}.kaem cd .. -# Part 20: bash +# Part 19: bash pkg="bash-2.05b" cd ${pkg} kaem --file ${pkg}.kaem diff --git a/sysa/flex-2.5.11/flex-2.5.11.sh b/sysa/flex-2.5.11/flex-2.5.11.sh @@ -1,13 +1,10 @@ # When we rebuild flex it no longer needs patching # and can use simplified makefile src_prepare() { - if test -d /lex; then - default_src_prepare - else - cp ../../mk/main2.mk Makefile - fi + default_src_prepare + touch config.h - rm parse.c parse.h scan.c + rm parse.c parse.h scan.c skel.c } src_install() { diff --git a/sysa/flex-2.5.11/mk/main2.mk b/sysa/flex-2.5.11/mk/main2.mk @@ -1,28 +0,0 @@ -CFLAGS = -DVERSION=\"2.5.11\" - -all: flex - -flex: ccl.o dfa.o ecs.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o - tcc -o $@ $^ - -%.o: %.c - tcc -g -c $(CFLAGS) -o $@ $< - -scan.o: parse.h -yylex.o: parse.h - -parse.c parse.h: parse.y - yacc -d parse.y - mv y.tab.h parse.h - mv y.tab.c parse.c - -scan.c: scan.l - flex scan.l - mv lex.yy.c scan.c - -skel.c: mkskel.sh flex.skl - /bin/sh ./mkskel.sh ./flex.skl > skel.c - -install: all - install flex $(PREFIX)/bin - ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/flex-2.5.14/flex-2.5.14.sh b/sysa/flex-2.5.14/flex-2.5.14.sh @@ -1,6 +0,0 @@ -src_prepare() { - default_src_prepare - - touch config.h - rm parse.c parse.h scan.c -} diff --git a/sysa/flex-2.5.14/mk/main.mk b/sysa/flex-2.5.14/mk/main.mk @@ -1,29 +0,0 @@ -CFLAGS = -I . \ - -DVERSION=\"2.5.14\" - -all: flex - -flex: ccl.o dfa.o ecs.o gen.o main.o misc.o nfa.o parse.o scan.o skel.o sym.o tblcmp.o yylex.o options.o scanopt.o buf.o - tcc -o $@ $^ - -%.o: %.c - tcc -g -c $(CFLAGS) -o $@ $< - -scan.o: parse.h -yylex.o: parse.h - -parse.c parse.h: parse.y - yacc -d parse.y - mv y.tab.h parse.h - mv y.tab.c parse.c - -scan.c: scan.l - flex scan.l - mv lex.yy.c scan.c - -skel.c: mkskel.sh flex.skl - /bin/sh ./mkskel.sh ./flex.skl > skel.c - -install: all - install flex $(PREFIX)/bin - ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/flex-2.5.14/src/.placeholder b/sysa/flex-2.5.14/src/.placeholder diff --git a/sysa/flex-2.6.4/flex-2.6.4.sh b/sysa/flex-2.6.4/flex-2.6.4.sh @@ -0,0 +1,23 @@ +src_prepare() { + default_src_prepare + + mv Makefile src/ + touch src/config.h + rm src/parse.c src/parse.h src/scan.c src/skel.c +} + +src_compile() { + cd src + default_src_compile + cd .. +} + +src_install() { + cd src + default_src_install + cd .. + + # Remove yacc, we won't need it any longer + rm ${PREFIX}/bin/yacc + rm /yaccpar +} diff --git a/sysa/flex-2.6.4/mk/main.mk b/sysa/flex-2.6.4/mk/main.mk @@ -0,0 +1,41 @@ +CC := tcc +CFLAGS = -DVERSION=\"2.6.4\" \ + -DM4=\"m4\" \ + -DHAVE_LIMITS_H=1 + +all: flex + +flex: buf.o ccl.o dfa.o ecs.o filter.o gen.o main.o misc.o nfa.o options.o parse.o regex.o scan.o scanflags.o scanopt.o skel.o sym.o tables.o tables_shared.o tblcmp.o yylex.o + $(CC) -o $@ $^ -lm + +flex-tmp: buf.o ccl.o dfa.o ecs.o filter.o gen.o main.o misc.o nfa.o options.o parse.o regex.o scan-tmp.o scanflags.o scanopt.o skel.o sym.o tables.o tables_shared.o tblcmp.o yylex.o + $(CC) -o $@ $^ -lm + +%.o: %.c + $(CC) $(CFLAGS) -g -c -I. -o $@ $< + +main.o: parse.h +scan.o: parse.h +scan-tmp.o: parse.h +yylex.o: parse.h + +parse.c parse.h: parse.y + yacc -d parse.y + mv y.tab.h parse.h + mv y.tab.c parse.c + echo 'extern int yylval;' >> parse.h + +scan-tmp.c: scan.l + flex scan.l + mv lex.yy.c scan-tmp.c + +scan.c: scan.l flex-tmp + ./flex-tmp scan.l + mv lex.yy.c scan.c + +skel.c: mkskel.sh flex.skl + /bin/sh ./mkskel.sh . m4 2.6.4 > skel.c + +install: all + install flex $(PREFIX)/bin + ln -sf $(PREFIX)/bin/flex $(PREFIX)/bin/lex diff --git a/sysa/grep-2.4/grep-2.4.kaem b/sysa/grep-2.4/grep-2.4.kaem @@ -1,23 +0,0 @@ -#!/bin/sh - -set -ex - -mkdir build -cd build - -# Extract -gunzip ../src/${pkg}.tar.gz -tar xf ../src/${pkg}.tar -cd ${pkg} -cp ../../mk/main.mk Makefile - -# Build -make - -# Install -install grep /after/bin/ - -# Test -grep --version - -cd ../.. diff --git a/sysa/grep-2.4/mk/main.mk b/sysa/grep-2.4/mk/main.mk @@ -8,7 +8,9 @@ AR = tcc -ar CFLAGS = -DPACKAGE=\"$(PACKAGE)\" \ -DVERSION=\"$(VERSION)\" \ -DHAVE_DIRENT_H=1 \ - -DHAVE_UNISTD_H=1 + -DHAVE_UNISTD_H=1 \ + -DHAVE_STRERROR=1 \ + -DREGEX_MALLOC=1 .PHONY: all @@ -19,3 +21,8 @@ all: grep grep: $(GREP_OBJECTS) $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ + +install: all + install grep $(PREFIX)/bin + ln -sf $(PREFIX)/bin/grep $(PREFIX)/bin/egrep + ln -sf $(PREFIX)/bin/grep $(PREFIX)/bin/fgrep diff --git a/sysa/m4-1.4.4/mk/main.mk b/sysa/m4-1.4.4/mk/main.mk @@ -0,0 +1,33 @@ +PRODUCT = m4 +VERSION = 1.4 + +CC = tcc +LD = tcc +AR = tcc -ar + +CFLAGS = -I lib \ + -DPRODUCT=\"$(PRODUCT)\" \ + -DVERSION=\"$(VERSION)\" \ + -DHAVE_SIGNAL_H=1 \ + -DPACKAGE_STRING=\"GNU\ M4\ 1.4.4\" + +LDFLAGS = -L . -lm4 + +.PHONY: all + +LIB_SRC = regex getopt getopt1 error obstack xmalloc xstrdup +LIB_OBJECTS = $(addprefix lib/, $(addsuffix .o, $(LIB_SRC))) + +M4_SRC = m4 builtin debug eval format freeze input macro output path symtab +M4_OBJ = $(addprefix src/, $(addsuffix .o, $(M4_SRC))) + +all: m4 + +m4: libm4.a $(M4_OBJ) + $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ + +libm4.a: $(LIB_OBJECTS) + $(AR) cr $@ $^ + +install: all + install m4 $(PREFIX)/bin diff --git a/sysa/m4-1.4/mk/main.mk b/sysa/m4-1.4/mk/main.mk @@ -1,31 +0,0 @@ -PRODUCT = m4 -VERSION = 1.4 - -CC = tcc -LD = tcc -AR = tcc -ar - -CFLAGS = -I lib \ - -DPRODUCT=\"$(PRODUCT)\" \ - -DVERSION=\"$(VERSION)\" - -LDFLAGS = -L . -lm4 - -.PHONY: all - -LIB_SRC = regex getopt getopt1 error obstack xmalloc xstrdup -LIB_OBJECTS = $(addprefix lib/, $(addsuffix .o, $(LIB_SRC))) - -M4_SRC = m4 builtin debug eval format freeze input macro output path symtab -M4_OBJ = $(addprefix src/, $(addsuffix .o, $(M4_SRC))) - -all: m4 - -m4: libm4.a $(M4_OBJ) - $(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ - -libm4.a: $(LIB_OBJECTS) - $(AR) cr $@ $^ - -install: all - install m4 $(PREFIX)/bin diff --git a/sysa/m4-1.4/patches/signal-include.patch b/sysa/m4-1.4/patches/signal-include.patch @@ -1,15 +0,0 @@ -sys/signal.h is not the POSIX appropriate place for signal.h, which mes libc -attempts to conform to. - -diff -r -U3 src/m4.c src/m4.c ---- src/m4.c 1994-11-02 03:14:28.000000000 +0000 -+++ src/m4.c 2021-01-15 00:19:21.947654461 +0000 -@@ -19,7 +19,7 @@ - #include "m4.h" - - #include <getopt.h> --#include <sys/signal.h> -+#include <signal.h> - - static void usage _((int)); - diff --git a/sysa/run.sh b/sysa/run.sh @@ -9,19 +9,22 @@ set -e export PREFIX=/after +# Part 20 +build m4-1.4.4 + # Part 21 -build m4-1.4 +build flex-2.5.11 # Part 22 -build flex-2.5.11 +build musl-1.1.24 # Part 23 -build flex-2.5.14 +build tcc-0.9.27 tcc-musl.sh # Part 24 -build musl-1.1.24 +build flex-2.6.4 # Part 25 -build tcc-0.9.27 tcc-musl.sh +build grep-2.4 echo "Bootstrapping completed."