Skip to content
⌘ NSIS Forum Archive

scons build on debian

40 posts

pabs#
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.
kichik#
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.
pabs#
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.
kichik#
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.
pabs#
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
pabs#
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.
kichik#
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.
pabs#
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.
kichik#
I forgot to add update.cpp and update.h. They are there now.

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