- NSIS Discussion
- nsis debian gnu/linux package?
Archive: nsis debian gnu/linux package?
pabs
10th March 2005 12:47 UTC
nsis debian gnu/linux package?
Hi, I've been preparing a package for the Debian GNU/Linux distribution. I was wondering if people think it would be a useful thing to never have to leave the comfort of your debian system, even when you want to build windows installers for free software.
Also, a question or two about this:
1. The .dll files in the Plugins directory are produced from the source code in the Contrib directory.
2. Is there anything in the Contrib directory that the makensis program needs at runtime? I guess that the .c/.dsp/.dsw files don't need distributing though.
3. Has anyone written a Makefile for the dlls in the Plugins dir?
The current modifications include:
1. loading nsisconf.nsh from /etc/nsisconf.nsh and ~/.nsisconf.nsh instead of the same dir as the executable
2. Move the exe to /usr/bin
3. Install docs and examples in /usr/share/doc/nsis
4. Install the Plugins/Include/Contrib dirs in /usr/share/nsis
Any comments on this?
kichik
10th March 2005 18:10 UTC
Nothing from the Contrib folder is used to build makensis itself.
pabs
11th March 2005 01:01 UTC
I realise this, I was more thinking in terms of graphics and other kinds of things that people use often in their NSI scripts because they are accustomed to it being there.
kichik
11th March 2005 10:16 UTC
grep all the .nsi and .nsh files for ${NSISDIR}. There are more than a few usages of it, but most are referring the Include or Contrib folders.
pabs
12th March 2005 02:38 UTC
Thanks for the tip. Seems no-one is interested, but I'm gonna do it anyway, because I hate Windows, but I still need to make Windows installers.
kichik
12th March 2005 10:39 UTC
If you can make a package that installs in a standard directory structure on Linux, I'll be interested in including the changes.
pabs
13th March 2005 20:05 UTC
Ok, excellent. I'm in the process of auditing the source tarball looking for how each dll/exe is built and writing Makefiles for that. After that, I'll request a sponsor for uploading to debian and clean up the modifications I made for submission to the project.
pabs
14th March 2005 05:39 UTC
I don't know C++ very well, but debian's mingw g++ gives the following:
pabs@chianamo:~/devel/debian/nsis-2.05/Contrib$ make -C BgImage/
make: Entering directory `/home/pabs/devel/debian/nsis-2.05/Contrib/BgImage'
i586-mingw32msvc-g++ -Wall -Os -shared -s -mwindows -o ../../Plugins/BgImage.dll BgImage.cpp -lwinmm
In file included from BgImage.cpp:3:
../ExDLL/exdll.h:76: error: declaration of `exec_flags*<anonymous struct>::exec_flags'
../ExDLL/exdll.h:73: error: changes meaning of `exec_flags' from `typedef struct exec_flags exec_flags'
For this construct (from exdll.h):
typedef struct {
int autoclose;
...
} exec_flags;
typedef struct {
exec_flags *exec_flags;
...
} extra_parameters;
Is there a recommended way to fix this so the BgImage plugin (and others that use C++) can go into the debian install? That construct works fine in the AdvSplash/Banner plugins (both written in C).
DrSlump
14th March 2005 09:03 UTC
I'd sure love to have it
We have one client that uses NSIS and wants to migrate his webserver to linux, and we have just installed a debian system, so it would be just in place :)))
pabs
14th March 2005 10:33 UTC
Excellent. Which, if any, plugins, include files or graphics do you use from the NSIDIR?
pabs
14th March 2005 11:38 UTC
Plugin building status report:
I can build the following plugins fine (with/without modifications) - these are all C plugins:
Plugins/advsplash.dll
Plugins/Banner.dll
Plugins/Dialer.dll
Plugins/LangDLL.dll
Plugins/nsExec.dll
Plugins/UserInfo.dll
Plugins/splash.dll
Plugins/StartMenu.dll
Plugins/VPatch.dll
These all have the problem with the exdll.h file that I posted above (all C++):
Plugins/InstallOptions.dll
Plugins/TypeLib.dll
Plugins/Math.dll
Plugins/BgImage.dll
Plugins/nsisdl.dll
This one has a similar error in one of its own files (also C++):
Plugins/System.dll
Now onto binaries placed in Contrib in the source tarball.
How should I contribute the Contrib changes? These are Makefiles, case changes and minor edits so far. diff against the unpacked source tarball? A zip of the modified Contrib directory?
DrSlump
14th March 2005 16:57 UTC
Could you put the debian dir you made anywhere?
I'd like to download it and start tweaking with it :)
thanks
kichik
15th March 2005 18:23 UTC
As I'm already writing a SCons build system, I will not include any contributed Makefiles. Case changes will also be rejected as CVS doesn't support renames and I'd like to keep the change log easy to follow. Other patches can be submitted as CVS diffs in the patches tracker.
pabs
15th March 2005 19:43 UTC
Latest deb, orig.tar.gz, .diff.gz, build log etc will be available at http://bonedaddy.net/pabs3/debian/ until this gets into debian, or if I can't find a sponsor, I'll start uploading to mentors.debian.net I think.
I got this file building: Contrib/Library/LibraryLocal/LibraryLocal.exe
Unfortunately, not really sure where other binaries in Contrib are built from. Any ideas? I speak of these:
Contrib/UIs/modern_nodesc.exe
Contrib/UIs/default.exe
Contrib/UIs/modern_smalldesc.exe
Contrib/UIs/sdbarker_tiny.exe
Contrib/UIs/modern_headerbmp.exe
Contrib/UIs/modern_headerbmpr.exe
Contrib/UIs/modern.exe
Contrib/System/Resource.dll
Contrib/Library/RegTool/RegTool.bin
Contrib/NSIS Update/UI.exe
Contrib/NSIS Update/ExtractDLL.dll
kichik
15th March 2005 19:48 UTC
Contrib\UIs\default.exe is built from Contrib\UIs\UI Holder. All of the other executables are modified versions of default.exe. Resource Hacker was used to modify them. Contrib\System\Resource.dll is not built from Source, it's just a DLL with some icons. Contrib\Library\RegTool\RegTool.bin is built from RegTool.nsi. The source code for Contrib\NSIS Update\ExtractDLL.dll is available on the Archive.
pabs
16th March 2005 08:42 UTC
Thanks for the info re binaries. Where do the icons for Contrib\System\Resource.dll come from? Any info on the modifications to default.exe?
The case changes I spoke of are inside .c files, where some of the C sources are including files that don't exist if you have a case sensitive file system. I'll submit the patches (minus makefiles) to the tracker later today.
DrSlump
16th March 2005 10:18 UTC
I've already built a .deb :)
Thanks for the work.
btw, you should to put g++ as build-depend.
pabs
16th March 2005 13:18 UTC
Well, it builds fine inside a pbuilder without adding g++ to the Build-Depends. Do you have build-essential installed?
Also, I sent an update that fixes the problem I was having with ExDLL above, which means several more DLLs are now built.
Here's my TODO before the RFS:
Include the current directory in the search path for nsisconf.nsh and for files referenced by the Plugins code and elsewhere so that RegTool.bin can be created at build time.
Install stuff referenced from the example files etc into /usr/share/nsis/Contrib
Place copyrights from Contrib into debian/copyright
pabs
30th March 2005 12:55 UTC
Found a sponsor and packaged 2.06. It may even get into sarge!!
pabs
31st March 2005 09:23 UTC
2.06 has been uploaded, and is in the new queue:
http://ftp-master.debian.org/new.html
pabs
8th April 2005 09:34 UTC
nsis has been accepted into debian!
http://packages.qa.debian.org/n/nsis.html
If sarge freezes in more than 10 days time, it may even make it into sarge on some platforms.
Unfortunately the mipsel and sparc builds failed due to problems in halibut (a segfault and a bus error), so it would be good if halibut in nsis was updated to the latest upstream release when nsis is next released.
http://buildd.debian.org/build.php?pkg=nsis
DrSlump
5th May 2005 10:11 UTC
NSIS into sarge
Sarge got frozen!
but nsis got into!
congrats pabs