diff --git a/lsd/LICENSE b/lsd/LICENSE new file mode 100644 index 0000000..68a49da --- /dev/null +++ b/lsd/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/lsd/README.md b/lsd/README.md new file mode 100644 index 0000000..0d1fe9f --- /dev/null +++ b/lsd/README.md @@ -0,0 +1,5 @@ +# trilsd + +*trinity's linux software distribution* + +See `/dist/documentation/trilsd.7'. diff --git a/lsd/dist/Makefile b/lsd/dist/Makefile new file mode 100644 index 0000000..368d2b6 --- /dev/null +++ b/lsd/dist/Makefile @@ -0,0 +1,112 @@ +include mk.conf + +all: fhs learn + +destroy: + cd "$(PREFIX)" + git clean -f -d + +fhs: + # Filesystem Hierarchy Standard 3.0, 2015 + # https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf + + # section 3.2 + mkdir -p "$(PREFIX)/bin" + mkdir -p "$(PREFIX)/boot" + mkdir -p "$(PREFIX)/dev" + mkdir -p "$(PREFIX)/etc" + mkdir -p "$(PREFIX)/lib" + mkdir -p "$(PREFIX)/media" + mkdir -p "$(PREFIX)/mnt" + mkdir -p "$(PREFIX)/opt" + mkdir -p "$(PREFIX)/run" + mkdir -p "$(PREFIX)/sbin" + mkdir -p "$(PREFIX)/srv" + mkdir -p "$(PREFIX)/tmp" + mkdir -p "$(PREFIX)/usr" + mkdir -p "$(PREFIX)/var" + + # section 3.7.4 + mkdir -p "$(PREFIX)/etc/opt" + + # section 4.2 + mkdir -p "$(PREFIX)/usr/bin" + mkdir -p "$(PREFIX)/usr/lib" + mkdir -p "$(PREFIX)/usr/local" + mkdir -p "$(PREFIX)/usr/sbin" + mkdir -p "$(PREFIX)/usr/share" + + # section 4.3 + mkdir -p "$(PREFIX)/usr/include" + mkdir -p "$(PREFIX)/var/spool" + mkdir -p "$(PREFIX)/var/tmp" + mkdir -p "$(PREFIX)/var/lock" + ln -s "$(PREFIX)/usr/spool" "$(PREFIX)/var/spool" + ln -s "$(PREFIX)/usr/tmp" "$(PREFIX)/var/tmp" + ln -s "$(PREFIX)/usr/spool/locks" "$(PREFIX)/var/lock" + + # section 4.6 + mkdir -p "$(PREFIX)/usr/lib" + + # section 4.9 + mkdir -p "$(PREFIX)/usr/local" + + # section 4.9.2 + mkdir -p "$(PREFIX)/usr/local/bin" + #mkdir -p "$(PREFIX)/usr/local/etc" # see section 4.9.3 + mkdir -p "$(PREFIX)/usr/local/games" + mkdir -p "$(PREFIX)/usr/local/include" + mkdir -p "$(PREFIX)/usr/local/lib" + mkdir -p "$(PREFIX)/usr/local/man" + mkdir -p "$(PREFIX)/usr/local/sbin" + mkdir -p "$(PREFIX)/usr/local/share" + mkdir -p "$(PREFIX)/usr/local/src" + + # section 4.9.3 + ln -s "$(PREFIX)/usr/local/etc" "$(PREFIX)/etc/local" + + # section 4.11.6 + mkdir -p "$(PREFIX)/usr/share/man" + + # section 4.11.7 + mkdir -p "$(PREFIX)/usr/share/misc" + + # section 4.12 + mkdir -p "$(PREFIX)/usr/src" + + # section 5.2 + mkdir -p "$(PREFIX)/var/lib" + mkdir -p "$(PREFIX)/var/local" + mkdir -p "$(PREFIX)/var/log" + mkdir -p "$(PREFIX)/var/opt" + #mkdir -p "$(PREFIX)/var/run" # see section 5.13.2 + + # section 5.8.2 + mkdir -p "$(PREFIX)/var/lib/misc" + + # section 5.13.2 + ln -s "$(PREFIX)/var/run" "$(PREFIX)/run" + + # section 6.1.10 + mkdir -p "$(PREFIX)/var/spool/cron" + +learn: fhs + mkdir -p "$(PREFIX)/usr/man/man1" + cp "$(PREFIX)/dist/doc/*.1" "$(PREFIX)/usr/man/man1/" + mkdir -p "$(PREFIX)/usr/man/man7" + cp "$(PREFIX)/dist/doc/*.7" "$(PREFIX)/usr/man/man7/" + +musl_fetch: "$(PREFIX)/usr/src/musl" + git clone "$(MUSL_UPSTREAM)" "$(PREFIX)/usr/src/musl" || true + +musl: musl_fetch + cd "$(PREFIX)/usr/src/musl" + ./configure --prefix="$(PREFIX)" + $(MAKE) install + +unrepo: + rm -rf "$(PREFIX)/.git" + rm -f "$(PREFIX)/LICENSE" + rm -f "$(PREFIX)/README.md" + +.PHONY: all destroy diff --git a/lsd/dist/doc/trilsd.7 b/lsd/dist/doc/trilsd.7 new file mode 100644 index 0000000..88d2cd1 --- /dev/null +++ b/lsd/dist/doc/trilsd.7 @@ -0,0 +1,65 @@ +.TH TRINITX 7 + +.SH PRONUNCIATION +"Try LSD" + +.SH SYNOPSIS +.I TriLSD +is a UNIX-like software distribution built upon the Linux kernel and the +musl C standard library, with nearly all configuration options left to the +user's own device. + +.SH BASE SYSTEM +A +.I TriLSD +system always has the following packages: +dash, +the GNU compiler collection, +GNU make, +musl, +and +linux and util-linux. +.PP +In addition, +.I TriLSD +needs a core utilities package. +The GNU coreutils are a popular choice but Busybox or your own may be used. +.PP +.I TriLSD +also needs an initialization system. +OpenRC is the suggested choice but others may be used. +SystemD is discouraged; it's mentioned for its popularity and frowned upon for +its generally lax security. + +.SH INSTALLATION +To install +.I TriLSD +most of the POSIX specified utilities including awk, git(1), GNU make, and a C +compiler that can build the GNU compiler collection must be installed. + +.PP +For the installation process see +.RB try (1) + +.SH PACKAGE MANAGEMENT +.I TriLSD +does not come with a package manager; the user may choose whatever +system-independent package manager they prefer. + +.SH CONTRIBUTING +Pay attention to projects' guidelines for distributions. +.PP +musl guidelines: https://wiki.musl-libc.org/guidelines-for-distributions.html + +.SH HISTORY +The +.I TriLSD +project was started 2021-12-28 as Trinitx. + +.SH COPYRIGHT +.I TriLSD +documentation and all in-house tools are part of the public domain. +Components of the distribution are of course subject to their own licenses. + +.SH SEE ALSO +.RB try (1) diff --git a/lsd/dist/mk.conf b/lsd/dist/mk.conf new file mode 100644 index 0000000..b7cd31a --- /dev/null +++ b/lsd/dist/mk.conf @@ -0,0 +1,3 @@ +GCC_UPSTREAM=git://gcc.gnu.org/git/gcc.git +MUSL_UPSTREAM=git://git.musl-libc.org/musl +PKGSRC_UPSTREAM=https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.xz