nsis, nsiswrapper moved to Fedora.
authorRichard W.M. Jones <rjones@redhat.com>
Sat, 21 Feb 2009 17:21:32 +0000 (17:21 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Sat, 21 Feb 2009 17:21:32 +0000 (17:21 +0000)
nsis/mingw32-nsis.spec [deleted file]
nsis/nsis-2.19-mingw-search.patch [deleted file]
nsis/nsis-2.42-debian-64bit-fixes.patch [deleted file]
nsis/nsis-2.43-debian-debug-opt.patch [deleted file]
nsiswrapper/COPYING [deleted file]
nsiswrapper/README [deleted file]
nsiswrapper/mingw32-nsiswrapper.spec [deleted file]
nsiswrapper/nsiswrapper.pl [deleted file]

diff --git a/nsis/mingw32-nsis.spec b/nsis/mingw32-nsis.spec
deleted file mode 100644 (file)
index 76b94d3..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-%define sconsopts VERSION=%{version} PREFIX=%{_prefix} PREFIX_CONF=%{_sysconfdir} SKIPPLUGINS=System DEBUG_SYMBOLS=1 OPTS=1
-%define _default_patch_fuzz 2
-
-Name:           mingw32-nsis
-Version:        2.43
-Release:        2%{?dist}
-Summary:        Nullsoft Scriptable Install System
-
-License:        zlib and CPL
-Group:          Development/Libraries
-URL:            http://nsis.sourceforge.net/
-Source0:        http://dl.sourceforge.net/sourceforge/nsis/nsis-%{version}-src.tar.bz2
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-# Patches from Debian (mainly by Paul Wise).
-Patch0:         nsis-2.42-debian-64bit-fixes.patch
-Patch1:         nsis-2.43-debian-debug-opt.patch
-
-BuildRequires:  mingw32-filesystem >= 40
-BuildRequires:  mingw32-gcc
-BuildRequires:  mingw32-gcc-c++
-BuildRequires:  mingw32-binutils
-BuildRequires:  python
-BuildRequires:  scons
-
-# since nsis a 32 bit only apps
-#ExclusiveArch:  %{ix86} ppc
-#BuildRequires:  wxGTK-devel
-# The above is only required for Koji.  In mock we _can_ build on
-# x86_64 provided we have the 32 bit libraries required by the next
-# two lines.
-BuildRequires:  /usr/include/gnu/stubs-32.h
-BuildRequires:  /usr/lib/libwx_baseu-2.8.so
-
-
-%description
-NSIS, the Nullsoft Scriptable Install System, is a script-driven
-Windows installation system.
-
-This package includes native Fedora binaries of makensis (etc.) and
-all plugins except for System.dll.  The System.dll plugin cannot be
-built natively at this time since it includes inline Microsoft
-assembler code.
-
-
-%prep
-%setup -q -n nsis-%{version}-src
-
-%patch0 -p1 -b .64bit
-%patch1 -p1 -b .debug
-
-
-%build
-scons %{sconsopts}
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-mkdir $RPM_BUILD_ROOT
-scons %{sconsopts} PREFIX_DEST=$RPM_BUILD_ROOT install
-
-mv $RPM_BUILD_ROOT%{_docdir}/nsis $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
-%files
-%defattr(-,root,root)
-%doc %{_docdir}/%{name}-%{version}
-%config(noreplace) %{_sysconfdir}/nsisconf.nsh
-%{_bindir}/*
-#{_includedir}/nsis
-%{_datadir}/nsis
-
-
-%changelog
-* Fri Feb 20 2009 Richard W.M. Jones <rjones@redhat.com> - 2.43-2
-- Rebuild for mingw32-gcc 4.4
-
-* Fri Feb 13 2009 Levente Farkas <lfarkas@lfarkas.org> - 2.43-1
-- update to the latest upstream
-
-* Wed Jan 14 2009 Levente Farkas <lfarkas@lfarkas.org> - 2.42-1
-- update to the latest upstream
-- a few small changes
-
-* Fri Oct 17 2008 Richard W.M. Jones <rjones@redhat.com> - 2.39-5
-- Fix the Summary line.
-
-* Wed Oct  8 2008 Richard W.M. Jones <rjones@redhat.com> - 2.39-4
-- Initial RPM release.
diff --git a/nsis/nsis-2.19-mingw-search.patch b/nsis/nsis-2.19-mingw-search.patch
deleted file mode 100644 (file)
index 021e1df..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- nsis-2.19-src/SCons/Tools/crossmingw.py.orig       2006-02-24 16:19:55.000000000 +0000
-+++ nsis-2.19-src/SCons/Tools/crossmingw.py    2008-09-22 12:03:34.000000000 +0100
-@@ -44,6 +44,7 @@
\r
- # This is what we search for to find mingw:\r
- prefixes = SCons.Util.Split("""\r
-+    i686-pc-mingw32-\r
-     mingw32-\r
-     mingw32msvc-\r
-     i386-mingw32-\r
diff --git a/nsis/nsis-2.42-debian-64bit-fixes.patch b/nsis/nsis-2.42-debian-64bit-fixes.patch
deleted file mode 100644 (file)
index b46f7e8..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
---- ./Source/Plugins.cpp.lfarkas       2009-01-14 17:03:11.000000000 +0100
-+++ ./Source/Plugins.cpp       2009-01-14 17:03:58.000000000 +0100
-@@ -136,7 +136,7 @@
-         DWORD prd = FIX_ENDIAN_INT32(sections[i].PointerToRawData);
-         PIMAGE_EXPORT_DIRECTORY exports = PIMAGE_EXPORT_DIRECTORY(&dlldata[0] + prd + ExportDirVA - va);
-         DWORD na = FIX_ENDIAN_INT32(exports->AddressOfNames);
--        unsigned long *names = (unsigned long*)((unsigned long) exports + (char *) na - ExportDirVA);
-+        unsigned int *names = (unsigned int*)((unsigned long) exports + (char *) na - ExportDirVA);
-         for (unsigned long j = 0; j < FIX_ENDIAN_INT32(exports->NumberOfNames); j++)
-         {
-           const string name = string((char*)exports + FIX_ENDIAN_INT32(names[j]) - ExportDirVA);
---- ./Source/ResourceEditor.cpp.lfarkas        2009-01-14 17:04:08.000000000 +0100
-+++ ./Source/ResourceEditor.cpp        2009-01-14 17:07:47.000000000 +0100
-@@ -665,7 +665,7 @@
-     rdDir.NumberOfIdEntries = ConvertEndianness(rdDir.NumberOfIdEntries);
-     CopyMemory(seeker, &rdDir, sizeof(IMAGE_RESOURCE_DIRECTORY));
--    crd->m_dwWrittenAt = DWORD(seeker);
-+    crd->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DIRECTORY);
-     for (int i = 0; i < crd->CountEntries(); i++) {
-@@ -686,7 +686,7 @@
-       rDirE.UName.NameString.NameIsString = (crd->GetEntry(i)->HasName()) ? 1 : 0;
-       CopyMemory(seeker, &rDirE, sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY));
--      crd->GetEntry(i)->m_dwWrittenAt = DWORD(seeker);
-+      crd->GetEntry(i)->m_dwWrittenAt = long(seeker);
-       seeker += sizeof(MY_IMAGE_RESOURCE_DIRECTORY_ENTRY);
-     }
-     qDirs.pop();
-@@ -702,7 +702,7 @@
-     rDataE.Size = ConvertEndianness(cRDataE->GetSize());
-     CopyMemory(seeker, &rDataE, sizeof(IMAGE_RESOURCE_DATA_ENTRY));
--    cRDataE->m_dwWrittenAt = DWORD(seeker);
-+    cRDataE->m_dwWrittenAt = long(seeker);
-     seeker += sizeof(IMAGE_RESOURCE_DATA_ENTRY);
-     qDataEntries.pop();
-@@ -714,7 +714,7 @@
-   while (!qStrings.empty()) {
-     CResourceDirectoryEntry* cRDirE = qStrings.front();
--    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset = ConvertEndianness(DWORD(seeker) - DWORD(pbRsrcSec));
-+    PMY_IMAGE_RESOURCE_DIRECTORY_ENTRY(cRDirE->m_dwWrittenAt)->UName.NameString.NameOffset = ConvertEndianness(long(seeker) - long(pbRsrcSec));
-     WCHAR* szName = cRDirE->GetName();
-     WORD iLen = winchar_strlen(szName) + 1;
-@@ -745,7 +745,7 @@
-   /*
-    * Set all of the directory entries offsets.
-    */
--  SetOffsets(m_cResDir, DWORD(pbRsrcSec));
-+  SetOffsets(m_cResDir, long(pbRsrcSec));
- }
- // Sets the offsets in directory entries
-@@ -868,7 +868,7 @@
- // Returns -1 if can not be found
- int CResourceDirectory::Find(WCHAR* szName) {
-   if (IS_INTRESOURCE(szName))
--    return Find((WORD) (DWORD) szName);
-+    return Find((WORD) (long) szName);
-   else
-     if (szName[0] == '#')
-       return Find(WORD(winchar_stoi(szName + 1)));
-@@ -946,7 +946,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
-@@ -960,7 +960,7 @@
-   if (IS_INTRESOURCE(szName)) {
-     m_bHasName = false;
-     m_szName = 0;
--    m_wId = (WORD) (DWORD) szName;
-+    m_wId = (WORD) (long) szName;
-   }
-   else {
-     m_bHasName = true;
---- ./Source/DialogTemplate.cpp.lfarkas        2009-01-14 16:56:31.000000000 +0100
-+++ ./Source/DialogTemplate.cpp        2009-01-14 17:01:14.000000000 +0100
-@@ -74,7 +74,7 @@
-     if (IS_INTRESOURCE(x)) { \
-       *(WORD*)seeker = 0xFFFF; \
-       seeker += sizeof(WORD); \
--      *(WORD*)seeker = ConvertEndianness(WORD(DWORD(x))); \
-+      *(WORD*)seeker = ConvertEndianness(WORD(long(x))); \
-       seeker += sizeof(WORD); \
-     } \
-     else { \
-@@ -622,7 +622,7 @@
-     }
-   }
--  assert((DWORD) seeker - (DWORD) pbDlg == dwSize);
-+  assert((long) seeker - (long) pbDlg == dwSize);
-   // DONE!
-   return pbDlg;
---- ./Source/mmap.cpp.lfarkas  2009-01-14 17:00:12.000000000 +0100
-+++ ./Source/mmap.cpp  2009-01-14 17:01:36.000000000 +0100
-@@ -322,7 +322,7 @@
-   if (!pView)
-     return;
--  unsigned int alignment = ((unsigned int)pView) % m_iAllocationGranularity;
-+  unsigned int alignment = ((unsigned long)pView) % m_iAllocationGranularity;
-   pView = (char *)pView - alignment;
-   size += alignment;
- #ifdef _WIN32
---- ./Source/util.cpp.lfarkas  2009-01-14 17:07:59.000000000 +0100
-+++ ./Source/util.cpp  2009-01-14 17:09:25.000000000 +0100
-@@ -75,9 +75,9 @@
-   }
-   if (width != 0) {
--    LONG biWidth;
-+    DWORD biWidth;
-     fseek(f, 18, SEEK_SET); // Seek to the width member of the header
--    fread(&biWidth, sizeof(LONG), 1, f);
-+    fread(&biWidth, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biWidth);
-     if (width != biWidth) {
-       fclose(f);
-@@ -86,12 +86,12 @@
-   }
-   if (height != 0) {
--    LONG biHeight;
-+    DWORD biHeight;
-     fseek(f, 22, SEEK_SET); // Seek to the height member of the header
--    fread(&biHeight, sizeof(LONG), 1, f);
-+    fread(&biHeight, sizeof(DWORD), 1, f);
-     FIX_ENDIAN_INT32_INPLACE(biHeight);
-     // Bitmap height can be negative too...
--    if (height != abs(biHeight)) {
-+    if (height != abs((long int)biHeight)) {
-       fclose(f);
-       return -3;
-     }
---- ./Source/Platform.h.lfarkas        2009-01-14 17:01:43.000000000 +0100
-+++ ./Source/Platform.h        2009-01-14 17:03:03.000000000 +0100
-@@ -165,7 +165,7 @@
- #    define MAKEINTRESOURCE MAKEINTRESOURCEA
- #  endif
- #  ifndef IMAGE_FIRST_SECTION
--#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (DWORD) h + \
-+#    define IMAGE_FIRST_SECTION(h) ( PIMAGE_SECTION_HEADER( (long) h + \
-                                      FIELD_OFFSET(IMAGE_NT_HEADERS, OptionalHeader) + \
-                                      FIX_ENDIAN_INT16(PIMAGE_NT_HEADERS(h)->FileHeader.SizeOfOptionalHeader) ) )
- #  endif
-@@ -197,7 +197,7 @@
- #endif
- #ifndef ULONG_PTR
--#  define ULONG_PTR DWORD
-+#  define ULONG_PTR ULONG
- #endif
- #ifndef IDC_HAND
-@@ -702,7 +702,7 @@
-   WORD e_oemid;
-   WORD e_oeminfo;
-   WORD e_res2[10];
--  LONG e_lfanew;
-+  DWORD e_lfanew;
- } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
- #  pragma pack()
- #  pragma pack(4)
---- ./SCons/Config/gnu.lfarkas 2009-01-14 16:55:33.000000000 +0100
-+++ ./SCons/Config/gnu 2009-01-14 16:56:21.000000000 +0100
-@@ -90,8 +90,6 @@
- makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual dtor warnings
- conf = FlagsConfigure(makensis_env)
--conf.CheckCompileFlag('-m32')                     #
--conf.CheckLinkFlag('-m32')                        #
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
- if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
-       TestStrip(conf)                                 # strip
diff --git a/nsis/nsis-2.43-debian-debug-opt.patch b/nsis/nsis-2.43-debian-debug-opt.patch
deleted file mode 100644 (file)
index ca31827..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-diff -up ./SCons/Config/gnu.debug ./SCons/Config/gnu
---- ./SCons/Config/gnu.debug   2009-02-13 12:41:42.000000000 +0100
-+++ ./SCons/Config/gnu 2009-02-13 12:42:37.000000000 +0100
-@@ -68,13 +68,16 @@ cross_env(stub_env)
- stub_env.Append(CPPPATH = ['#$BUILD_CONFIG'])
--if not defenv['DEBUG']:
--      stub_env.Append(CCFLAGS = ['-Os'])                # optimize for size
-+if defenv['DEBUG_SYMBOLS']:
-+      stub_env.Append(LINKFLAGS = '-g')           # debugging
-+      stub_env.Append(CCFLAGS = '-g')             # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-+      stub_env.Append(CCFLAGS = ['-O2'])          # optimize
- stub_env.Append(CCFLAGS = ['-Wall'])                # all warnings
- stub_env.Append(CCFLAGS = ['-xc'])                  # force compile as c
- stub_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']:
-       stub_env.Append(LINKFLAGS = ['-s'])               # strip
- stub_env.Append(LINKFLAGS = ['-mwindows'])          # build windows executables
- stub_env.Append(LINKFLAGS = ['$NODEFLIBS_FLAG'])    # no standard libraries
-@@ -88,15 +91,18 @@ makensis_env = defenv.Clone()
- makensis_env.Append(CPPPATH = ['#$BUILD_CONFIG'])
--if not defenv['DEBUG']:
--      makensis_env.Append(CCFLAGS = ['-O2'])                  # optimize
-+if defenv['DEBUG_SYMBOLS']:
-+      makensis_env.Append(LINKFLAGS = '-g')             # debugging
-+      makensis_env.Append(CCFLAGS = '-g')               # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-+      makensis_env.Append(CCFLAGS = ['-O2'])            # optimize
- makensis_env.Append(CFLAGS = ['-Wall'])                   # all warnings
- makensis_env.Append(CXXFLAGS = ['-Wno-non-virtual-dtor']) # ignore virtual dtor warnings
- makensis_env.Append(CXXFLAGS = ['-Wall'])                 # all warnings
- conf = FlagsConfigure(makensis_env)
- conf.CheckLinkFlag('$MAP_FLAG')                   # generate map file
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_CP']:
-       TestStrip(conf)                                 # strip
- conf.Finish()
-@@ -105,12 +111,15 @@ conf.Finish()
- plugin_env = defenv.Clone()
- cross_env(plugin_env)
--if not defenv['DEBUG']:
--      plugin_env.Append(CCFLAGS = ['-Os'])              # optimize for size
-+if defenv['DEBUG_SYMBOLS']:
-+      plugin_env.Append(LINKFLAGS = '-g')         # debugging
-+      plugin_env.Append(CCFLAGS = '-g')           # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-+      plugin_env.Append(CCFLAGS = ['-O2'])        # optimize
- plugin_env.Append(CCFLAGS = ['-Wall'])              # level 3 warnings
- plugin_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']:
-       plugin_env.Append(LINKFLAGS = ['-s'])             # strip
- plugin_env.Append(LINKFLAGS = ['-mwindows'])        # build windows executables
- plugin_env.Append(LINKFLAGS = ['$ALIGN_FLAG'])      # 512 bytes align
-@@ -122,7 +131,10 @@ cp_util_env = defenv.Clone()
- cp_util_env.Append(CPPPATH = ['#$BUILD_CONFIG'])
--if not defenv['DEBUG']:
-+if defenv['DEBUG_SYMBOLS']:
-+      cp_util_env.Append(LINKFLAGS = '-g')        # debugging
-+      cp_util_env.Append(CCFLAGS = '-g')          # debugging
-+if not defenv['DEBUG'] and defenv['OPT']:
-       cp_util_env.Append(CCFLAGS = ['-O2'])             # optimize
- cp_util_env.Append(CCFLAGS = ['-Wall'])             # all warnings
- cp_util_env.Append(CCFLAGS = ['-fno-strict-aliasing']) # not safe for strict aliasing
-@@ -140,7 +152,7 @@ util_env.Append(LINKFLAGS = ['-mwindows'
- util_env.Append(LINKFLAGS = ['$ALIGN_FLAG'])        # 512 bytes align
- conf = FlagsConfigure(util_env)
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_W32']:
-       util_env.Append(LINKFLAGS = ['-s'])                   # strip
- conf.Finish()
-@@ -149,7 +161,7 @@ conf.Finish()
- conf = FlagsConfigure(cp_util_env)
- conf.CheckCompileFlag('-m32')
- conf.CheckLinkFlag('-m32')
--if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_CP']:
-+if not defenv['DEBUG'] and not defenv['DEBUG_SYMBOLS'] and defenv['STRIP'] and defenv['STRIP_CP']:
-       TestStrip(conf)                                 # strip
- conf.Finish()
-@@ -157,6 +169,9 @@ conf.Finish()
- test_env = defenv.Clone()
- test_env.Append(CPPPATH = ['#$BUILD_CONFIG'])
-+if defenv['DEBUG_SYMBOLS']:
-+      test_env.Append(LINKFLAGS = '-g')           # debugging
-+      test_env.Append(CCFLAGS = '-g')             # debugging
- conf = FlagsConfigure(test_env)
- conf.CheckCompileFlag('-m32')
- conf.CheckLinkFlag('-m32')
-diff -up ./SConstruct.debug ./SConstruct
---- ./SConstruct.debug 2009-02-04 15:05:48.000000000 +0100
-+++ ./SConstruct       2009-02-13 12:41:42.000000000 +0100
-@@ -157,6 +157,8 @@ opts.Add(('APPEND_CCFLAGS', 'Additional 
- opts.Add(('APPEND_LINKFLAGS', 'Additional linker flags'))
- # build options
- opts.Add(BoolVariable('DEBUG', 'Build executables with debugging information', 'no'))
-+opts.Add(BoolOption('DEBUG_SYMBOLS', 'Build with debugging information, but none of the side effects of DEBUG', 'no'))
-+opts.Add(BoolOption('OPT', 'Build with optimization', 'yes'))
- opts.Add(PathVariable('CODESIGNER', 'A program used to sign executables', None))
- opts.Add(BoolVariable('STRIP', 'Strips executables of any unrequired data such as symbols', 'yes'))
- opts.Add(BoolVariable('STRIP_CP', 'Strips cross-platform executables of any unrequired data such as symbols', 'yes'))
diff --git a/nsiswrapper/COPYING b/nsiswrapper/COPYING
deleted file mode 100644 (file)
index e77696a..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                          675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/nsiswrapper/README b/nsiswrapper/README
deleted file mode 100644 (file)
index c3d3e21..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-NSISWrapper is a helper program for making Windows installers,
-particularly when you are cross-compiling from Unix.
-
-NSIS (a separate package) is a program for building Windows
-installers.  This wrapper simply makes it easier to generate the
-installer script that NSIS needs.
-
-You can get NSIS itself from http://nsis.sourceforge.net/ but
-generally speaking this wrapper is only useful when cross-compiling
-(run from a Linux machine) in which case you should use the Fedora or
-Debian version of NSIS from:
-
-  Fedora:  http://fedoraproject.org/wiki/MinGW
-  Debian:  http://packages.debian.org/unstable/devel/nsis
-
-----------------------------------------------------------------------
-
-NSISWrapper requires a reasonably recent version of Perl.  You will
-also need to install the MinGW cross-compiler binutils
-(mingw32-binutils package).
-
-----------------------------------------------------------------------
-
-For usage instructions, please refer to the manual page nsiswrapper(1).
-If for some reason the manual page isn't installed then you can do
-this instead:
-
-  nsiswrapper --man
-
-For help with NSIS itself, please refer to the NSIS website.
-
-You can also get quick command line help by doing:
-
-  nsiswrapper --help
-
-----------------------------------------------------------------------
-
-Copyright (C) 2008 Red Hat Inc.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/nsiswrapper/mingw32-nsiswrapper.spec b/nsiswrapper/mingw32-nsiswrapper.spec
deleted file mode 100644 (file)
index 3d9d514..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-Name:           mingw32-nsiswrapper
-Version:        3
-Release:        3%{?dist}
-Summary:        Helper program for making NSIS Windows installers
-
-License:        GPLv2+
-Group:          Development/Libraries
-URL:            http://fedoraproject.org/wiki/MinGW
-Source0:        nsiswrapper.pl
-Source1:        README
-Source2:        COPYING
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-
-BuildArch:      noarch
-
-BuildRequires:  perl
-
-Requires:       mingw32-nsis
-
-
-%description
-NSISWrapper is a helper program for making Windows installers,
-particularly when you are cross-compiling from Unix.
-
-NSIS (a separate package) is a program for building Windows
-installers.  This wrapper simply makes it easier to generate the
-installer script that NSIS needs.
-
-
-%prep
-# empty
-
-
-%build
-# empty
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-mkdir -p $RPM_BUILD_ROOT%{_bindir}
-install -m 0755 %{SOURCE0} $RPM_BUILD_ROOT%{_bindir}/nsiswrapper
-
-# Install documentation (manually).
-mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-install -m 0644 %{SOURCE1} %{SOURCE2} \
-  $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
-
-# Build the manpage from the source.
-mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
-pod2man -c "NSIS" -r "%{name}-%{version}" %{SOURCE0} \
-  > $RPM_BUILD_ROOT%{_mandir}/man1/nsiswrapper.1
-
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
-%files
-%defattr(-,root,root)
-%doc %{_docdir}/%{name}-%{version}/COPYING
-%doc %{_docdir}/%{name}-%{version}/README
-%{_bindir}/nsiswrapper
-%{_mandir}/man1/nsiswrapper.1*
-
-
-%changelog
-* Fri Feb 20 2009 Richard W.M. Jones <rjones@redhat.com> - 3-3
-- Rebuild for mingw32-gcc 4.4
-
-* Thu Oct 16 2008 Richard W.M. Jones <rjones@redhat.com> - 3-2
-- Initial RPM release.
diff --git a/nsiswrapper/nsiswrapper.pl b/nsiswrapper/nsiswrapper.pl
deleted file mode 100755 (executable)
index af466a8..0000000
+++ /dev/null
@@ -1,853 +0,0 @@
-#!/usr/bin/perl -w
-#
-# NSISWrapper - a helper program for making Windows installers.
-# Copyright (C) 2008 Red Hat Inc.
-# Written by Richard W.M. Jones <rjones@redhat.com>,
-# http://fedoraproject.org/wiki/MinGW
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at
-# your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-use strict;
-use Getopt::Long;
-use Pod::Usage;
-use File::Temp qw/tempfile/;
-#use Data::Dumper;
-
-=pod
-
-=head1 NAME
-
-nsiswrapper - Helper program for making NSIS Windows installers
-
-=head1 SYNOPSIS
-
- nsiswrapper [options] [roots...]
-
- nsiswrapper myprogram.exe anotherprog.exe docs/ > script.nsis
-
- nsiswrapper --run myprogram.exe anotherprog.exe docs/
-
-=head1 DESCRIPTION
-
-nsiswrapper is a helper program for making it easier to create Windows
-installers in a cross-compiler environment.  It still requires NSIS (a
-Windows installer generator) but cuts out the tedium of writing the
-NSIS command script, and can even invoke NSIS automatically to
-generate a final Windows executable.
-
-The general way to use it is to list out some files that you want
-packaged.  For example:
-
-  nsiswrapper myprogram.exe
-
-This will search for C<myprogram.exe> and any libraries (C<*.dll>)
-that it depends upon, and then it will print out an NSIS script.
-
-If you want to have it run C<makensis> as well (to automatically
-create a Windows installer) then do:
-
-  nsiswrapper --run myprogram.exe
-
-which will generate C<installer.exe> output file that contains
-C<myprogram.exe> plus any dependencies.
-
-You can list other files and directories that you want to have
-contained in your installer.  For example:
-
-  nsiswrapper myprogram.exe anotherprog.exe docs/*.html
-
-There are many other command line options which control aspects of the
-NSIS command script (and hence, the final installer), such as:
-
-=over 4
-
-=item *
-
-The name of the final installer.
-
-=item *
-
-Desktop shortcuts and menu items.
-
-=item *
-
-License files.
-
-=back
-
-It's a good idea to examine the NSIS command script, to check that
-nsiswrapper is including all the right dependencies.
-
-=head1 ROOTS (FILES AND DIRECTORIES)
-
-Each parameter should refer to a file or directory which is to be
-included in the installer.
-
-These are known as "roots" because we also automatically add any
-dependencies to the list of files.  Thus if a Windows executable
-requires any DLLs, those are added automatically.  DLLs are searched
-for on the current C<$PATH> (environment variable).
-
-We choose the install location by removing any common prefix from the
-names of roots, which generally ensures that the original directory
-structure is preserved.  Thus for example if the original roots (and
-any dependencies) are:
-
- /usr/i686-pc-mingw32/sys-root/mingw/bin/program.exe
- /usr/i686-pc-mingw32/sys-root/mingw/bin/library.dll
- /usr/i686-pc-mingw32/sys-root/mingw/etc/config
-
-then the install directory will look like this:
-
- $INSTDIR/bin/program.exe
- $INSTDIR/bin/library.dll
- $INSTDIR/etc/config
-
-(C<$INSTDIR> is the installation directory chosen by the user at
-install time).
-
-You can also specify the install location (relative to C<$INSTDIR>) by
-adding roots of the form:
-
- source=destination
-
-for example:
-
- /usr/i686-pc-mingw32/sys-root/mingw/bin/program.exe=program.exe
- /usr/i686-pc-mingw32/sys-root/mingw/bin/library.dll=library.dll
- /usr/i686-pc-mingw32/sys-root/mingw/etc/config=conf/config
-
-which results in:
-
- $INSTDIR/program.exe
- $INSTDIR/library.dll
- $INSTDIR/conf/config
-
-=head1 OPTIONS
-
-=over 4
-
-=item B<--help>
-
-Print brief help message and exit.
-
-=item B<--man>
-
-Print the full manual page for the command and exit.
-
-=item B<--verbose>
-
-Print verbose messages while running.  If this is not given then we
-try to operate quietly.
-
-=item B<--run>
-
-Normally this program just prints out the NSIS installer command
-script.  However if you supply this option, then we run C<makensis>
-and attempt to generate an actual Windows installer.
-
-=item B<--with-gtk>
-
-GTK programs should normally supply this option.  It ensures that the
-correct files are copied and/or created by the installer for GTK
-programs to work.
-
-=item B<--name "Name">
-
-Set the long name of the installer.
-
-If not set, the script tries to invent a suitable name based on the
-first root file given on the command line.
-
-See also B<--outfile>.
-
-=item B<--outfile myinstaller.exe>
-
-Set the output filename for the installer.
-
-If not set, this defaults to C<installer.exe>.
-
-This is the same as the C<OutFile> option to NSIS.
-
-=item B<--installdir 'C:\foo'>
-
-Set the default Windows installation directory.  If not set, this
-program will choose a suitable default based on the name.
-
-In any case, the end user can override this when they run the
-installer.
-
-Note that since this string will contain backslashes, you should
-single-quote it to protect it from the shell.
-
-This is the same as the C<InstallDir> option to NSIS.
-
-=item B<--installdirregkey 'HKLM SOFTWARE\FOO'>
-
-Set the name of the registry key used to save the installation
-directory.  This has two purposes: Firstly it is used to automagically
-remember the installation directory between installs.  Secondly your
-program can use this as one method to find its own installation
-directory (there are other ways to do this).
-
-The default is C<HKLM SOFTWARE\Name> where C<Name> is derived from the
-name of the installer.
-
-Note that since this string will contain backslashes and spaces, you
-should single-quote it to protect it from the shell.
-
-This is the same as the C<InstallDirRegKey> option to NSIS.
-
-=back
-
-=cut
-
-my $objdump;
-my %files;
-
-my $help = '';
-my $man = '';
-my $verbose = '';
-my $run = '';
-my $with_gtk = '';
-my $name = '';
-my $outfile = 'installer.exe';
-my $installdir = '';
-my $installdirregkey = '';
-
-# XXX Should make these configurable.
-my $mingw32_prefix = '/usr/i686-pc-mingw32/sys-root/mingw';
-my $mingw32_bindir = $mingw32_prefix . '/bin';
-my $mingw32_libdir = $mingw32_prefix . '/lib';
-my $mingw32_sysconfdir = $mingw32_prefix . '/etc';
-
-sub get_options
-{
-    my $result = GetOptions (
-       "help|?" => \$help,
-       "man" => \$man,
-       "verbose" => \$verbose,
-       "run" => \$run,
-       "with-gtk" => \$with_gtk,
-       "name=s" => \$name,
-       "outfile=s" => \$outfile,
-       "installdir=s" => \$installdir,
-       "installdirregkey=s" => \$installdirregkey,
-    );
-    die "nsiswrapper: use --help for information about command line options\n"
-       unless $result;
-
-    pod2usage(1) if $help;
-    pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
-    # Add the roots to the list of files.
-    die "nsiswrapper: no roots specified: use --help for more help\n"
-       if @ARGV == 0;
-    foreach my $file (@ARGV) {
-       my ($dir, $exec) = (0, 0);
-
-       # Is it source=destination?
-       my ($source, $dest);
-       if ($file =~ /^(.*)=(.*)$/) {
-           $source = $1;
-           $dest = $2;
-       } else {
-           $source = $file;
-       }
-
-       die "$source: not a file or directory\n"
-           unless -f $source || -d $source;
-
-       $exec = 1 if $source =~ m/\.exe$/i;
-       $dir = 1 if -d $source;
-
-       $files{$source} = {
-           name => $source,
-           root => 1,
-           dir => $dir,
-           exec => $exec,
-       };
-
-       # Deal with explicit destination.
-       if (defined $dest) {
-           my ($install_dir, $install_name);
-
-           if ($dest =~ m{(.*)/(.*)}) {
-               $install_dir = $1;
-               $install_name = $2;
-           } else {
-               $install_dir = ".";
-               $install_name = $dest;
-           }
-
-           # Convert / in install_dir into backslashes.
-           $install_dir =~ s{/}{\\}g;
-
-           $files{$source}->{install_dir} = $install_dir;
-           $files{$source}->{install_name} = $install_name;
-       }
-    }
-
-    # Name not set?
-    if (!$name) {
-       # Massage the first root into a suitable package name.
-       $_ = $ARGV[0];
-       s{.*/}{};
-       s{=.*$}{};
-       s{\.\w\w\w\w?$}{};
-       $_ = ucfirst;
-       $name = $_;
-    }
-
-    # InstallDir not set?
-    if (!$installdir) {
-       $_ = $name;
-       s/\W/-/g;
-       $installdir = "c:\\$_"
-    }
-
-    # InstallDirRegKey not set?
-    if (!$installdirregkey) {
-       $_ = $name;
-       s/\W/-/g;
-       $installdirregkey = "HKLM SOFTWARE\\$_"
-    }
-}
-
-# Check prerequisites.
-
-sub check_prereqs
-{
-    my @paths = split (/:/, $ENV{PATH});
-
-    if (! $objdump) {
-       $objdump = check_path ("i686-pc-mingw32-objdump", @paths);
-       if (! $objdump || ! -x $objdump) {
-           die "i686-pc-mingw32-objdump: program not found on \$PATH\n"
-       }
-    }
-}
-
-# Check for the existance of a file at the given paths (not
-# necessarily executable).  Returns the pathname of the file or
-# undefined if not found.
-
-sub check_path
-{
-    local $_ = shift;
-    my @paths = @_;
-
-    my $found;
-    foreach my $dir (@paths) {
-       my $file = $dir . "/" . $_;
-       if (-f $file) {
-           $found = $file;
-           last;
-       }
-    }
-    $found
-}
-
-# Print configuration.
-
-sub print_config
-{
-    print "Configuration:\n";
-    print "\t\$PATH = $ENV{PATH}\n";
-    print "\t\$objdump = $objdump\n";
-    print "\t\$verbose = $verbose\n";
-    print "\t\$name = \"$name\"\n";
-    print "\t\$outfile = \"$outfile\"\n";
-    print "\t\$installdir = \"$installdir\"\n";
-    print "\t\$installdirregkey = \"$installdirregkey\"\n";
-    my @roots = keys %files;
-    print "\t\@roots = (", join (", ", @roots), ")\n";
-    print "End of configuration.\n";
-}
-
-# Starting at the roots, get the dependencies.
-
-my $missing_deps = 0;
-
-sub do_dependencies
-{
-    my $deps_added = 1;
-
-    while ($deps_added > 0) {
-       $deps_added = 0;
-
-       foreach (keys %files) {
-           my @deps = get_deps_for_file ($_);
-
-           # Add the deps as separate files.
-           foreach (@deps) {
-               $deps_added += add_file_unless_exists (
-                   $_,
-                   root => 0,
-                   dir => 0,
-                   exec => 0
-                   );
-           }
-       }
-    }
-
-    die "please correct missing dependencies shown above\n"
-       if $missing_deps > 0;
-}
-
-sub add_file_unless_exists
-{
-    my $name = shift;
-    my %details = @_;
-
-    unless (exists $files{$name}) {
-       die "$name: not a file or directory\n" unless -f $name || -d $name;
-
-       $details{name} = $name;
-       $files{$name} = \%details;
-
-       return 1;
-    } else {
-       return 0;
-    }
-}
-
-my $path_warning = 0;
-
-sub get_deps_for_file
-{
-    my $file = shift;
-    my @paths = split (/:/, $ENV{PATH});
-
-    # If we already fetched the dependencies for this file, just
-    # return that list now.
-    if (exists $files{$file}->{deps}) {
-       return @{$files{$file}->{deps}}
-    }
-
-    my @deps = ();
-
-    # We only know how to do this for *.exe and *.dll files.
-    if (m/\.exe$/i || m/\.dll$/i) {
-       my $cmd = "$objdump -p '$file' |
-                   grep 'DLL Name:' |
-                   grep -Eo '[-._[:alnum:]]+\.dll' |
-                   sort -u"; # XXX quoting
-       open DEPS, "$cmd |" or die "$cmd: $!";
-       foreach (<DEPS>) {
-           chomp; $_ = lc;
-
-           # Ignore Windows system DLL deps.
-           next if is_windows_system_dll ($_);
-
-           # Does the file exist on the path?
-           my $found = check_path ($_, @paths);
-           if ($found) {
-               push @deps, $found;
-           } else {
-               warn "MISSING DEPENDENCY: $_ (for $file)\n";
-               $missing_deps++;
-               unless ($path_warning) {
-                   warn "You may need to add the directory containing this file to your \$PATH\n";
-                   $path_warning = 1;
-               }
-           }
-       }
-       close DEPS;
-
-       if ($verbose) {
-           if (@deps > 0) {
-               print "dependencies found for binary $file:\n\t",
-                 join ("\n\t", @deps), "\n";
-           } else {
-               print "no dependencies found for $file\n"
-           }
-       }
-
-    }
-
-    # Cache the list of dependencies so we can just return it
-    # immediately next time.
-    $files{$file}->{deps} = \@deps;
-    return @deps;
-}
-
-sub is_windows_system_dll
-{
-    local $_ = shift;
-
-    $_ eq 'gdi32.dll' ||
-       $_ eq 'kernel32.dll' ||
-       $_ eq 'ole32.dll' ||
-       $_ eq 'mscoree.dll' ||
-       $_ eq 'msvcrt.dll' ||
-       $_ eq 'user32.dll'
-}
-
-# Add Gtk dependencies, if --with-gtk.
-
-sub do_gtk
-{
-    add_file_unless_exists (
-       "$mingw32_libdir/gtk-2.0",
-       root => 0,
-       dir => 1,
-       exec => 0,
-       install_dir => "lib",
-       install_name => "gtk-2.0"
-       );
-
-    add_file_unless_exists (
-       "$mingw32_libdir/pango",
-       root => 0,
-       dir => 1,
-       exec => 0,
-       install_dir => "lib",
-       install_name => "pango"
-       );
-
-    add_file_unless_exists (
-       "$mingw32_sysconfdir/fonts",
-       root => 0,
-       dir => 1,
-       exec => 0,
-       install_dir => "etc",
-       install_name => "fonts"
-       );
-
-    add_file_unless_exists (
-       "$mingw32_sysconfdir/gtk-2.0",
-       root => 0,
-       dir => 1,
-       exec => 0,
-       install_dir => "etc",
-       install_name => "gtk-2.0"
-       );
-
-    add_file_unless_exists (
-       "$mingw32_sysconfdir/pango",
-       root => 0,
-       dir => 1,
-       only_mkdir => 1,
-       exec => 0,
-       install_dir => "etc",
-       install_name => "pango"
-       );
-
-    # We need to run pango-querymodules after installation to
-    # rebuild etc\pango\pango.modules.
-    add_file_unless_exists (
-       "$mingw32_bindir/pango-querymodules.exe",
-       root => 0,
-       dir => 0,
-       exec => 0
-       );
-}
-
-# Decide how we will name the output files.  This removes the
-# common prefix from filenames, if it can determine one.
-
-sub install_names
-{
-    my @names = keys %files;
-
-    # Don't care about files that already have an install
-    # directory/name defined, ie. they were specified as source=dest
-    # on the command line.
-    @names = grep { ! exists $files{$_}->{install_name} } @names;
-
-    # Determine if all the names share a common prefix.
-    my @namelens = map { length } @names;
-    my $shortest = min (@namelens);
-
-    my $prefixlen;
-    for ($prefixlen = $shortest; $prefixlen >= 0; --$prefixlen) {
-       my @ns = map { substr $_, 0, $prefixlen } @names;
-       last if same (@ns);
-    }
-
-    if ($verbose) { print "prefix length = $prefixlen\n" }
-
-    # Remove the prefix from each name and save the install directory
-    # and install filename separately.
-    foreach my $name (@names) {
-       my $install_as = substr $name, $prefixlen;
-
-       my ($install_dir, $install_name);
-
-       if ($install_as =~ m{(.*)/(.*)}) {
-           $install_dir = $1;
-           $install_name = $2;
-       } else {
-           $install_dir = ".";
-           $install_name = $install_as;
-       }
-
-       # Convert / in install_dir into backslashes.
-       $install_dir =~ s{/}{\\}g;
-
-       $files{$name}->{install_dir} = $install_dir;
-       $files{$name}->{install_name} = $install_name;
-    }
-}
-
-sub max
-{
-    my $max = $_[0];
-    for (@_[1..$#_]) {
-       $max = $_ if $_ > $max;
-    }
-    $max
-}
-
-sub min
-{
-    my $min = $_[0];
-    for (@_[1..$#_]) {
-       $min = $_ if $_ < $min;
-    }
-    $min
-}
-
-sub same
-{
-    my  $s = $_[0];
-    for (@_[1..$#_]) {
-       return 0 if $_ ne $s;
-    }
-    1;
-}
-
-# Print the list of files.
-
-sub print_files
-{
-    print "Files:\n";
-    foreach (sort keys %files) {
-       print "\t$_";
-       if ($files{$_}->{root}) {
-           print " [root]";
-       }
-       if ($files{$_}->{dir}) {
-           print " [dir]";
-       }
-       print STDOUT ("\n\t  => ",
-              $files{$_}->{install_dir}, " \\ ", $files{$_}->{install_name},
-              "\n");
-    }
-    print "End of files.\n";
-}
-
-# Write the NSIS script.
-
-sub write_script
-{
-    my $io = shift;
-
-    print $io <<EOT;
-#!Nsis Installer Command Script
-#
-# This is an NSIS Installer Command Script generated automatically
-# by the Fedora nsiswrapper program.  For more information see:
-#
-#   http://fedoraproject.org/wiki/MinGW
-#
-# To build an installer from the script you would normally do:
-#
-#   makensis this_script
-#
-# which will generate the output file '$outfile' which is a Windows
-# installer containing your program.
-
-Name "$name"
-OutFile "$outfile"
-InstallDir "$installdir"
-InstallDirRegKey $installdirregkey "Install_Dir"
-
-ShowInstDetails hide
-ShowUninstDetails hide
-
-# Uncomment this to enable BZip2 compression, which results in
-# slightly smaller files but uses more memory at install time.
-#SetCompressor bzip2
-
-XPStyle on
-
-Page components
-Page directory
-Page instfiles
-
-ComponentText "Select which optional components you want to install."
-
-DirText "Please select the installation folder."
-
-Section "$name"
-  SectionIn RO
-EOT
-
-    # Set the output files.
-    my $olddir;
-    foreach (sort keys %files) {
-       if (!$olddir || $files{$_}->{install_dir} ne $olddir) {
-           # Moved into a new install directory.
-           my $dir = $files{$_}->{install_dir};
-           print $io "\n  SetOutPath \"\$INSTDIR\\$dir\"\n";
-           $olddir = $dir;
-       }
-
-       # If it's a directory, we copy it recursively, otherwise
-       # just copy the single file.
-       if ($files{$_}->{dir}) {
-           if ($files{$_}->{only_mkdir}) {
-               # This is a hack to allow us to create empty directories.
-               my $install_dir = $files{$_}->{install_dir};
-               my $install_name = $files{$_}->{install_name};
-               print $io "  CreateDirectory \"\$INSTDIR\\$install_dir\\$install_name\"\n";
-           } else {
-               print $io "  File /r \"$_\"\n";
-           }
-       } else {
-           print $io "  File \"$_\"\n";
-       }
-    }
-
-    # GTK?
-    if ($with_gtk) {
-       my $install_dir = $files{"$mingw32_bindir/pango-querymodules.exe"}->{install_dir};
-       my $install_name = $files{"$mingw32_bindir/pango-querymodules.exe"}->{install_name};
-
-       # This particular piece of Windows stupidity is documented here:
-       # http://forums.winamp.com/showthread.php?postid=438771#post438771
-       # http://forums.winamp.com/printthread.php?s=53c76b4ae4221ff1d9dc361fc5bf7ea2&threadid=231797
-       print $io "\n";
-       print $io "  ReadEnvStr \$0 COMSPEC\n";
-       print $io "  SetOutPath \"\$INSTDIR\"\n";
-       print $io "  nsExec::ExecToLog '\$0 /C $install_dir\\$install_name > etc\\pango\\pango.modules'\n"
-    }
-
-    print $io <<EOT;
-SectionEnd
-
-Section "Start Menu Shortcuts"
-  CreateDirectory "\$SMPROGRAMS\\$name"
-  CreateShortCut "\$SMPROGRAMS\\$name\\Uninstall $name.lnk" "\$INSTDIR\\Uninstall $name.exe" "" "\$INSTDIR\\Uninstall $name.exe" 0
-EOT
-
-    # Start menu entries for each executable.
-    foreach (sort keys %files) {
-       if ($files{$_}->{exec}) {
-           my $install_dir = $files{$_}->{install_dir};
-           my $install_name = $files{$_}->{install_name};
-           print $io "  CreateShortCut \"\$SMPROGRAMS\\$name\\$install_name.lnk\" \"\$INSTDIR\\$install_dir\\$install_name\" \"\" \"\$INSTDIR\\$install_dir\\$install_name\" 0\n";
-       }
-    }
-
-    print $io <<EOT;
-SectionEnd
-
-Section "Desktop Icons"
-EOT
-
-    # Desktop icons for each executable.
-    foreach (sort keys %files) {
-       if ($files{$_}->{exec}) {
-           my $install_dir = $files{$_}->{install_dir};
-           my $install_name = $files{$_}->{install_name};
-           print $io "  CreateShortCut \"\$DESKTOP\\$install_name.lnk\" \"\$INSTDIR\\$install_dir\\$install_name\" \"\" \"\$INSTDIR\\$install_dir\\$install_name\" 0\n";
-       }
-    }
-
-    print $io <<EOT;
-SectionEnd
-
-Section "Uninstall"
-EOT
-
-    # Remove desktop icons and menu shortcuts.
-    foreach (reverse sort keys %files) {
-       if ($files{$_}->{exec}) {
-           my $install_name = $files{$_}->{install_name};
-           print $io "  Delete /rebootok \"\$DESKTOP\\$install_name.lnk\"\n";
-           print $io "  Delete /rebootok \"\$SMPROGRAMS\\$name\\$install_name.lnk\"\n";
-       }
-    }
-    print $io "  Delete /rebootok \"\$SMPROGRAMS\\$name\\Uninstall $name.lnk\"\n";
-    print $io "  RMDir \"\$SMPROGRAMS\\$name\"\n\n";
-
-    # Remove remaining files.
-    $olddir = '';
-    foreach (reverse sort keys %files) {
-       if (!$olddir || $files{$_}->{install_dir} ne $olddir) {
-           # Moved into a new install directory, so delete the previous one.
-           print $io "  RMDir \"\$INSTDIR\\$olddir\"\n\n"
-               if $olddir;
-           $olddir = $files{$_}->{install_dir};
-       }
-
-       # If it's a directory, we delete it recursively, otherwise
-       # just delete the single file.
-       my $install_dir = $files{$_}->{install_dir};
-       my $install_name = $files{$_}->{install_name};
-       if ($files{$_}->{dir}) {
-           print $io "  RMDir /r \"\$INSTDIR\\$install_dir\\$install_name\"\n\n";
-           $olddir = ''; # Don't double-delete directory.
-       } else {
-           print $io "  Delete /rebootok \"\$INSTDIR\\$install_dir\\$install_name\"\n";
-       }
-    }
-
-    print $io "  RMDir \"\$INSTDIR\\$olddir\"\n" if $olddir;
-
-    print $io <<EOT;
-  RMDir "\$INSTDIR"
-SectionEnd
-
-Section -post
-  WriteUninstaller "\$INSTDIR\\Uninstall $name.exe"
-SectionEnd
-EOT
-}
-
-# Run makensis on the named file.
-
-sub run_makensis
-{
-    my $filename = shift;
-
-    system ("makensis", $filename) == 0 or die "makensis: $?"
-}
-
-# Main program.
-
-sub main
-{
-    get_options ();
-    check_prereqs ();
-    print_config () if $verbose;
-    do_gtk () if $with_gtk;
-    do_dependencies ();
-    install_names ();
-    print_files () if $verbose;
-    if ($run) {
-       my ($io, $filename) = tempfile ("nswXXXXXX", UNLINK => 1);
-       write_script ($io);
-       close $io;
-       run_makensis ($filename);
-    } else {
-       write_script (\*STDOUT);
-    }
-}
-
-main ()