mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
writers/writeNim: migrate package to nim nim: remove nativeStacktraces and gnuReadline args nim: use pname instead It's time that we remove nim1, nim1 has been a package for a while and nim has moved on during that time to the v2 versions. It's also time that nim had some attention in nixpkgs and upgrade the nim 2 versions. Also fixes an issue with nim-unwrapped missing the pname and version. See #485742 for more info. Co-authored-by: éclairevoyant <848000+eclairevoyant@users.noreply.github.com>
40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
diff --git a/lib/pure/dynlib.nim b/lib/pure/dynlib.nim
|
|
index f31ae94dd..debed9c07 100644
|
|
--- a/lib/pure/dynlib.nim
|
|
+++ b/lib/pure/dynlib.nim
|
|
@@ -56,6 +56,9 @@
|
|
|
|
import strutils
|
|
|
|
+when defined(nixbuild) and not defined(windows):
|
|
+ import os
|
|
+
|
|
type
|
|
LibHandle* = pointer ## a handle to a dynamically loaded library
|
|
|
|
@@ -95,6 +98,25 @@ proc libCandidates*(s: string, dest: var seq[string]) =
|
|
libCandidates(prefix & middle & suffix, dest)
|
|
else:
|
|
add(dest, s)
|
|
+ when defined(nixbuild) and not defined(windows):
|
|
+ # Nix doesn't have a global library directory so
|
|
+ # load libraries using an absolute path if one
|
|
+ # can be derived from NIX_LDFLAGS.
|
|
+ #
|
|
+ # During Nix/NixOS packaging the line "define:nixbuild"
|
|
+ # should be appended to the ../../config/nim.cfg file
|
|
+ # to enable this behavior by default.
|
|
+ #
|
|
+ var libDirs = split(getEnv("LD_LIBRARY_PATH"), ':')
|
|
+ for flag in split(replace(getEnv("NIX_LDFLAGS"), "\\ ", " ")):
|
|
+ if flag.startsWith("-L"):
|
|
+ libDirs.add(flag[2..flag.high])
|
|
+ for lib in dest:
|
|
+ for dir in libDirs:
|
|
+ let abs = dir / lib
|
|
+ if existsFile(abs):
|
|
+ dest = @[abs]
|
|
+ return
|
|
|
|
proc loadLibPattern*(pattern: string, globalSymbols = false): LibHandle =
|
|
## loads a library with name matching `pattern`, similar to what `dlimport`
|