oasislinux/oasis

repository·master·Indexed 25 days ago

https://github.com/oasislinux/oasis

A small, statically-linked Linux system designed for simplicity and reproducibility. Following BSD-like principles, oasis avoids traditional package managers in favor of a specification-based filesystem generation system and minimal dependencies.

Tokens
4.4K
Snippets
21
Records
33
Agent score
85%

What's inside oasis

  1. Overview of oasis Linux system

    master

    oasis is a small Linux system designed with principles similar to BSD. It focuses on simplicity, static linking, and reproducible builds. Key characteristics include:

    • Static Linking: All base system software (including the velox display server and netsurf web browser) is completely statically linked for self-contained binaries.
    • Reproducible Builds: Uses samurai and Lua scripts for fast, predictable, and incremental builds.
    • Minimal Bootstrap: Can be bootstrapped from any POSIX system with git, lua, curl, sha256, standard compression utilities, and an x86_64-linux-musl cross compiler.
    • TLS/Crypto: Uses BearSSL throughout the system via libcurl and libtls-bearssl.
    • No Package Manager: Instead of a traditional manager, users configure specifications of files/packages to include, and the build system generates a filesystem tree in a git repository.
    • Extensibility: Integrates with OS-agnostic package systems like pkgsrc and nix to add software outside the base system.
    • Simple Configuration: The /etc directory is designed to be minimal and easy to understand; for example, the system initialization script /etc/rc.init is only 16 lines long.
    • ISO C Conformity: Aims to build with cproc, a strict and small ISO C compiler.
  2. Overview of fontconfig usage in oasis

    master
    In the oasis ecosystem, fontconfig is currently a dependency used exclusively by dmenu, st, velox, and wld. Note that this dependency is intended to be temporary and should be removed once those specific programs are updated to open font files directly.
  3. Overview of util-linux in Oasis

    master
    The util-linux component in this repository is configured with a specific set of enabled features and libraries, primarily focused on filesystem paths, filesystem checking (fsck), and block device/mount utilities. Note that while libblkid and libmount are enabled during configuration, they are not required for building fdisk.
  4. Configure the expat package

    master

    When building the expat package within the oasis environment, use the ./configure script with specific flags to point to the OpenBSD include and library directories. This ensures the build correctly links against the required OpenBSD headers and the bsd library.

    ./configure \
    	CPPFLAGS=-I/src/oasis/pkg/openbsd/include \
    	LDFLAGS='-L/src/oasis/pkg/openbsd' \
    	LIBS='-lbsd'
  5. Configure PCRE with specific build flags

    master

    When building PCRE for this project, use the following ./configure flags to ensure the correct feature set is enabled, including JIT support, UTF-8, and Unicode properties, while disabling C++ and shared library support.

    ./configure \
    	--disable-cpp \
    	--disable-shared \
    	--enable-jit \
    	--enable-utf8 \
    	--enable-unicode-properties
  6. Configure alsa-lib build with specific flags

    master

    When building alsa-lib within this repository, use the following ./configure command to disable hardware dependency (hwdep), Universal Code Library (ucm), and the requirement for libdl.

    ./configure \
    	--prefix= \
    	--disable-hwdep \
    	--disable-ucm \
    	--without-libdl
  7. Build libxkbcommon with Meson

    master

    To build libxkbcommon with specific configuration paths and disabled X11/Wayland support, use the Meson build system with the following flags. This configuration sets the XKB config root to /share/xkb and the X locale root to /share/xlocale.

    meson \
    	--prefix=/ \
    	-Dxkb-config-root=/share/xkb \
    	-Dx-locale-root=/share/xlocale \
    	-Denable-x11=false \
    	-Denable-wayland=false \
    	-Denable-docs=false \
    	build
  8. Install oasis Linux

    master

    For detailed installation instructions, refer to the official oasis wiki.

    Note: oasis is an ambitious project. Users should be prepared to build their own kernel and tinker with the system configuration if issues arise.

  9. Configure libass with custom Freetype and FriBidi paths

    master

    When building libass within the Oasis environment, you may need to generate a config.h file using a specific ./configure command that points to custom paths for Freetype and FriBidi. This ensures libass links against the specific versions of these libraries provided by the Oasis package system rather than system-wide providers.

    ./configure \
    	--disable-require-system-font-provider \
    	FREETYPE_CFLAGS=-I/src/oasis/pkg/freetype/src/include \
    	FREETYPE_LIBS=/src/oasis/out/pkg/freetype/libfreetype.a \
    	FRIBIDI_CFLAGS=-I/src/oasis/out/pkg/fribidi/include \
    	FRIBIDI_LIBS=/home/michael/src/oasis/out/pkg/fribidi/libfribidi.a