Skip to content

D-os/dos

Repository files navigation

D/os

δέος (déos) — Dee Operating System

Discord Chat

Mission statement

Build operating system for workplace computers, using best available open source components.

Goals

  • developer friendly
  • reasonably unix-compliant
  • lean base system

Non-goals

  • LSB compliance
  • applications distribution

Build && Run

  • See tools/tc-build/README.md for a list of required host tools.
  • Additionall host tools:
    • D language compiler
    • pahole (dnf install dwarves)
    • expat headers (dnf install expat-devel)
  • QEmu needs you to be running Linux kernel with KVM support.

⚠️ This repository makes heavy use of git submodules, so you need to git clone --recursive

⚠️ Some of submodules store copious amount of data. You are advised to clone --depth 1

make toolchain sysroot compdb kernel kernel_modules
ninja && ./qemu.sh

Testing

You need to be running Linux kernel with binderfs support.

Unit tests

ninja -f chroot.ninja out/system.content && ./chroot.sh out/system /tests/kits

Interactive tests

Clone Weston and make a local build for host. Then run it: ($DOS_DIR is a directory with this repository working copy.)

XDG_RUNTIME_DIR=$DOS_DIR/out/system/run build/compositor/weston

Having Weston window open run in another terminal window:

ninja -f chroot.ninja out/system.content && ./chroot.sh out/system env XDG_RUNTIME_DIR=/run WAYLAND_DISPLAY=wayland-1 WAYLAND_DEBUG=1 /tests/interface_window

System integration tests

To run tests that require system services you need to build using -f debug.ninja and run the following services on dedicated terminals:

ninja -f debug.ninja out/system.content && ./chroot.sh out/system /system/bin/servicemanager
ninja -f debug.ninja out/system.content && ./chroot.sh out/system /system/libexec/app_server

then run test:

ninja -f debug.ninja out/system.content && ./chroot.sh out/system /tests/app_message_runner