Archive: scons build on debian


scons (0.96.1-1) build result on debian is below. Seems scons treats errors as warnings on debian, is there a way to disable this?

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons -j4 MINGWPREFIX=i586-mingw32msvc CPPPATH=/usr/i586-mingw32msvc/include LIBPATH=/usr/i586-mingw32msvc/lib/
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for main() in C library gdi32... no
Checking for main() in C library user32... no
Checking for main() in C library version... no
Checking for main() in C library pthread... no
Checking for main() in C library stdc++... no
Checking for main() in C library iconv... no
Checking for main() in C library libiconv... no
scons: done reading SConscript files.
scons: Building targets ...
i586-mingw32msvc-g++ -O2 -Wall -I/usr/i586-mingw32msvc/include -c -o build/release/Library/LibraryLocal/LibraryLocal.o Contrib/Library/LibraryLocal/LibraryLocal.cpp
i586-mingw32msvc-g++ -O2 -Wall -I/usr/i586-mingw32msvc/include -c -o build/release/MakeLangId/MakeLangId.o Contrib/MakeLangId/MakeLangId.cpp
scons: *** [build/release/MakeLangId/resource.o] Exception
Traceback (most recent call last):
File "/usr/lib/scons/SCons/Taskmaster.py", line 101, in execute
self.targets[0].build()
File "/usr/lib/scons/SCons/Node/__init__.py", line 201, in build
apply(executor, (self, errfunc), kw)
File "/usr/lib/scons/SCons/Executor.py", line 115, in __call__
apply(action, (self.targets, self.sources, env, errfunc), kw)
File "/usr/lib/scons/SCons/Action.py", line 239, in __call__
s = self.strfunction(target, source, env)
TypeError: 'str' object is not callable
Contrib/MakeLangId/MakeLangId.cpp: In function `BOOL DialogProc(HWND__*, UINT, WPARAM, LPARAM)':
Contrib/MakeLangId/MakeLangId.cpp:191: warning: comparison between signed and unsigned integer expressions
Contrib/MakeLangId/MakeLangId.cpp:193: warning: comparison between signed and unsigned integer expressions
Contrib/MakeLangId/MakeLangId.cpp:241:2: warning: no newline at end of file
scons: building terminated because of errors.


SCons doesn't treat warnings as errors. An error is raised when a tool returns a value different than 0. In your case, the error is a few lines above. The printing might get a little mixed if you use -j.

As for the error itself, mind runing scons with --debug=pdb and seeing what string it tries to call there?


Hmm, now I'm getting this:

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons MINGWPREFIX=i586-mingw32msvc CPPPATH=/usr/i586-mingw32msvc/include LIBPATH=/usr/i586-mingw32msvc/lib/
<snip>
i586-mingw32msvc-ld -s -mwindows -Wl,--file-alignment,512 -Wl,-Map,LibraryLocal.map -o build/release/Library/LibraryLocal/LibraryLocal build/release/Library/LibraryLocal/LibraryLocal.o -L/usr/i586-mingw32msvc/lib -lkernel32 -loleaut32 -lversion
i586-mingw32msvc-ld: unrecognised emulation mode: windows
Supported emulations: i386pe
scons: *** [build/release/Library/LibraryLocal/LibraryLocal] Error 1
scons: building terminated because of errors.

Using i586-mingw32msvc-g++ for linking fixes this.

Printing the value of self.strfunction in Action.py gives "$RCCOMSTR". Either way, I don't think strings can be called in python.

Also, does scons have an equivalent of make clean?


I've fixed the configuration to use g++ for linking instead of ld. In SCons/Config/gnu change line number 24.

As for RCCOMSTR, I have no idea where SCons creates it. It uses it, but no where it seems to create it. Try removing the parameter using it in SCons/Config/gnu on line 15 and let me know if it works.

To clean using SCons, use -c. To see all available command line options, use -H.


I submitted a patch to fix building Contrib stuff.

The problem I come up against now, is that halibut is built with the include path specified in CPPPATH. I'm not sure how to solve this, but I think the stuff targeted at windows would use MINGW32CPPPATH, and the stuff targeted at the build os can use CPPPATH. It would be nice if CPPPATH could default to /usr/include on linux too.


CPPPATH defauls to nothing which allows scons or gcc to use whatever it thinks that's required. Does it not find the right header files when you don't use CPPPATH?


pabs@chianamo:~/devel/debian/nsis/NSIS$ scons MINGWPREFIX=i586-mingw32msvc PREFIX=/usr/local
scons: Reading SConscript files ...

scons: *** Path does not exist for option CPPPATH:
File "SConstruct", line 69, in ?

I get a similar thing when ommiting PREFIX


Options with an empty default value is a new feature of 0.96.90. Upgrade and those should disappear.


Ah, ok. Installed the deb, fixed that.

Now I have problems with halibut:

* _MAX_PATH isn't defined for bk_xhtml.c

* for some reason, the standard libs don't get linked into the binary, preventing linking due to unresolved symbols - fixed by emptying defenv['NODEFLIBS_FLAG'] in NSIS/SCons/Config/gnu

* the __main entry point isn't found - commenting lines 113/114 in NSIS/SCons/Config/gnu:
#ctx.env.Append(LINKFLAGS = '$NODEFLIBS_FLAG')
#ctx.env.Append(LINKFLAGS = '-Wl,-e,___main')

* it segfaults during building the docs - I'll work on this

* I get this error during building InstallOptions.dll:

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons MINGWPREFIX=i586-mingw32msvc
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
<snip>
Contrib/InstallOptions/../ExDLL/exdll.h:103: warning: 'char* getuservariable(int)' defined but not used
Contrib/InstallOptions/../ExDLL/exdll.h:109: warning: 'void setuservariable(int, const char*)' defined but not used
i586-mingw32msvc-windres --include-dir Contrib/InstallOptions -i Contrib/InstallOptions/ioptdll.rc -o build/release/InstallOptions/ioptdll.o
scons: *** Source file: build/release/InstallOptions/ioptdll.o is static and is not compatible with shared target: build/release/InstallOptions/libInstallOptions.so
scons: building terminated because of errors.
(not that the windres call didn't actually fail, just scons doesn't like it)

* same with LangDLL, StartMenu

* Makensisw can't be built - undefined symbols: TBN_DROPDOWN , TBDDRET_DEFAULT, TBDDRET_NODEFAULT. _WIN32_IE needs defining as 0x0500 before commctrl.h is included in Contrib/Makensisw/makensisw.h

* Contrib/Math/Source/MyMath.c DBL_MAX_EXP, HUGE_VAL not defined. I placed a copy of the mingw math.h here: http://bonedaddy.net/pabs3/files/tmp/math.h

* Contrib/System: build errors:
586-mingw32msvc-gcc -Os -Wall -fPIC -DSYSTEM_EXPORTS -c -o build/release/System/Source/Buffers.os Contrib/System/Source/Buffers.c
Contrib/System/Source/Buffers.c:1: warning: -fPIC ignored for target (all code is position independent)
In file included from Contrib/System/Source/Buffers.c:1:
Contrib/System/Source/stdafx.h:13:27: warning: no newline at end of file
In file included from Contrib/System/Source/Buffers.c:3:
Contrib/System/Source/System.h:94: error: redefinition of typedef 'SystemProc'
Contrib/System/Source/System.h:75: error: previous declaration of 'SystemProc' was here
Contrib/System/Source/Buffers.c:11: error: redefinition of typedef 'TempStack'
Contrib/System/Source/Buffers.c:6: error: previous declaration of 'TempStack' was here
Contrib/System/Source/Buffers.c: In function `Copy':
Contrib/System/Source/Buffers.c:40: warning: cast to pointer from integer of different size
Contrib/System/Source/Buffers.c:49: warning: passing arg 1 of `pushint' makes integer from pointer without a cast
Contrib/System/Source/Buffers.c:110:18: warning: no newline at end of file
scons: *** [build/release/System/Source/Buffers.os] Error 1

* linking makensis:

gcc -O2 -Wall -c -o build/release/makensis/zlib/trees.o Source/zlib/trees.c
g++ -s -Wl,--file-alignment,512 -Wl,-Map,makensis.map -o build/release/makensis/makensis build/release/makensis/build.o build/release/makensis/clzma.o build/release/makensis/crc32.o build/release/makensis/DialogTemplate.o build/release/makensis/dirreader.o build/release/makensis/growbuf.o build/release/makensis/lang.o build/release/makensis/lineparse.o build/release/makensis/makenssi.o build/release/makensis/mmap.o build/release/makensis/Plugins.o build/release/makensis/ResourceEditor.o build/release/makensis/ResourceVersionInfo.o build/release/makensis/script.o build/release/makensis/ShConstants.o build/release/makensis/strlist.o build/release/makensis/tokens.o build/release/makensis/util.o build/release/makensis/bzip2/blocksort.o build/release/makensis/bzip2/bzlib.o build/release/makensis/bzip2/compress.o build/release/makensis/bzip2/huffman.o build/release/makensis/7zip/7zGuids.o build/release/makensis/7zip/Common/CRC.o build/release/makensis/7zip/7zip/Compress/LZ/LZInWindow.o build/release/makensis/7zip/7zip/Compress/LZMA/LZMAEncoder.o build/release/makensis/7zip/7zip/Common/OutBuffer.o build/release/makensis/7zip/7zip/Compress/RangeCoder/RangeCoderBit.o build/release/makensis/7zip/Common/Alloc.o build/release/makensis/zlib/deflate.o build/release/makensis/zlib/trees.o
/usr/bin/ld: unrecognized option '--file-alignment'
/usr/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
scons: *** [build/release/makensis/makensis] Error 1
removing the --file-alignment thing fixes the build error



$ gcc --version
gcc (GCC) 3.3.6 (Debian 1:3.3.6-3)
$ ld --version
GNU ld version 2.15

<snip>
gcc -c -o build/release/halibut/version.o Docs/src/bin/halibut/version.c
gcc -nostdlib -Wl,--exclude-libs,msvcrt.a -Wl,-e,___main -nostdlib -Wl,--exclude-libs,msvcrt.a -Wl,-e,___main -o build/release/halibut/halibut build/release/halibut/biblio.o build/release/halibut/bk_xhtml.o build/release/halibut/contents.o build/release/halibut/error.o build/release/halibut/help.o build/release/halibut/index.o build/release/halibut/input.o build/release/halibut/keywords.o build/release/halibut/licence.o build/release/halibut/main.o build/release/halibut/malloc.o build/release/halibut/misc.o build/release/halibut/style.o build/release/halibut/tree234.o build/release/halibut/ustring.o build/release/halibut/version.o
/usr/bin/ld: unrecognized option '--exclude-libs'
/usr/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
scons: *** [build/release/halibut/halibut] Error 1
scons: building terminated because of errors.

Then I removed "-Wl,--exclude-libs,msvcrt.a" from NODEFLIBS_FLAG.

<snip>
gcc -nostdlib -Wl,-e,___main -nostdlib -Wl,-e,___main -o build/release/halibut/halibut build/release/halibut/biblio.o build/release/halibut/bk_xhtml.o build/release/halib
ut/contents.o build/release/halibut/error.o build/release/halibut/help.o build/release/halibut/index.o build/release/halibut/input.o build/release/halibut/keywords.o buil
d/release/halibut/licence.o build/release/halibut/main.o build/release/halibut/malloc.o build/release/halibut/misc.o build/release/halibut/style.o build/release/halibut/t
ree234.o build/release/halibut/ustring.o build/release/halibut/version.o
/usr/bin/ld: warning: cannot find entry symbol ___main; defaulting to 0000000008048094
This gives these undefined symbols:
__assert_fail
exit
fclose
fopen
fprintf
fputs
free
_IO_getc
localtime
malloc
memset
printf
putchar
puts
sprintf
stderr
strcmp
strcpy
strftime
strlen
time
vsprintf

Then I removed "-nostdlib" from NODEFLIBS_FLAG. After that, halibut linked fine.

As far as the RCFLAGS things go, I note that the output is complaining about build/release/InstallOptions/libInstallOptions.so rather than build/release/InstallOptions/InstallOptions.dll, or build/release/InstallOptions/InstallOptions.os, so I think perhaps that the link target is using non-mingw stuff, when it shouldn't be.

This looks like a similar problem to the RC issue:
i586-mingw32msvc-gcc -Os -Wall -x c++ -fPIC -c -o build/release/Math/Source/plugin.os Contrib/Math/Source/plugin.c
Contrib/Math/Source/plugin.c:1: warning: -fPIC ignored for target (all code is position independent)
In file included from Contrib/Math/Source/plugin.c:2:
Contrib/Math/Source/MyMath.h:163:51: warning: no newline at end of file
Contrib/Math/Source/plugin.c:136:2: warning: no newline at end of file
scons: *** Source file: Contrib/Math/Source/mathcrt.lib is static and is not compatible with shared target: build/release/Math/libMath.so
scons: building terminated because of errors.

Here, it looks like C++ plugins need to be linked with the standard libs:
i586-mingw32msvc-g++ -Os -Wall -fPIC -c -o build/release/NSISdl/util.os Contrib/NSISdl/util.cpp
Contrib/NSISdl/util.cpp:1: warning: -fPIC ignored for target (all code is position independent)
Contrib/NSISdl/util.cpp:39:2: warning: no newline at end of file
i586-mingw32msvc-g++ -s -Wl,--file-alignment,512 -Wl,-e,_DllMain@16 -nostdlib -Wl,--exclude-libs,msvcrt.a -Wl,-Map,NSISdl.map -shared -o build/release/NSISdl/libNSISdl.so build/release/NSISdl/asyncdns.os build/release/NSISdl/connection.os build/release/NSISdl/httpget.os build/release/NSISdl/nsisdl.os build/release/NSISdl/util.os .sconf_temp/funcs.os -lkernel32 -luser32 -ladvapi32 -lws2_32
build/release/NSISdl/connection.os:connection.cpp:(.text+0x1c): undefined reference to `___gxx_personality_sj0'
build/release/NSISdl/connection.os:connection.cpp:(.text+0x32): undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/connection.os:connection.cpp:(.text+0xa5): undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/connection.os:connection.cpp:(.text+0xdc): undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/connection.os:connection.cpp:(.text+0x13e): undefined reference to `__Unwind_SjLj_Unregister'
<snip>
collect2: ld returned 1 exit status
scons: *** [build/release/NSISdl/libNSISdl.so] Error 1
scons: building terminated because of errors.

Contrib/System/Source/System.c contains lots of Microsoft assembly, which GCC doesn't understand. I'll probably disable building this in the debian version corresponding to 2.07, as I did for 2.06.

_WIN32_IE needs to be 0x0500 for these (best to put it in makensisw.h, because more than 1 cpp file use it):
Contrib/Makensisw/toolbar.cpp:58: error: `TBSTYLE_DROPDOWN' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:58: error: (Each undeclared identifier is reported only once for each function it appears in.)
Contrib/Makensisw/toolbar.cpp:70: error: `TBSTYLE_TRANSPARENT' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:70: error: `TBSTYLE_FLAT' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:90: error: `TB_SETIMAGELIST' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:91: error: `TB_SETDISABLEDIMAGELIST' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:92: error: `TB_SETHOTIMAGELIST' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:96: error: `TB_SETEXTENDEDSTYLE' undeclared (first use this function)
Contrib/Makensisw/toolbar.cpp:96: error: `TBSTYLE_EX_DRAWDDARROWS' undeclared (first use this function)

Case problem in Contrib/Makensisw/resource.rc:
i586-mingw32msvc-windres --include-dir Contrib/Makensisw --input-format rc --output-format coff -i Contrib/Makensisw/resource.rc -o build/release/Makensisw/resource.o
i586-mingw32msvc-windres: can't open icon file `..\..\contrib\graphics\icons\modern-install-blue-full.ico': No such file or directory
Using this line helped:
IDI_ICON ICON "../Graphics/Icons/modern-install-blue-full.ico"

I also get a syntax error on line 162 of Contrib/Makensisw/resource.rc - didn't seem to have some of these defined: TCS_HOTTRACK, TCS_BUTTONS, TCS_RAGGEDRIGHT, TCS_OWNERDRAWFIXED, TCS_MULTISELECT. This requires "#define _WIN32_IE 0x0300" before the afxres.h include.


To fix the Contrib/Makensisw/resource.rc syntax error, you can also pass --define _WIN32_IE=0x0300 to windres.


Hmmm, this halibut segfault is a heisenbug that sometimes hides itself from gdb (GNU debugger). The backtrace looks something like the following. The parameters to fprintf are all fine, so I've no idea whats going on.

<internal libc functions>
vfprintf (vfprintf.c:1260)
fprintf (fprintf.c:32)
xhtml_add_contents_entry (bk_xhtml.c:1214)
xhtml_do_contents_section_limit (bk_xhtml.c:1183)
xhtml_do_contents_limit (bk_xhtml.c:1144)
xhtml_do_naked_contents (bk_xhtml.c:1122)
xhtml_do_file (bk_xhtml.c:955)
xhtml_do_files (bk_xhtml.c:684)
xhtml_backend (bk_xhtml.c:748)
main (main.c:229)


chm_toc might seem to have a valid value, but unless it's used in xhtml_do_top_file or in a function xhtml_do_top_file calls, it's closed. I've made xhtml_do_top_file set both chm_toc and chm_ind to NULL after they're closed. Let me know if a segfault is still raised.

I've removed --file-alignment from makensis' configuration as it seems to be MinGW specific. I've also made the tests reset the LINKFLAGS so halibut will be compiled with proper flags.

All of the weird errors related to MinGW are probably raised because I haven't copied all of the tool specification. I shuold just copy mingw.py from SCons and modify it to properly search for MinGW, instead of just adding the prefix to gcc, g++, ld and friends.

I'll take a look at the other problems later.


No more segfaults, yay! Thanks for that, now Docs buildage fails due to no hhc :) - one day I'll get around to finishing hhm. How about making the hhc run optional and not block the rest of the build if it fails? Hmmm, or I might just add a patch for the debian package to not run it.


I do intend to make some targets optional in the SConstruct. For example, I'd also like to make it possible to use precompiled stubs and plug-ins, like with the old makefiles. I don't know how I want to do that yet, though. On POSIX, it should not use hhc and chm_config.but at all, but instead use config.but and create HTML documentation.


I've attached a slightly modified mingw tool definition to be used in cross_env(). It searches for some known prefixes of MinGW and unlike the old cross_env(), it also sets library suffix, shared object suffix and more. Please let me know if it helps.

To get rid of the C++ plug-in errors, add plugin_env.Append(LIBS = ['stdc++']) to SCons/Config/gnu. If the same happens with utilities, add util_env.Append(LIBS = ['stdc++']).

All of those TB_* defines require 0x0400. Once SourceForge's CVS is back online, I'll commit the change to move that define to makensis.h as you've suggested. Same goes to resource.rc.


After unpacking scons.zip over the source tree, I get this:

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons
scons: Reading SConscript files ...
Using GNU tools configuration
NameError: name 'Split' is not defined:
File "SConstruct", line 131:
envs = SConscript('SCons/Config/gnu')
File "/usr/lib/python2.2/site-packages/SCons/Script/SConscript.py", line 534:
return apply(method, args, kw)
File "/usr/lib/python2.2/site-packages/SCons/Script/SConscript.py", line 471:
return apply(_SConscript, [self.fs,] + files, {'exports' : exports})
File "/usr/lib/python2.2/site-packages/SCons/Script/SConscript.py", line 217:
exec _file_ in call_stack[-1].globals
File "SCons/Config/gnu", line 34:
cross_env(stub_env)
File "SCons/Config/gnu", line 14:
env.Tool('crossmingw', toolpath = ['../Tools'])
File "/usr/lib/python2.2/site-packages/SCons/Environment.py", line 1054:
tool = apply(SCons.Tool.Tool, (tool, toolpath), kw)
File "/usr/lib/python2.2/site-packages/SCons/Tool/__init__.py", line 102:
module = imp.load_module(name, file, path, desc)
File "../Tools/crossmingw.py", line 46:
None

Using SCons.Util.Split instead of just Split fixes this.

When it gets to hhc, it still wants to run hhc, so I disabled that.

Then I get this:
i586-mingw32msvc-windres --include-dir Contrib/Makensisw -i Contrib/Makensisw/resource.rc -o build/release/Makensisw/resource.o
i586-mingw32msvc-windres: can't open icon file `..\..\Contrib\Graphics\Icons\modern-install-blue-full.ico': No such file or directory
Contrib/Makensisw/resource.rc:0: fatal error: when writing output to : Broken pipe
compilation terminated.
scons: *** [build/release/Makensisw/resource.o] Error 1
scons: building terminated because of errors.

Changing it to use this helped: "../Graphics/Icons/modern-install-blue-full.ico"

Then I get this:

i586-mingw32msvc-g++ -s -Wl,--file-alignment,512 -Wl,-e,_DllMain@16 -nostdlib -Wl,--exclude-libs,msvcrt.a -Wl,-Map,NSISdl.map -shared -o build/release/NSISdl/libNSISdl.so build/release/NSISdl/asyncdns.o build/release/NSISdl/connection.o build/release/NSISdl/httpget.o build/release/NSISdl/nsisdl.o build/release/NSISdl/util.o .sconf_temp/funcs.o -lkernel32 -luser32 -ladvapi32 -lws2_32 -Wl,--out-implib,build/release/NSISdl/libNSISdl.a -Wl,--output-def,build/release/NSISdl/NSISdl.def
Creating library file: build/release/NSISdl/libNSISdl.a
build/release/NSISdl/connection.o:connection.cpp: (.text+0x1c) : undefined reference to `___gxx_personality_sj0'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x32) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/connection.o:connection.cpp: (.text+0xa5) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/connection.o:connection.cpp: (.text+0xdc) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/connection.o:connection.cpp: (.text+0xea) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x13e) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x168) : undefined reference to `___gxx_personality_sj0'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x17e) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x1f1) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x228) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x236) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x28a) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x133) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x16d) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x3dd) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x3fa) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x43c) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x458) : more undefined references to `operator new[](unsigned int)' follow
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x4ec) : undefined reference to `___gxx_personality_sj0'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x500) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x51f) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x5ae) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x68f) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x6c0) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x86a) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x8f8) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x91e) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x972) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0xa0e) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0xad4) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0xb39) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0xbba) : undefined reference to `operator new[](unsigned int)'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0xcd2) : more undefined references to `operator new[](unsigned int)' follow
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0x4b1) : undefined reference to `___gxx_personality_sj0'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0x4cb) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0xa03) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0xff7) : undefined reference to `__Unwind_SjLj_Unregister'
collect2: ld returned 1 exit status
scons: *** [build/release/NSISdl/libNSISdl.so] Error 1
scons: building terminated because of errors.

Adding stdc++ gives me this:
i586-mingw32msvc-g++ -s -Wl,--file-alignment,512 -Wl,-e,_DllMain@16 -nostdlib -Wl,--exclude-libs,msvcrt.a -Wl,-Map,NSISdl.map -shared -o build/release/NSISdl/libNSISdl.so build/release/NSISdl/asyncdns.o build/release/NSISdl/connection.o build/release/NSISdl/httpget.o build/release/NSISdl/nsisdl.o build/release/NSISdl/util.o .sconf_temp/funcs.o -lkernel32 -luser32 -ladvapi32 -lws2_32 -lstdc++ -Wl,--out-implib,build/release/NSISdl/libNSISdl.a -Wl,--output-def,build/release/NSISdl/NSISdl.def
Creating library file: build/release/NSISdl/libNSISdl.a
build/release/NSISdl/connection.o:connection.cpp: (.text+0x32) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/connection.o:connection.cpp: (.text+0xa5) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x13e) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x17e) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x1f1) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/connection.o:connection.cpp: (.text+0x28a) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x500) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x86a) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/httpget.o:httpget.cpp: (.text+0x91e) : undefined reference to `__Unwind_SjLj_Unregister'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0x4cb) : undefined reference to `__Unwind_SjLj_Register'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0xa03) : undefined reference to `__Unwind_SjLj_Resume'
build/release/NSISdl/nsisdl.o:nsisdl.cpp: (.text+0xff7) : undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `_abort'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetTextRelBase'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetDataRelBase'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetRegionStart'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `_abort'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetRegionStart'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `_abort'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetLanguageSpecificData'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_GetIP'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SetGR'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SetGR'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SetIP'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_personality.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(new_opv.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(new_opv.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(new_opv.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(tinfo.o) :: undefined reference to `_strcmp'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `_abort'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `_abort'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `___w32_sharedptr_terminate'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `___w32_sharedptr_unexpected'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `___w32_sharedptr_terminate'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_terminate.o) :: undefined reference to `___w32_sharedptr_unexpected'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_throw.o) :: undefined reference to `___w32_sharedptr_unexpected'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_throw.o) :: undefined reference to `___w32_sharedptr_terminate'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_throw.o) :: undefined reference to `__Unwind_SjLj_RaiseException'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_throw.o) :: undefined reference to `__Unwind_SjLj_Resume_or_Rethrow'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_mutex_init_function'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `_malloc'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_once'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_mutex_lock'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_mutex_unlock'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_mutex_unlock'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `_free'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `___gthr_win32_mutex_lock'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_alloc.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_TlsAlloc@0'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `___mingwthr_key_dtor'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_GetLastError@0'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_GetLastError@0'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_TlsGetValue@4'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_SetLastError@4'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_GetLastError@0'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_TlsGetValue@4'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_SetLastError@4'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `__CRT_MT'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_InterlockedIncrement@4'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_malloc'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_TlsSetValue@8'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_GetLastError@0'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_globals.o) :: undefined reference to `_free'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_catch.o) :: undefined reference to `__Unwind_SjLj_Register'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_catch.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_catch.o) :: undefined reference to `__Unwind_SjLj_Unregister'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_catch.o) :: undefined reference to `__Unwind_SjLj_Resume'
/usr/lib/gcc/i586-mingw32msvc/3.4.2/libstdc++.a(eh_catch.o) :: undefined reference to `__Unwind_DeleteException'
collect2: ld returned 1 exit status
scons: *** [build/release/NSISdl/libNSISdl.so] Error 1
scons: building terminated because of errors.

Then comes the problem where gcc doesn't support MSVC inline asm - in System.c.

After that there are no errors. One thing I did notice is that all the plugins are named lib<foo>.so instead of <foo.dll>, and they all come with a lib<foo>.a accompaning them.

pabs@chianamo:~/devel/debian/nsis/NSIS$ file `find build/ -iname \*.so`
build/release/Banner/libBanner.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/Math/libMath.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/Dialer/libDialer.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/AdvSplash/libAdvSplash.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/BgImage/libBgImage.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/Splash/libSplash.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/VPatch/Source/Plugin/libVPatch.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/StartMenu/libStartMenu.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/UserInfo/libUserInfo.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/LangDLL/libLangDLL.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/Library/TypeLib/libTypeLib.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/nsExec/libnsExec.so: MS Windows PE 32-bit Intel 80386 console DLL
build/release/InstallOptions/libInstallOptions.so: MS Windows PE 32-bit Intel 80386 console DLL
pabs@chianamo:~/devel/debian/nsis/NSIS$ file `find build/ -iname \*.a`
build/release/Banner/libBanner.a: current ar archive
build/release/Math/libMath.a: current ar archive
build/release/Dialer/libDialer.a: current ar archive
build/release/AdvSplash/libAdvSplash.a: current ar archive
build/release/BgImage/libBgImage.a: current ar archive
build/release/NSISdl/libNSISdl.a: current ar archive
build/release/Splash/libSplash.a: current ar archive
build/release/VPatch/Source/Plugin/libVPatch.a: current ar archive
build/release/StartMenu/libStartMenu.a: current ar archive
build/release/UserInfo/libUserInfo.a: current ar archive
build/release/LangDLL/libLangDLL.a: current ar archive
build/release/Library/TypeLib/libTypeLib.a: current ar archive
build/release/nsExec/libnsExec.a: current ar archive
build/release/InstallOptions/libInstallOptions.a: current ar archive


To get it to create DLLs instead of lib*.so, try adding the following as the first line in cross_env():

env.Platform('win32')
I have copied the makensisw icon to its local directory in CVS, just like shell.ico. It should work now.

As for the C++ stuff, I'll see if I can get it to compile without msvcrt. For now, you can pass nodeflib=0 on the BuildPlugin call, just like in System's SConscript.

Please attach large outputs or at least put them inside [ quote ] [ /quote ] or [ code ] [ /code ]. It's really hard to follow a message with so much output pasted in it.

Adding env.Platform('win32') to cross_env() causes this:

i586-mingw32msvc-gcc -Os -Wall -c -o build/release/AdvSplash/advsplash.o Contrib/AdvSplash/advsplash.c
scons: Could not find command interpreter, is it in your PATH?
scons: *** [build/release/AdvSplash/advsplash.o] Error 127
scons: building terminated because of errors


Not sure why this happens.

Sorry about the [ code ] stuff, I'm not really familiar with forums, I mainly use email/irc for communicating with free software projects. I wonder if this forum can gateway to/from email.

I'll attach a CVS diff that allows nsis to build properly on debian.

Hmm, I don't know exactly how to upload attachments, so I've uploaded it to my homepage:

http://bonedaddy.net/pabs3/files/tmp...s-debian.patch


Right... win32 platform sets a bit more than what I thought. I guess crossmingw.py will have to set some more from scons/SCons/Platform/win32.py on its own. Try adding this to crossmingw.py's generate():

    env['OBJPREFIX']      = ''
env['OBJSUFFIX'] = '.obj'
env['SHOBJPREFIX'] = '$OBJPREFIX'
env['SHOBJSUFFIX'] = '$OBJSUFFIX'
env['PROGPREFIX'] = ''
env['PROGSUFFIX'] = '.exe'
env['LIBPREFIX'] = ''
env['LIBSUFFIX'] = '.lib'
env['SHLIBPREFIX'] = ''
env['SHLIBSUFFIX'] = '.dll'
env['LIBPREFIXES'] = [ '$LIBPREFIX' ]
env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ]
To attach files, click the Post a Reply button. You can't attach files from the quick reply area.

This forum has no e-mail gateway.

With env.Platform('win32') in cross_env() and the changes to generate(), I still get this error:


scons: done reading SConscript files.
scons: Building targets ...
i586-mingw32msvc-gcc -Os -Wall -c -o build/release/AdvSplash/advsplash.obj Contrib/AdvSplash/advsplash.c
scons: Could not find command interpreter, is it in your PATH?
scons: *** [build/release/AdvSplash/advsplash.obj] Error 127
scons: building terminated because of errors.


It doesn't create an .obj file, but interestingly, running the i586-mingw32msvc-gcc command from bash does work.

When I turn off env.Platform('win32'), it all works.

After a successful build, I ran scons -c and find build/, giving the following output. A minor issue for the debian package, because I will have to run rm -rf build/ in the clean target as well as scons -c.


build/
build/release
build/release/Banner
build/release/Docs
build/release/Docs/AppendixC.html
build/release/Docs/Section3.3.html
build/release/Docs/AppendixD.html
build/release/Docs/AppendixE.html
build/release/Docs/SectionB.1.html
build/release/Docs/AppendixF.html
build/release/Docs/IndexPage.html
build/release/Docs/SectionB.2.html
build/release/Docs/AppendixG.html
build/release/Docs/SectionB.3.html
build/release/Docs/SectionB.4.html
build/release/Docs/SectionE.10.html
build/release/Docs/SectionE.11.html
build/release/Docs/SectionE.12.html
build/release/Docs/SectionE.13.html
build/release/Docs/SectionE.14.html
build/release/Docs/SectionE.15.html
build/release/Docs/style.css
build/release/Docs/Section5.1.html
build/release/Docs/SectionE.16.html
build/release/Docs/Section5.2.html
build/release/Docs/SectionE.17.html
build/release/Docs/Section5.3.html
build/release/Docs/SectionE.18.html
build/release/Docs/Section5.4.html
build/release/Docs/SectionE.19.html
build/release/Docs/SectionD.1.html
build/release/Docs/SectionE.20.html
build/release/Docs/SectionD.2.html
build/release/Docs/SectionE.21.html
build/release/Docs/SectionD.3.html
build/release/Docs/SectionE.22.html
build/release/Docs/SectionD.4.html
build/release/Docs/SectionE.23.html
build/release/Docs/SectionD.5.html
build/release/Docs/SectionE.24.html
build/release/Docs/SectionD.6.html
build/release/Docs/SectionE.25.html
build/release/Docs/Section4.10.html
build/release/Docs/Section4.11.html
build/release/Docs/Section4.12.html
build/release/Docs/Section2.1.html
build/release/Docs/Section2.2.html
build/release/Docs/Section2.3.html
build/release/Docs/Section2.4.html
build/release/Docs/SectionF.1.html
build/release/Docs/Section2.5.html
build/release/Docs/SectionF.2.html
build/release/Docs/Section2.6.html
build/release/Docs/SectionF.3.html
build/release/Docs/Section2.7.html
build/release/Docs/SectionF.4.html
build/release/Docs/SectionF.5.html
build/release/Docs/toc.hhc
build/release/Docs/nsis.hhp
build/release/Docs/Section4.1.html
build/release/Docs/Section4.2.html
build/release/Docs/Section4.3.html
build/release/Docs/Section4.4.html
build/release/Docs/Section4.5.html
build/release/Docs/SectionC.1.html
build/release/Docs/Section4.6.html
build/release/Docs/SectionC.2.html
build/release/Docs/Section4.7.html
build/release/Docs/SectionC.3.html
build/release/Docs/Section4.8.html
build/release/Docs/SectionC.4.html
build/release/Docs/Chapter1.html
build/release/Docs/Section4.9.html
build/release/Docs/SectionC.5.html
build/release/Docs/Chapter2.html
build/release/Docs/SectionC.6.html
build/release/Docs/Chapter3.html
build/release/Docs/SectionC.7.html
build/release/Docs/Chapter4.html
build/release/Docs/chmlink.js
build/release/Docs/SectionC.8.html
build/release/Docs/Chapter5.html
build/release/Docs/SectionC.9.html
build/release/Docs/Section1.1.html
build/release/Docs/Section1.2.html
build/release/Docs/Section1.3.html
build/release/Docs/SectionE.1.html
build/release/Docs/SectionE.2.html
build/release/Docs/SectionE.3.html
build/release/Docs/SectionE.4.html
build/release/Docs/ind.hhk
build/release/Docs/SectionE.5.html
build/release/Docs/SectionE.6.html
build/release/Docs/SectionE.7.html
build/release/Docs/SectionE.8.html
build/release/Docs/SectionE.9.html
build/release/Docs/SectionC.10.html
build/release/Docs/SectionC.11.html
build/release/Docs/Contents.html
build/release/Docs/AppendixA.html
build/release/Docs/Section3.1.html
build/release/Docs/SectionC.12.html
build/release/Docs/AppendixB.html
build/release/Docs/Section3.2.html
build/release/Math
build/release/Math/Source
build/release/Dialer
build/release/AdvSplash
build/release/BgImage
build/release/NSISdl
build/release/stub_bzip2_solid
build/release/Splash
build/release/VPatch
build/release/VPatch/Source
build/release/VPatch/Source/Plugin
build/release/zip2exe
build/release/zip2exe/zlib
build/release/makensis

build/release/makensis/7zip
build/release/makensis/7zip/7zip
build/release/makensis/7zip/7zip/Common
build/release/makensis/7zip/7zip/Compress
build/release/makensis/7zip/7zip/Compress/LZ
build/release/makensis/7zip/7zip/Compress/LZMA
build/release/makensis/7zip/7zip/Compress/RangeCoder
build/release/makensis/7zip/Common
build/release/makensis/zlib
build/release/makensis/bzip2
build/release/StartMenu
build/release/stub_lzma_solid
build/release/stub_lzma
build/release/stub_zlib
build/release/UserInfo
build/release/LangDLL
build/release/MakeLangId
build/release/halibut
build/release/Library
build/release/Library/LibraryLocal
build/release/Library/TypeLib
build/release/nsExec
build/release/InstallOptions
build/release/stub_zlib_solid
build/release/Makensisw
build/release/stub_bzip2

Thanks, updated to match in CVS.

You don't have to clean the build directory. You can use the install target along with the PREFIX command line option to get a clean copy with no sources and no intermediate build files.


SCons/Config/gnu cross_env should be:


def cross_env(env):
if env['PLATFORM'] != 'win32':
env.Tool('crossmingw', toolpath = ['../Tools'])


instead of:


def cross_env(env)
if env['PLATFORM'] != 'win32':
env.Tool('crossmingw', toolpath = ['../Tools'])


Otherwise I get a syntax error (missing : at the end of the if line).

Also, do you plan to create a way to enable/disable stuff on the commandline so the attached patch isn't nessecary - something like:

scons DONT_BUILD_PLUGINS=System ADD_DEFLIBS=NSISdl DONT_BUILD_CHM DOCS_INSTALL_HTML

Fixed cross_env, thanks.

I have added a few command line options. It should now all work without a change, by using:

scons SKIPPLUGINS=System

Running scons SKIPPLUGINS=System install gives this:


scons: *** Source `Docs/src/style.css' not found, needed by target `nsis-2.06/Docs/style.css'. Stop.
scons: building terminated because of errors.

Thanks, fixed.


I'm preparing the debian package of 2.07b0 as an exercise in packaging the scons version of nsis. I'm running up against problems with the debian build tools not being able to represent changes to binary files that are changed during scons -c (which needs to be run before building a .deb). It'd be great if .sconf_temp, .sconsign.dblite and SCons/Tools/crossmingw.pyc could be absent from the source release tarball.

Also, might I suggest installing stuff to different locations on POSIX platforms? In my 2.06 debian package, I installed stuff to the following. Hmm, 2.07b0 doesn't seem to install everything when PREFIX is set - only makensis and the stubs.


/etc/nsisconf.nsh
/usr/bin/makensis
/usr/share/doc/nsis/ (text readme files and html2text conversions)
/usr/share/doc/nsis/examples/ (example nsi files)
/usr/share/doc/nsis/html/ (html docs, and html docs from some plugins)
/usr/share/nsis/Contrib/
/usr/share/nsis/Include/
/usr/share/nsis/Plugins/


I'd suggest that the location of the config file be separately configurable to the PREFIX (in the above, PREFIX=/usr). On end-user POSIX systems, PREFIX should default to /usr/local, and the config file should be in PREFIX/etc/nsisconf.nsh by default. Also, in my debian package, I check for a per-user $HOME/.nsisconf.nsh file, should I submit the patch for that?

Also, it would be good to have a copy of the cvs changelog in the source release tarball as a ChangeLog file (using http://www.red-bean.com/cvs2cl/) and a text copy of appendix E as a NEWS file.

Also, I wrote a manpage (in docbook) for makensis for the debian package, should I submit it for inclusion?

.sconf_temp, .sconsign.dblite and SCons/Tools/crossmingw.pyc are absent of source release tarballs. A source release is simply a dump of CVS with a specific tag.

If you submit a patch that will install files to more standard locations on POSIX, I will apply it.

If only makensis and the stubs are installed, it's probably because the `install` target is aliased to the directory specified by PREFIX. If you install to other directories, they must be aliased to `install` too.

Please submit a patch for ~/.nsisconf.nsh. It's a nice feature. I might also back-port it to Windows.

Please also submit the manpage patch.

As for NEWS and ChangeLog, they can be easily generated without being included in the package for now.


Hmm, the install-docs, install-examples, install-includes, install-plugins etc all complain about the missing directory and then do nothing after I create it.

As far as I can see, the other targets are aliased to the correct directories:

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')


Submitted the manpage and the per-user configs patch. I'll try to get my head around scons and create a patch for installing to POSIX standard locations.

What exactly is it saying about those directories? I was talking about a case where you've already changed where it installs files in which case the aliases are out of date.


From a clean checkout just now:

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install
scons: Reading SConscript files ...

scons: *** Path for option PREFIX does not exist: debian/nsis/usr
File "SConstruct", line 80, in ?
pabs@chianamo:~/devel/debian/nsis/NSIS$ mkdir -p debian/nsis/usr
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... yes
Checking for memset requirement... yes
Checking for main() in C library gdi32... no
Checking for main() in C library user32... no
Checking for main() in C library version... no
Checking for main() in C library pthread... yes
Checking for main() in C library stdc++... yes
Checking for main() in C library iconv... no
Checking for main() in C library libiconv... no
scons: done reading SConscript files.
scons: Building targets ...
i586-mingw32msvc-gcc -Os -Wall -x c -DEXEHEAD -DWIN32_LEAN_AND_MEAN -DNSIS_COMPRESS_USE_BZIP2 -c -o build/release/stub_bzip2/bgbg.o Source/exehead/bgbg.c
<snip building makensis and stubs>
gcc -O2 -Wall -c -o build/release/makensis/zlib/trees.o Source/zlib/trees.c
g++ -s -Wl,-Map,build/release/makensis/makensis.map -o build/release/makensis/makensis build/release/makensis/build.o build/release/makensis/clzma.o build/release/makensis/crc32.o build/release/makensis/DialogTemplate.o build/release/makensis/dirreader.o build/release/makensis/growbuf.o build/release/makensis/lang.o build/release/makensis/lineparse.o build/release/makensis/makenssi.o build/release/makensis/mmap.o build/release/makensis/Plugins.o build/release/makensis/ResourceEditor.o build/release/makensis/ResourceVersionInfo.o build/release/makensis/script.o build/release/makensis/ShConstants.o build/release/makensis/strlist.o build/release/makensis/tokens.o build/release/makensis/util.o build/release/makensis/bzip2/blocksort.o build/release/makensis/bzip2/bzlib.o build/release/makensis/bzip2/compress.o build/release/makensis/bzip2/huffman.o build/release/makensis/7zip/7zGuids.o build/release/makensis/7zip/Common/CRC.o build/release/makensis/7zip/7zip/Compress/LZ/LZInWindow.o build/release/makensis/7zip/7zip/Compress/LZMA/LZMAEncoder.o build/release/makensis/7zip/7zip/Common/OutBuffer.o build/release/makensis/7zip/7zip/Compress/RangeCoder/RangeCoderBit.o build/release/makensis/7zip/Common/Alloc.o build/release/makensis/zlib/deflate.o build/release/makensis/zlib/trees.o -lpthread -lstdc++
Install file: "build/release/makensis/makensis" as "debian/nsis/usr/makensis"
scons: done building targets.
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install-docs
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: *** Source `debian/nsis/usr/NSIS.chm' not found, needed by target `install-docs'. Stop.
scons: building terminated because of errors.
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install-examples
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: *** Source `debian/nsis/usr/Examples' not found, needed by target `install-examples'. Stop.
scons: building terminated because of errors.
pabs@chianamo:~/devel/debian/nsis/NSIS$ mkdir -p debian/nsis/usr/Examples
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install-examples
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: `install-examples' is up to date.
scons: done building targets.
pabs@chianamo:~/devel/debian/nsis/NSIS$ find debian/nsis/usr/
debian/nsis/usr/
debian/nsis/usr/Stubs
debian/nsis/usr/Stubs/lzma
debian/nsis/usr/Stubs/zlib
debian/nsis/usr/Stubs/bzip2
debian/nsis/usr/Stubs/lzma_solid
debian/nsis/usr/Stubs/uninst
debian/nsis/usr/Stubs/zlib_solid
debian/nsis/usr/Stubs/bzip2_solid
debian/nsis/usr/makensis
debian/nsis/usr/Examples
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install-plugins
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: *** Source `debian/nsis/usr/Plugins' not found, needed by target `install-plugins'. Stop.
scons: building terminated because of errors.
pabs@chianamo:~/devel/debian/nsis/NSIS$ mkdir -p debian/nsis/usr/Plugins
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons PREFIX=debian/nsis/usr SKIPPLUGINS=System SKIPUTILS=Makensisw install-plugins
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
scons: `install-plugins' is up to date.
scons: done building targets.
pabs@chianamo:~/devel/debian/nsis/NSIS$ find debian/nsis/usr/
debian/nsis/usr/
debian/nsis/usr/Stubs
debian/nsis/usr/Stubs/lzma
debian/nsis/usr/Stubs/zlib
debian/nsis/usr/Stubs/bzip2
debian/nsis/usr/Stubs/lzma_solid
debian/nsis/usr/Stubs/uninst
debian/nsis/usr/Stubs/zlib_solid
debian/nsis/usr/Stubs/bzip2_solid
debian/nsis/usr/Plugins
debian/nsis/usr/makensis
debian/nsis/usr/Examples


Clearly the install target doesn't install stuff when PREFIX is set. Running it without PREFIX set seems to install stuff to nsis-<version>, then convert that to a zip file and remove the directory. That sounds like a job for the dist target rather than the install target.

pabs@chianamo:~/devel/debian/nsis/NSIS$ scons SKIPPLUGINS=System SKIPUTILS=Makensisw install
<snip>
Install file: "Contrib/Splash/splash.txt" as "nsis-18-Jun-2005.cvs/Docs/Splash/splash.txt"
Install file: "Contrib/StartMenu/Readme.txt" as "nsis-18-Jun-2005.cvs/Docs/StartMenu/Readme.txt"
Install file: "Include/StrFunc.txt" as "nsis-18-Jun-2005.cvs/Docs/StrFunc/StrFunc.txt"
Install file: "Contrib/nsExec/nsExec.txt" as "nsis-18-Jun-2005.cvs/Docs/nsExec/nsExec.txt"
scons: *** Source `Docs/src/style.css' not found, needed by target `nsis-18-Jun-2005.cvs/Docs/style.css'. Stop.
scons: building terminated because of errors.
pabs@chianamo:~/devel/debian/nsis/NSIS$ touch Docs/src/style.css
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons SKIPPLUGINS=System SKIPUTILS=Makensisw install
Install file: "build/release/stub_lzma_solid/stub_lzma.exe" as "nsis-18-Jun-2005.cvs/Stubs/lzma_solid"
Install file: "Source/exehead/uninst.ico" as "nsis-18-Jun-2005.cvs/Stubs/uninst"
Install file: "build/release/stub_zlib/stub_zlib.exe" as "nsis-18-Jun-2005.cvs/Stubs/zlib"
Install file: "build/release/stub_zlib_solid/stub_zlib.exe" as "nsis-18-Jun-2005.cvs/Stubs/zlib_solid"
Install file: "build/release/makensis/makensis" as "nsis-18-Jun-2005.cvs/makensis"
zip(["nsis-18-Jun-2005.cvs.zip"], ["nsis-18-Jun-2005.cvs"])
Delete("nsis-18-Jun-2005.cvs")
scons: done building targets.

Try specifying a full path for PREFIX. It should only ask you to create the very top directory. At least that's how it works on Windows...

If you use `install` without specifying PREFIX, PREFIX is empty and so `install` builds the current directory which also includes the dist directory. I'll see if some nice error can be raised in this case.

Try the attached patch for Docs/src/SConscript to get rid of the style.css error.


You are right about the full path for PREFIX thing, setting it like that works.

the Docs/src/SConscript patch gives the following error running scons install:

<snip>
Checking for main() in C library libiconv... (cached) no

scons: *** Error trying to evaluate `${SOURCE.dir}': 'NoneType' object has no attribute 'dir'
File "SConstruct", line 94, in Distribute

Replace line 99 of the original version with:

env.DistributeDocs('', build_dir + '/style.css')

Hmm, I re-checked out cvs (re-checked out, not updated), and got this:

<snip output of scons SKIPPLUGINS=System install>
Install file: "Include/StrFunc.txt" as "nsis-19-Jun-2005.cvs/Docs/StrFunc/StrFunc.txt"
Install file: "Contrib/nsExec/nsExec.txt" as "nsis-19-Jun-2005.cvs/Docs/nsExec/nsExec.txt"
scons: *** Source `Docs/src/style.css' not found, needed by target `nsis-19-Jun-2005.cvs/Docs/style.css'. Stop.
scons: building terminated because of errors.
pabs@chianamo:~/devel/debian/nsis/NSIS$ find -iname \*.css
./Docs/style.css
./build/release/Docs/html/style.css
pabs@chianamo:~/devel/debian/nsis/NSIS$ scons SKIPPLUGINS=System install
scons: Reading SConscript files ...
Using GNU tools configuration
Checking for memcpy requirement... (cached) yes
Checking for memset requirement... (cached) yes
Checking for main() in C library gdi32... (cached) no
Checking for main() in C library user32... (cached) no
Checking for main() in C library version... (cached) no
Checking for main() in C library pthread... (cached) yes
Checking for main() in C library stdc++... (cached) yes
Checking for main() in C library iconv... (cached) no
Checking for main() in C library libiconv... (cached) no
scons: done reading SConscript files.
scons: Building targets ...
Install file: "Docs/src/style.css" as "nsis-19-Jun-2005.cvs/Docs/style.css"
Install file: "Contrib/AdvSplash/Example.nsi" as "nsis-19-Jun-2005.cvs/Examples/AdvSplash/Example.nsi"
<snip rest of install process>


I'm thinking that it'd be best to just install "prefix/Docs/style.css" from Docs/style.css, and not bother with copying the .css file around.

The latest CVS version should take the file from the build directory. You might have downloaded the old version due to the anonymous CVS lag.

Installing style.css from Docs/style.css is what I've tried in the above patch. It might have worked without ${SOURCE.dir}, but then you wouldn't know for sure if it takes it from Docs/style.css or build_dir/../style.css. The version I've uploaded to CVS works for me as opposed to the old version which didn't work on clean builds. It should work for you too.


Anonymous CVS seems to have caught up, but now I get the following error building makensisw (it built fine before). I suppose anon CVS is missing a few files :( Any chance I could get read-only developer access? (my sf.net username is pabs3)

i586-mingw32msvc-g++ -O2 -Wall -DWIN32_MEAN_AND_LEAN -DRELEASE=2.0 -c -o build/release/Makensisw/makensisw.o Contrib/Makensisw/makensisw.cpp
In file included from Contrib/Makensisw/utils.h:26,
from Contrib/Makensisw/makensisw.h:28,
from Contrib/Makensisw/makensisw.cpp:23:
Contrib/Makensisw/toolbar.h:80:7: warning: no newline at end of file
In file included from Contrib/Makensisw/makensisw.h:28,
from Contrib/Makensisw/makensisw.cpp:23:
Contrib/Makensisw/utils.h:63:7: warning: no newline at end of file
In file included from Contrib/Makensisw/makensisw.cpp:23:
Contrib/Makensisw/makensisw.h:218:7: warning: no newline at end of file
In file included from Contrib/Makensisw/makensisw.cpp:27:
Contrib/Makensisw/noclib.h:33:7: warning: no newline at end of file
Contrib/Makensisw/makensisw.cpp:29:20: update.h: No such file or directory
Contrib/Makensisw/makensisw.cpp: In function `int WinMain(HINSTANCE__*, HINSTANCE__*, char*, int)':
Contrib/Makensisw/makensisw.cpp:73: error: `FinalizeUpdate' undeclared (first use this function)
Contrib/Makensisw/makensisw.cpp:73: error: (Each undeclared identifier is reported only once for each function it appears in.)
Contrib/Makensisw/makensisw.cpp: In function `BOOL DialogProc(HWND__*, UINT, WPARAM, LPARAM)':
Contrib/Makensisw/makensisw.cpp:104: warning: passing NULL used for non-pointer converting 3 of `LRESULT SendMessageA(HWND__*, UINT, WPARAM, LPARAM)'
Contrib/Makensisw/makensisw.cpp:208: warning: passing negative value `-0x000000001' for converting 2 of `UINT DragQueryFileA(HDROP__*, UINT, CHAR*, UINT)'
Contrib/Makensisw/makensisw.cpp:293: warning: passing NULL used for non-pointer converting 6 of `void* CreateFileA(const CHAR*, DWORD, DWORD, _SECURITY_ATTRIBUTES*, DWORD, DWORD, void*)'
Contrib/Makensisw/makensisw.cpp:300: warning: passing NULL used for non-pointer converting 6 of `void* CreateFileA(const CHAR*, DWORD, DWORD, _SECURITY_ATTRIBUTES*, DWORD, DWORD, void*)'
Contrib/Makensisw/makensisw.cpp:469: error: `Update' undeclared (first use this function)
Contrib/Makensisw/makensisw.cpp: In function `BOOL SettingsProc(HWND__*, UINT, WPARAM, LPARAM)':
Contrib/Makensisw/makensisw.cpp:1018: warning: unused variable 'rv'
Contrib/Makensisw/makensisw.cpp: In function `BOOL SymbolSetProc(HWND__*, UINT, WPARAM, LPARAM)':
Contrib/Makensisw/makensisw.cpp:1161: warning: passing NULL used for non-pointer converting 4 of `LRESULT SendMessageA(HWND__*, UINT, WPARAM, LPARAM)'
Contrib/Makensisw/makensisw.cpp:1164: warning: passing NULL used for non-pointer converting 4 of `LRESULT SendMessageA(HWND__*, UINT, WPARAM, LPARAM)'
scons: *** [build/release/Makensisw/makensisw.o] Error 1
scons: building terminated because of errors.

I forgot to add update.cpp and update.h. They are there now.

I'll see if something can be done with CVS.