Skip to content

Commit

Permalink
feat: add more camkes-vm examples (#13)
Browse files Browse the repository at this point in the history
* feat: add more camkes-vm examples

- Also fix hardcoded aarch64 setting
- Add ubootTools for mkimage
- Remove `stack`, we don't compile Haskell in the examples
- Remove unsound usage of `pkgs` instead of `pkgsCross`

* feat: add uboot-zcu102

---------

Co-authored-by: Wanja Zaeske <[email protected]>
  • Loading branch information
wucke13 and Wanja Zaeske authored Apr 25, 2024
1 parent f3d5598 commit 8addb47
Show file tree
Hide file tree
Showing 3 changed files with 245 additions and 12 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/nix.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,94 @@ jobs:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.seL4-camkes-vm-examples-aarch64-qemu-arm-virt --print-build-logs
x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-tx1:
name: x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-tx1
runs-on:
- ubuntu-latest
needs:
- x86_64-linux---packages---camkes-deps
- x86_64-linux---packages---capDL-tool
- x86_64-linux---packages---concurrencytest
- x86_64-linux---packages---guardonce
- x86_64-linux---packages---pyfdt
- x86_64-linux---packages---seL4-deps
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v14
with:
name: dlr-ft
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.seL4-camkes-vm-examples-aarch64-tx1 --print-build-logs
x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-tx2:
name: x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-tx2
runs-on:
- ubuntu-latest
needs:
- x86_64-linux---packages---camkes-deps
- x86_64-linux---packages---capDL-tool
- x86_64-linux---packages---concurrencytest
- x86_64-linux---packages---guardonce
- x86_64-linux---packages---pyfdt
- x86_64-linux---packages---seL4-deps
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v14
with:
name: dlr-ft
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.seL4-camkes-vm-examples-aarch64-tx2 --print-build-logs
x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-zcu102:
name: x86_64-linux---packages---seL4-camkes-vm-examples-aarch64-zcu102
runs-on:
- ubuntu-latest
needs:
- x86_64-linux---packages---camkes-deps
- x86_64-linux---packages---capDL-tool
- x86_64-linux---packages---concurrencytest
- x86_64-linux---packages---guardonce
- x86_64-linux---packages---pyfdt
- x86_64-linux---packages---seL4-deps
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v14
with:
name: dlr-ft
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.seL4-camkes-vm-examples-aarch64-zcu102 --print-build-logs
x86_64-linux---packages---seL4-camkes-vm-examples-armv7l-exynos5422:
name: x86_64-linux---packages---seL4-camkes-vm-examples-armv7l-exynos5422
runs-on:
- ubuntu-latest
needs:
- x86_64-linux---packages---camkes-deps
- x86_64-linux---packages---capDL-tool
- x86_64-linux---packages---concurrencytest
- x86_64-linux---packages---guardonce
- x86_64-linux---packages---pyfdt
- x86_64-linux---packages---seL4-deps
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v14
with:
name: dlr-ft
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.seL4-camkes-vm-examples-armv7l-exynos5422 --print-build-logs
x86_64-linux---packages---seL4-deps:
name: x86_64-linux---packages---seL4-deps
runs-on:
Expand Down Expand Up @@ -650,6 +738,22 @@ jobs:
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.uboot-aarch64-rpi4 --print-build-logs
x86_64-linux---packages---uboot-aarch64-zcu102:
name: x86_64-linux---packages---uboot-aarch64-zcu102
runs-on:
- ubuntu-latest
needs: []
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v25
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v14
with:
name: dlr-ft
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build
run: nix build .#packages.x86_64-linux.uboot-aarch64-zcu102 --print-build-logs
x86_64-linux---packages---uboot-armv7l-zynq-zc702:
name: x86_64-linux---packages---uboot-armv7l-zynq-zc702
runs-on:
Expand Down
150 changes: 139 additions & 11 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -304,16 +304,95 @@
};


#
### seL4 CAmkES VM Examples
#
seL4-camkes-vm-examples-aarch64-tx1 =
let
pkgsCross = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [
self.overlays.default
# seL4's musllibc fork can't stand modern bintools because its too old.
(final: prev: {
bintools = prev.wrapBintoolsWith {
bintools = prev.binutils-unwrapped_2_38;
libc = prev.stdenv.cc.libc;
};
})
];
});
in
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix {
stdenvNoLibs = pkgsCross.overrideCC pkgsCross.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=tx1"
"-DCAMKES_VM_APP=vm_minimal"
];
};


seL4-camkes-vm-examples-aarch64-tx2 =
let
pkgsCross = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [
self.overlays.default
# seL4's musllibc fork can't stand modern bintools because its too old.
(final: prev: {
bintools = prev.wrapBintoolsWith {
bintools = prev.binutils-unwrapped_2_38;
libc = prev.stdenv.cc.libc;
};
})
];
});
in
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix {
stdenvNoLibs = pkgsCross.overrideCC pkgsCross.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=tx2"
"-DCAMKES_VM_APP=vm_minimal"
];
};


seL4-camkes-vm-examples-aarch64-qemu-arm-virt =
let
pkgsCross = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [
self.overlays.default
# seL4's musllibc fork can't stand modern gcc because its too old.
# seL4's musllibc fork can't stand modern bintools because its too old.
(final: prev: {
bintools = prev.wrapBintoolsWith {
bintools = prev.binutils-unwrapped_2_38;
libc = prev.stdenv.cc.libc;
};
})
];
});
in
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix {
stdenvNoLibs = pkgsCross.overrideCC pkgsCross.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=qemu-arm-virt"
"-DCAMKES_VM_APP=vm_minimal"
];
};


seL4-camkes-vm-examples-aarch64-zcu102 =
let
pkgsCross = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [
self.overlays.default
# seL4's musllibc fork can't stand modern bintools because its too old.
(final: prev: {
bintools = prev.wrapBintoolsWith {
bintools = prev.binutils-unwrapped_2_38;
Expand All @@ -323,31 +402,80 @@
];
});
in
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix
{
stdenvNoLibs = pkgs.overrideCC pkgs.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=qemu-arm-virt"
"-DCAMKES_VM_APP=vm_minimal"
"-DAARCH64=1"
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix {
stdenvNoLibs = pkgsCross.overrideCC pkgsCross.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=zcu102"
"-DCAMKES_VM_APP=vm_minimal"
];
};


seL4-camkes-vm-examples-armv7l-exynos5422 =
let
pkgsCross = (import nixpkgs {
inherit system;
crossSystem.config = "armv7l-unknown-linux-gnueabi";
overlays = [
self.overlays.default
# seL4's musllibc fork can't stand modern bintools because its too old.
(final: prev: {
bintools = prev.wrapBintoolsWith {
bintools = prev.binutils-unwrapped_2_38;
libc = prev.stdenv.cc.libc;
};
})
];
};
});
in
pkgs.callPackage pkgs/seL4-camkes-vm-examples.nix {
stdenvNoLibs = pkgsCross.overrideCC pkgsCross.stdenvNoLibs pkgsCross.stdenvNoLibs.cc;
extraCmakeFlags = [
"-DPLATFORM=exynos5422"
"-DCAMKES_VM_APP=vm_minimal"
];
};


#
### UBoot with specific patches
#
uboot-aarch64-rpi4 = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-musl";
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [ self.overlays.default ];
}).ubootRaspberryPi4_64bit;


# For more information on compiling the Xilinx U-Boot fork see
# https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841973/Build+U-Boot
uboot-aarch64-zcu102 = (import nixpkgs {
inherit system;
crossSystem.config = "aarch64-unknown-linux-gnu";
overlays = [ self.overlays.default ];
}).buildUBoot rec {
extraMeta.platforms = [ "aarch64-linux" ];
defconfig = "xilinx_zynqmp_virt_defconfig";
# The `DEVICE_TREE` environment variable must only be propagated __after__ the initial
# `make xilinx_zynqmp_virt_defconfig` call.
preInstall = ''
export DEVICE_TREE="zynqmp-zcu102-rev1.0"
'';
filesToInstall = [ "spl/boot.bin" "u-boot.img" ];
version = "xilinx-v2023.2";
src = pkgs.fetchFromGitHub {
owner = "Xilinx";
repo = "u-boot-xlnx";
rev = version;
hash = "sha256-tSOw7+Pe3/JYIgrPYB6exPzfGrRTuolxXXTux80w/X8=";
};
};


# based of https://github.com/Xilinx/u-boot-xlnx/blob/master/doc/board/xilinx/zynq.rst
uboot-armv7l-zynq-zc702 = (import nixpkgs {
inherit system;
crossSystem.config = "armv7l-unknown-linux-musleabihf";
crossSystem.config = "armv7l-unknown-linux-gnueabi";
overlays = [ self.overlays.default ];
}).buildUBoot rec {
extraMeta.platforms = [ "armv7l-linux" ];
Expand Down
3 changes: 2 additions & 1 deletion pkgs/seL4-camkes-vm-examples.nix
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
, protobuf
, python3
, qemu
, ubootTools
, extraCmakeFlags ? [ ]
, stack
}:
Expand Down Expand Up @@ -46,8 +47,8 @@ stdenvNoLibs.mkDerivation rec {
nanopb # ser/de
ninja # build tools
protobuf # to generate ser/de stuff
ubootTools # for mkimage
(python3.withPackages (ps: with ps; [ camkes-deps protobuf seL4-deps ]))
stack

# fakegit
(writeShellScriptBin "git" ''
Expand Down

0 comments on commit 8addb47

Please sign in to comment.