diff --git a/README.md b/README.md index 85bea90..f6eacfe 100644 --- 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.4 +#### Part 20: m4 1.4.4 `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,7 +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 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 @@ -285,14 +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 24 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 25 flex 2.6.14 +#### 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 index 3546ffe..5f61543 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -121,9 +121,6 @@ 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 @@ -142,6 +139,9 @@ 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 index f2a0ab1..db3a8d6 100755 --- 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/grep-2.4/grep-2.4.kaem b/sysa/grep-2.4/grep-2.4.kaem deleted file mode 100755 index bf324e6..0000000 --- a/sysa/grep-2.4/grep-2.4.kaem +++ /dev/null @@ -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 index 09de660..3a49d5e 100644 --- a/sysa/grep-2.4/mk/main.mk +++ b/sysa/grep-2.4/mk/main.mk @@ -21,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/run.sh b/sysa/run.sh index b3cd7a4..93b73c6 100755 --- a/sysa/run.sh +++ b/sysa/run.sh @@ -9,19 +9,22 @@ set -e export PREFIX=/after -# Part 21 +# Part 20 build m4-1.4.4 -# Part 22 +# Part 21 build flex-2.5.11 -# Part 23 +# Part 22 build musl-1.1.24 -# Part 24 +# Part 23 build tcc-0.9.27 tcc-musl.sh -# Part 25 +# Part 24 build flex-2.6.4 +# Part 25 +build grep-2.4 + echo "Bootstrapping completed."