Update Preserves dependency
This commit is contained in:
parent
222aea9e79
commit
6b2655ad33
|
@ -1,2 +1,5 @@
|
|||
include ../preserves-nim/depends.tup
|
||||
NIM = $(DIRENV) nim
|
||||
NIM_FLAGS += --path:$(TUP_CWD)/../nim/v1.6.8
|
||||
NIM_FLAGS += --path:$(TUP_CWD)/../preserves-nim/src
|
||||
NIM_GROUPS += $(TUP_CWD)/<lock>
|
||||
|
|
41
lock.json
41
lock.json
|
@ -1 +1,40 @@
|
|||
{"depends":[{"method":"fetchzip","packages":["npeg"],"path":"/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source","ref":"1.2.1","rev":"26d62fdc40feb84c6533956dc11d5ee9ea9b6c09","sha256":"0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh","srcDir":"src","url":"https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"},{"method":"fetchzip","packages":["preserves"],"path":"/nix/store/nrcpzf9hx70kry3gwhrdzcs3qicjncjh-source","ref":"20231021","rev":"edece399be70818208bf2263c30cb2bcf435bbff","sha256":"0xmw35wmw3a4lja9q4qvlvpxv3xk0hnkjg4fwfw6f3inh6zfiqki","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/preserves-nim/archive/edece399be70818208bf2263c30cb2bcf435bbff.tar.gz"}]}
|
||||
{
|
||||
"depends": [
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"bigints"
|
||||
],
|
||||
"path": "/nix/store/jvrm392g8adfsgf36prgwkbyd7vh5jsw-source",
|
||||
"ref": "20231006",
|
||||
"rev": "86ea14d31eea9275e1408ca34e6bfe9c99989a96",
|
||||
"sha256": "15pcpmnk1bnw3k8769rjzcpg00nahyrypwbxs88jnwr4aczp99j4",
|
||||
"srcDir": "src",
|
||||
"url": "https://github.com/ehmry/nim-bigints/archive/86ea14d31eea9275e1408ca34e6bfe9c99989a96.tar.gz"
|
||||
},
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"npeg"
|
||||
],
|
||||
"path": "/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source",
|
||||
"ref": "1.2.1",
|
||||
"rev": "26d62fdc40feb84c6533956dc11d5ee9ea9b6c09",
|
||||
"sha256": "0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh",
|
||||
"srcDir": "src",
|
||||
"url": "https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"
|
||||
},
|
||||
{
|
||||
"method": "fetchzip",
|
||||
"packages": [
|
||||
"preserves"
|
||||
],
|
||||
"path": "/nix/store/fpkhfxnfbdcri6k7mac21r3byg738bs4-source",
|
||||
"ref": "20240108",
|
||||
"rev": "a01ba8c96d65f670862ba074bf82b50cbda6ed99",
|
||||
"sha256": "0n8pghy2qfywx0psr54yzjvhdhi5av204150jyyzfxhigczd8sr4",
|
||||
"srcDir": "src",
|
||||
"url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/a01ba8c96d65f670862ba074bf82b50cbda6ed99.tar.gz"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3,6 +3,6 @@ bin = @["nim_lk"]
|
|||
description = "Tool for generating Nim lockfiles"
|
||||
license = "BSD-3-Clause"
|
||||
srcDir = "src"
|
||||
version = "20231031"
|
||||
version = "20240116"
|
||||
|
||||
requires "nim >= 2.0.0", "preserves >= 20231021"
|
||||
requires "nim >= 2.0.0", "preserves >= 20240114"
|
||||
|
|
|
@ -1 +1 @@
|
|||
let pkgs = import <nixpkgs> { }; in pkgs.nitter
|
||||
let pkgs = import <nixpkgs> { }; in pkgs.nim_lk
|
||||
|
|
|
@ -7,14 +7,12 @@ import nimblepkg/common,
|
|||
nimblepkg/packageparser,
|
||||
nimblepkg/version
|
||||
|
||||
import std/[algorithm, cmdline, deques, httpclient, json, os, osproc, parseutils, streams, strutils, uri]
|
||||
import std/[algorithm, cmdline, deques, httpclient, json, options, os, osproc, parseutils, streams, strutils, uri]
|
||||
import preserves
|
||||
|
||||
const githubPackagesUrl =
|
||||
"https://raw.githubusercontent.com/nim-lang/packages/master/packages.json"
|
||||
|
||||
type Preserve = preserves.Preserve[void]
|
||||
|
||||
proc registryCachePath: string =
|
||||
result = getEnv("XDG_CACHE_HOME")
|
||||
if result == "":
|
||||
|
@ -81,16 +79,16 @@ proc matchRev(url: string; wanted: VersionRange): tuple[tag: string, rev: string
|
|||
result = pairs[pairs.high]
|
||||
doAssert result.rev != "", url
|
||||
|
||||
proc `[]`(dict: Preserve; key: string): Preserve =
|
||||
dict[key.toPreserve]
|
||||
proc `[]`(dict: Value; key: string): Value =
|
||||
dict[key.toPreserves]
|
||||
|
||||
proc `[]=`(dict: var Preserve; key: string; val: Preserve) =
|
||||
dict[key.toPreserve] = val
|
||||
proc `[]=`(dict: var Value; key: string; val: Value) =
|
||||
dict[key.toPreserves] = val
|
||||
|
||||
proc `[]=`(dict: var Preserve; key: string; val: string) =
|
||||
dict[key.toPreserve] = val.toPreserve
|
||||
proc `[]=`(dict: var Value; key: string; val: string) =
|
||||
dict[key.toPreserves] = val.toPreserves
|
||||
|
||||
proc collectMetadata(data: var Preserve) =
|
||||
proc collectMetadata(data: var Value) =
|
||||
let storePath = data["path"].string
|
||||
var packageNames = newSeq[string]()
|
||||
for (kind, path) in walkDir(storePath):
|
||||
|
@ -100,13 +98,13 @@ proc collectMetadata(data: var Preserve) =
|
|||
if packageNames.len == 0:
|
||||
quit("no .nimble files found in " & storePath)
|
||||
sort(packageNames)
|
||||
data["packages"] = packageNames.toPreserve(void)
|
||||
data["packages"] = packageNames.toPreserves
|
||||
var
|
||||
nimbleFilePath = findNimbleFile(storePath, true)
|
||||
pkg = readPackageInfo(nimbleFilePath, parseCmdLine())
|
||||
data["srcDir"] = pkg.srcDir.toPreserve
|
||||
data["srcDir"] = pkg.srcDir.toPreserves
|
||||
|
||||
proc prefetchGit(uri: Uri; version: VersionRange): Preserve =
|
||||
proc prefetchGit(uri: Uri; version: VersionRange): Value =
|
||||
var
|
||||
uri = uri
|
||||
subdir = ""
|
||||
|
@ -165,12 +163,13 @@ proc prefetchGit(uri: Uri; version: VersionRange): Preserve =
|
|||
result["ref"] = tag
|
||||
collectMetadata(result)
|
||||
|
||||
proc containsPackageUri(lockAttrs: Preserve; pkgUri: string): bool =
|
||||
proc containsPackageUri(lockAttrs: Value; pkgUri: string): bool =
|
||||
for e in lockAttrs.items:
|
||||
if e["url".toPreserve].string == pkgUri:
|
||||
var val = e.step("url".toPreserves)
|
||||
if val.isSome and val.get.string == pkgUri:
|
||||
return true
|
||||
|
||||
proc containsPackage(lockAttrs: Preserve; pkgName: string): bool =
|
||||
proc containsPackage(lockAttrs: Value; pkgName: string): bool =
|
||||
for e in lockAttrs.items:
|
||||
for other in e["packages"].items:
|
||||
if pkgName == other.string:
|
||||
|
@ -215,7 +214,7 @@ proc getPackgeUri(name: string): tuple[uri: string, meth: string] =
|
|||
quit("Failed to parse shit JSON " & $e)
|
||||
inc i
|
||||
|
||||
proc generateLockfile(directoryPath: string): Preserve =
|
||||
proc generateLockfile(directoryPath: string): Value =
|
||||
result = initDictionary()
|
||||
var
|
||||
deps = initSequence()
|
||||
|
@ -224,7 +223,7 @@ proc generateLockfile(directoryPath: string): Preserve =
|
|||
while pending.len > 0:
|
||||
let batchLen = pending.len
|
||||
for i in 1..batchLen:
|
||||
var pkgData: Preserve
|
||||
var pkgData: Value
|
||||
let pkg = pending.popFirst()
|
||||
if pkg.name == "nim" or pkg.name == "compiler":
|
||||
continue
|
||||
|
@ -242,7 +241,7 @@ proc generateLockfile(directoryPath: string): Preserve =
|
|||
|
||||
if batchLen == pending.len:
|
||||
var
|
||||
pkgData: Preserve
|
||||
pkgData: Value
|
||||
pkg = pending.popFirst()
|
||||
info = getPackgeUri(pkg.name)
|
||||
uri = parseUri info.uri
|
||||
|
@ -254,7 +253,7 @@ proc generateLockfile(directoryPath: string): Preserve =
|
|||
collectRequires(pending, pkgData["path"].string)
|
||||
deps.sequence.add pkgData
|
||||
sort(deps.sequence)
|
||||
result["depends".toPreserve] = deps
|
||||
result["depends".toPreserves] = deps
|
||||
|
||||
proc main =
|
||||
var packagePath = getCurrentDir()
|
||||
|
|
Loading…
Reference in New Issue