Add first cut of the mingw cross build spec file + nsi file

These need more work but I'd rather have them here under version control.
The spec file appears to successfully build the Windows binaries, given
the right tar file to start with. Those binaries are then packed into an
rpm file (extermely useless to Windows users).

Once the rpm is unpacked one can then use the NSIS compiler and the .nsi
file to create a Windows installer. This all is still extremely fragile,
but it worked at least once...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2011-10-29 10:02:40 -07:00
parent 7f0c866f48
commit 667f07d281
2 changed files with 201 additions and 0 deletions

View file

@ -0,0 +1,112 @@
%define __strip %{_mingw32_strip}
%define __objdump %{_mingw32_objdump}
%define _use_internal_dependency_generator 0
%define __find_requires %{_mingw32_findrequires}
%define __find_provides %{_mingw32_findprovides}
%define __os_install_post %{_mingw32_debug_install_post} \
%{_mingw32_install_post}
Name: mingw32-subsurface
Summary: Simple Dive Log Program
Version: 1.1
Release: 5
License: GPLv2
URL: http://subsurface.hohndel.org
Source0: subsurface-1.1.tar.gz
BuildArch: noarch
BuildRequires: mingw32-cross-pkg-config mingw32-cross-gcc
BuildRequires: mingw32-gtk2-devel mingw32-glib2-devel mingw32-libxml2-devel
BuildRequires: mingw32-libdivecomputer0-devel mingw32-gconf2-devel
BuildRequires: mingw32-pthreads-devel
BuildRequires: mingw32-gtk2 mingw32-glib2 mingw32-libxml2
BuildRequires: mingw32-libdivecomputer0 mingw32-gconf2
BuildRequires: mingw32-pthreads mingw32-zlib
Group: Productivity/Other
%description
subsurface is a simple dive log program written in C
%{_mingw32_debug_package}
%prep
%setup -q -n subsurface-1.1
%build
make CC=%{_mingw32_target}-gcc PKGCONFIG=%{_mingw32_target}-pkg-config XML2CONFIG=%{_mingw32_bindir}/xml2-config NAME=subsurface.exe
%clean
#rm -rf %{buildroot}
%install
mkdir -p $RPM_BUILD_ROOT/%{_mingw32_bindir}
mkdir -p $RPM_BUILD_ROOT/%{_mingw32_datadir}
install -m 755 subsurface.exe $RPM_BUILD_ROOT/%{_mingw32_bindir}/subsurface.exe
install -m 644 subsurface.svg $RPM_BUILD_ROOT/%{_mingw32_datadir}/subsurface.svg
# this seems like a really ugly hack
install -m 755 %{_mingw32_bindir}/libdivecomputer-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libdivecomputer-0.dll
install -m 755 %{_mingw32_bindir}/libcairo-2.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libcairo-2.dll
install -m 755 %{_mingw32_bindir}/libgconf-2-4.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgconf-2-4.dll
install -m 755 %{_mingw32_bindir}/libgdk-win32-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgdk-win32-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libglib-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libglib-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libgtk-win32-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgtk-win32-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libpango-1.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpango-1.0-0.dll
install -m 755 %{_mingw32_bindir}/libpangocairo-1.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpangocairo-1.0-0.dll
install -m 755 %{_mingw32_bindir}/pthreadGC2.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/pthreadGC2.dll
install -m 755 %{_mingw32_bindir}/libxml2-2.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libxml2-2.dll
install -m 755 %{_mingw32_bindir}/libfontconfig-1.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libfontconfig-1.dll
install -m 755 %{_mingw32_bindir}/libfreetype-6.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libfreetype-6.dll
install -m 755 %{_mingw32_bindir}/libpixman-1-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpixman-1-0.dll
install -m 755 %{_mingw32_bindir}/libpng15-15.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpng15-15.dll
install -m 755 %{_mingw32_bindir}/zlib1.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/zlib1.dll
install -m 755 %{_mingw32_bindir}/libintl-8.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libintl-8.dll
install -m 755 %{_mingw32_bindir}/libgmodule-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgmodule-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libgdk_pixbuf-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgdk_pixbuf-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libgobject-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgobject-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libgio-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgio-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libjasper-1.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libjasper-1.dll
install -m 755 %{_mingw32_bindir}/libgthread-2.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libgthread-2.0-0.dll
install -m 755 %{_mingw32_bindir}/libffi-5.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libffi-5.dll
install -m 755 %{_mingw32_bindir}/libjpeg-8.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libjpeg-8.dll
install -m 755 %{_mingw32_bindir}/libtiff-3.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libtiff-3.dll
install -m 755 %{_mingw32_bindir}/libpangoft2-1.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpangoft2-1.0-0.dll
install -m 755 %{_mingw32_bindir}/libpangowin32-1.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libpangowin32-1.0-0.dll
install -m 755 %{_mingw32_bindir}/libatk-1.0-0.dll $RPM_BUILD_ROOT/%{_mingw32_bindir}/libatk-1.0-0.dll
%files
%defattr(-,root,root)
%{_mingw32_bindir}/subsurface.exe
%{_mingw32_bindir}/libdivecomputer-0.dll
%{_mingw32_bindir}/libcairo-2.dll
%{_mingw32_bindir}/libgconf-2-4.dll
%{_mingw32_bindir}/libgdk-win32-2.0-0.dll
%{_mingw32_bindir}/libglib-2.0-0.dll
%{_mingw32_bindir}/libgtk-win32-2.0-0.dll
%{_mingw32_bindir}/libpango-1.0-0.dll
%{_mingw32_bindir}/libpangocairo-1.0-0.dll
%{_mingw32_bindir}/pthreadGC2.dll
%{_mingw32_bindir}/libxml2-2.dll
%{_mingw32_bindir}/libfontconfig-1.dll
%{_mingw32_bindir}/libfreetype-6.dll
%{_mingw32_bindir}/libpixman-1-0.dll
%{_mingw32_bindir}/libpng15-15.dll
%{_mingw32_bindir}/zlib1.dll
%{_mingw32_bindir}/libintl-8.dll
%{_mingw32_bindir}/libgmodule-2.0-0.dll
%{_mingw32_bindir}/libgdk_pixbuf-2.0-0.dll
%{_mingw32_bindir}/libgobject-2.0-0.dll
%{_mingw32_bindir}/libgio-2.0-0.dll
%{_mingw32_bindir}/libjasper-1.dll
%{_mingw32_bindir}/libgthread-2.0-0.dll
%{_mingw32_bindir}/libffi-5.dll
%{_mingw32_bindir}/libjpeg-8.dll
%{_mingw32_bindir}/libtiff-3.dll
%{_mingw32_bindir}/libpangoft2-1.0-0.dll
%{_mingw32_bindir}/libpangowin32-1.0-0.dll
%{_mingw32_bindir}/libatk-1.0-0.dll
%{_mingw32_datadir}/subsurface.svg
%changelog

View file

@ -0,0 +1,89 @@
# define the name of the installer
outfile "subsurface-installer.exe"
Name subsurface
VIProductVersion "1.1.0.0"
VIAddVersionKey ProductName subsurface
VIAddVersionKey ProductVersion "1.1"
VIAddVersionKey FileVersion "1.1"
Icon ..\share\subsurface.ico
RequestExecutionLevel admin
Function .onInit
MessageBox MB_YESNO "This will install subsurface. Do you wish to continue?" IDYES gogogo
Abort
gogogo:
FunctionEnd
# define the directory to install to, the desktop in this case as specified
# by the predefined $DESKTOP variable
installDir "$DESKTOP\subsurface"
# default section
Section
# define the output path for this file
setOutPath $INSTDIR
SetShellVarContext all
# create directory in the Start menu
CreateDirectory "$SMPROGRAMS\subsurface"
# create Start menu shortcut
createShortCut "$SMPROGRAMS\subsurface\subsurface.lnk" "$INSTDIR\subsurface.exe"
#create uninstaller and corresponding shortcut in Start menu
writeUninstaller "$INSTDIR\subsurface-uninstall.exe"
createShortCut "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk" "$INSTDIR\subsurface-uninstall.exe"
# define what to install and place it in the output path
file subsurface.exe
file libatk-1.0-0.dll
file libcairo-2.dll
file libdivecomputer-0.dll
file libffi-5.dll
file libfontconfig-1.dll
file libfreetype-6.dll
file libgdk_pixbuf-2.0-0.dll
file libgdk-win32-2.0-0.dll
file libgio-2.0-0.dll
file libglib-2.0-0.dll
file libgmodule-2.0-0.dll
file libgobject-2.0-0.dll
file libgthread-2.0-0.dll
file libgtk-win32-2.0-0.dll
file libintl-8.dll
file libjasper-1.dll
file libjpeg-8.dll
file libpango-1.0-0.dll
file libpangocairo-1.0-0.dll
file libpangoft2-1.0-0.dll
file libpangowin32-1.0-0.dll
file libpixman-1-0.dll
file libpng15-15.dll
file libtiff-3.dll
file libxml2-2.dll
file pthreadGC2.dll
file zlib1.dll
file /oname=subsurface.ico ..\\share\\subsurface.ico
file /oname=subsurface.bmp ..\\share\\subsurface.bmp
file /oname=subsurface.svg ..\\share\\subsurface.svg
sectionEnd
section "uninstall"
SetShellVarContext all
delete "$INSTDIR\subsurface-uninstall.exe"
delete "$INSTDIR\*.*"
RMDir "$INSTDIR"
delete "$SMPROGRAMS\subsurface\uninstall-subsurface.lnk"
delete "$SMPROGRAMS\subsurface\subsurface.lnk"
RMDir "$SMPROGRAMS\subsurface"
sectionEnd