? .sconf_temp
? .sconsign.dblite
? .test
? ChangeLog
? build
? config.log
? debian
? nsis-07-Jan-2006.cvs.zip
? SCons/Tools/crossmingw.pyc
Index: INSTALL
===================================================================
RCS file: /cvsroot/nsis/NSIS/INSTALL,v
retrieving revision 1.5
diff -u -r1.5 INSTALL
--- INSTALL 9 Nov 2005 08:41:00 -0000 1.5
+++ INSTALL 7 Jan 2006 08:16:19 -0000
@@ -53,6 +53,15 @@
drop it in a downloaded precompiled package such as the nightly
build.
+ * Options for POSIX installs
+
+ PREFIX: defaults to /usr/local
+ PREFIX_BIN: Where to put native binaries. Defaults to $PREFIX/bin/
+ PREFIX_CONF: Where to put the config file. Defaults to $PREFIX/etc/
+ PREFIX_DATA: Where to put the plugins, stubs, etc. Defaults to $PREFIX/share/nsis/
+ PREFIX_DOC: Where to put the docs and examples. Defaults to $PREFIX/share/doc/nsis/
+ PREFIX_DEST: The install root Useful for packagers. Defaults to the root directory.
+
- Problems
* Get help in the forum:
Index: SConstruct
===================================================================
RCS file: /cvsroot/nsis/NSIS/SConstruct,v
retrieving revision 1.57
diff -u -r1.57 SConstruct
--- SConstruct 17 Dec 2005 13:54:34 -0000 1.57
+++ SConstruct 7 Jan 2006 08:16:20 -0000
@@ -56,6 +56,11 @@
'VPatch'
]
+doc = [
+ 'TODO.txt',
+ 'license.txt'
+]
+
defenv = Environment()
Export('defenv')
@@ -79,6 +84,29 @@
opts = Options()
+install_dirs={
+ 'win32': {
+ 'dest': '',
+ 'prefix': '',
+ 'conf': '',
+ 'bin': '',
+ 'data': '',
+ 'doc': '',
+ },'default':{
+ 'dest': '',
+ 'prefix': '/usr/local',
+ 'conf': '$PREFIX/etc',
+ 'bin': '$PREFIX/bin',
+ 'data': '$PREFIX/share/nsis',
+ 'doc': '$PREFIX/share/doc/nsis',
+ }
+}
+
+if defenv['PLATFORM'] == 'win32':
+ dirs = install_dirs['win32']
+else:
+ dirs = install_dirs['default']
+
# version
opts.Add(('VERSION', 'Version of NSIS', cvs_version))
opts.Add(('VER_MAJOR', 'Major version of NSIS (recommended for dist-installer)', None))
@@ -86,11 +114,12 @@
opts.Add(('VER_REVISION', 'Revision of NSIS (recommended for dist-installer)', None))
opts.Add(('VER_BUILD', 'Build version of NSIS (recommended for dist-installer)', None))
# installation
-opts.Add(PathOption('PREFIX', 'Installation prefix', None))
+opts.Add(('PREFIX', 'Installation prefix.', dirs['prefix']))
opts.Add(ListOption('SKIPSTUBS', 'A list of stubs that will not be built', 'none', stubs))
opts.Add(ListOption('SKIPPLUGINS', 'A list of plug-ins that will not be built', 'none', plugins))
opts.Add(ListOption('SKIPUTILS', 'A list of utilities that will not be built', 'none', utils))
opts.Add(ListOption('SKIPMISC', 'A list of plug-ins that will not be built', 'none', misc))
+opts.Add(ListOption('SKIPDOC', 'A list of doc files that will not be built/installed', 'none', doc))
# build tools
opts.Add(BoolOption('MSTOOLKIT', 'Use Microsoft Visual C++ Toolkit', 'no'))
opts.Add(BoolOption('CHMDOCS', 'Build CHM documentation, requires hhc.exe', hhc))
@@ -99,6 +128,12 @@
# build options
opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 'no'))
opts.Add(PathOption('CODESIGNER', 'A program used to sign executables', None))
+# path related build options
+opts.Add(('PREFIX_DEST', 'Intermediate installation prefix (extra install time prefix).', dirs['dest']))
+opts.Add(('PREFIX_CONF','Path to install nsisconf.nsh to.',dirs['conf']))
+opts.Add(('PREFIX_BIN','Path to install native binaries to.',dirs['bin']))
+opts.Add(('PREFIX_DATA','Path to install nsis data to (plugins, includes, stubs, contrib, win32 binaries)',dirs['data']))
+opts.Add(('PREFIX_DOC','Path to install nsis README / INSTALL / TODO files to.',dirs['doc']))
opts.Update(defenv)
@@ -123,36 +158,64 @@
defenv.Execute(Delete('$INSTDISTDIR'))
defenv.Execute(Delete('$TESTDISTDIR'))
-def Distribute(dir, files):
- defenv.Install('$ZIPDISTDIR/%s' % dir, files)
- defenv.Install('$INSTDISTDIR/%s' % dir, files)
- defenv.Install('$TESTDISTDIR/%s' % dir, files)
-
- if defenv.has_key('PREFIX') and defenv['PREFIX']:
- ins = defenv.Install('$PREFIX/%s' % dir, files)
- return ins
-
- return []
+for define in ('PREFIX_CONF', 'PREFIX_DATA'):
+ defenv.Append(NSIS_CPPDEFINES = [(define, '"'+defenv[define]+'"')])
-def DistributeAs(path, file):
- defenv.InstallAs('$ZIPDISTDIR/%s' % path, file)
- defenv.InstallAs('$INSTDISTDIR/%s' % path, file)
- defenv.InstallAs('$TESTDISTDIR/%s' % path, file)
-
- if defenv.has_key('PREFIX') and defenv['PREFIX']:
- ins = defenv.InstallAs('$PREFIX/%s' % path, file)
- return ins
-
- return []
+def Distribute(files, names, component, path, subpath, alias, install_alias=None):
+ if names == []:
+ for d in ('$ZIPDISTDIR', '$INSTDISTDIR', '$TESTDISTDIR'):
+ defenv.Install( os.path.join(d, path, subpath), files)
+ ins = defenv.Install( os.path.join('$PREFIX_DEST','$PREFIX_%s'%component.upper(), path, subpath), files)
+ else:
+ if isinstance(names, str):
+ names = [names]
+ for d in ('$ZIPDISTDIR', '$INSTDISTDIR', '$TESTDISTDIR'):
+ dir = os.path.join(d, path, subpath)
+ installed_files = map(lambda x: os.path.join(dir, x), names)
+ defenv.InstallAs( installed_files, files)
+ dir = os.path.join('$PREFIX_DEST','$PREFIX_%s'%component.upper(), path)
+ installed_files = map(lambda x: os.path.join(dir, x), names)
+ ins = defenv.InstallAs( installed_files, files)
+ defenv.Alias('install', ins )
+ defenv.Alias('install-'+component, ins)
+ if alias is not None:
+ defenv.Alias( alias, ins )
+ if install_alias is not None:
+ defenv.Alias( 'install-'+install_alias, ins )
+ return ins
+
+def DistributeBin(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'bin', '', path, alias)
+
+def DistributeConf(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'conf', '', path, alias)
+
+def DistributeW32Bin(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Bin', path, alias, 'w32bin')
+
+def DistributeStubs(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Stubs', path, alias, 'stubs')
+
+def DistributePlugin(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Plugins', path, alias, 'plugins')
+
+def DistributeContrib(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Contrib', path, alias, 'contrib')
+
+def DistributeMenu(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Menu', path, alias, 'menu')
+
+def DistributeInclude(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'data', 'Include', path, alias, 'includes')
-def DistributeExamples(dir, examples):
- return Distribute('Examples/%s' % dir, examples)
+def DistributeDoc(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'doc', '', path, alias)
-def DistributeDocs(dir, docs):
- return Distribute('Docs/%s' % dir, docs)
+def DistributeDocs(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'doc', 'Docs', path, alias, 'docs')
-def DistributeContribs(dir, contribs):
- return Distribute('Contrib/%s' % dir, contribs)
+def DistributeExamples(files, names=[], path='', alias=None):
+ return defenv.Distribute(files, names, 'doc', 'Examples', path, alias, 'examples')
def Sign(targets):
if defenv.has_key('CODESIGNER'):
@@ -164,10 +227,17 @@
defenv.Install('$TESTDISTDIR/Tests', scripts)
defenv.Distribute = Distribute
-defenv.DistributeAs = DistributeAs
-defenv.DistributeExamples = DistributeExamples
+defenv.DistributeBin = DistributeBin
+defenv.DistributeConf = DistributeConf
+defenv.DistributeW32Bin = DistributeW32Bin
+defenv.DistributeStubs = DistributeStubs
+defenv.DistributePlugin = DistributePlugin
+defenv.DistributeContrib = DistributeContrib
+defenv.DistributeMenu = DistributeMenu
+defenv.DistributeInclude = DistributeInclude
+defenv.DistributeDoc = DistributeDoc
defenv.DistributeDocs = DistributeDocs
-defenv.DistributeContribs = DistributeContribs
+defenv.DistributeExamples = DistributeExamples
defenv.Sign = Sign
defenv.TestScript = TestScript
@@ -203,22 +273,6 @@
cp_util_env = envs[4]
######################################################################
-####### Aliases ###
-######################################################################
-
-defenv.Alias('install', '$PREFIX')
-defenv.Alias('install-docs', '$PREFIX/NSIS.chm')
-defenv.Alias('install-docs', '$PREFIX/Docs')
-defenv.Alias('install-examples', '$PREFIX/Examples')
-defenv.Alias('install-plugins', '$PREFIX/Plugins')
-defenv.Alias('install-stubs', '$PREFIX/Stubs')
-defenv.Alias('install-includes', '$PREFIX/Include')
-
-# defined elsewhere:
-# install-compiler
-# install-utils
-
-######################################################################
####### Distribution ###
######################################################################
@@ -228,18 +282,28 @@
AlwaysBuild(defenv.AddPostAction(zip_target, Delete('$ZIPDISTDIR')))
-defenv['INSTVER'] = '/DVERSION=$VERSION'
+if defenv['PLATFORM'] == 'win32':
+ optchar = '/'
+else:
+ optchar = '-'
+
+defenv['INSTVER'] = '%sDVERSION=$VERSION' % optchar
if defenv.has_key('VER_MAJOR') and defenv.has_key('VER_MINOR') \
and defenv.has_key('VER_REVISION') and defenv.has_key('VER_BUILD'):
- defenv['INSTVER'] += ' /DVER_MAJOR=$VER_MAJOR'
- defenv['INSTVER'] += ' /DVER_MINOR=$VER_MINOR'
- defenv['INSTVER'] += ' /DVER_REVISION=$VER_REVISION'
- defenv['INSTVER'] += ' /DVER_BUILD=$VER_BUILD'
+ defenv['INSTVER'] += ' %sDVER_MAJOR=$VER_MAJOR' % optchar
+ defenv['INSTVER'] += ' %sDVER_MINOR=$VER_MINOR' % optchar
+ defenv['INSTVER'] += ' %sDVER_REVISION=$VER_REVISION' % optchar
+ defenv['INSTVER'] += ' %sDVER_BUILD=$VER_BUILD' % optchar
+
+inst_env = {}
+inst_env['NSISDIR'] = os.path.abspath(str(defenv['INSTDISTDIR']))
+inst_env['NSISCONFDIR'] = os.path.abspath(str(defenv['INSTDISTDIR']))
installer_target = defenv.Command('nsis-${VERSION}-setup${DISTSUFFIX}.exe',
'$INSTDISTDIR' + os.sep + 'Examples' + os.sep + 'makensis.nsi',
'$INSTDISTDIR' + os.sep + 'makensis$PROGSUFFIX ' +
- '/DOUTFILE=$TARGET.abspath $INSTVER $SOURCE')
+ '%sDOUTFILE=$TARGET.abspath $INSTVER $SOURCE' % optchar,
+ ENV = inst_env)
defenv.Depends(installer_target, '$INSTDISTDIR')
defenv.Sign(installer_target)
defenv.Alias('dist-installer', installer_target)
@@ -252,8 +316,12 @@
####### Distribute Basics ###
######################################################################
-defenv.Distribute('', 'license.txt')
-defenv.Distribute('', 'nsisconf.nsh')
+for d in doc:
+ if d in defenv['SKIPDOC']:
+ continue
+ defenv.DistributeDoc(d)
+
+defenv.DistributeConf('nsisconf.nsh')
######################################################################
####### Stubs ###
@@ -273,7 +341,7 @@
target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = False, exports = exports)
env.SideEffect('%s/stub_%s.map' % (build_dir, stub), target)
- env.DistributeAs('Stubs/%s%s' % (compression, suffix), target)
+ env.DistributeStubs(target, names=compression+suffix)
defenv.Alias(compression, target)
defenv.Alias('stubs', target)
@@ -285,7 +353,7 @@
BuildStub(stub, False)
BuildStub(stub, True)
-defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico')
+defenv.DistributeStubs('Source/exehead/uninst.ico',names='uninst')
######################################################################
####### makensis ###
@@ -300,8 +368,7 @@
defenv.Alias('makensis', makensis)
-ins = defenv.Distribute('', makensis)
-defenv.Alias('install-compiler', ins)
+ins = defenv.DistributeBin(makensis,alias='install-compiler')
######################################################################
####### Common Functions ###
@@ -331,9 +398,9 @@
def DistributeExtras(env, target, examples, docs):
if examples:
- env.DistributeExamples(target, examples)
+ env.DistributeExamples(examples, path=target)
if docs:
- env.DistributeDocs(target, docs)
+ env.DistributeDocs(docs, path=target )
######################################################################
####### Plug-ins ###
@@ -360,7 +427,11 @@
CleanMap(env, plugin, target)
- env.Distribute('Plugins', plugin)
+ for i in plugin:
+ if str(i)[-4:].lower() == '.dll':
+ plugin = i
+ break
+ env.DistributePlugin(plugin)
DistributeExtras(env, target, examples, docs)
@@ -380,7 +451,7 @@
def BuildUtil(target, source, libs, entry = None, res = None,
resources = None, defines = None, flags = None,
- nodeflib = False, install = None, install_as = None,
+ nodeflib = False, file_name = '', path='', contrib = False,
examples = None, docs = None, cross_platform = False):
if not cross_platform:
env = util_env.Copy()
@@ -391,6 +462,9 @@
AppendRES(env, source, res, resources)
+ if file_name != '':
+ target = "%s/%s" % (target, file_name)
+
util = env.Program(target, source, LIBS = libs)
defenv.Alias(target, util)
defenv.Alias('utils', util)
@@ -399,13 +473,12 @@
CleanMap(env, util, target)
- if install is not None:
- ins = env.Distribute(install, util)
- defenv.Alias('install-utils', ins)
-
- if install_as is not None:
- ins = env.DistributeAs(install_as, util)
- defenv.Alias('install-utils', ins)
+ if contrib:
+ ins = env.DistributeContrib(util, path=path, alias='install-utils')
+ elif cross_platform:
+ ins = env.DistributeBin(util, path=path, alias='install-utils')
+ else:
+ ins = env.DistributeW32Bin(util, path=path, alias='install-utils')
DistributeExtras(env, target, examples, docs)
@@ -496,6 +569,8 @@
# test scripts
test_env = defenv.Copy(ENV = os.environ) # env needed for some scripts
+test_env['ENV']['NSISDIR'] = os.path.abspath(str(defenv['TESTDISTDIR']))
+test_env['ENV']['NSISCONFDIR'] = os.path.abspath(str(defenv['TESTDISTDIR']))
def test_scripts(target, source, env):
from os import walk, sep
Index: Contrib/Graphics/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Graphics/SConscript,v
retrieving revision 1.1
diff -u -r1.1 SConscript
--- Contrib/Graphics/SConscript 30 Apr 2005 18:04:55 -0000 1.1
+++ Contrib/Graphics/SConscript 7 Jan 2006 08:16:20 -0000
@@ -78,7 +78,7 @@
return map(lambda x: '%s/%s' % (prefix, x), list)
def dist(dir, files):
- defenv.DistributeContribs('Graphics/%s' % dir, join(dir, files))
+ defenv.DistributeContrib( join(dir,files), path='Graphics/%s' % dir )
dist('Checks', checks)
dist('Header', headers)
Index: Contrib/Language files/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Language files/SConscript,v
retrieving revision 1.4
diff -u -r1.4 SConscript
--- Contrib/Language files/SConscript 11 Aug 2005 15:58:38 -0000 1.4
+++ Contrib/Language files/SConscript 7 Jan 2006 08:16:20 -0000
@@ -52,4 +52,4 @@
Import('defenv')
-defenv.DistributeContribs('Language files', languages)
+defenv.DistributeContrib(languages, path='Language files')
Index: Contrib/Library/LibraryLocal/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Library/LibraryLocal/SConscript,v
retrieving revision 1.1
diff -u -r1.1 SConscript
--- Contrib/Library/LibraryLocal/SConscript 16 Apr 2005 18:48:50 -0000 1.1
+++ Contrib/Library/LibraryLocal/SConscript 7 Jan 2006 08:16:20 -0000
@@ -12,4 +12,4 @@
Import('BuildUtil')
-BuildUtil(target, files, libs, flags = ['$EXCEPTION_FLAG'], install = 'Bin')
+BuildUtil(target, files, libs, flags = ['$EXCEPTION_FLAG'])
Index: Contrib/Library/RegTool/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Library/RegTool/SConscript,v
retrieving revision 1.3
diff -u -r1.3 SConscript
--- Contrib/Library/RegTool/SConscript 17 Sep 2005 08:50:41 -0000 1.3
+++ Contrib/Library/RegTool/SConscript 7 Jan 2006 08:16:20 -0000
@@ -14,4 +14,4 @@
Import('BuildUtil')
-BuildUtil(target, files, libs, entry = 'WinMain', nodeflib = True, install_as = 'Bin/RegTool.bin')
+BuildUtil(target, files, libs, entry = 'WinMain', nodeflib = True, file_name = 'RegTool.bin')
Index: Contrib/MakeLangId/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/MakeLangId/SConscript,v
retrieving revision 1.2
diff -u -r1.2 SConscript
--- Contrib/MakeLangId/SConscript 22 Oct 2005 12:05:33 -0000 1.2
+++ Contrib/MakeLangId/SConscript 7 Jan 2006 08:16:20 -0000
@@ -19,5 +19,5 @@
Import('BuildUtil')
-BuildUtil(target, files, libs, res = res, resources = resources, entry = 'WinMain', install = 'Bin')
+BuildUtil(target, files, libs, res = res, resources = resources, entry = 'WinMain')
Index: Contrib/Makensisw/SConscript
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Makensisw/SConscript,v
retrieving revision 1.4
diff -u -r1.4 SConscript
--- Contrib/Makensisw/SConscript 19 Jun 2005 11:20:15 -0000 1.4
+++ Contrib/Makensisw/SConscript 7 Jan 2006 08:16:20 -0000
@@ -53,7 +53,6 @@
res = res,
resources = resources,
entry = 'WinMain',
- install = '',
defines = ['WIN32_MEAN_AND_LEAN', 'RELEASE=2.0'],
docs = docs
)
Index: Contrib/Modern UI/Readme.html
===================================================================
RCS file: /cvsroot/nsis/NSIS/Contrib/Modern UI/Readme.html,v
retrieving revision 1.148
diff -u -r1.148 Readme.html
--- Contrib/Modern UI/Readme.html 2 Dec 2005 12:04:35 -0000 1.148
+++ Contrib/Modern UI/Readme.html 7 Jan 2006 08:16:22 -0000
@@ -364,12 +364,12 @@
"parameter">ui_file
The interface files with a customized dialog resource IDD_SELCOM
with a small description area.
-Default: {NSISDIR}\Contrib\UIs\modern_smalldesc.exe
MUI_UI_COMPONENTSPAGE_NODESC ui_file
The interface files with a customized dialog resource IDD_SELCOM
without a description area.
-Default: {NSISDIR}\Contrib\UIs\modern_nodesc.exe