git.iko.soy/typeable/nixpkgs
on master help sign in
nim_builder: do not use output* env variables

Process the outputs variable, the output* vars are not reliable.

commit86c48e88b08e976f258775394a1901d33a66968a authorEmery Hemingway <ehmry@posteo.net> dateFri 12 Nov 2021, 13:42 (5 years ago) parentfbd3a42
1 file changed+16−3
pkgs/development/nim-packages/nim_builder/nim_builder.nim+16−3
pkgs/development/nim-packages/nim_builder/nim_builder.nim+16−3
@@ -64,6 +64,19 @@ proc getNimbleValues(filePath, key: string): seq[string] =
6464 if s.len > 0 and s[0] == '"':
6565 s = s.unescape()
6666
67+proc getOutputDir(name: string): string =
68+ ## Return the output directory for output `name`.
69+ ## If `name` is not a valid output then the first output
70+ ## is returned as a default.
71+ let outputs = splitWhitespace getEnv("outputs")
72+ doAssert(outputs.len > 0)
73+ if outputs.contains name:
74+ result = getEnv(name)
75+ if result == "":
76+ result = getEnv("out")
77+ if result == "":
78+ result = getEnv(outputs[0], "/dev/null")
79+
6780proc configurePhase*() =
6881 ## Generate "config.nims" which will be read by the Nim
6982 ## compiler during later phases.
@@ -103,14 +116,14 @@ proc buildPhase*() =
103116 nf = getNimbleFilePath()
104117 bins = nf.getNimbleValues("bin")
105118 srcDir = nf.getNimbleValue("srcDir", ".")
106− binDir = getenv("outputBin", getenv("out", "/dev/null")) / "bin"
119+ binDir = getOutputDir("bin") / "bin"
107120 if bins != @[]:
108121 for bin in bins:
109122 cmds.add("nim compile $# --outdir:$# $#" %
110123 [getenv"nimFlags", binDir, normalizedPath(srcDir / bin)])
111124 if getEnvBool"nimDoc":
112125 echo "generating documentation"
113− let docDir = getenv("outputDoc", (getenv("out", "/dev/null") / "doc"))
126+ let docDir = getOutputDir("doc") / "doc"
114127 for path in walkFiles(srcDir / "*.nim"):
115128 cmds.add("nim doc --outdir:$# $#" % [docDir, path])
116129 if cmds.len > 0:
@@ -126,7 +139,7 @@ proc installPhase*() =
126139 let
127140 nf = getNimbleFilePath()
128141 srcDir = nf.getNimbleValue("srcDir", ".")
129− devDir = getenv("outputDev", getenv("out", "/dev/null"))
142+ devDir = getOutputDir "dev"
130143 echo "Install ", srcDir, " to ", devDir
131144 copyDir(normalizedPath(srcDir), normalizedPath(devDir / srcDir))
132145 copyFile(nf, devDir / nf.extractFilename)