Niminst now bundles the compiler dir when packaging.

This commit is contained in:
Dominik Picheta
2016-06-06 00:04:07 +01:00
parent 07d7d35d99
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)"
shortDesc: "The Nim Compiler"
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:
nimblepath="$home/.nimble/pkgs/"
@if not windows:
nimblepath="/opt/nimble/pkgs/"
@else:
# TODO:
@end
@end
@if release or quick:

View File

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

View File

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