Added devShell to nix flake.
This commit is contained in:
parent
86768ad452
commit
3dcca6591b
|
@ -55,7 +55,8 @@ def setupLogger(verbose: bool):
|
||||||
def main() -> int:
|
def main() -> int:
|
||||||
try:
|
try:
|
||||||
shell.mkdir(const.GLOBAL_CK_DIR)
|
shell.mkdir(const.GLOBAL_CK_DIR)
|
||||||
args = cli.parse(sys.argv[1:])
|
extraArgs = os.environ.get("CK_EXTRA_ARGS", None)
|
||||||
|
args = cli.parse((extraArgs.split(" ") if extraArgs else []) + sys.argv[1:])
|
||||||
setupLogger(args.consumeOpt("verbose", False) is True)
|
setupLogger(args.consumeOpt("verbose", False) is True)
|
||||||
|
|
||||||
const.setup()
|
const.setup()
|
||||||
|
|
|
@ -66,7 +66,7 @@ class ProductScope(ComponentScope):
|
||||||
|
|
||||||
# --- Variables -------------------------------------------------------------- #
|
# --- Variables -------------------------------------------------------------- #
|
||||||
|
|
||||||
Compute = Callable[[TargetScope], str]
|
Compute = Callable[[TargetScope], list[str]]
|
||||||
_vars: dict[str, Compute] = {}
|
_vars: dict[str, Compute] = {}
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,21 +79,21 @@ def var(name: str) -> Callable[[Compute], Compute]:
|
||||||
|
|
||||||
|
|
||||||
@var("builddir")
|
@var("builddir")
|
||||||
def _computeBuilddir(scope: TargetScope) -> str:
|
def _computeBuilddir(scope: TargetScope) -> list[str]:
|
||||||
"""
|
"""
|
||||||
This variable is needed by ninja to know where to put
|
This variable is needed by ninja to know where to put
|
||||||
the .ninja_log file.
|
the .ninja_log file.
|
||||||
"""
|
"""
|
||||||
return scope.target.builddir
|
return [scope.target.builddir]
|
||||||
|
|
||||||
|
|
||||||
@var("hashid")
|
@var("hashid")
|
||||||
def _computeHashid(scope: TargetScope) -> str:
|
def _computeHashid(scope: TargetScope) -> list[str]:
|
||||||
return scope.target.hashid
|
return [scope.target.hashid]
|
||||||
|
|
||||||
|
|
||||||
@var("cincs")
|
@var("cincs")
|
||||||
def _computeCinc(scope: TargetScope) -> str:
|
def _computeCinc(scope: TargetScope) -> list[str]:
|
||||||
res = set()
|
res = set()
|
||||||
|
|
||||||
for c in scope.registry.iterEnabled(scope.target):
|
for c in scope.registry.iterEnabled(scope.target):
|
||||||
|
@ -104,11 +104,11 @@ def _computeCinc(scope: TargetScope) -> str:
|
||||||
elif c.type == model.Kind.LIB:
|
elif c.type == model.Kind.LIB:
|
||||||
res.add(str(Path(c.dirname()).parent))
|
res.add(str(Path(c.dirname()).parent))
|
||||||
|
|
||||||
return " ".join(sorted(map(lambda i: f"-I{i}", res)))
|
return sorted(map(lambda i: f"-I{i}", res))
|
||||||
|
|
||||||
|
|
||||||
@var("cdefs")
|
@var("cdefs")
|
||||||
def _computeCdef(scope: TargetScope) -> str:
|
def _computeCdef(scope: TargetScope) -> list[str]:
|
||||||
res = set()
|
res = set()
|
||||||
|
|
||||||
def sanatize(s: str) -> str:
|
def sanatize(s: str) -> str:
|
||||||
|
@ -125,7 +125,7 @@ def _computeCdef(scope: TargetScope) -> str:
|
||||||
res.add(f"-D__ck_{sanatize(k)}_{sanatize(str(v))}__")
|
res.add(f"-D__ck_{sanatize(k)}_{sanatize(str(v))}__")
|
||||||
res.add(f"-D__ck_{sanatize(k)}_value={str(v)}")
|
res.add(f"-D__ck_{sanatize(k)}_value={str(v)}")
|
||||||
|
|
||||||
return " ".join(sorted(res))
|
return sorted(res)
|
||||||
|
|
||||||
|
|
||||||
def buildpath(scope: ComponentScope, path) -> Path:
|
def buildpath(scope: ComponentScope, path) -> Path:
|
||||||
|
@ -272,15 +272,27 @@ def all(w: ninja.Writer, scope: TargetScope) -> list[str]:
|
||||||
return all
|
return all
|
||||||
|
|
||||||
|
|
||||||
|
def applyExtraProps(scope: TargetScope, name: str, var: list[str]) -> list[str]:
|
||||||
|
target: model.Target = scope.target
|
||||||
|
extra = target.props.get(f"ck-{name}-extra", None)
|
||||||
|
if extra:
|
||||||
|
var += extra.split(" ")
|
||||||
|
override = target.props.get(f"ck-{name}-override")
|
||||||
|
if override:
|
||||||
|
var = override.split(" ")
|
||||||
|
return var
|
||||||
|
|
||||||
|
|
||||||
def gen(out: TextIO, scope: TargetScope):
|
def gen(out: TextIO, scope: TargetScope):
|
||||||
w = ninja.Writer(out)
|
w = ninja.Writer(out)
|
||||||
|
target: model.Target = scope.target
|
||||||
|
|
||||||
w.comment("File generated by the build system, do not edit")
|
w.comment("File generated by the build system, do not edit")
|
||||||
w.newline()
|
w.newline()
|
||||||
|
|
||||||
w.separator("Variables")
|
w.separator("Variables")
|
||||||
for name, compute in _vars.items():
|
for name, compute in _vars.items():
|
||||||
w.variable(name, compute(scope))
|
w.variable(name, applyExtraProps(scope, name, compute(scope)))
|
||||||
w.newline()
|
w.newline()
|
||||||
|
|
||||||
w.separator("Tools")
|
w.separator("Tools")
|
||||||
|
@ -289,7 +301,10 @@ def gen(out: TextIO, scope: TargetScope):
|
||||||
tool = scope.target.tools[i]
|
tool = scope.target.tools[i]
|
||||||
rule = rules.rules[i]
|
rule = rules.rules[i]
|
||||||
w.variable(i, tool.cmd)
|
w.variable(i, tool.cmd)
|
||||||
w.variable(i + "flags", " ".join(rule.args + tool.args))
|
w.variable(
|
||||||
|
i + "flags",
|
||||||
|
" ".join(applyExtraProps(scope, i + "flags", rule.args + tool.args)),
|
||||||
|
)
|
||||||
w.rule(
|
w.rule(
|
||||||
i,
|
i,
|
||||||
f"{tool.cmd} {(tool.rule or rule.rule).replace('$flags',f'${i}flags')}",
|
f"{tool.cmd} {(tool.rule or rule.rule).replace('$flags',f'${i}flags')}",
|
||||||
|
|
|
@ -20,11 +20,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705774713,
|
"lastModified": 1706098335,
|
||||||
"narHash": "sha256-j6ADaDH9XiumUzkTPlFyCBcoWYhO83lfgiSqEJF2zcs=",
|
"narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1b64fc1287991a9cce717a01c1973ef86cb1af0b",
|
"rev": "a77ab169a83a4175169d78684ddd2e54486ac651",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -25,8 +25,12 @@
|
||||||
graphviz
|
graphviz
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
package.ck = ck;
|
package.ck = ck;
|
||||||
defaultPackage = self.package.${system}.ck;
|
defaultPackage = self.package.${system}.ck;
|
||||||
|
devShell = pkgs.mkShell {
|
||||||
|
buildInputs = [ ck ];
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue