From cdd32e9b87bbd2bd03caae25489802b2dcaba787 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Thu, 22 Apr 2021 15:04:45 +0200 Subject: [PATCH] Reduce README --- README.md | 214 ++---------------------------------------------------- 1 file changed, 8 insertions(+), 206 deletions(-) diff --git a/README.md b/README.md index bb52014..c58c7f6 100644 --- a/README.md +++ b/README.md @@ -1,209 +1,11 @@ + ``` -`` ______ __ __ -` / ____/__ ____ ____ ____/ /__ ____ / / ____ ______ - / / __/ _ \/ __ \/ __ \/ __ / _ \/ __ \/ / / __ `/ ___/ - / /_/ / __/ / / / /_/ / /_/ / __/ /_/ / , \ /_/ (__ ) -` \____/\___/_/ /_/\____/\__,_/\___/ .___/_/ \_\_, /____/ -`` /_/ /____/ + _____ _ _ __ + / ___/(_)___ _(_) / + \__ \/ / _ \/ / / + ___/ / / (_) / / / + /____/_/\__, /_/_/ + /____/ ``` -[Genodepkgs](https://git.sr.ht/~ehmry/genodepkgs) is nexus of -[Nix](https://nixos.org/nix/) expressions related to the -[Genode OS framework](https://genode.org). - -[IRC](irc://freenode.net/#nixos-exotic) - -[Mailing list](https://lists.sr.ht/~ehmry/genodepkgs) - -[Sotest](https://opensource.sotest.io/userName%3Demery/1) - -[Cachix](https://app.cachix.org/cache/genodepkgs) - -[Hydra](https://hydra.nix-community.org/project/genodepkgs) - -# Repository layout - - - Native packages are at [packages](./packages/default.nix) - - - Existing Nixpkgs packages are patched at [overlay](./overlay/default.nix) - - - Tests are at [tests](./tests/default.nix) - - - NixOS modules at [nixos-modules](./nixos-modules) - -# Contributing - -Patches can be submitted and issues reported via the -[mailing list](https://lists.sr.ht/~ehmry/genodepkgs). The mailing list is the -minimum viable mechanism for community development, and may be replaced later. - -Issues may also be reported at the -[ticket tracker](https://todo.sr.ht/~ehmry/genodepkgs). - -# Nix Flakes - -This repository is structured as a Nix flake, which is an experimental extension -of Nix tooling. See https://www.tweag.io/posts/2020-05-25-flakes.html for an -introduction and tutorial. - -## Build Caching - -A binary cache is graciously provided by Cachix, the following link provides -instructions for enabling: https://app.cachix.org/cache/genodepkgs - -## Building from flakes - -```sh -$ git clone https://git.sr.ht/~ehmry/genodepkgs -$ cd genodepkgs -$ nix build -L .#checks.x86_64-linux.nova-x86 - -# View the log if the result is already cached: -$ nix log .#checks.x86_64-linux.nova-x86 -``` - -# Packaging - -Packaging is done using standard Nixpkgs methods, a `stdenv` is available for -cross-compilation. See [Solo5](./packages/solo5/default.nix) as an example. - -## Cross-compiling Nixpkgs - -Some existing packages from Nixpkgs can be built with little or no modification. -Nixpkgs is available at the path `.#legacyPackages.x86_64-linux-x86_64-genode` -(or `…-aarch64-genode`) and modifications to packages are made at an -[overlay](./overlay/default.nix). Some packages need patched, others require -additional features added to the Genode libc. - -Packages that run on Linux as well as Genode should not be packaged here, those -should be added to Nixpkgs. - -# Toolchain - -The Genode Labs toolchain is available here only for Linux and in binary form. -However, an experimental LLVM cross-compiler is provided here. Bootstrapping GCC -has not been practical due to its recursive autotools build system. - -The enter a shell with the toolchain: - -```shell -nix shell .#legacyPackages.x86_64-linux-x86_64-genode.stdenv.cc - -x86_64-unknown-genode-clang++ -v -``` - -# Tips and tricks - -## How to add missing ports to a depot package? - -The missing ports as indicated by a depot build failure must be added to -[targets.nix](./overlay/genode/targets.nix). For example: - -```nix -{ - wifi_drv = { portInputs = [ dde_linux libc openssl ]; }; -} -``` - -## How to add undefined ports? - -Should a required port not be defined, it must be added to -[ports.nix](./overlay/genode/ports.nix). Initially it should be sufficient to -define the port as an empty attribute set, run the build again, and then add the -hash found in the successive build error. - -To continue from the previous example: - -```nix -{ - dde_linux = { }; -} -``` - -And after the reattempting the build a fixed-output hash should be produced, -this must now be added to the port definitions. - -```nix -{ - dde_linux = { - hash = "sha256-3G5Mprv9ZBNhDJRuVF6Nrkp3KbFaN10IKFq0OdyAY9M="; }; -} -``` - -Should the port preparation fail do to missing utilities, these must be added to -the port definition using a `nativeBuildInputs` attribute. - -Note that the hash checked into `ports.nix` is an *output hash*. The port hash -within the Genode source tree is an *explicit input hash* and the output of -the port preparation is non-deterministic. - - -## Enter an environment compatible with the Genode Labs build scripts - -```shell -nix dev-shell genodepkgs -cd $GENODE_DIR -make -C build/x86_64 run/bomb -``` - -# Glossary - -Some of terms that follow are necessary for understanding packaging methodology, -Others are simply introduced as an aid to the reader: - - - *Upstream* - repositories packaged by expressions in this repository - - - *Downstream* - repositories depending on this repository - - - *OS ABI* - The binary interface to an operating system. In the case of Genode - this does not include kernel interfaces, as system calls are abstracted via - dynamically linked procedures. - - - `localSystem` - the CPU and OS ABI pair used to evaluate and compile - packages. Genode cannot natively instantiate Nix derivations, therefore it - cannot be a `localSystem` ABI. - - - `crossSystem` - the target CPU and OS ABI pair for packages. In the common - case the ABI will be Genode. In the case of tooling it may be the same as - `localSystem`. For software that runs bare-metal the CPU is significant but - ABI is irrelevant. - - - `buildPlatform` - equivalent to `localSystem`. - - - `hostPlatform` - the platform on which a package will execute. - - - `targetPlatform` - the platform for which a package will produce artifacts. - This is only significant for software such as compilers. The respective - build, host, and target platform of a compiler that was built on a Solaris, - executes on Genode, and produces only Haiku binaries would be Solaris, - Genode, and Haiku. - - - *Flake* - a code repository containing a `flake.nix` file describing - dependency repositories. The evaluation of flakes may only form ascyclic - graphs. Repositories packaged here may themselves contain a `flake.nix` - file that refers to this repository, but these repositories cannot be inputs - to the Genodepkgs flake. - - - *Genode core* - Genode component of highest privilege. The core is located - conceptually at the bottom and root of the component tree. Core might be - directly above the kernel, or acting as the kernel. The role of core is a - subset of the role of the kernel in a monolithic system. - - - *Lower* - lowering a subsystem is moving it closer to the Genode core - and increasing privilege. - - - *Raise* - raising a subsystem is moving it further away from the Genode core - and decreasing privilege. - - - *Package* - *undefined* - -# Legal - -This repository is published under MIT licensing consistent with Nixpkgs. - -> Note: MIT license does not apply to the packages built by Nixpkgs, -> merely to the files in this repository (the Nix expressions, build -> scripts, NixOS modules, etc.). It also might not apply to patches -> included in Nixpkgs, which may be derivative works of the packages to -> which they apply. The aforementioned artifacts are all covered by the -> licenses of the respective packages. +[Sigil](https://git.sr.ht/~ehmry/sigil) is an aborted Genode distribution.