? .sconf_temp
? .sconsign.dblite
? ChangeLog
? build
? config.log
? debian
? 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 12 Jan 2006 05:21:21 -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 12 Jan 2006 05:21:22 -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,71 @@
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)
+ if defenv.has_key('PREFIX') and defenv['PREFIX']:
+ ins = defenv.Install( os.path.join('$PREFIX_DEST$PREFIX_%s'%component.upper(), path, subpath), files)
+ else:
+ ins = []
+ 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)
+ if defenv.has_key('PREFIX') and defenv['PREFIX']:
+ 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)
+ else:
+ ins = []
+ if ins != []:
+ 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 +234,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 +280,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 +289,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 +323,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 +348,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 +360,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 +375,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 +405,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 +434,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 +458,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 +469,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 +480,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 +576,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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:22 -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 12 Jan 2006 05:21:24 -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
Configuration file\\
-If a file named "nsisconf.nsh" in the same directory as makensis.exe exists, it will be included by default before any scripts (unless the /NOCONFIG command line parameter is used).
\ No newline at end of file
+If a file named "nsisconf.nsh" in the config directory exists, it will be included by default before any scripts (unless the /NOCONFIG command line parameter is used). The config directory on Windows is the same directory as makensis.exe is in. On other platforms this is set at install time and defaults to $PREFIX/etc/. You can alter this at runtime, see \k{usageenvironment} for more information.
Index: Docs/src/usage.but
===================================================================
RCS file: /cvsroot/nsis/NSIS/Docs/src/usage.but,v
retrieving revision 1.12
diff -u -r1.12 usage.but
--- Docs/src/usage.but 23 Jul 2005 10:29:14 -0000 1.12
+++ Docs/src/usage.but 12 Jan 2006 05:21:25 -0000
@@ -19,7 +19,7 @@
\b /PAUSE makes makensis pause before quitting, which is useful when executing directly from Windows.
-\b /NOCONFIG disables inclusion of