summary refs log tree commit diff
path: root/pkgs/development/nim-packages
diff options
context:
space:
mode:
authorEmery Hemingway <ehmry@posteo.net>2021-11-12 13:42:53 +0100
committerehmry <ehmry@posteo.net>2021-11-24 18:44:32 +0000
commit86c48e88b08e976f258775394a1901d33a66968a (patch)
tree4516b8b98ea4534bdb0d2e7c8dedb717d998a4b1 /pkgs/development/nim-packages
parentfbd3a424a9a4ba035dbd4583d5d22f3d52f35eef (diff)
downloadnixpkgs-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.nim19
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)