linux-qubasis

linux oasis port as a qubes template

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

README

(2328B)


      1 ## About
      2 
      3 This project builds a Linux distro with Ninja and is heavily inspired by Michael Forney's Oasis Linux. Many of the packages are from Oasis Linux as well, but unlike Oasis, the scripts to generate the ninja files were written in Posix Shell and includes a tpl/ directory to define multiple templates. Each template outputs a raw image that can be used with virtual machines.
      4 
      5 I personally built this as a means to create lightweight templates for Qubes OS without XDG, Python, or Bash. All packages in the pkg/ directory are compiled with musl libc and may include patches in a patch/ directory. The ninja specs are generated by gen.sh shell scripts using functions defined in the ninja/functions.sh file.
      6 
      7 ## Getting Started
      8 
      9 You'll need a few host dependencies including:
     10 - a system toolchain to compile host dependencies which are used for bootstrapping
     11 - a posix shell to run the gen scripts
     12 - musl toolchain to cross-compile target dependencies
     13 - curl for fetching packages
     14 - git for fetching git submodule packages
     15 - samurai - a simpler ninja alternative by Michael Forney
     16 
     17 
     18 Run the configure script to initialize the ninja files. By default, out/ is the build directory and ninja files are saved in out/ninja directory. Then, you can start building with samurai (samu).
     19 
     20 ```
     21 ./configure
     22 samu
     23 ```
     24 
     25 ## Targets
     26 
     27 "build" is the default target. Below are all of the phony targets you can also use.
     28 
     29 - configure: regenerates ninja file for root
     30 - sync: syncs/fetches all source files in pkg directory
     31 - build-pkgs: build all executables and libraries in pkg directory
     32 - build-tpls: build all raw images in tpl directory
     33 - build: builds all packages and templates
     34 - fspec: generates fspec files in pkg/tpl directories
     35 - pkg/{name}/configure: regenerates ninja file for specified package
     36 - pkg/{name}/sync: syncs/fetches all source files for specified package
     37 - pkg/{name}/build: builds executables and libraries for specified package
     38 - pkg/{name}/fspec: generates fspec files for specified package
     39 - tpl/{name}/configure: regenerates ninja file for specified template
     40 - tpl/{name}/build: builds raw image for specified template
     41 - tpl/{name}/fspec: generates fspec files for specified template
     42 
     43 ## Architecture
     44 ## Gen API
     45 ## Ninja Files Explained
     46   - incremental builds
     47 ## The Build Directory
     48 ## Qubes Users
     49 ## Updating