linux-qubasis

linux oasis port as a qubes template

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

commit 78d9631f3dc52eda0bda8aac4ab5d42d64871544
parent c0887918d72457825e0da6a549db54b8ae1e0b7f
Author: Jul <jul@9o.is>
Date:   Fri, 22 Aug 2025 13:15:54 +0800

create an example template

Diffstat:
Mconfig.def.sh | 2++
Mgen.sh | 2++
Mninja/functions.sh | 29++++++++++++++++++++++++++++-
Atpl/example/gen.sh | 200+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 232 insertions(+), 1 deletion(-)

diff --git a/config.def.sh b/config.def.sh @@ -1,4 +1,6 @@ PREFIX= +MANDIR=${PREFIX}share/man + BUILD_DIR='out' TARGET_ARCH='x86_64' diff --git a/gen.sh b/gen.sh @@ -17,3 +17,5 @@ include '$basedir/ninja/rules.ninja' subgen pkg/abduco subgen pkg/oksh subgen pkg/sbase + +subgen tpl/example diff --git a/ninja/functions.sh b/ninja/functions.sh @@ -93,6 +93,29 @@ dep() { _ninja_buffer_dep_srcs="$*" } +pkg() { + local name="$1"; shift + local src="${1-}"; shift + local out="${1-}"; shift + + while :; do + _ninja_prefix src '$builddir/pkg' $name/$src + _ninja_prefix out '$rootdir' $out + + build copy "$out" "$src" + _ninja_build $out + + src="${1-}" + out="${2-}" + + if [ "$src" ] && [ "$out" ]; then + shift 2 + else + break + fi + done +} + subgen() { _ninja_queue_subgen="$_ninja_queue_subgen $_subgendir$1" _ninja_buffer_subninja="$_ninja_buffer_subninja $1" @@ -110,7 +133,7 @@ gen() { fi _ninja_fullpath="$basedir"/$_ninja_dir/$_ninja_file - mkdir -p "$basedir"/$_ninja_dir/pkg + mkdir -p "$basedir"/$_ninja_dir/${1%/*} printf '' > "$_ninja_fullpath" setv 'gendir' "$1" @@ -121,6 +144,10 @@ gen() { setv 'srcdir' '$dir/repo' fi + if [ ! "${1#tpl/}" = "$1" ]; then + setv 'rootdir' '$outdir/root' + fi + . "$dir"/gen.sh _ninja_flush diff --git a/tpl/example/gen.sh b/tpl/example/gen.sh @@ -0,0 +1,200 @@ + +pkg oksh sh bin/sh \ + ksh bin/ksh \ + sh.1 $MANDIR/man1/sh.1 \ + ksh.1 $MANDIR/man1/ksh.1 + +pkg sbase basename bin/basename \ + cal bin/cal \ + cat bin/cat \ + chgrp bin/chgrp \ + chmod bin/chmod \ + chown bin/chown \ + chroot bin/chroot \ + cksum bin/cksum \ + cmp bin/cmp \ + cols bin/cols \ + comm bin/comm \ + cp bin/cp \ + cron bin/cron \ + cut bin/cut \ + date bin/date \ + dd bin/dd \ + dirname bin/dirname \ + du bin/du \ + echo bin/echo \ + ed bin/ed \ + env bin/env \ + expand bin/expand \ + expr bin/expr \ + false bin/false \ + find bin/find \ + flock bin/flock \ + fold bin/fold \ + getconf bin/getconf \ + grep bin/grep \ + head bin/head \ + hostname bin/hostname \ + join bin/join \ + kill bin/kill \ + link bin/link \ + ln bin/ln \ + logger bin/logger \ + logname bin/logname \ + ls bin/ls \ + md5sum bin/md5sum \ + mkdir bin/mkdir \ + mkfifo bin/mkfifo \ + mknod bin/mknod \ + mktemp bin/mktemp \ + mv bin/mv \ + nice bin/nice \ + nl bin/nl \ + nohup bin/nohup \ + od bin/od \ + paste bin/paste \ + pathchk bin/pathchk \ + printenv bin/printenv \ + printf bin/printf \ + pwd bin/pwd \ + readlink bin/readlink \ + renice bin/renice \ + rev bin/rev \ + rm bin/rm \ + rmdir bin/rmdir \ + sed bin/sed \ + seq bin/seq \ + setsid bin/setsid \ + sha1sum bin/sha1sum \ + sha224sum bin/sha224sum \ + sha256sum bin/sha256sum \ + sha384sum bin/sha384sum \ + sha512sum bin/sha512sum \ + sha512-224sum bin/sha512-224sum \ + sha512-256sum bin/sha512-256sum \ + sleep bin/sleep \ + sort bin/sort \ + split bin/split \ + sponge bin/sponge \ + strings bin/strings \ + sync bin/sync \ + tail bin/tail \ + tar bin/tar \ + tee bin/tee \ + test bin/test \ + tftp bin/tftp \ + time bin/time \ + touch bin/touch \ + tr bin/tr \ + true bin/true \ + tsort bin/tsort \ + tty bin/tty \ + uname bin/uname \ + unexpand bin/unexpand \ + uniq bin/uniq \ + unlink bin/unlink \ + uudecode bin/uudecode \ + uuencode bin/uuencode \ + wc bin/wc \ + which bin/which \ + whoami bin/whoami \ + xargs bin/xargs \ + xinstall bin/xinstall \ + yes bin/yes \ + basename.1 $MANDIR/man1/basename.1 \ + cal.1 $MANDIR/man1/cal.1 \ + cat.1 $MANDIR/man1/cat.1 \ + chgrp.1 $MANDIR/man1/chgrp.1 \ + chmod.1 $MANDIR/man1/chmod.1 \ + chown.1 $MANDIR/man1/chown.1 \ + chroot.1 $MANDIR/man1/chroot.1 \ + cksum.1 $MANDIR/man1/cksum.1 \ + cmp.1 $MANDIR/man1/cmp.1 \ + cols.1 $MANDIR/man1/cols.1 \ + comm.1 $MANDIR/man1/comm.1 \ + cp.1 $MANDIR/man1/cp.1 \ + cron.1 $MANDIR/man1/cron.1 \ + cut.1 $MANDIR/man1/cut.1 \ + date.1 $MANDIR/man1/date.1 \ + dd.1 $MANDIR/man1/dd.1 \ + dirname.1 $MANDIR/man1/dirname.1 \ + du.1 $MANDIR/man1/du.1 \ + echo.1 $MANDIR/man1/echo.1 \ + ed.1 $MANDIR/man1/ed.1 \ + env.1 $MANDIR/man1/env.1 \ + expand.1 $MANDIR/man1/expand.1 \ + expr.1 $MANDIR/man1/expr.1 \ + false.1 $MANDIR/man1/false.1 \ + find.1 $MANDIR/man1/find.1 \ + flock.1 $MANDIR/man1/flock.1 \ + fold.1 $MANDIR/man1/fold.1 \ + getconf.1 $MANDIR/man1/getconf.1 \ + grep.1 $MANDIR/man1/grep.1 \ + head.1 $MANDIR/man1/head.1 \ + hostname.1 $MANDIR/man1/hostname.1 \ + join.1 $MANDIR/man1/join.1 \ + kill.1 $MANDIR/man1/kill.1 \ + link.1 $MANDIR/man1/link.1 \ + ln.1 $MANDIR/man1/ln.1 \ + logger.1 $MANDIR/man1/logger.1 \ + logname.1 $MANDIR/man1/logname.1 \ + ls.1 $MANDIR/man1/ls.1 \ + md5sum.1 $MANDIR/man1/md5sum.1 \ + mkdir.1 $MANDIR/man1/mkdir.1 \ + mkfifo.1 $MANDIR/man1/mkfifo.1 \ + mknod.1 $MANDIR/man1/mknod.1 \ + mktemp.1 $MANDIR/man1/mktemp.1 \ + mv.1 $MANDIR/man1/mv.1 \ + nice.1 $MANDIR/man1/nice.1 \ + nl.1 $MANDIR/man1/nl.1 \ + nohup.1 $MANDIR/man1/nohup.1 \ + od.1 $MANDIR/man1/od.1 \ + paste.1 $MANDIR/man1/paste.1 \ + pathchk.1 $MANDIR/man1/pathchk.1 \ + printenv.1 $MANDIR/man1/printenv.1 \ + printf.1 $MANDIR/man1/printf.1 \ + pwd.1 $MANDIR/man1/pwd.1 \ + readlink.1 $MANDIR/man1/readlink.1 \ + renice.1 $MANDIR/man1/renice.1 \ + rev.1 $MANDIR/man1/rev.1 \ + rm.1 $MANDIR/man1/rm.1 \ + rmdir.1 $MANDIR/man1/rmdir.1 \ + sed.1 $MANDIR/man1/sed.1 \ + seq.1 $MANDIR/man1/seq.1 \ + setsid.1 $MANDIR/man1/setsid.1 \ + sha1sum.1 $MANDIR/man1/sha1sum.1 \ + sha224sum.1 $MANDIR/man1/sha224sum.1 \ + sha256sum.1 $MANDIR/man1/sha256sum.1 \ + sha384sum.1 $MANDIR/man1/sha384sum.1 \ + sha512sum.1 $MANDIR/man1/sha512sum.1 \ + sha512-224sum.1 $MANDIR/man1/sha512-224sum.1 \ + sha512-256sum.1 $MANDIR/man1/sha512-256sum.1 \ + sleep.1 $MANDIR/man1/sleep.1 \ + sort.1 $MANDIR/man1/sort.1 \ + split.1 $MANDIR/man1/split.1 \ + sponge.1 $MANDIR/man1/sponge.1 \ + strings.1 $MANDIR/man1/strings.1 \ + sync.1 $MANDIR/man1/sync.1 \ + tail.1 $MANDIR/man1/tail.1 \ + tar.1 $MANDIR/man1/tar.1 \ + tee.1 $MANDIR/man1/tee.1 \ + test.1 $MANDIR/man1/test.1 \ + tftp.1 $MANDIR/man1/tftp.1 \ + time.1 $MANDIR/man1/time.1 \ + touch.1 $MANDIR/man1/touch.1 \ + tr.1 $MANDIR/man1/tr.1 \ + true.1 $MANDIR/man1/true.1 \ + tsort.1 $MANDIR/man1/tsort.1 \ + tty.1 $MANDIR/man1/tty.1 \ + uname.1 $MANDIR/man1/uname.1 \ + unexpand.1 $MANDIR/man1/unexpand.1 \ + uniq.1 $MANDIR/man1/uniq.1 \ + unlink.1 $MANDIR/man1/unlink.1 \ + uudecode.1 $MANDIR/man1/uudecode.1 \ + uuencode.1 $MANDIR/man1/uuencode.1 \ + wc.1 $MANDIR/man1/wc.1 \ + which.1 $MANDIR/man1/which.1 \ + whoami.1 $MANDIR/man1/whoami.1 \ + xargs.1 $MANDIR/man1/xargs.1 \ + xinstall.1 $MANDIR/man1/xinstall.1 \ + yes.1 $MANDIR/man1/yes.1