Skip to content

Commit eafaa82

Browse files
committed
building lotus.
1 parent 95f87a0 commit eafaa82

File tree

15 files changed

+151
-115
lines changed

15 files changed

+151
-115
lines changed

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,3 @@ compile_commands.json
4040
# Twister test output directories
4141
twister-out*
4242
flash.bin
43-
/venv
44-
/result

.gitmodules

Lines changed: 0 additions & 27 deletions
This file was deleted.

.repo/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

chromite/third_party/pyelftools

Lines changed: 0 additions & 1 deletion
This file was deleted.

commands.bash

Lines changed: 0 additions & 26 deletions
This file was deleted.

flake.lock

Lines changed: 0 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 151 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,13 @@
66

77
zephyr-nix.url = github:adisbladis/zephyr-nix;
88
zephyr-nix.inputs.nixpkgs.follows = "nixpkgs";
9-
10-
ec.url = github:FrameworkComputer/EmbeddedController?ref=fwk-lotus-azalea-19573;
11-
ec.flake = false;
12-
13-
u-boot.url = git+https://chromium.googlesource.com/chromiumos/third_party/u-boot?ref=upstream/next;
14-
u-boot.flake = false;
159
};
1610

1711
outputs = {
1812
self,
1913
nixpkgs,
2014
flake-utils,
2115
zephyr-nix,
22-
ec,
23-
u-boot,
2416
}:
2517
flake-utils.lib.eachDefaultSystem (system: let
2618
pkgs = import nixpkgs {inherit system;};
@@ -34,19 +26,159 @@
3426
${pkgs.toml-cli}/bin/toml set pyproject.toml project.dynamic license | ${pkgs.moreutils}/bin/sponge pyproject.toml
3527
sed -e 's/dynamic = "license"/dynamic = ["license"]/' -i pyproject.toml
3628
'';
29+
30+
pyelftools = pkgs.fetchgit {
31+
name = "pyelftools";
32+
url = "https://chromium.googlesource.com/chromiumos/third_party/pyelftools";
33+
rev = "refs/heads/chromeos-0.22";
34+
hash = "sha256-MArasbUre77vVGThaPxNotukIX+lGiNC4mhzZT52vl8=";
35+
};
36+
37+
crosutils = pkgs.fetchgit {
38+
name = "crosutils";
39+
url = "https://chromium.googlesource.com/chromiumos/platform/crosutils";
40+
rev = "refs/heads/main";
41+
hash = "sha256-ahnXEetj99TLEocogZcSSUdj/r0QXiOw1OIVRrMt0cI=";
42+
};
43+
44+
ec = pkgs.fetchFromGitHub {
45+
name = "ec";
46+
owner = "FrameworkComputer";
47+
repo = "EmbeddedController";
48+
rev = "fwk-lotus-azalea-19573";
49+
hash = "sha256-37iKyZdOy8K/a8fsvaTjiC9cTkcP0JbvsfB7t1XAIco=";
50+
};
51+
52+
cmsis = pkgs.fetchgit {
53+
name = "cmsis";
54+
url = "https://chromium.googlesource.com/chromiumos/third_party/zephyr/cmsis";
55+
rev = "4aa3ff8e4f8a21e31cd9831b943acb7a7cd56ac8";
56+
hash = "sha256-IKmdIn/K1eHBVxA0sNvzr1i5LpkgJQMAMsks13lmDNw=";
57+
};
58+
59+
hal_stm32 = pkgs.fetchgit {
60+
name = "hal_stm32";
61+
url = "https://chromium.googlesource.com/chromiumos/third_party/zephyr/hal_stm32";
62+
rev = "refs/heads/chromeos-main";
63+
hash = "sha256-r1aks0sgUrJeX8t2lO98sOtGjBMvHgt2St0am+qEz3E=";
64+
};
65+
66+
zephyr = pkgs.fetchFromGitHub {
67+
name = "zephyr";
68+
owner = "FrameworkComputer";
69+
repo = "zephyr";
70+
rev = "lotus-zephyr";
71+
hash = "sha256-KgTh39Ba9jDByv7+9gDdZHCl2OOku3Y3yxq0Pt4GeBo=";
72+
};
73+
74+
nanopb = pkgs.fetchgit {
75+
name = "nanopb";
76+
url = "https://chromium.googlesource.com/chromiumos/third_party/zephyr/nanopb";
77+
rev = "refs/heads/main";
78+
hash = "sha256-qt9ey7dbuqxIAhc4BKm0EqkMusOdsuQZNppmaN4ZVfA=";
79+
};
80+
81+
u-boot = pkgs.fetchgit {
82+
name = "u-boot";
83+
url = "https://chromium.googlesource.com/chromiumos/third_party/u-boot";
84+
rev = "refs/heads/upstream/next";
85+
hash = "sha256-h5y0M1dupdO9CNG+OhUYi56UXsWAL5B0PTnhx+gU3FA=";
86+
fetchSubmodules = false;
87+
};
88+
89+
depot_tools = pkgs.fetchgit {
90+
name = "depot_tools";
91+
url = "https://chromium.googlesource.com/chromium/tools/depot_tools";
92+
rev = "84edf22d0e5bf3f9ae60714ed9789fd62f86cf2a";
93+
hash = "sha256-3t03DdZ+dRen1z3PTyGt2rDPHIHTe+qS8ek/bH4kuKo=";
94+
};
3795
in rec {
3896
formatter = pkgs.alejandra;
3997

98+
packages.default = packages.lotus;
99+
packages.lotus = pkgs.stdenv.mkDerivation {
100+
name = "lotus";
101+
102+
srcs = [
103+
pyelftools
104+
crosutils
105+
ec
106+
cmsis
107+
hal_stm32
108+
zephyr
109+
nanopb
110+
u-boot
111+
depot_tools
112+
];
113+
114+
sourceRoot = ".";
115+
116+
postPatch = ''
117+
mkdir .repo
118+
119+
mkdir -p chromite/third_party
120+
mv pyelftools chromite/third_party/pyelftools
121+
122+
mkdir -p src
123+
mv crosutils src/scripts
124+
125+
mkdir -p src/platform
126+
mv ec src/platform/ec
127+
128+
mkdir -p src/third_party/zephyr
129+
mv cmsis src/third_party/zephyr/cmsis
130+
131+
mkdir -p src/third_party/zephyr
132+
mv hal_stm32 src/third_party/zephyr/hal_stm32
133+
134+
mkdir -p src/third_party/zephyr
135+
mv zephyr src/third_party/zephyr/main
136+
137+
mkdir -p src/third_party/zephyr
138+
mv nanopb src/third_party/zephyr/nanopb
139+
140+
mkdir -p src/third_party/u-boot
141+
mv u-boot src/third_party/u-boot/files
142+
143+
mkdir -p src/chromium
144+
mv depot_tools src/chromium/depot_tools
145+
'';
146+
147+
nativeBuildInputs = [
148+
zephyr-sdk
149+
pkgs.cmake
150+
pkgs.git
151+
pkgs.ninja
152+
pythonPkgs.pyyaml
153+
pythonPkgs.pykwalify
154+
pythonPkgs.packaging
155+
pythonPkgs.pyelftools
156+
pythonPkgs.colorama
157+
packages.binman
158+
];
159+
160+
dontUseCmakeConfigure = true;
161+
162+
buildPhase = ''
163+
${packages.zmake}/bin/zmake -j8 build lotus -DCMAKE_MAKE_PROGRAM="${pkgs.ninja}/bin/ninja" -DBUILD_VERSION=awawa
164+
'';
165+
installPhase = ''
166+
mkdir $out
167+
cp src/platform/ec/build/zephyr/lotus/output/* $out/
168+
'';
169+
};
170+
40171
packages.zmake = pythonPkgs.buildPythonPackage {
41172
name = "zmake";
42-
src = "${ec}/zephyr/zmake";
173+
src = ec;
174+
sourceRoot = "ec/zephyr/zmake";
43175
pyproject = true;
176+
build-system = [pythonPkgs.setuptools];
44177

45-
propagatedBuildInputs = with pkgs; [gcc dtc];
46-
178+
# The DYLD_LIBRARY_PATH part here is only needed for Darwin, but it
179+
# doesn't harm Linux.
47180
postPatch = ''
48-
# TODO: binman not found.
49-
echo sed -e 's#"/bin:/usr/bin"#"/bin:/usr/bin:${pkgs.gcc}/bin:${pkgs.dtc}/bin","DYLD_LIBRARY_PATH":"${pkgs.dtc}/lib"#' -i src/platform/ec/zephyr/zmake/zmake/jobserver.py
181+
sed -e 's#"/bin:/usr/bin"#"/bin:/usr/bin:${pkgs.gcc}/bin:${pkgs.dtc}/bin","DYLD_LIBRARY_PATH":"${pkgs.dtc}/lib"#' -i zmake/jobserver.py
50182
'';
51183
};
52184

@@ -56,10 +188,15 @@
56188
pyproject = false;
57189
build-system = [pythonPkgs.setuptools];
58190

191+
# zmake calls (sys.executable, path-to-binman, ...) on purpose, so we
192+
# can't wrap it. This makes it unsuitable for calling directly, however.
193+
dontWrapPythonPrograms = true;
194+
59195
buildInputs = [
60196
pythonPkgs.pypaBuildHook
61197
pythonPkgs.pipInstallHook
62198
];
199+
63200
dependencies = [
64201
pythonPkgs.setuptools
65202
packages.u_boot_pylib
@@ -121,7 +258,7 @@
121258
pythonPkgs.pyelftools
122259
pythonPkgs.colorama
123260
pythonPkgs.setuptools
124-
pythonPkgs.libfdt # <- 311 version fails to build; can't build with pip.
261+
pythonPkgs.libfdt
125262
dtc
126263
cmake
127264
ninja

src/chromium/depot_tools

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/platform/ec

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/scripts

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)