From 53fa1d20ac096e0cd24305479c4b8bcf26dd3197 Mon Sep 17 00:00:00 2001 From: kichik Date: Sat, 30 Apr 2005 18:04:55 +0000 Subject: [PATCH] install and distribute examples, contribs and documentation git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4005 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/AdvSplash/SConscript | 10 ++- Contrib/Banner/SConscript | 10 ++- Contrib/BgImage/SConscript | 10 ++- Contrib/Dialer/SConscript | 6 +- Contrib/Graphics/SConscript | 86 +++++++++++++++++++++ Contrib/InstallOptions/SConscript | 17 ++++- Contrib/Language files/SConscript | 53 +++++++++++++ Contrib/Math/SConscript | 13 +++- Contrib/Modern UI/SConscript | 81 ++++++++++++++++++++ Contrib/NSISdl/SConscript | 6 +- Contrib/Splash/SConscript | 10 ++- Contrib/StartMenu/SConscript | 11 ++- Contrib/System/SConscript | 22 +++++- Contrib/UIs/SConscript | 13 ++++ Contrib/UserInfo/SConscript | 7 +- Contrib/nsExec/SConscript | 10 ++- Contrib/zip2exe/SConscript | 10 ++- Docs/src/SConscript | 2 +- Examples/SConscript | 11 +-- Include/SConscript | 15 ++++ SConstruct | 122 ++++++++++++++++++++++++------ 21 files changed, 480 insertions(+), 45 deletions(-) create mode 100644 Contrib/Graphics/SConscript create mode 100644 Contrib/Language files/SConscript create mode 100644 Contrib/Modern UI/SConscript create mode 100644 Contrib/UIs/SConscript create mode 100644 Include/SConscript diff --git a/Contrib/AdvSplash/SConscript b/Contrib/AdvSplash/SConscript index 77f316c1..fa4b298d 100644 --- a/Contrib/AdvSplash/SConscript +++ b/Contrib/AdvSplash/SConscript @@ -11,6 +11,14 @@ libs = Split(""" winmm """) +examples = Split(""" + Example.nsi +""") + +docs = Split(""" + advsplash.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, examples, docs) diff --git a/Contrib/Banner/SConscript b/Contrib/Banner/SConscript index ecbee11b..ea4cb27a 100644 --- a/Contrib/Banner/SConscript +++ b/Contrib/Banner/SConscript @@ -9,6 +9,14 @@ libs = Split(""" user32 """) +examples = Split(""" + Example.nsi +""") + +docs = Split(""" + Readme.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, examples, docs) diff --git a/Contrib/BgImage/SConscript b/Contrib/BgImage/SConscript index 7bab97fb..b8974352 100644 --- a/Contrib/BgImage/SConscript +++ b/Contrib/BgImage/SConscript @@ -11,6 +11,14 @@ libs = Split(""" winmm """) +examples = Split(""" + Example.nsi +""") + +docs = Split(""" + BgImage.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, examples, docs) diff --git a/Contrib/Dialer/SConscript b/Contrib/Dialer/SConscript index 49a3ba3b..0c9ea041 100644 --- a/Contrib/Dialer/SConscript +++ b/Contrib/Dialer/SConscript @@ -9,6 +9,10 @@ libs = Split(""" wininet """) +docs = Split(""" + Dialer.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, docs = docs) diff --git a/Contrib/Graphics/SConscript b/Contrib/Graphics/SConscript new file mode 100644 index 00000000..6073988c --- /dev/null +++ b/Contrib/Graphics/SConscript @@ -0,0 +1,86 @@ +checks = Split(""" + big.bmp + classic-cross.bmp + classic.bmp + colorful.bmp + grey-cross.bmp + grey.bmp + modern.bmp + red-round.bmp + red.bmp + simple-round.bmp + simple-round2.bmp + simple.bmp +""") + +headers = Split(""" + nsis-r.bmp + nsis.bmp + orange-nsis.bmp + orange-r-nsis.bmp + orange-r.bmp + orange-uninstall-nsis.bmp + orange-uninstall-r-nsis.bmp + orange-uninstall-r.bmp + orange-uninstall.bmp + orange.bmp + win.bmp +""") + +icons = Split(""" + arrow-install.ico + arrow-uninstall.ico + arrow2-install.ico + arrow2-uninstall.ico + box-install.ico + box-uninstall.ico + classic-install.ico + classic-uninstall.ico + llama-blue.ico + llama-grey.ico + modern-install-blue-full.ico + modern-install-blue.ico + modern-install-colorful.ico + modern-install-full.ico + modern-install.ico + modern-uninstall-blue-full.ico + modern-uninstall-blue.ico + modern-uninstall-colorful.ico + modern-uninstall-full.ico + modern-uninstall.ico + nsis1-install.ico + nsis1-uninstall.ico + orange-install-nsis.ico + orange-install.ico + orange-uninstall-nsis.ico + orange-uninstall.ico + pixel-install.ico + pixel-uninstall.ico + win-install.ico + win-uninstall.ico +""") + +wizards = Split(""" + arrow.bmp + llama.bmp + nsis.bmp + nullsoft.bmp + orange-nsis.bmp + orange-uninstall-nsis.bmp + orange-uninstall.bmp + orange.bmp + win.bmp +""") + +Import('defenv') + +def join(prefix, list): + return map(lambda x: '%s/%s' % (prefix, x), list) + +def dist(dir, files): + defenv.DistributeContribs('Graphics/%s' % dir, join(dir, files)) + +dist('Checks', checks) +dist('Header', headers) +dist('Icons', icons) +dist('Wizard', wizards) diff --git a/Contrib/InstallOptions/SConscript b/Contrib/InstallOptions/SConscript index 357267f2..2849d1ff 100644 --- a/Contrib/InstallOptions/SConscript +++ b/Contrib/InstallOptions/SConscript @@ -16,6 +16,21 @@ libs = Split(""" comdlg32 """) +examples = Split(""" + test.nsi + test.ini + testimgs.nsi + testimgs.ini + testlink.nsi + testlink.ini + testnotify.nsi + testnotify.ini +""") + +docs = Split(""" + Readme.html +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs, res = resources) +BuildPlugin(target, files, libs, examples, docs, res = resources) diff --git a/Contrib/Language files/SConscript b/Contrib/Language files/SConscript new file mode 100644 index 00000000..742d8c29 --- /dev/null +++ b/Contrib/Language files/SConscript @@ -0,0 +1,53 @@ +languages = Split(""" + Albanian.nlf + Arabic.nlf + Belarusian.nlf + Breton.nlf + Bulgarian.nlf + Catalan.nlf + Croatian.nlf + Czech.nlf + Danish.nlf + Dutch.nlf + English.nlf + Estonian.nlf + Farsi.nlf + Finnish.nlf + French.nlf + German.nlf + Greek.nlf + Hebrew.nlf + Hungarian.nlf + Icelandic.nlf + Indonesian.nlf + Italian.nlf + Japanese.nlf + Korean.nlf + Latvian.nlf + Lithuanian.nlf + Luxembourgish.nlf + Macedonian.nlf + Malaysian.nlf + Mongolian.nlf + Norwegian.nlf + Polish.nlf + Portuguese.nlf + PortugueseBR.nlf + Romanian.nlf + Russian.nlf + Serbian.nlf + SerbianLatin.nlf + SimpChinese.nlf + Slovak.nlf + Slovenian.nlf + Spanish.nlf + Swedish.nlf + Thai.nlf + TradChinese.nlf + Turkish.nlf + Ukrainian.nlf +""") + +Import('defenv') + +defenv.DistributeContribs('Language files', languages) diff --git a/Contrib/Math/SConscript b/Contrib/Math/SConscript index bd2ed826..21dede22 100644 --- a/Contrib/Math/SConscript +++ b/Contrib/Math/SConscript @@ -11,6 +11,17 @@ libs = Split(""" kernel32 """) +examples = Split(""" + math.nsi + mathtest.nsi + mathtest.ini + mathtest.txt +""") + +docs = Split(""" + Math.txt +""") + Import('BuildPlugin env') -BuildPlugin(target, files, libs, nodeflib = 0, flags = env['CPP_FLAG']) +BuildPlugin(target, files, libs, examples, docs, nodeflib = 0, flags = ['$CPP_FLAG']) diff --git a/Contrib/Modern UI/SConscript b/Contrib/Modern UI/SConscript new file mode 100644 index 00000000..c3919f98 --- /dev/null +++ b/Contrib/Modern UI/SConscript @@ -0,0 +1,81 @@ +target = 'Modern UI' + +docs = Split(""" + Changelog.txt + License.txt + Readme.html +""") + +doc_images = Split(""" + closed.gif + header.gif + open.gif + screen1.png + screen2.png +""") + +contribs = Split(""" + ioSpecial.ini + System.nsh +""") + +languages = Split(""" + Albanian.nsh + Arabic.nsh + Belarusian.nsh + Breton.nsh + Bulgarian.nsh + Catalan.nsh + Croatian.nsh + Czech.nsh + Danish.nsh + Default.nsh + Dutch.nsh + English.nsh + Estonian.nsh + Farsi.nsh + Finnish.nsh + French.nsh + German.nsh + Greek.nsh + Hebrew.nsh + Hungarian.nsh + Icelandic.nsh + Indonesian.nsh + Italian.nsh + Japanese.nsh + Korean.nsh + Latvian.nsh + Lithuanian.nsh + Luxembourgish.nsh + Macedonian.nsh + Malaysian.nsh + Mongolian.nsh + Norwegian.nsh + Polish.nsh + Portuguese.nsh + PortugueseBR.nsh + Romanian.nsh + Russian.nsh + Serbian.nsh + SerbianLatin.nsh + SimpChinese.nsh + Slovak.nsh + Slovenian.nsh + Spanish.nsh + Swedish.nsh + Thai.nsh + TradChinese.nsh + Turkish.nsh + Ukrainian.nsh +""") + +Import('defenv') + +def join(prefix, list): + return map(lambda x: '%s/%s' % (prefix, x), list) + +defenv.DistributeDocs(target, docs) +defenv.DistributeDocs('%s/%s' % (target, 'images'), join('images', doc_images)) +defenv.DistributeContribs(target, contribs) +defenv.DistributeContribs('%s/%s' % (target, 'Language files'), join('Language files', languages)) diff --git a/Contrib/NSISdl/SConscript b/Contrib/NSISdl/SConscript index a2d493da..71094e55 100644 --- a/Contrib/NSISdl/SConscript +++ b/Contrib/NSISdl/SConscript @@ -15,6 +15,10 @@ libs = Split(""" ws2_32 """) +docs = Split(""" + ReadMe.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, docs = docs) diff --git a/Contrib/Splash/SConscript b/Contrib/Splash/SConscript index 50de0097..9ef895d5 100644 --- a/Contrib/Splash/SConscript +++ b/Contrib/Splash/SConscript @@ -11,6 +11,14 @@ libs = Split(""" winmm """) +examples = Split(""" + Example.nsi +""") + +docs = Split(""" + splash.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, examples, docs) diff --git a/Contrib/StartMenu/SConscript b/Contrib/StartMenu/SConscript index d404baa0..8a07216c 100644 --- a/Contrib/StartMenu/SConscript +++ b/Contrib/StartMenu/SConscript @@ -15,7 +15,14 @@ libs = Split(""" shell32 """) +examples = Split(""" + Example.nsi +""") + +docs = Split(""" + Readme.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs, res = resources, res_target = 'StartMenuRC') - +BuildPlugin(target, files, libs, examples, docs, res = resources, res_target = 'StartMenuRC') diff --git a/Contrib/System/SConscript b/Contrib/System/SConscript index 7eb057ec..2a165c1b 100644 --- a/Contrib/System/SConscript +++ b/Contrib/System/SConscript @@ -20,6 +20,26 @@ libs = Split(""" ole32 """) +examples = Split(""" + System.nsi + System.nsh + SysFunc.nsh +""") + +docs = Split(""" + System.html + WhatsNew.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs, entry = '_DllMainCRTStartup', nodeflib = 0, defines = ['SYSTEM_EXPORTS']) +BuildPlugin( + target, + files, + libs, + examples, + docs, + entry = '_DllMainCRTStartup', + nodeflib = 0, + defines = ['SYSTEM_EXPORTS'] +) diff --git a/Contrib/UIs/SConscript b/Contrib/UIs/SConscript new file mode 100644 index 00000000..02c75534 --- /dev/null +++ b/Contrib/UIs/SConscript @@ -0,0 +1,13 @@ +uis = Split(""" + default.exe + modern.exe + modern_headerbmp.exe + modern_headerbmpr.exe + modern_nodesc.exe + modern_smalldesc.exe + sdbarker_tiny.exe +""") + +Import('defenv') + +defenv.DistributeContribs('UIs', uis) diff --git a/Contrib/UserInfo/SConscript b/Contrib/UserInfo/SConscript index e6b91653..b0645a63 100644 --- a/Contrib/UserInfo/SConscript +++ b/Contrib/UserInfo/SConscript @@ -9,7 +9,10 @@ libs = Split(""" advapi32 """) +examples = Split(""" + UserInfo.nsi +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) - +BuildPlugin(target, files, libs, examples) diff --git a/Contrib/nsExec/SConscript b/Contrib/nsExec/SConscript index a63414f0..044094b7 100644 --- a/Contrib/nsExec/SConscript +++ b/Contrib/nsExec/SConscript @@ -10,7 +10,15 @@ libs = Split(""" advapi32 """) +examples = Split(""" + test.nsi +""") + +docs = Split(""" + nsExec.txt +""") + Import('BuildPlugin') -BuildPlugin(target, files, libs) +BuildPlugin(target, files, libs, examples, docs) diff --git a/Contrib/zip2exe/SConscript b/Contrib/zip2exe/SConscript index 9d28e14b..679fe08c 100644 --- a/Contrib/zip2exe/SConscript +++ b/Contrib/zip2exe/SConscript @@ -28,6 +28,14 @@ libs = Split(""" shell32 """) -Import('BuildUtil') +headers = Split(""" + Base.nsh + Classic.nsh + Modern.nsh +""") + +Import('BuildUtil defenv') BuildUtil(target, files, libs, res = rc, resources = resources, install = 'Bin') + +defenv.DistributeContribs(target, headers) diff --git a/Docs/src/SConscript b/Docs/src/SConscript index 7cb8c8c6..86bc1e32 100644 --- a/Docs/src/SConscript +++ b/Docs/src/SConscript @@ -75,4 +75,4 @@ env.Append(BUILDERS = {'HalibutCHM' : builder}) chm = env.HalibutCHM('NSIS.chm', [chm_config_but] + buts) env.Depends(chm, halibut) -env.Install('$PREFIX', chm) +env.Distribute('', chm) diff --git a/Examples/SConscript b/Examples/SConscript index 1b159913..cb4d5296 100644 --- a/Examples/SConscript +++ b/Examples/SConscript @@ -24,12 +24,13 @@ mui_examples = [ 'Modern UI/InstallOptions.nsi', 'Modern UI/MultiLanguage.nsi', 'Modern UI/StartMenu.nsi', - 'Modern UI/WelcomeFinish.nsi' + 'Modern UI/WelcomeFinish.nsi', + 'Modern UI/ioA.ini', + 'Modern UI/ioB.ini', + 'Modern UI/ioC.ini' ] Import('env') -env.Install('$PREFIX/Examples', examples) -env.Install('$PREFIX/Examples/Modern UI', mui_examples) - -env.Alias('install-examples', '$PREFIX/Examples') +env.DistributeExamples('', examples) +env.DistributeExamples('Modern UI', mui_examples) diff --git a/Include/SConscript b/Include/SConscript new file mode 100644 index 00000000..cbdb0c98 --- /dev/null +++ b/Include/SConscript @@ -0,0 +1,15 @@ +includes = Split(""" + Colors.nsh + Library.nsh + LogicLib.nsh + MUI.nsh + Sections.nsh + StrFunc.nsh + UpgradeDLL.nsh + WinMessages.nsh +""") + +Import('env') + +env.Distribute('Include', includes) +env.DistributeDocs('StrFunc', 'StrFunc.txt') diff --git a/SConstruct b/SConstruct index fc8fec32..965f1dba 100644 --- a/SConstruct +++ b/SConstruct @@ -1,6 +1,6 @@ ## TODO # -# * VPatch GenPat (wait for v3 written in C) +# * VPatch GenPat & distribution # * Write SConscript for NSIS Menu # - Use inheritance instead of current wxWidgets patches # - Compile for POSIX too? wxWidgets is cross platform after all... @@ -8,6 +8,8 @@ # ## +VERSION = '2.06' + stubs = [ 'bzip2', 'lzma', @@ -42,17 +44,23 @@ utils = [ 'zip2exe' ] -import os +misc = [ + 'Graphics', + 'Language files', + 'Modern UI', + 'UIs' +] defenv = Environment() +defenv.SConsignFile() Export('defenv') ###################################################################### -####### options ### +####### Options ### ###################################################################### opts = Options() -opts.Add(PathOption('PREFIX', 'Installation prefix', GetLaunchDir())) +opts.Add(PathOption('PREFIX', 'Installation prefix', None)) opts.Add(('MINGWPREFIX', 'MinGW toolset prefix', 0)) opts.Add(BoolOption('MSTOOLKIT', 'Use Microsoft Visual C++ Toolkit', 'no')) opts.Add(BoolOption('DEBUG', 'Build executables with debugging information', 'no')) @@ -62,6 +70,45 @@ opts.Update(defenv) Help(opts.GenerateHelpText(defenv)) +###################################################################### +####### Functions ### +###################################################################### + +defenv['DISTDIR'] = '#nsis-%s' % VERSION + +def Distribute(dir, files): + if defenv.has_key('PREFIX') and defenv['PREFIX']: + ins = defenv.Install('$PREFIX/%s' % dir, files) + return ins + defenv.Install('$DISTDIR/%s' % dir, files) + return [] + +def DistributeAs(path, file): + if defenv.has_key('PREFIX') and defenv['PREFIX']: + ins = defenv.InstallAs('$PREFIX/%s' % path, file) + return ins + defenv.InstallAs('$DISTDIR/%s' % path, file) + return [] + +def DistributeExamples(dir, examples): + return Distribute('Examples/%s' % dir, examples) + +def DistributeDocs(dir, docs): + return Distribute('Docs/%s' % dir, docs) + +def DistributeContribs(dir, contribs): + return Distribute('Contrib/%s' % dir, contribs) + +defenv.Distribute = Distribute +defenv.DistributeAs = DistributeAs +defenv.DistributeExamples = DistributeExamples +defenv.DistributeDocs = DistributeDocs +defenv.DistributeContribs = DistributeContribs + +###################################################################### +####### Environments ### +###################################################################### + if defenv['DEBUG']: defenv.Replace(BUILD_PREFIX = 'build/debug') else: @@ -70,9 +117,7 @@ else: if defenv['MSTOOLKIT']: defenv.Tool('mstoolkit', toolpath = ['SCons/Tools']) -###################################################################### -####### environments ### -###################################################################### +Default(defenv['BUILD_PREFIX']) tools = defenv['TOOLS'] @@ -91,21 +136,31 @@ plugin_env = envs[2] util_env = envs[3] ###################################################################### -####### aliases ### +####### 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-stubs -# install-plugins # install-utils -# install-examples ###################################################################### -####### stubs ### +####### Distribution ### +###################################################################### + +dist_zip = 'nsis-%s.zip' % VERSION +defenv.Zip(dist_zip, '$DISTDIR') +defenv.Alias('dist', dist_zip) + +###################################################################### +####### Stubs ### ###################################################################### for stub in stubs: @@ -117,7 +172,7 @@ for stub in stubs: target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) env.SideEffect('%s/stub_%s.map' % (build_dir, stub), target) - ins_target = defenv.InstallAs('$PREFIX/Stubs/%s' % stub, target) + defenv.DistributeAs('Stubs/%s' % stub, target) build_dir = '$BUILD_PREFIX/stub_%s_solid' % stub env = stub_env.Copy() @@ -127,14 +182,12 @@ for stub in stubs: solid_target = defenv.SConscript(dirs = 'Source/exehead', build_dir = build_dir, duplicate = 0, exports = exports) env.SideEffect('%s/stub_%s.map' % (build_dir, stub), solid_target) - ins_solid_target = defenv.InstallAs('$PREFIX/Stubs/%s_solid' % stub, solid_target) + defenv.DistributeAs('Stubs/%s_solid' % stub, solid_target) defenv.Alias(stub, target + solid_target) defenv.Alias('stubs', target + solid_target) - defenv.Alias('install-stubs', ins_target + ins_solid_target) -uninst_icon = defenv.InstallAs('$PREFIX/Stubs/uninst', 'Source/exehead/uninst.ico') -defenv.Alias('install-stubs', uninst_icon) +defenv.DistributeAs('Stubs/uninst', 'Source/exehead/uninst.ico') ###################################################################### ####### makensis ### @@ -151,16 +204,17 @@ makensis_env.SideEffect('%s/makensis.map' % build_dir, makensis) defenv.Alias('makensis', makensis) -ins = defenv.Install('$PREFIX', makensis) +ins = defenv.Distribute('', makensis) defenv.Alias('install-compiler', ins) ###################################################################### ####### Plug-ins ### ###################################################################### -def BuildPlugin(target, source, libs, entry = 'DllMain', res = None, - res_target = None, resources = None, defines = None, - flags = None, nodeflib = 1): +def BuildPlugin(target, source, libs, examples = None, docs = None, + entry = 'DllMain', res = None, res_target = None, + resources = None, defines = None, flags = None, + nodeflib = 1): env = plugin_env.Copy() if defines: @@ -188,8 +242,12 @@ def BuildPlugin(target, source, libs, entry = 'DllMain', res = None, env.Clean(plugin, File(target + '.map')) - ins = env.Install('$PREFIX/Plugins', plugin) - defenv.Alias('install-plugins', ins) + env.Distribute('Plugins', plugin) + + if examples: + env.DistributeExamples(target, examples) + if docs: + env.DistributeDocs(target, docs) for plugin in plugins: path = 'Contrib/' + plugin @@ -230,7 +288,7 @@ def BuildUtil(target, source, libs, entry = None, res = None, env.Clean(util, File(target + '.map')) if install is not None: - ins = env.Install('$PREFIX/%s' % install, util) + ins = env.Distribute(install, util) defenv.Alias('install-utils', ins) for util in utils: @@ -266,3 +324,19 @@ defenv.SConscript( dirs = 'Examples', exports = {'env': defenv.Copy()} ) + +###################################################################### +####### Includes ### +###################################################################### + +defenv.SConscript( + dirs = 'Include', + exports = {'env': defenv.Copy()} +) + +###################################################################### +####### Miscellaneous ### +###################################################################### + +for i in misc: + defenv.SConscript(dirs = 'Contrib/%s' % i)