mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-04 02:15:24 +01:00
commit
f54ac02dd0
17 changed files with 281 additions and 23 deletions
24
README.md
24
README.md
|
|
@ -50,13 +50,13 @@ have greater trust in the bootstrap procedure.
|
|||
|
||||
| Item | Guix | live-bootstrap |
|
||||
| -- | -- | -- |
|
||||
| Total size of seeds [1] | ~120MB (Reduced Source Bootstrap) [2] | ~1KB |
|
||||
| Total size of seeds [1] | ~30MB (Reduced Source Bootstrap) [2] | ~1KB |
|
||||
| Use of kernel | Linux-Libre Kernel | Any Linux Kernel (2.6+) [3] |
|
||||
| Implementation complete | Yes | No (in development) |
|
||||
| Automation | Almost fully automatic | Optional user customization |
|
||||
|
||||
[1]: Excluding kernel.
|
||||
[2]: Reiterating that Guix is working on a full source bootstrap.
|
||||
[2]: Reiterating that Guix is working on a full source bootstrap, although that still uses guile (~12 MB).
|
||||
[3]: Work is ongoing to use other, smaller POSIX kernels.
|
||||
|
||||
## Why would I want bootstrapping?
|
||||
|
|
@ -211,7 +211,7 @@ is required later for autotools.
|
|||
|
||||
#### Part 11: patch 2.5.9
|
||||
|
||||
`patch` is a very useful tool at this stage, allowing us to make sigificantly
|
||||
`patch` is a very useful tool at this stage, allowing us to make significantly
|
||||
more complex edits, including just changes to lines. Luckily, we are able to
|
||||
patch patch using sed only.
|
||||
|
||||
|
|
@ -222,7 +222,7 @@ been forced to manually specify static linking for each tool. Now that we have
|
|||
patch, we can patch tinycc to force static linking and then recompile it.
|
||||
|
||||
Note that we have to do this using tinycc 0.9.26, as tinycc 0.9.27 cannot
|
||||
recompile itself for unknown reasonsn.
|
||||
recompile itself for unknown reasons.
|
||||
|
||||
#### Part 13: make 3.80
|
||||
|
||||
|
|
@ -235,7 +235,19 @@ scripts.
|
|||
`bzip2` is a compression format that compresses more than `gzip`. It is
|
||||
preferred where we can use it, and makes source code sizes smaller.
|
||||
|
||||
#### Part 15: bash 2.05b
|
||||
#### Part 15: coreutils 5.0.0
|
||||
|
||||
Coreutils is a collection on widely used utilities such as cat, chmod, chown,
|
||||
cp, install, ln, mkdir, mv, rm, rmdir, tee, and many others.
|
||||
|
||||
A few of the utilities cannot be easily compiled with Mes C library, so we skip them.
|
||||
|
||||
#### Part 16: grep 2.4
|
||||
|
||||
grep is a pattern matching utility. Is is not immediately needed but will
|
||||
be useful later for autotools.
|
||||
|
||||
#### Part 17: 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
|
||||
|
|
@ -244,7 +256,7 @@ proper POSIX sh support, globbing, etc.
|
|||
NOTE: Currently, there is a bison pregenerated file here, which we are working
|
||||
to remove.
|
||||
|
||||
#### Part 16: m4 1.4
|
||||
#### Part 18: m4 1.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.
|
||||
|
|
|
|||
10
rootfs.sh
10
rootfs.sh
|
|
@ -90,9 +90,9 @@ get_file() {
|
|||
popd
|
||||
ext="${url##*.}"
|
||||
if [ "$ext" = "tar" ]; then
|
||||
bname=$(basename "$url" ".tar")
|
||||
bname=$(basename "$url" ".tar")
|
||||
else
|
||||
bname=$(basename "$url" ".tar.${ext}")
|
||||
bname=$(basename "$url" ".tar.${ext}")
|
||||
fi
|
||||
cp -r "${bname}" tmp/after/
|
||||
cp "../sources/$(basename "$url")" "tmp/after/${bname}/src/"
|
||||
|
|
@ -113,6 +113,12 @@ 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
|
||||
|
||||
# coreutils 5.0
|
||||
get_file https://ftp.gnu.org/gnu/coreutils/coreutils-5.0.tar.bz2
|
||||
|
||||
# grep 2.4
|
||||
get_file https://ftp.gnu.org/gnu/grep/grep-2.4.tar.gz
|
||||
|
||||
# bash 2.05b
|
||||
get_file https://ftp.gnu.org/pub/gnu/bash/bash-2.05b.tar.gz
|
||||
|
||||
|
|
|
|||
|
|
@ -118,13 +118,25 @@ cd ${pkg}
|
|||
kaem --file ${pkg}.kaem
|
||||
cd ..
|
||||
|
||||
# Part 15: bash
|
||||
# Part 15: coreutils
|
||||
pkg="coreutils-5.0"
|
||||
cd ${pkg}
|
||||
kaem --file ${pkg}.kaem
|
||||
cd ..
|
||||
|
||||
# Part 16: grep
|
||||
pkg="grep-2.4"
|
||||
cd ${pkg}
|
||||
kaem --file ${pkg}.kaem
|
||||
cd ..
|
||||
|
||||
# Part 17: bash
|
||||
pkg="bash-2.05b"
|
||||
cd ${pkg}
|
||||
kaem --file ${pkg}.kaem
|
||||
cd ..
|
||||
|
||||
# Part 16: m4
|
||||
# Part 18: m4
|
||||
pkg="m4-1.4"
|
||||
cd ${pkg}
|
||||
kaem --file ${pkg}.kaem
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
set -ex
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# Extract
|
||||
|
|
@ -13,9 +14,9 @@ cp ../../mk/builtins.mk builtins/Makefile
|
|||
cp ../../mk/common.mk common.mk
|
||||
|
||||
# Create various .h files
|
||||
catm config.h
|
||||
catm include/version.h
|
||||
catm include/pipesize.h
|
||||
touch config.h
|
||||
touch include/version.h
|
||||
touch include/pipesize.h
|
||||
|
||||
# Patch
|
||||
patch -Np0 -i ../../patches/mes-libc.patch
|
||||
|
|
@ -32,7 +33,6 @@ cd ..
|
|||
make
|
||||
|
||||
# Install
|
||||
cp bash /after/bin/
|
||||
chmod 755 /after/bin/bash
|
||||
install bash /after/bin/
|
||||
|
||||
cd ../..
|
||||
|
|
|
|||
|
|
@ -52,28 +52,28 @@ mkbuiltins: $(MKBUILTINS_OBJS)
|
|||
# libsh
|
||||
|
||||
libsh.a: $(SHLIB_OBJS)
|
||||
$(AR) cr $@ $(SHLIB_OBJS)
|
||||
$(AR) cr $@ $^
|
||||
|
||||
# libglob
|
||||
|
||||
libglob.a: $(GLOB_OBJS)
|
||||
$(AR) cr $@ $(GLOB_OBJS)
|
||||
$(AR) cr $@ $^
|
||||
|
||||
# libtilde
|
||||
|
||||
libtilde.a: $(TILDE_OBJS)
|
||||
$(AR) cr $@ $(TILDE_OBJS)
|
||||
$(AR) cr $@ $^
|
||||
|
||||
# The actual program
|
||||
|
||||
mksyntax: $(MKSYNTAX_OBJS)
|
||||
$(CC) $(MKSYNTAX_OBJS) $(LDFLAGS) -o $@ -lgetopt
|
||||
$(CC) $^ $(LDFLAGS) -o $@ -lgetopt
|
||||
|
||||
syntax.c: mksyntax
|
||||
./mksyntax -o $@
|
||||
|
||||
mksignames: $(MKSIGNAMES_OBJS)
|
||||
$(CC) $(MKSIGNAMES_OBJS) $(LDFLAGS) -o $@ -lgetopt
|
||||
$(CC) $^ $(LDFLAGS) -o $@ -lgetopt
|
||||
|
||||
signames.h: mksignames
|
||||
./mksignames $@
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ make CC=tcc AR="tcc -ar" bzip2
|
|||
|
||||
# Install
|
||||
cp bzip2 /after/bin/bzip2
|
||||
cp bzip2 /after/bin/bunzip2
|
||||
chmod 755 /after/bin/bzip2
|
||||
chmod 755 /after/bin/bunzip2
|
||||
|
||||
# Test
|
||||
bzip2 --help
|
||||
|
|
|
|||
24
sysa/coreutils-5.0/coreutils-5.0.kaem
Executable file
24
sysa/coreutils-5.0/coreutils-5.0.kaem
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
cd build
|
||||
|
||||
# Extract
|
||||
bunzip2 ../src/${pkg}.tar.bz2
|
||||
tar xf ../src/${pkg}.tar
|
||||
cd ${pkg}
|
||||
cp ../../mk/main.mk Makefile
|
||||
|
||||
# Patch and prepare
|
||||
cp lib/fnmatch_.h lib/fnmatch.h
|
||||
cp lib/ftw_.h lib/ftw.h
|
||||
cp lib/search_.h lib/search.h
|
||||
catm config.h
|
||||
|
||||
patch -Np0 -i ../../patches/modechange.patch
|
||||
patch -Np0 -i ../../patches/mbstate.patch
|
||||
|
||||
# Build and install
|
||||
/after/bin/make -f Makefile
|
||||
/after/bin/make -f Makefile install
|
||||
110
sysa/coreutils-5.0/mk/main.mk
Normal file
110
sysa/coreutils-5.0/mk/main.mk
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
PACKAGE=coreutils
|
||||
PACKAGE_NAME=GNU\ coreutils
|
||||
PACKAGE_BUGREPORT=bug-coreutils@gnu.org
|
||||
PACKAGE_VERSION=5.0
|
||||
VERSION=5.0
|
||||
|
||||
CC = tcc
|
||||
LD = tcc
|
||||
AR = tcc -ar
|
||||
|
||||
bindir=/after/bin
|
||||
|
||||
CFLAGS = -I . -I lib \
|
||||
-DPACKAGE=\"$(PACKAGE)\" \
|
||||
-DPACKAGE_NAME=\"$(PACKAGE_NAME)\" \
|
||||
-DGNU_PACKAGE=\"$(PACKAGE_NAME)\" \
|
||||
-DPACKAGE_BUGREPORT=\"$(PACKAGE_BUGREPORT)\" \
|
||||
-DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\" \
|
||||
-DVERSION=\"$(VERSION)\" \
|
||||
-DHAVE_LIMITS_H=1 \
|
||||
-DHAVE_DECL_FREE=1 \
|
||||
-DHAVE_DECL_MALLOC=1 \
|
||||
-DHAVE_MALLOC=1 \
|
||||
-DHAVE_STDLIB_H=1 \
|
||||
-DHAVE_REALLOC=1 \
|
||||
-DHAVE_DECL_REALLOC=1 \
|
||||
-DHAVE_DECL_GETENV=1 \
|
||||
-DHAVE_DIRENT_H=1 \
|
||||
-DHAVE_DECL___FPENDING=0 \
|
||||
-DSTDC_HEADERS=1 \
|
||||
-DHAVE_ALLOCA_H=1 \
|
||||
-DHAVE_STRUCT_TIMESPEC=1 \
|
||||
-DHAVE_STRING_H=1 \
|
||||
-DHAVE_SYS_TIME_H=1 \
|
||||
-DTIME_WITH_SYS_TIME=1 \
|
||||
-DHAVE_STDINT_H=1 \
|
||||
-DMB_LEN_MAX=16 \
|
||||
-DLIBDIR=\"/after/lib\" \
|
||||
-DHAVE_DECL_WCWIDTH=0 \
|
||||
-DHAVE_SYS_STAT_H=1 \
|
||||
-DHAVE_INTTYPES_H=1 \
|
||||
-DHAVE_DECL_MEMCHR=1 \
|
||||
-DHAVE_MEMORY_H=1 \
|
||||
-DPENDING_OUTPUT_N_BYTES=1 \
|
||||
-DCHAR_MIN=0 \
|
||||
-DLOCALEDIR=NULL \
|
||||
-DHAVE_FCNTL_H=1 \
|
||||
-DEPERM=1 \
|
||||
-DHAVE_DECL_STRTOUL=1 \
|
||||
-DHAVE_DECL_STRTOULL=1 \
|
||||
-DHAVE_DECL_STRTOL=1 \
|
||||
-DHAVE_DECL_STRTOLL=1 \
|
||||
-DHAVE_RMDIR=1 \
|
||||
-DRMDIR_ERRNO_NOT_EMPTY=39 \
|
||||
-DHAVE_DECL_FREE=1 \
|
||||
-DENOTEMPTY=1 \
|
||||
-DLSTAT_FOLLOWS_SLASHED_SYMLINK=1 \
|
||||
-DHAVE_DECL_DIRFD=0 \
|
||||
-DLC_TIME=\"C\" \
|
||||
-DLC_COLLATE=\"C\" \
|
||||
-DHAVE_GETCWD=1 \
|
||||
-Dmy_strftime=nstrftime \
|
||||
-DDIR_TO_FD\(Dir_p\)=-1 \
|
||||
-DUTILS_OPEN_MAX=1000
|
||||
|
||||
.PHONY: all install
|
||||
|
||||
SRC_DIR=src
|
||||
|
||||
COREUTILS = basename cat chmod cksum csplit cut echo expand factor false fmt fold head id join kill link ln logname mkfifo mkdir nl od paste pathchk printf ptx pwd readlink rmdir seq split sum tail tee touch tr tsort unexpand unlink wc whoami
|
||||
|
||||
BINARIES = $(addprefix $(SRC_DIR)/, $(COREUTILS))
|
||||
|
||||
ALL=$(BINARIES) $(SRC_DIR)/install $(SRC_DIR)/md5sum $(SRC_DIR)/mv $(SRC_DIR)/rm $(SRC_DIR)/sha1sum
|
||||
all: $(BINARIES) $(SRC_DIR)/install $(SRC_DIR)/md5sum $(SRC_DIR)/mv $(SRC_DIR)/rm $(SRC_DIR)/sha1sum
|
||||
|
||||
LIB_DIR = lib
|
||||
LIB_SRC = acl getdate posixtm posixver strftime getopt getopt1 hash hash-pjw addext argmatch backupfile basename canon-host closeout cycle-check diacrit dirname dup-safer error exclude exitfail filemode __fpending file-type fnmatch fopen-safer full-read full-write getline getstr gettime hard-locale human idcache isdir imaxtostr linebuffer localcharset long-options makepath mbswidth md5 memcasecmp memcoll modechange offtostr path-concat physmem quote quotearg readtokens rpmatch safe-read safe-write same save-cwd savedir settime sha stpcpy stripslash strtoimax strtoumax umaxtostr unicodeio userspec version-etc xgetcwd xgethostname xmalloc xmemcoll xnanosleep xreadlink xstrdup xstrtod xstrtol xstrtoul xstrtoimax xstrtoumax yesno strnlen getcwd sig2str mountlist regex canonicalize mkstemp memrchr euidaccess ftw dirfd obstack strverscmp strftime tsearch
|
||||
|
||||
LIB_OBJECTS = $(addprefix $(LIB_DIR)/, $(addsuffix .o, $(LIB_SRC)))
|
||||
|
||||
$(LIB_DIR)/libfettish.a: $(LIB_OBJECTS)
|
||||
$(AR) cr $@ $^
|
||||
|
||||
$(BINARIES) : % : %.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/cp: $(SRC_DIR)/cp.o $(SRC_DIR)/copy.o $(SRC_DIR)/cp-hash.c $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/install: $(SRC_DIR)/install.o $(SRC_DIR)/copy.o $(SRC_DIR)/cp-hash.c $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/ls: $(SRC_DIR)/ls.o $(SRC_DIR)/ls-ls.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/md5sum: $(SRC_DIR)/md5.o $(SRC_DIR)/md5sum.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/mv: $(SRC_DIR)/mv.o $(SRC_DIR)/copy.o $(SRC_DIR)/remove.o $(SRC_DIR)/cp-hash.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/rm: $(SRC_DIR)/rm.o $(SRC_DIR)/remove.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
$(SRC_DIR)/sha1sum: $(SRC_DIR)/sha1sum.o $(SRC_DIR)/md5sum.o $(LIB_DIR)/libfettish.a
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
install: $(ALL)
|
||||
$(SRC_DIR)/install $^ $(bindir)
|
||||
36
sysa/coreutils-5.0/patches/mbstate.patch
Normal file
36
sysa/coreutils-5.0/patches/mbstate.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
--- lib/quotearg.c 2002-11-23 07:08:10.000000000 +0000
|
||||
+++ lib/quotearg.c 2021-01-17 19:41:59.461095532 +0000
|
||||
@@ -21,6 +21,7 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
+#include "mbstate_t.h"
|
||||
#include "quotearg.h"
|
||||
|
||||
#include "xalloc.h"
|
||||
--- lib/mbstate_t.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ lib/mbstate_t.h 2021-01-17 19:42:21.341658668 +0000
|
||||
@@ -0,0 +1,23 @@
|
||||
+#ifndef ____mbstate_t_defined
|
||||
+#define ____mbstate_t_defined 1
|
||||
+
|
||||
+/* Integral type unchanged by default argument promotions that can
|
||||
+ hold any value corresponding to members of the extended character
|
||||
+ set, as well as at least one value that does not correspond to any
|
||||
+ member of the extended character set. */
|
||||
+#ifndef __WINT_TYPE__
|
||||
+# define __WINT_TYPE__ unsigned int
|
||||
+#endif
|
||||
+
|
||||
+/* Conversion state information. */
|
||||
+typedef struct
|
||||
+{
|
||||
+ int __count;
|
||||
+ union
|
||||
+ {
|
||||
+ __WINT_TYPE__ __wch;
|
||||
+ char __wchb[4];
|
||||
+ } __value; /* Value so far. */
|
||||
+} mbstate_t;
|
||||
+
|
||||
+#endif
|
||||
12
sysa/coreutils-5.0/patches/modechange.patch
Normal file
12
sysa/coreutils-5.0/patches/modechange.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
--- lib/modechange.c 2001-12-09 22:54:19.000000000 +0000
|
||||
+++ lib/modechange.c 2021-01-17 18:34:22.016427148 +0000
|
||||
@@ -28,8 +28,8 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
-#include "modechange.h"
|
||||
#include <sys/stat.h>
|
||||
+#include "modechange.h"
|
||||
#include "xstrtol.h"
|
||||
|
||||
#if STDC_HEADERS
|
||||
23
sysa/grep-2.4/grep-2.4.kaem
Executable file
23
sysa/grep-2.4/grep-2.4.kaem
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/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 ../..
|
||||
21
sysa/grep-2.4/mk/main.mk
Normal file
21
sysa/grep-2.4/mk/main.mk
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
PACKAGE=grep
|
||||
VERSION=2.4
|
||||
|
||||
CC = tcc
|
||||
LD = tcc
|
||||
AR = tcc -ar
|
||||
|
||||
CFLAGS = -DPACKAGE=\"$(PACKAGE)\" \
|
||||
-DVERSION=\"$(VERSION)\" \
|
||||
-DHAVE_DIRENT_H=1 \
|
||||
-DHAVE_UNISTD_H=1
|
||||
|
||||
.PHONY: all
|
||||
|
||||
GREP_SRC = grep dfa kwset obstack regex stpcpy savedir getopt getopt1 search grepmat
|
||||
GREP_OBJECTS = $(addprefix src/, $(addsuffix .o, $(GREP_SRC)))
|
||||
|
||||
all: grep
|
||||
|
||||
grep: $(GREP_OBJECTS)
|
||||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
0
sysa/grep-2.4/src/.placeholder
Normal file
0
sysa/grep-2.4/src/.placeholder
Normal file
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
set -ex
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
# Extract
|
||||
|
|
@ -17,8 +18,7 @@ patch -Np0 -i ../../patches/signal-include.patch
|
|||
make
|
||||
|
||||
# Install
|
||||
cp m4 /after/bin/m4
|
||||
chmod 755 /after/bin/m4
|
||||
install m4 /after/bin/
|
||||
|
||||
# Test
|
||||
m4 --version
|
||||
|
|
|
|||
|
|
@ -25,4 +25,4 @@ m4: libm4.a $(M4_OBJ)
|
|||
$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
|
||||
|
||||
libm4.a: $(LIB_OBJECTS)
|
||||
$(AR) cr $@ $(LIB_OBJECTS)
|
||||
$(AR) cr $@ $^
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue