mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
Niminst now bundles the compiler dir when packaging.
This commit is contained in:
@@ -279,3 +279,7 @@ buildDepends: "gcc (>= 4:4.3.2)"
|
||||
pkgDepends: "gcc (>= 4:4.3.2)"
|
||||
shortDesc: "The Nim Compiler"
|
||||
licenses: "bin/nim,MIT;lib/*,MIT;"
|
||||
|
||||
[nimble]
|
||||
pkgName: "compiler"
|
||||
pkgFiles: "compiler/*;doc/basicopt.txt;doc/advopt.txt"
|
||||
|
||||
@@ -44,6 +44,11 @@ path="$lib/pure"
|
||||
|
||||
@if nimbabel:
|
||||
nimblepath="$home/.nimble/pkgs/"
|
||||
@if not windows:
|
||||
nimblepath="/opt/nimble/pkgs/"
|
||||
@else:
|
||||
# TODO:
|
||||
@end
|
||||
@end
|
||||
|
||||
@if release or quick:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#? stdtmpl(subsChar = '?') | standard
|
||||
#proc generateInstallScript(c: ConfigData): string =
|
||||
#proc generateInstallScript(c: ConfigData): string =
|
||||
# result = "#! /bin/sh\n# Generated by niminst\n"
|
||||
# var proj = c.name.toLower
|
||||
|
||||
@@ -8,7 +8,7 @@ set -e
|
||||
if [ $# -eq 1 ] ; then
|
||||
# if c.cat[fcUnixBin].len > 0:
|
||||
if test -f ?{c.cat[fcUnixBin][0].toUnix}
|
||||
then
|
||||
then
|
||||
echo "?c.displayName build detected"
|
||||
else
|
||||
echo "Please build ?c.displayName before installing it"
|
||||
@@ -34,6 +34,7 @@ if [ $# -eq 1 ] ; then
|
||||
libdir=/usr/lib/?proj
|
||||
docdir=/usr/share/?proj/doc
|
||||
datadir=/usr/share/?proj/data
|
||||
nimbleDir="/opt/nimble/pkgs/?c.nimblePkgName-?c.version/"
|
||||
;;
|
||||
"/usr/local/bin")
|
||||
bindir=/usr/local/bin
|
||||
@@ -41,6 +42,18 @@ if [ $# -eq 1 ] ; then
|
||||
libdir=/usr/local/lib/?proj
|
||||
docdir=/usr/local/share/?proj/doc
|
||||
datadir=/usr/local/share/?proj/data
|
||||
nimbleDir="/opt/nimble/pkgs/?c.nimblePkgName-?c.version"
|
||||
;;
|
||||
"/opt")
|
||||
bindir="/opt/?proj/bin"
|
||||
configdir="/opt/?proj/config"
|
||||
libdir="/opt/?proj/lib"
|
||||
docdir="/opt/?proj/doc"
|
||||
datadir="/opt/?proj/data"
|
||||
nimbleDir="/opt/nimble/pkgs/?c.nimblePkgName-?c.version"
|
||||
mkdir -p /opt/?proj
|
||||
mkdir -p $bindir
|
||||
mkdir -p $configdir
|
||||
;;
|
||||
*)
|
||||
bindir="$1/?proj/bin"
|
||||
@@ -48,25 +61,29 @@ if [ $# -eq 1 ] ; then
|
||||
libdir="$1/?proj/lib"
|
||||
docdir="$1/?proj/doc"
|
||||
datadir="$1/?proj/data"
|
||||
|
||||
nimbleDir="$1/?proj"
|
||||
mkdir -p $1/?proj
|
||||
mkdir -p $bindir
|
||||
mkdir -p $configdir
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir -p $libdir
|
||||
mkdir -p $docdir
|
||||
mkdir -p $nimbleDir/
|
||||
echo "copying files..."
|
||||
#var createdDirs = newStringTable()
|
||||
#for cat in fcConfig..fcLib:
|
||||
#for cat in {fcConfig..fcLib, fcNimble}:
|
||||
# for f in items(c.cat[cat]):
|
||||
# var mk = splitFile(f.skipRoot).dir
|
||||
# if mk.len > 0:
|
||||
# if cat != fcNimble:
|
||||
# mk = unixDirVars[cat] & "/" & mk
|
||||
# if not createdDirs.hasKey(mk):
|
||||
# createdDirs[mk] = "true"
|
||||
# else:
|
||||
# mk = "$nimbleDir" / splitFile(f).dir
|
||||
# end if
|
||||
# if mk.len > 0 and not createdDirs.hasKey(mk):
|
||||
# createdDirs[mk] = "true"
|
||||
mkdir -p ?{mk.toUnix}
|
||||
# end if
|
||||
# end if
|
||||
# end for
|
||||
#end for
|
||||
@@ -75,11 +92,11 @@ if [ $# -eq 1 ] ; then
|
||||
cp ?f.toUnix $bindir/?f.skipRoot.toUnix
|
||||
chmod 755 $bindir/?f.skipRoot.toUnix
|
||||
#end for
|
||||
#for f in items(c.cat[fcConfig]):
|
||||
#for f in items(c.cat[fcConfig]):
|
||||
cp ?f.toUnix $configdir/?f.skipRoot.toUnix
|
||||
chmod 644 $configdir/?f.skipRoot.toUnix
|
||||
#end for
|
||||
#for f in items(c.cat[fcData]):
|
||||
#for f in items(c.cat[fcData]):
|
||||
if [ -f ?f.toUnix ]; then
|
||||
cp ?f.toUnix $datadir/?f.skipRoot.toUnix
|
||||
chmod 644 $datadir/?f.skipRoot.toUnix
|
||||
@@ -95,7 +112,13 @@ if [ $# -eq 1 ] ; then
|
||||
cp ?f.toUnix $libdir/?f.skipRoot.toUnix
|
||||
chmod 644 $libdir/?f.skipRoot.toUnix
|
||||
#end for
|
||||
|
||||
#for f in items(c.cat[fcNimble]):
|
||||
cp ?f.toUnix $nimbleDir/?f.toUnix
|
||||
chmod 644 $nimbleDir/?f.toUnix
|
||||
#end for
|
||||
cp ?{c.nimblePkgName}.nimble $nimbleDir/?{c.nimblePkgName}.nimble
|
||||
chmod 644 $nimbleDir/?{c.nimblePkgName}.nimble
|
||||
|
||||
echo "installation successful"
|
||||
else
|
||||
echo "?c.displayName installation script"
|
||||
|
||||
@@ -48,7 +48,8 @@ type
|
||||
fcWindows, # files only for Windows
|
||||
fcUnix, # files only for Unix; must be after ``fcWindows``
|
||||
fcUnixBin, # binaries for Unix
|
||||
fcDocStart # links to documentation for Windows installer
|
||||
fcDocStart, # links to documentation for Windows installer
|
||||
fcNimble # nimble package files to copy to /opt/nimble/pkgs/pkg-ver
|
||||
|
||||
ConfigData = object of RootObj
|
||||
actions: set[Action]
|
||||
@@ -65,6 +66,7 @@ type
|
||||
app: AppType
|
||||
nimArgs: string
|
||||
debOpts: TDebOptions
|
||||
nimblePkgName: string
|
||||
|
||||
const
|
||||
unixDirVars: array[fcConfig..fcLib, string] = [
|
||||
@@ -214,8 +216,11 @@ proc addFiles(s: var seq[string], patterns: seq[string]) =
|
||||
else:
|
||||
var i = 0
|
||||
for f in walkFiles(p):
|
||||
add(s, unixToNativePath(f))
|
||||
inc(i)
|
||||
if existsDir(f):
|
||||
walkDirRecursively(s, f)
|
||||
else:
|
||||
add(s, unixToNativePath(f))
|
||||
inc(i)
|
||||
if i == 0: echo("[Warning] No file found that matches: " & p)
|
||||
|
||||
proc pathFlags(p: var CfgParser, k, v: string,
|
||||
@@ -362,6 +367,14 @@ proc parseIniFile(c: var ConfigData) =
|
||||
else: file.add(v[i])
|
||||
inc(i)
|
||||
else: quit(errorStr(p, "unknown variable: " & k.key))
|
||||
of "nimble":
|
||||
case normalize(k.key)
|
||||
of "pkgname":
|
||||
c.nimblePkgName = v
|
||||
of "pkgfiles":
|
||||
addFiles(c.cat[fcNimble], split(v, {';'}))
|
||||
else:
|
||||
quit(errorStr(p, "invalid key: " & k.key))
|
||||
else: quit(errorStr(p, "invalid section: " & section))
|
||||
|
||||
of cfgOption: quit(errorStr(p, "syntax error"))
|
||||
@@ -554,8 +567,13 @@ when haveZipLib:
|
||||
for k, f in walkDir("build" / dir):
|
||||
if k == pcFile: addFile(z, proj / dir / extractFilename(f), f)
|
||||
|
||||
for cat in items({fcConfig..fcOther, fcUnix}):
|
||||
for cat in items({fcConfig..fcOther, fcUnix, fcNimble}):
|
||||
for f in items(c.cat[cat]): addFile(z, proj / f, f)
|
||||
|
||||
# Copy the .nimble file over
|
||||
let nimbleFile = c.nimblePkgName & ".nimble"
|
||||
processFile(z, proj / nimbleFile, nimbleFile)
|
||||
|
||||
close(z)
|
||||
else:
|
||||
quit("Cannot open for writing: " & n)
|
||||
@@ -587,9 +605,14 @@ proc xzDist(c: var ConfigData) =
|
||||
for k, f in walkDir("build" / dir):
|
||||
if k == pcFile: processFile(z, proj / dir / extractFilename(f), f)
|
||||
|
||||
for cat in items({fcConfig..fcOther, fcUnix}):
|
||||
for cat in items({fcConfig..fcOther, fcUnix, fcNimble}):
|
||||
echo("Current category: ", cat)
|
||||
for f in items(c.cat[cat]): processFile(z, proj / f, f)
|
||||
|
||||
# Copy the .nimble file over
|
||||
let nimbleFile = c.nimblePkgName & ".nimble"
|
||||
processFile(z, proj / nimbleFile, nimbleFile)
|
||||
|
||||
let oldDir = getCurrentDir()
|
||||
setCurrentDir(tmpDir)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user