diff options
author | Emery Hemingway <ehmry@posteo.net> | 2021-11-12 13:42:53 +0100 |
---|---|---|
committer | ehmry <ehmry@posteo.net> | 2021-11-24 18:44:32 +0000 |
commit | 86c48e88b08e976f258775394a1901d33a66968a (patch) | |
tree | 4516b8b98ea4534bdb0d2e7c8dedb717d998a4b1 /pkgs/development/nim-packages | |
parent | fbd3a424a9a4ba035dbd4583d5d22f3d52f35eef (diff) | |
download | nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar.gz nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar.bz2 nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar.lz nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar.xz nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.tar.zst nixpkgs-86c48e88b08e976f258775394a1901d33a66968a.zip |
nim_builder: do not use output* env variables
Process the outputs variable, the output* vars are not reliable.
Diffstat (limited to 'pkgs/development/nim-packages')
-rw-r--r-- | pkgs/development/nim-packages/nim_builder/nim_builder.nim | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/pkgs/development/nim-packages/nim_builder/nim_builder.nim b/pkgs/development/nim-packages/nim_builder/nim_builder.nim index b8881b70004..90dcb46588b 100644 --- a/pkgs/development/nim-packages/nim_builder/nim_builder.nim +++ b/pkgs/development/nim-packages/nim_builder/nim_builder.nim @@ -64,6 +64,19 @@ proc getNimbleValues(filePath, key: string): seq[string] = if s.len > 0 and s[0] == '"': s = s.unescape() +proc getOutputDir(name: string): string = + ## Return the output directory for output `name`. + ## If `name` is not a valid output then the first output + ## is returned as a default. + let outputs = splitWhitespace getEnv("outputs") + doAssert(outputs.len > 0) + if outputs.contains name: + result = getEnv(name) + if result == "": + result = getEnv("out") + if result == "": + result = getEnv(outputs[0], "/dev/null") + proc configurePhase*() = ## Generate "config.nims" which will be read by the Nim ## compiler during later phases. @@ -103,14 +116,14 @@ proc buildPhase*() = nf = getNimbleFilePath() bins = nf.getNimbleValues("bin") srcDir = nf.getNimbleValue("srcDir", ".") - binDir = getenv("outputBin", getenv("out", "/dev/null")) / "bin" + binDir = getOutputDir("bin") / "bin" if bins != @[]: for bin in bins: cmds.add("nim compile $# --outdir:$# $#" % [getenv"nimFlags", binDir, normalizedPath(srcDir / bin)]) if getEnvBool"nimDoc": echo "generating documentation" - let docDir = getenv("outputDoc", (getenv("out", "/dev/null") / "doc")) + let docDir = getOutputDir("doc") / "doc" for path in walkFiles(srcDir / "*.nim"): cmds.add("nim doc --outdir:$# $#" % [docDir, path]) if cmds.len > 0: @@ -126,7 +139,7 @@ proc installPhase*() = let nf = getNimbleFilePath() srcDir = nf.getNimbleValue("srcDir", ".") - devDir = getenv("outputDev", getenv("out", "/dev/null")) + devDir = getOutputDir "dev" echo "Install ", srcDir, " to ", devDir copyDir(normalizedPath(srcDir), normalizedPath(devDir / srcDir)) copyFile(nf, devDir / nf.extractFilename) |