Niminst now bundles the compiler dir when packaging.

This commit is contained in:
Dominik Picheta 2016-06-06 00:04:07 +01:00
commit cb76f266fa
4 changed files with 71 additions and 16 deletions

View file

@ -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"

View file

@ -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:

View file

@ -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

View file

@ -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: