Niminst now bundles the compiler dir when packaging.
This commit is contained in:
parent
07d7d35d99
commit
cb76f266fa
4 changed files with 71 additions and 16 deletions
|
|
@ -279,3 +279,7 @@ buildDepends: "gcc (>= 4:4.3.2)"
|
||||||
pkgDepends: "gcc (>= 4:4.3.2)"
|
pkgDepends: "gcc (>= 4:4.3.2)"
|
||||||
shortDesc: "The Nim Compiler"
|
shortDesc: "The Nim Compiler"
|
||||||
licenses: "bin/nim,MIT;lib/*,MIT;"
|
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:
|
@if nimbabel:
|
||||||
nimblepath="$home/.nimble/pkgs/"
|
nimblepath="$home/.nimble/pkgs/"
|
||||||
|
@if not windows:
|
||||||
|
nimblepath="/opt/nimble/pkgs/"
|
||||||
|
@else:
|
||||||
|
# TODO:
|
||||||
|
@end
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@if release or quick:
|
@if release or quick:
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ if [ $# -eq 1 ] ; then
|
||||||
libdir=/usr/lib/?proj
|
libdir=/usr/lib/?proj
|
||||||
docdir=/usr/share/?proj/doc
|
docdir=/usr/share/?proj/doc
|
||||||
datadir=/usr/share/?proj/data
|
datadir=/usr/share/?proj/data
|
||||||
|
nimbleDir="/opt/nimble/pkgs/?c.nimblePkgName-?c.version/"
|
||||||
;;
|
;;
|
||||||
"/usr/local/bin")
|
"/usr/local/bin")
|
||||||
bindir=/usr/local/bin
|
bindir=/usr/local/bin
|
||||||
|
|
@ -41,6 +42,18 @@ if [ $# -eq 1 ] ; then
|
||||||
libdir=/usr/local/lib/?proj
|
libdir=/usr/local/lib/?proj
|
||||||
docdir=/usr/local/share/?proj/doc
|
docdir=/usr/local/share/?proj/doc
|
||||||
datadir=/usr/local/share/?proj/data
|
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"
|
bindir="$1/?proj/bin"
|
||||||
|
|
@ -48,25 +61,29 @@ if [ $# -eq 1 ] ; then
|
||||||
libdir="$1/?proj/lib"
|
libdir="$1/?proj/lib"
|
||||||
docdir="$1/?proj/doc"
|
docdir="$1/?proj/doc"
|
||||||
datadir="$1/?proj/data"
|
datadir="$1/?proj/data"
|
||||||
|
nimbleDir="$1/?proj"
|
||||||
mkdir -p $1/?proj
|
mkdir -p $1/?proj
|
||||||
mkdir -p $bindir
|
mkdir -p $bindir
|
||||||
mkdir -p $configdir
|
mkdir -p $configdir
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
mkdir -p $libdir
|
mkdir -p $libdir
|
||||||
mkdir -p $docdir
|
mkdir -p $docdir
|
||||||
|
mkdir -p $nimbleDir/
|
||||||
echo "copying files..."
|
echo "copying files..."
|
||||||
#var createdDirs = newStringTable()
|
#var createdDirs = newStringTable()
|
||||||
#for cat in fcConfig..fcLib:
|
#for cat in {fcConfig..fcLib, fcNimble}:
|
||||||
# for f in items(c.cat[cat]):
|
# for f in items(c.cat[cat]):
|
||||||
# var mk = splitFile(f.skipRoot).dir
|
# var mk = splitFile(f.skipRoot).dir
|
||||||
# if mk.len > 0:
|
# if cat != fcNimble:
|
||||||
# mk = unixDirVars[cat] & "/" & mk
|
# mk = unixDirVars[cat] & "/" & mk
|
||||||
# if not createdDirs.hasKey(mk):
|
# else:
|
||||||
# createdDirs[mk] = "true"
|
# mk = "$nimbleDir" / splitFile(f).dir
|
||||||
|
# end if
|
||||||
|
# if mk.len > 0 and not createdDirs.hasKey(mk):
|
||||||
|
# createdDirs[mk] = "true"
|
||||||
mkdir -p ?{mk.toUnix}
|
mkdir -p ?{mk.toUnix}
|
||||||
# end if
|
|
||||||
# end if
|
# end if
|
||||||
# end for
|
# end for
|
||||||
#end for
|
#end for
|
||||||
|
|
@ -95,6 +112,12 @@ if [ $# -eq 1 ] ; then
|
||||||
cp ?f.toUnix $libdir/?f.skipRoot.toUnix
|
cp ?f.toUnix $libdir/?f.skipRoot.toUnix
|
||||||
chmod 644 $libdir/?f.skipRoot.toUnix
|
chmod 644 $libdir/?f.skipRoot.toUnix
|
||||||
#end for
|
#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"
|
echo "installation successful"
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,8 @@ type
|
||||||
fcWindows, # files only for Windows
|
fcWindows, # files only for Windows
|
||||||
fcUnix, # files only for Unix; must be after ``fcWindows``
|
fcUnix, # files only for Unix; must be after ``fcWindows``
|
||||||
fcUnixBin, # binaries for Unix
|
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
|
ConfigData = object of RootObj
|
||||||
actions: set[Action]
|
actions: set[Action]
|
||||||
|
|
@ -65,6 +66,7 @@ type
|
||||||
app: AppType
|
app: AppType
|
||||||
nimArgs: string
|
nimArgs: string
|
||||||
debOpts: TDebOptions
|
debOpts: TDebOptions
|
||||||
|
nimblePkgName: string
|
||||||
|
|
||||||
const
|
const
|
||||||
unixDirVars: array[fcConfig..fcLib, string] = [
|
unixDirVars: array[fcConfig..fcLib, string] = [
|
||||||
|
|
@ -214,8 +216,11 @@ proc addFiles(s: var seq[string], patterns: seq[string]) =
|
||||||
else:
|
else:
|
||||||
var i = 0
|
var i = 0
|
||||||
for f in walkFiles(p):
|
for f in walkFiles(p):
|
||||||
add(s, unixToNativePath(f))
|
if existsDir(f):
|
||||||
inc(i)
|
walkDirRecursively(s, f)
|
||||||
|
else:
|
||||||
|
add(s, unixToNativePath(f))
|
||||||
|
inc(i)
|
||||||
if i == 0: echo("[Warning] No file found that matches: " & p)
|
if i == 0: echo("[Warning] No file found that matches: " & p)
|
||||||
|
|
||||||
proc pathFlags(p: var CfgParser, k, v: string,
|
proc pathFlags(p: var CfgParser, k, v: string,
|
||||||
|
|
@ -362,6 +367,14 @@ proc parseIniFile(c: var ConfigData) =
|
||||||
else: file.add(v[i])
|
else: file.add(v[i])
|
||||||
inc(i)
|
inc(i)
|
||||||
else: quit(errorStr(p, "unknown variable: " & k.key))
|
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))
|
else: quit(errorStr(p, "invalid section: " & section))
|
||||||
|
|
||||||
of cfgOption: quit(errorStr(p, "syntax error"))
|
of cfgOption: quit(errorStr(p, "syntax error"))
|
||||||
|
|
@ -554,8 +567,13 @@ when haveZipLib:
|
||||||
for k, f in walkDir("build" / dir):
|
for k, f in walkDir("build" / dir):
|
||||||
if k == pcFile: addFile(z, proj / dir / extractFilename(f), f)
|
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)
|
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)
|
close(z)
|
||||||
else:
|
else:
|
||||||
quit("Cannot open for writing: " & n)
|
quit("Cannot open for writing: " & n)
|
||||||
|
|
@ -587,9 +605,14 @@ proc xzDist(c: var ConfigData) =
|
||||||
for k, f in walkDir("build" / dir):
|
for k, f in walkDir("build" / dir):
|
||||||
if k == pcFile: processFile(z, proj / dir / extractFilename(f), f)
|
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)
|
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()
|
let oldDir = getCurrentDir()
|
||||||
setCurrentDir(tmpDir)
|
setCurrentDir(tmpDir)
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue