@@ -21,7 +21,7 @@ import nimblepkg/packageinfotypes, nimblepkg/packageinfo, nimblepkg/version,
2121 nimblepkg/ nimscriptwrapper, nimblepkg/ developfile, nimblepkg/ paths,
2222 nimblepkg/ nimbledatafile, nimblepkg/ packagemetadatafile,
2323 nimblepkg/ displaymessages, nimblepkg/ sha1hashes, nimblepkg/ syncfile,
24- nimblepkg/ deps, nimblepkg/ nimblesat, nimblepkg/ forge_aliases
24+ nimblepkg/ deps, nimblepkg/ nimblesat, nimblepkg/ forge_aliases, nimblepkg / nimenv
2525
2626const
2727 nimblePathsFileName* = " nimble.paths"
@@ -754,35 +754,6 @@ proc processLockedDependencies(pkgInfo: PackageInfo, options: Options):
754754
755755 return res.toHashSet
756756
757- proc compileNim (realDir: string ) =
758- let command = when defined (windows): " build_all.bat" else : " ./build_all.sh"
759- cd realDir:
760- display (" Info:" , " compiling nim in $1" % realDir, priority = HighPriority )
761- tryDoCmdEx (command)
762-
763- proc useNimFromDir (options: var Options , realDir: string , tryCompiling = false ) =
764- const binaryName = when defined (windows): " nim.exe" else : " nim"
765-
766- let
767- nim = realDir / " bin" / binaryName
768- fileExists = fileExists (options.nimBin)
769-
770- if not fileExists (nim):
771- if tryCompiling and options.prompt (" Develop version of nim was found but it is not compiled. Compile it now?" ):
772- compileNim (realDir)
773- else :
774- raise nimbleError (" Trying to use nim from $1 " % realDir,
775- " If you are using develop mode nim make sure to compile it." )
776-
777- options.nimBin = nim
778- let separator = when defined (windows): " ;" else : " :"
779-
780- putEnv (" PATH" , realDir / " bin" & separator & getEnv (" PATH" ))
781- if fileExists:
782- display (" Info:" , " switching to $1 for compilation" % options.nim, priority = HighPriority )
783- else :
784- display (" Info:" , " using $1 for compilation" % options.nim, priority = HighPriority )
785-
786757proc install (packages: seq [PkgTuple ], options: Options ,
787758 doPrompt, first, fromLockFile: bool ,
788759 preferredPackages: seq [PackageInfo ] = @ []): PackageDependenciesInfo =
@@ -817,6 +788,9 @@ proc install(packages: seq[PkgTuple], options: Options,
817788 var downloadPath = " "
818789 if options.useSatSolver and subdir == " " : # Ignore the cache if subdir is set
819790 downloadPath = getCacheDownloadDir (url, pv.ver, options)
791+ # if pv.name.isNim:
792+ # downloadPath = "/Volumes/Store/Projects/nim/nimble/temptest/nimtest"
793+
820794
821795 let (downloadDir, downloadVersion, vcsRevision) =
822796 if not isAlias:
@@ -831,8 +805,8 @@ proc install(packages: seq[PkgTuple], options: Options,
831805 try :
832806 var opt = options
833807 if pv.name.isNim:
834- compileNim (downloadDir)
835- opt.useNimFromDir (downloadDir, true )
808+ compileNim (opt, downloadDir, pv.ver )
809+ opt.useNimFromDir (downloadDir, pv.ver, true )
836810 result = installFromDir (downloadDir, pv.ver, opt, url,
837811 first, fromLockFile, vcsRevision,
838812 preferredPackages = preferredPackages)
@@ -2403,16 +2377,17 @@ proc setNimBin*(options: var Options) =
24032377 if lockFile.fileExists and not options.disableLockFile and not options.useSystemNim:
24042378 for name, dep in lockFile.getLockedDependencies.lockedDepsFor (options):
24052379 if name.isNim:
2380+ let v = dep.version.toVersionRange ()
24062381 if isInstalled (name, dep, options):
2407- options.useNimFromDir (getDependencyDir (name, dep, options))
2382+ options.useNimFromDir (getDependencyDir (name, dep, options), v )
24082383 elif not options.offline:
24092384 let depsOnly = options.depsOnly
24102385 options.depsOnly = false
24112386 let downloadResult = downloadDependency (name, dep, options, false )
2412- compileNim (downloadResult.downloadDir)
2413- options.useNimFromDir (downloadResult.downloadDir)
2387+ compileNim (options, downloadResult.downloadDir, v )
2388+ options.useNimFromDir (downloadResult.downloadDir, v )
24142389 let pkgInfo = installDependency (initTable [string , LockFileDep ](), downloadResult, options, @ [])
2415- options.useNimFromDir (pkgInfo.getRealDir)
2390+ options.useNimFromDir (pkgInfo.getRealDir, v )
24162391 options.depsOnly = depsOnly
24172392 break
24182393
@@ -2429,13 +2404,13 @@ proc setNimBin*(options: var Options) =
24292404 let installedPkgs = getInstalledPkgsMin (options.getPkgsDir (), options)
24302405 var pkg = initPackageInfo ()
24312406 if findPkg (installedPkgs, nimVersion, pkg):
2432- options.useNimFromDir (pkg.getRealDir)
2407+ options.useNimFromDir (pkg.getRealDir, pkg.basicInfo.version. toVersionRange () )
24332408 else :
24342409 # It still no nim found then download and install one to allow parsing of
24352410 # other packages.
24362411 if options.nimBin.len == 0 and not options.offline and options.prompt (" No nim found. Download it now?" ):
24372412 for pkg in install (nimVersion, options):
2438- options.useNimFromDir (pkg.getRealDir)
2413+ options.useNimFromDir (pkg.getRealDir, pkg.basicInfo.version. toVersionRange () )
24392414
24402415 if options.nimBin.len == 0 :
24412416 raise nimbleError (" Unable to find nim" )
@@ -2446,7 +2421,7 @@ proc setNimBin*(options: var Options) =
24462421 pkgInfo = getPkgInfo (getCurrentDir (), options)
24472422 for pkg in pkgInfo.processDevelopDependencies (options):
24482423 if pkg.name.isNim:
2449- options.useNimFromDir (pkg.getRealDir, true )
2424+ options.useNimFromDir (pkg.getRealDir, pkg.basicInfo.version. toVersionRange (), true )
24502425 return
24512426 options.pkgInfoCache.clear ()
24522427 except NimbleError :
@@ -2464,11 +2439,11 @@ proc setNimBin*(options: var Options) =
24642439 let installedPkgs = getInstalledPkgsMin (options.getPkgsDir (), options)
24652440 var pkg = initPackageInfo ()
24662441 if findPkg (installedPkgs, require, pkg):
2467- options.useNimFromDir (pkg.getRealDir)
2442+ options.useNimFromDir (pkg.getRealDir, require.ver )
24682443 else :
24692444 if not options.offline and options.prompt (" No nim version matching $1. Download it now?" % $ require.ver):
24702445 for pkg in install (require, options):
2471- options.useNimFromDir (pkg.getRealDir)
2446+ options.useNimFromDir (pkg.getRealDir, require.ver )
24722447 else :
24732448 let msg = " Unsatisfied dependency: " & require.name & " (" & $ require.ver & " )"
24742449 raise nimbleError (msg)
0 commit comments