linux-qubasis

linux oasis port as a qubes template

git clone https://9o.is/git/linux-qubasis.git

commit 4ce68509e2d3536803e9ce7c5e37f59d4fe1b2d5
parent faea82613efc64cd1c08deb91732915410b42b5f
Author: Jul <jul@9o.is>
Date:   Wed, 20 Aug 2025 08:49:37 -0400

add sbase

Diffstat:
M.gitmodules | 4++++
Mgen.sh | 1+
Mninja/functions.sh | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mninja/rules.ninja | 4++++
Apkg/sbase/gen.sh | 184+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apkg/sbase/repo | 1+
Apkg/sbase/version | 3+++
7 files changed, 265 insertions(+), 0 deletions(-)

diff --git a/.gitmodules b/.gitmodules @@ -34,3 +34,7 @@ path = pkg/oksh/repo url = https://github.com/ibara/oksh.git ignore = all +[submodule "sbase"] + path = pkg/sbase/repo + url = git://git.suckless.org/sbase + ignore = all diff --git a/gen.sh b/gen.sh @@ -16,3 +16,4 @@ include '$basedir/ninja/rules.ninja' subgen pkg/abduco subgen pkg/oksh +subgen pkg/sbase diff --git a/ninja/functions.sh b/ninja/functions.sh @@ -7,6 +7,8 @@ ninja_buffer_builds= ninja_buffer_exe= ninja_buffer_exe_srcs= ninja_buffer_exe_objs= +ninja_buffer_lib= +ninja_buffer_lib_srcs= ninja_buffer_dep= ninja_buffer_dep_srcs= ninja_buffer_sync_srcs= @@ -29,6 +31,11 @@ subninja() { printf 'subninja $ninjadir/%s.ninja\n' "$1" >> "$ninja_fullpath" } +rule() { + printf 'rule %s\n' "$1" >> "$ninja_fullpath" + bind 'command' "$2" +} + build() { local rule="$1"; shift; local out="$1"; shift; @@ -46,15 +53,31 @@ copy() { local dst="${2-$src}" build copy "\$outdir/$dst" "\$srcdir/$src" + + ninja_buffer_builds="$ninja_buffer_builds \$outdir/$dst" + ninja_buffer_sync_srcs="$ninja_buffer_sync_srcs \$srcdir/$src" } exe() { + if [ "$ninja_buffer_exe" ]; then + ninja_flush_exe + fi + ninja_buffer_exe="\$outdir/$1"; shift; ninja_buffer_exe_srcs="$*" ninja_buffer_builds="$ninja_buffer_builds $ninja_buffer_exe" } +lib() { + if [ "$ninja_buffer_lib" ]; then + ninja_flush_lib + fi + + ninja_buffer_lib="\$outdir/lib/$1"; shift; + ninja_buffer_lib_srcs="$*" +} + dep() { ninja_buffer_dep="\$outdir/$1"; shift; ninja_buffer_dep_srcs="$*" @@ -68,6 +91,7 @@ subgen() { ninja_flush_exe() { local objs='' local val='' + local src='' for src in $ninja_buffer_exe_srcs; do case $src in @@ -82,6 +106,9 @@ ninja_flush_exe() { build cc "\$outdir/o/$src.o" "$val" objs="$objs \$outdir/o/$src.o" ;; + *.a) + objs="$objs \$outdir/lib/$src" + ;; *) printf "Error gen $ninja_file: unknown file to compile: %s" "$src" exit 1 @@ -101,8 +128,48 @@ ninja_flush_exe() { fi } +ninja_flush_lib() { + # build $outdir/libutil.a.d: rsp $outdir/libutil.a ???? + + local objs='' + local val='' + local src='' + + for src in $ninja_buffer_lib_srcs; do + case $src in + *.c) + val="\$srcdir/$src" + ninja_buffer_sync_srcs="$ninja_buffer_sync_srcs $val" + + if [ "$ninja_buffer_lib" = "$ninja_buffer_dep" ]; then + val="$val || $ninja_buffer_dep_srcs" + fi + + build cc "\$outdir/o/$src.o" "$val" + objs="$objs \$outdir/o/$src.o" + ;; + *) + printf "Error gen $ninja_file: unknown file to compile: %s" "$src" + exit 1 + esac + done + + if [ "$objs" ]; then + build ar $ninja_buffer_lib $objs + fi + + ninja_buffer_lib= + ninja_buffer_lib_srcs= + + if [ "$ninja_buffer_lib" = "$ninja_buffer_dep" ]; then + ninja_buffer_dep= + ninja_buffer_dep_srcs= + fi +} + ninja_flush_subninja() { local subbuilds='' + local pkg='' for pkg in $ninja_buffer_subninja; do subbuilds="$subbuilds \$gendir/$pkg/build" @@ -130,6 +197,7 @@ ninja_flush_sync() { } ninja_flush() { + ninja_flush_lib ninja_flush_exe ninja_flush_subninja ninja_flush_sync diff --git a/ninja/rules.ninja b/ninja/rules.ninja @@ -19,6 +19,10 @@ rule link command = $cc $ldflags -o $out $in $ldlibs description = LINK $out +rule ar + command = rm -f $out && $ar crs $out $in + description = AR $out + rule copy command = ln -f $in $out description = COPY $out diff --git a/pkg/sbase/gen.sh b/pkg/sbase/gen.sh @@ -0,0 +1,184 @@ +cflags -std=c99 \ + -Wall \ + -Werror \ + -Wpedantic \ + -Wno-maybe-uninitialized \ + -Wno-parentheses \ + -Wno-misleading-indentation \ + -Wno-unused-variable \ + -D _DEFAULT_SOURCE \ + -D _BSD_SOURCE \ + -D _NETBSD_SOURCE \ + -D _XOPEN_SOURCE=700 \ + -I '$outdir/headers' + +lib libutil.a libutil/concat.c \ + libutil/cp.c \ + libutil/crypt.c \ + libutil/confirm.c \ + libutil/ealloc.c \ + libutil/enmasse.c \ + libutil/eprintf.c \ + libutil/eregcomp.c \ + libutil/estrtod.c \ + libutil/fnck.c \ + libutil/fshut.c \ + libutil/getlines.c \ + libutil/human.c \ + libutil/linecmp.c \ + libutil/md5.c \ + libutil/memmem.c \ + libutil/mkdirp.c \ + libutil/mode.c \ + libutil/parseoffset.c \ + libutil/putword.c \ + libutil/reallocarray.c \ + libutil/recurse.c \ + libutil/rm.c \ + libutil/sha1.c \ + libutil/sha224.c \ + libutil/sha256.c \ + libutil/sha384.c \ + libutil/sha512.c \ + libutil/sha512-224.c \ + libutil/sha512-256.c \ + libutil/strcasestr.c \ + libutil/strlcat.c \ + libutil/strlcpy.c \ + libutil/strsep.c \ + libutil/strnsubst.c \ + libutil/strtonum.c \ + libutil/unescape.c \ + libutil/writeall.c + +lib libutf.a libutf/fgetrune.c \ + libutf/fputrune.c \ + libutf/isalnumrune.c \ + libutf/isalpharune.c \ + libutf/isblankrune.c \ + libutf/iscntrlrune.c \ + libutf/isdigitrune.c \ + libutf/isgraphrune.c \ + libutf/isprintrune.c \ + libutf/ispunctrune.c \ + libutf/isspacerune.c \ + libutf/istitlerune.c \ + libutf/isxdigitrune.c \ + libutf/lowerrune.c \ + libutf/rune.c \ + libutf/runetype.c \ + libutf/upperrune.c \ + libutf/utf.c \ + libutf/utftorunestr.c + +rule getconf '$srcdir/scripts/getconf.sh >$out' +build getconf '$outdir/headers/getconf.h' '| $srcdir/scripts/getconf.sh' + +exes() { + for src in "$@"; do + exe "$src" "$src.c" libutil.a libutf.a + copy "$src.1" + + if [ "$src" = 'getconf' ]; then + dep "$src" '$outdir/headers/getconf.h' + fi + done +} + +exes basename \ + cal \ + cat \ + chgrp \ + chmod \ + chown \ + chroot \ + cksum \ + cmp \ + cols \ + comm \ + cp \ + cron \ + cut \ + date \ + dd \ + dirname \ + du \ + echo \ + ed \ + env \ + expand \ + expr \ + false \ + find \ + flock \ + fold \ + getconf \ + grep \ + head \ + hostname \ + join \ + kill \ + link \ + ln \ + logger \ + logname \ + ls \ + md5sum \ + mkdir \ + mkfifo \ + mknod \ + mktemp \ + mv \ + nice \ + nl \ + nohup \ + od \ + paste \ + pathchk \ + printenv \ + printf \ + pwd \ + readlink \ + renice \ + rev \ + rm \ + rmdir \ + sed \ + seq \ + setsid \ + sha1sum \ + sha224sum \ + sha256sum \ + sha384sum \ + sha512sum \ + sha512-224sum \ + sha512-256sum \ + sleep \ + sort \ + split \ + sponge \ + strings \ + sync \ + tail \ + tar \ + tee \ + test \ + tftp \ + time \ + touch \ + tr \ + true \ + tsort \ + tty \ + uname \ + unexpand \ + uniq \ + unlink \ + uudecode \ + uuencode \ + wc \ + which \ + whoami \ + xargs \ + xinstall \ + yes diff --git a/pkg/sbase/repo b/pkg/sbase/repo @@ -0,0 +1 @@ +Subproject commit 6b802ab9fd967e2478a29a583521a13fb91aef57 diff --git a/pkg/sbase/version b/pkg/sbase/version @@ -0,0 +1,3 @@ +method=git +ref=6b802ab9 +rel=0