77# file, You can obtain one at https://mozilla.org/MPL/2.0/.
88
99import
10- std/ [algorithm, os, osproc, sequtils, strformat, strutils, tables, terminal, times],
10+ std/ [algorithm, os, osproc, sequtils, strformat, strutils, tables, times],
1111 constants,
1212 flags,
1313 tools,
@@ -17,9 +17,8 @@ type Package = object
1717 nom, ver, url, sum, bld, run* , opt = " nil"
1818
1919proc cleanPackages * () =
20- for i in [pathLog, pathTmp]:
21- removeDir (i)
22- createDir (i)
20+ removeDir (pathTmp)
21+ createDir (pathTmp)
2322
2423proc parsePackage * (nom: string ): Package =
2524 let path = pathCoreRepo / nom
@@ -33,9 +32,9 @@ proc printContent(idx: int, nom, ver, cmd: string) =
3332 echo & """ { idx + 1 :<8 } { nom:24 } { ver:24 } { cmd:8 } """ & now ().format (" hh:mm tt" )
3433
3534proc printHeader () =
36- echo & """
35+ echo """
3736~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38- { " idx" :8 } { " nom" :24 } { " ver" :24 } { " cmd" :8 } fin
37+ idx nom ver cmd fin
3938~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ """
4039
4140proc fetchPackages (packages: openArray [string ]) =
@@ -196,8 +195,6 @@ proc buildPackages*(
196195
197196 if " no-parallel" in package.opt:
198197 setEnvFlags (parallel = false )
199- else :
200- putEnv (" MAKEFLAGS" , " parallel" )
201198
202199 if dirExists (tmp):
203200 setCurrentDir (tmp)
@@ -206,7 +203,7 @@ proc buildPackages*(
206203
207204 let shell = execCmdEx (
208205 & """ sh -efu -c '
209- nom={ package} ver={ package.ver} . { pathCoreRepo / package.nom / (if stage == $ native: " build" else : " build" & '-' & stage)}
206+ nom={ package.nom } ver={ package.ver} . { pathCoreRepo / package.nom / (if stage == $ native: " build" else : " build" & '-' & stage)}
210207
211208 for i in prepare configure build; do
212209 if command -v $i { shellRedirect} ; then
@@ -334,67 +331,6 @@ proc listContents*(packages: openArray[string]) =
334331 for line in lines (pathLocalLib / package.nom / " contents" ):
335332 echo & " /{ line} "
336333
337- proc listOrphans * (pkgLib = pathLocalLib) =
338- let
339- installed = walkDir (pathLocalLib, true , skipSpecial = true ).toSeq ().unzip ()[1 ]
340- skel = parsePackage (" skel" ).run
341-
342- for nom in installed:
343- if nom notin skel and fileExists (pkgLib / $ nom / " implicit" ):
344- if not dirExists (pkgLib / $ nom / " run" ):
345- styledEcho fgYellow,
346- styleBright, & """ { $ QuitFailure :8 } { & " \ { nom\ } is an orphan" :48 } """
347-
348- proc removePackages * (packages: openArray [string ], pkgLib = pathLocalLib) =
349- let
350- installed = walkDir (pathLocalLib, true , skipSpecial = true ).toSeq ().unzip ()[1 ]
351- skel = parsePackage (" skel" ).run
352- var shouldAbort: bool
353-
354- for nom in packages:
355- if nom notin installed:
356- abort (& """ { $ QuitFailure :8 } { & " \ { nom\ } not installed" :48 } """ )
357- if nom in skel:
358- abort (& """ { $ QuitFailure :8 } { & " \ { nom\ } is a skel package" :48 } """ )
359- if dirExists (pkgLib / $ nom / " run" ):
360- let runDeps = walkDir (pkgLib / $ nom / " run" , true , skipSpecial = true )
361- .toSeq ()
362- .unzip ()[1 ].sorted ()
363- if runDeps.len () > 0 :
364- for dep in runDeps:
365- if dep notin packages:
366- styledEcho fgYellow,
367- styleBright, & """ { $ QuitFailure :8 } { & " \ { dep\ } depends on \ { nom\ } " :48 } """
368- shouldAbort = true
369-
370- if shouldAbort:
371- abort (& """ { $ QuitFailure :8 } { & " \ { nom\ } is a dependency" :48 } """ )
372-
373- printHeader ()
374-
375- for idx, nom in packages:
376- let package = parsePackage (nom)
377-
378- printContent (idx, package.nom, package.ver, " remove" )
379-
380- for line in lines (pathLocalLib / package.nom / " contents" ):
381- if not line.endsWith (" /" ):
382- removeFile (& " /{ line} " )
383-
384- for line in lines (pathLocalLib / package.nom / " contents" ):
385- if line.endsWith (" /" ):
386- let path = & " /{ line} "
387-
388- if path.isEmpty ():
389- removeDir (path)
390-
391- removeDir (pathLocalLib / package.nom)
392-
393- for installedPackage in walkDir (pkgLib, true , skipSpecial = true ).toSeq ().unzip ()[1 ].sorted ():
394- removeFile (pkgLib / $ installedPackage / " run" / package.nom)
395- if isEmpty (pkgLib / $ installedPackage / " run" ):
396- removeDir (pkgLib / $ installedPackage / " run" )
397-
398334proc searchPackages * (pattern: openArray [string ]) =
399335 var packages: seq [string ]
400336
0 commit comments