diff --git a/.gitignore b/.gitignore index 385f871..d7c388c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ tmp/ kernel +sources/ diff --git a/rootfs.sh b/rootfs.sh index f570fe7..a9f8875 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -79,6 +79,14 @@ mkdir -p ../sources cp sed-4.0.7.kaem tmp/after cp -r sed-4.0.7 tmp/after +# tar 1.12 +url=https://ftp.gnu.org/gnu/tar/tar-1.12.tar.gz +pushd ../sources +wget --continue "$url" +popd +cp "$(basename $url .tar.gz).kaem" tmp/after +tar -C tmp/after -xf "../sources/$(basename $url)" + # General cleanup find tmp -name .git -exec rm -rf \; diff --git a/sysa/after.kaem.run b/sysa/after.kaem.run index 05e3ca0..6f7bc3e 100755 --- a/sysa/after.kaem.run +++ b/sysa/after.kaem.run @@ -52,3 +52,8 @@ kaem --file tcc.kaem cd sed-4.0.7 kaem --file ../sed-4.0.7.kaem cd .. + +# Part 8: tar +cd tar-1.12 +kaem --file ../tar-1.12.kaem +cd .. diff --git a/sysa/tar-1.12.kaem b/sysa/tar-1.12.kaem new file mode 100755 index 0000000..f038f0d --- /dev/null +++ b/sysa/tar-1.12.kaem @@ -0,0 +1,51 @@ +#!/bin/sh + +set -ex + +# Variables +bindir=/after/bin + +# Compile + +## libtar.a +cd lib + +tcc -c argmatch.c +tcc -c -DHAVE_DIRENT_H backupfile.c +tcc -c -I . error.c +tcc -c -I . fnmatch.c +tcc -c ftruncate.c +tcc -c getdate.c +tcc -c getopt.c +tcc -c getopt1.c +tcc -c getversion.c +tcc -c modechange.c +tcc -c msleep.c +tcc -c -DHAVE_GETCWD xgetcwd.c +tcc -c xmalloc.c +tcc -c xstrdup.c + +tcc -ar cr libtar.a argmatch.o backupfile.o error.o fnmatch.o ftruncate.o getdate.o getopt.o getopt1.o getversion.o modechange.o msleep.o xgetcwd.o xmalloc.o xstrdup.o +cd .. + +## tar +# -DSIZEOF_UNSIGNED_LONG=4 forces use of simulated arithmetic +# This is to avoid running configure test to determine sizeof(long long) +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/arith.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/buffer.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/compare.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H -DHAVE_DIRENT_H src/create.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/delete.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/extract.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H -DHAVE_GETCWD -DHAVE_DIRENT_H src/incremen.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/list.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/mangle.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H -DHAVE_DIRENT_H src/misc.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H -DHAVE_GETCWD src/names.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/open3.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/rtapelib.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H -DPACKAGE=\"tar\" -DVERSION=\"1.12\" src/tar.c +tcc -c -I lib -DSIZEOF_UNSIGNED_LONG=4 -DHAVE_FCNTL_H src/update.c + +# Link +tcc -static -o ${bindir}/tar -L lib lib/libtar.a arith.o buffer.o compare.o create.o delete.o extract.o incremen.o list.o mangle.o misc.o names.o open3.o rtapelib.o tar.o update.o -ltar