summaryrefslogtreecommitdiff
path: root/packaging
diff options
context:
space:
mode:
Diffstat (limited to 'packaging')
-rw-r--r--packaging/FileAssociation.nsh190
-rwxr-xr-xpackaging/clean-deb.sh4
-rwxr-xr-xpackaging/create-source-archive.sh19
-rw-r--r--packaging/debian/changelog.Debian3
-rw-r--r--packaging/debian/conffiles1
-rw-r--r--packaging/debian/control17
-rw-r--r--packaging/debian/copyright9
-rw-r--r--packaging/debian/freshmemory.113
-rw-r--r--packaging/debian/freshmemory.desktop15
-rw-r--r--packaging/debian/freshmemory.xml8
-rwxr-xr-xpackaging/debian/postinst6
-rwxr-xr-xpackaging/debian/prerm7
-rw-r--r--packaging/freshmemory.nsi72
-rwxr-xr-xpackaging/make-deb.sh126
-rw-r--r--packaging/make-wininstaller.bat15
-rw-r--r--packaging/packaging.txt66
-rw-r--r--packaging/qt-win/cleanup.bat2
-rw-r--r--packaging/qt-win/copy_qtdlls.bat28
-rw-r--r--packaging/qt-win/list.txt25
19 files changed, 626 insertions, 0 deletions
diff --git a/packaging/FileAssociation.nsh b/packaging/FileAssociation.nsh
new file mode 100644
index 0000000..157257f
--- /dev/null
+++ b/packaging/FileAssociation.nsh
@@ -0,0 +1,190 @@
+/*
+_____________________________________________________________________________
+
+ File Association
+_____________________________________________________________________________
+
+ Based on code taken from http://nsis.sourceforge.net/File_Association
+
+ Usage in script:
+ 1. !include "FileAssociation.nsh"
+ 2. [Section|Function]
+ ${FileAssociationFunction} "Param1" "Param2" "..." $var
+ [SectionEnd|FunctionEnd]
+
+ FileAssociationFunction=[RegisterExtension|UnRegisterExtension]
+
+_____________________________________________________________________________
+
+ ${RegisterExtension} "[executable]" "[extension]" "[description]"
+
+"[executable]" ; executable which opens the file format
+ ;
+"[extension]" ; extension, which represents the file format to open
+ ;
+"[description]" ; description for the extension. This will be display in Windows Explorer.
+ ;
+
+
+ ${UnRegisterExtension} "[extension]" "[description]"
+
+"[extension]" ; extension, which represents the file format to open
+ ;
+"[description]" ; description for the extension. This will be display in Windows Explorer.
+ ;
+
+_____________________________________________________________________________
+
+ Macros
+_____________________________________________________________________________
+
+ Change log window verbosity (default: 3=no script)
+
+ Example:
+ !include "FileAssociation.nsh"
+ !insertmacro RegisterExtension
+ ${FileAssociation_VERBOSE} 4 # all verbosity
+ !insertmacro UnRegisterExtension
+ ${FileAssociation_VERBOSE} 3 # no script
+*/
+
+
+!ifndef FileAssociation_INCLUDED
+!define FileAssociation_INCLUDED
+
+!include Util.nsh
+
+!verbose push
+!verbose 3
+!ifndef _FileAssociation_VERBOSE
+ !define _FileAssociation_VERBOSE 3
+!endif
+!verbose ${_FileAssociation_VERBOSE}
+!define FileAssociation_VERBOSE `!insertmacro FileAssociation_VERBOSE`
+!verbose pop
+
+!macro FileAssociation_VERBOSE _VERBOSE
+ !verbose push
+ !verbose 3
+ !undef _FileAssociation_VERBOSE
+ !define _FileAssociation_VERBOSE ${_VERBOSE}
+ !verbose pop
+!macroend
+
+
+
+!macro RegisterExtensionCall _EXECUTABLE _EXTENSION _DESCRIPTION
+ !verbose push
+ !verbose ${_FileAssociation_VERBOSE}
+ Push `${_DESCRIPTION}`
+ Push `${_EXTENSION}`
+ Push `${_EXECUTABLE}`
+ ${CallArtificialFunction} RegisterExtension_
+ !verbose pop
+!macroend
+
+!macro UnRegisterExtensionCall _EXTENSION _DESCRIPTION
+ !verbose push
+ !verbose ${_FileAssociation_VERBOSE}
+ Push `${_EXTENSION}`
+ Push `${_DESCRIPTION}`
+ ${CallArtificialFunction} UnRegisterExtension_
+ !verbose pop
+!macroend
+
+
+
+!define RegisterExtension `!insertmacro RegisterExtensionCall`
+!define un.RegisterExtension `!insertmacro RegisterExtensionCall`
+
+!macro RegisterExtension
+!macroend
+
+!macro un.RegisterExtension
+!macroend
+
+!macro RegisterExtension_
+ !verbose push
+ !verbose ${_FileAssociation_VERBOSE}
+
+ Exch $R2 ;exe
+ Exch
+ Exch $R1 ;ext
+ Exch
+ Exch 2
+ Exch $R0 ;desc
+ Exch 2
+ Push $0
+ Push $1
+
+ ReadRegStr $1 HKCR $R1 "" ; read current file association
+ StrCmp "$1" "" NoBackup ; is it empty
+ StrCmp "$1" "$R0" NoBackup ; is it our own
+ WriteRegStr HKCR $R1 "backup_val" "$1" ; backup current value
+NoBackup:
+ WriteRegStr HKCR $R1 "" "$R0" ; set our file association
+
+ ReadRegStr $0 HKCR $R0 ""
+ StrCmp $0 "" 0 Skip
+ WriteRegStr HKCR "$R0" "" "$R0"
+ WriteRegStr HKCR "$R0\shell" "" "open"
+ WriteRegStr HKCR "$R0\DefaultIcon" "" "$R2,0"
+Skip:
+ WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
+ WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
+ WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'
+
+ Pop $1
+ Pop $0
+ Pop $R2
+ Pop $R1
+ Pop $R0
+
+ !verbose pop
+!macroend
+
+
+
+!define UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
+!define un.UnRegisterExtension `!insertmacro UnRegisterExtensionCall`
+
+!macro UnRegisterExtension
+!macroend
+
+!macro un.UnRegisterExtension
+!macroend
+
+!macro UnRegisterExtension_
+ !verbose push
+ !verbose ${_FileAssociation_VERBOSE}
+
+ Exch $R1 ;desc
+ Exch
+ Exch $R0 ;ext
+ Exch
+ Push $0
+ Push $1
+
+ ReadRegStr $1 HKCR $R0 ""
+ StrCmp $1 $R1 0 NoOwn ; only do this if we own it
+ ReadRegStr $1 HKCR $R0 "backup_val"
+ StrCmp $1 "" 0 Restore ; if backup="" then delete the whole key
+ DeleteRegKey HKCR $R0
+ Goto NoOwn
+
+Restore:
+ WriteRegStr HKCR $R0 "" $1
+ DeleteRegValue HKCR $R0 "backup_val"
+ DeleteRegKey HKCR $R1 ;Delete key with association name settings
+
+NoOwn:
+
+ Pop $1
+ Pop $0
+ Pop $R1
+ Pop $R0
+
+ !verbose pop
+!macroend
+
+!endif # !FileAssociation_INCLUDED \ No newline at end of file
diff --git a/packaging/clean-deb.sh b/packaging/clean-deb.sh
new file mode 100755
index 0000000..3569a8d
--- /dev/null
+++ b/packaging/clean-deb.sh
@@ -0,0 +1,4 @@
+sudo rm -r freshmemory_*
+rm packaging/debian/control.diff
+rm packaging/debian/desktop.diff
+
diff --git a/packaging/create-source-archive.sh b/packaging/create-source-archive.sh
new file mode 100755
index 0000000..a63842a
--- /dev/null
+++ b/packaging/create-source-archive.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+VERSION=`cat debian/control|grep Version| cut -d' ' -f2| cut -d'-' -f1`
+echo Version $VERSION
+BRANCH=`hg log -r v$VERSION|grep branch|head -n1| cut -d' ' -f7`
+echo Branch $BRANCH
+SRC_DIR=$PWD
+DST_DIR=freshmemory-$VERSION
+
+cd ..
+hg clone $SRC_DIR $DST_DIR > /dev/null
+
+cd $DST_DIR
+hg up $BRANCH > /dev/null
+rm -r .hg*
+cd ..
+
+tar cvjf $DST_DIR.tar.bz2 $DST_DIR > /dev/null
+
diff --git a/packaging/debian/changelog.Debian b/packaging/debian/changelog.Debian
new file mode 100644
index 0000000..09371c0
--- /dev/null
+++ b/packaging/debian/changelog.Debian
@@ -0,0 +1,3 @@
+freshmemory unstable; urgency=high
+ * See change log at fresh-memory.com or /ChangeLog file
+ -- Mykhaylo Kopytonenko <mishakop@gmail.com>
diff --git a/packaging/debian/conffiles b/packaging/debian/conffiles
new file mode 100644
index 0000000..45dfb78
--- /dev/null
+++ b/packaging/debian/conffiles
@@ -0,0 +1 @@
+/etc/xdg/freshmemory/freshmemory.ini
diff --git a/packaging/debian/control b/packaging/debian/control
new file mode 100644
index 0000000..f8d5564
--- /dev/null
+++ b/packaging/debian/control
@@ -0,0 +1,17 @@
+Package: freshmemory
+Priority: optional
+Version: 1.5.0-1
+Section: education
+Installed-Size: 2636
+Maintainer: Mykhaylo Kopytonenko <mishakop@gmail.com>
+Homepage: http://fresh-memory.com
+Architecture: amd64
+Depends: libc6, libstdc++6, libqt5core5a (>= 5.2), libqt5widgets5 (>= 5.2), libqt5gui5 (>= 5.2), libqt5xml5 (>= 5.2), libqt5network5 (>= 5.2), libqt5svg5 (>= 5.2), qttranslations5-l10n (>=5.2)
+Description: Flashcards application with Spaced Repetition method
+ Fresh Memory is an education application for studying languages
+ with Spaced Repetition method and flashcards. Its primary purpose
+ is to study and repeat vocabulary of foreign languages. But other
+ disciplines can be studied as well: history, geography, medicine,
+ mathematics. The study material is stored as collections of
+ flashcards.
+
diff --git a/packaging/debian/copyright b/packaging/debian/copyright
new file mode 100644
index 0000000..587e08b
--- /dev/null
+++ b/packaging/debian/copyright
@@ -0,0 +1,9 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Freshmemory
+Source: http://fresh-memory.com
+
+Files: *
+Copyright: 2015 Mykhaylo Kopytonenko <mishakop@gmail.com>
+License: GPL-3
+ /usr/share/common-licenses/GPL-3
+
diff --git a/packaging/debian/freshmemory.1 b/packaging/debian/freshmemory.1
new file mode 100644
index 0000000..00a9f12
--- /dev/null
+++ b/packaging/debian/freshmemory.1
@@ -0,0 +1,13 @@
+.TH man 1 "05 Oct 2015" "1.x.0" "freshmemory man page"
+.SH NAME
+freshmemory \- Flashcards application using Spaced
+Repetition method
+.SH SYNOPSIS
+freshmemory [dictionary-file]
+.SH DESCRIPTION
+Fresh Memory
+.SH OPTIONS
+No options
+.SH AUTHOR
+Mykhaylo Kopytonenko (mishakop@gmail.com)
+
diff --git a/packaging/debian/freshmemory.desktop b/packaging/debian/freshmemory.desktop
new file mode 100644
index 0000000..0159e95
--- /dev/null
+++ b/packaging/debian/freshmemory.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Name=Fresh Memory
+Version=1.5.0
+Encoding=UTF-8
+Type=Application
+Comment=Flashcards application with Spaced Repetition
+Exec=freshmemory %U
+Icon=freshmemory
+Categories=Education
+X-Maemo-Category=Main
+X-Window-Icon=freshmemory
+X-Window-Icon-Dimmed=freshmemory
+MimeType=application/x-fm-dictionary
+Name[en_US]=Fresh Memory
+
diff --git a/packaging/debian/freshmemory.xml b/packaging/debian/freshmemory.xml
new file mode 100644
index 0000000..b6505de
--- /dev/null
+++ b/packaging/debian/freshmemory.xml
@@ -0,0 +1,8 @@
+<?xml version='1.0' encoding='utf-8'?>
+<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-fm-dictionary">
+ <comment>Freshmemory dictionary</comment>
+ <glob pattern="*.fmd"/>
+ </mime-type>
+</mime-info>
+
diff --git a/packaging/debian/postinst b/packaging/debian/postinst
new file mode 100755
index 0000000..78e82c3
--- /dev/null
+++ b/packaging/debian/postinst
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -e
+xdg-mime install --novendor /usr/share/freshmemory/freshmemory.xml
+update-mime-database /usr/share/mime
+xdg-desktop-menu install --novendor /usr/share/applications/freshmemory.desktop
+xdg-icon-resource install --context mimetypes --size 128 /usr/share/pixmaps/freshmemory.png application-x-fm-dictionary
diff --git a/packaging/debian/prerm b/packaging/debian/prerm
new file mode 100755
index 0000000..22fa72a
--- /dev/null
+++ b/packaging/debian/prerm
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -e
+xdg-mime uninstall --novendor /usr/share/freshmemory/freshmemory.xml
+update-mime-database /usr/share/mime
+xdg-desktop-menu uninstall --novendor /usr/share/applications/freshmemory.desktop
+xdg-icon-resource uninstall --context mimetypes --size 128 /usr/share/pixmaps/freshmemory.png application-x-fm-dictionary
+
diff --git a/packaging/freshmemory.nsi b/packaging/freshmemory.nsi
new file mode 100644
index 0000000..dc5096d
--- /dev/null
+++ b/packaging/freshmemory.nsi
@@ -0,0 +1,72 @@
+SetCompressor /SOLID lzma
+!include "FileAssociation.nsh"
+
+!define /file VERSION ..\version.txt
+
+Name "Fresh Memory ${VERSION}"
+OutFile "freshmemory-${VERSION}-setup.exe"
+
+Icon ..\images\mainicon.ico
+
+Page license
+Page components
+Page directory
+Page instfiles
+UninstPage uninstConfirm
+UninstPage instfiles
+
+LicenseData ..\COPYING
+
+InstType "Normal"
+
+InstallDir $PROGRAMFILES\Freshmemory
+
+Section "Fresh Memory (required)"
+ SectionIn RO
+ SetOutPath $INSTDIR
+ File ..\freshmemory.exe
+ WriteUninstaller $INSTDIR\Uninstall.exe
+
+ File /oname=README.txt ..\README
+ File /oname=ChangeLog.txt ..\ChangeLog
+ File /oname=AUTHORS.txt ..\AUTHORS
+
+ SetOutPath "$INSTDIR\tr"
+ File ..\tr\*.qm
+
+ SetShellVarContext all
+ CreateDirectory "$SMPROGRAMS\Fresh Memory"
+ Delete "$SMPROGRAMS\Fresh Memory\Fresh Memory*.lnk"
+ CreateShortCut "$SMPROGRAMS\Fresh Memory\Fresh Memory ${VERSION}.lnk" "$INSTDIR\freshmemory.exe"
+ CreateShortCut "$SMPROGRAMS\Fresh Memory\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Fresh Memory" "DisplayName" "Fresh Memory ${VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Fresh Memory" "UninstallString" "$INSTDIR\Uninstall.exe"
+
+ ${registerExtension} "$PROGRAMFILES\Freshmemory\freshmemory.exe" ".fmd" "Freshmemory dictionary"
+SectionEnd
+
+Section "Qt libraries"
+ SectionIn 1
+ SetOutPath "$INSTDIR"
+ File qt-win\*.dll
+ SetOutPath "$INSTDIR\imageformats"
+ File qt-win\imageformats\*.dll
+ SetOutPath "$INSTDIR\platforms"
+ File qt-win\platforms\*.dll
+SectionEnd
+
+Section "Uninstall"
+ ${unregisterExtension} ".fmd" "Freshmemory dictionary"
+
+ RMDir /r $INSTDIR
+
+ SetShellVarContext all
+ RMDir /r $APPDATA\freshmemory
+ SetShellVarContext current
+ RMDir /r $APPDATA\freshmemory
+
+ SetShellVarContext all
+ Delete "$SMPROGRAMS\Fresh Memory\*"
+ RMDir "$SMPROGRAMS\Fresh Memory"
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Fresh Memory"
+SectionEnd
diff --git a/packaging/make-deb.sh b/packaging/make-deb.sh
new file mode 100755
index 0000000..a7e7817
--- /dev/null
+++ b/packaging/make-deb.sh
@@ -0,0 +1,126 @@
+#!/bin/bash
+
+# Checks
+
+DEBIAN_DIR=packaging/debian
+VERSION=`cat version.txt`
+PKG_REVISION=1
+ARCH=amd64
+if [ `uname -i` != 'x86_64' ]
+then
+ ARCH=i386
+fi
+echo "Arch: $ARCH"
+
+DEBROOT=freshmemory_${VERSION}-${PKG_REVISION}_${ARCH}
+
+if [ ! -x freshmemory ]
+then
+ echo "Error: Executable 'freshmemory' doesn't exist"
+ exit 1
+fi
+
+if [ -x ${DEBROOT} ]
+then
+ sudo rm -rf ${DEBROOT}
+fi
+
+strip freshmemory
+
+lrelease -silent freshmemory.pro
+
+mkdir -p $DEBROOT/DEBIAN
+cp ${DEBIAN_DIR}/control $DEBROOT/DEBIAN
+cp ${DEBIAN_DIR}/conffiles $DEBROOT/DEBIAN
+cp ${DEBIAN_DIR}/postinst $DEBROOT/DEBIAN
+cp ${DEBIAN_DIR}/prerm $DEBROOT/DEBIAN
+
+mkdir -p $DEBROOT/usr/bin
+cp freshmemory $DEBROOT/usr/bin
+
+mkdir -p $DEBROOT/etc/xdg/freshmemory
+cp doc/config/freshmemory.ini $DEBROOT/etc/xdg/freshmemory
+
+mkdir -p $DEBROOT/usr/share/freshmemory
+cp --parents tr/*.qm $DEBROOT/usr/share/freshmemory
+
+cp ${DEBIAN_DIR}/freshmemory.xml $DEBROOT/usr/share/freshmemory
+
+# Copying Linux platform files
+
+DEBDOCDIR=$DEBROOT/usr/share/doc/freshmemory
+mkdir -p $DEBDOCDIR
+cp AUTHORS $DEBDOCDIR
+cp ${DEBIAN_DIR}/copyright $DEBDOCDIR
+cp README $DEBDOCDIR
+cp ${DEBIAN_DIR}/changelog.Debian $DEBDOCDIR
+gzip --best $DEBDOCDIR/changelog.Debian
+
+DEBMANDIR=$DEBROOT/usr/share/man/man1
+mkdir -p $DEBMANDIR
+cp ${DEBIAN_DIR}/freshmemory.1 $DEBMANDIR
+gzip --best $DEBMANDIR/freshmemory.1
+
+mkdir -p $DEBROOT/usr/share/applications
+cp ${DEBIAN_DIR}/freshmemory.desktop $DEBROOT/usr/share/applications
+mkdir -p $DEBROOT/usr/share/pixmaps
+cp images/freshmemory.png $DEBROOT/usr/share/pixmaps
+
+# Patching control file
+
+PKGSIZE=`du -s --exclude DEBIAN $DEBROOT| cut -f1`
+echo "Package size: $PKGSIZE"
+
+CONTROL_TARGET=$DEBROOT/DEBIAN/control
+CONTROL_DIFF=${DEBIAN_DIR}/control.diff
+cp /dev/null $CONTROL_DIFF
+
+VERSION_NUMSTR=`grep "Version" -n $CONTROL_TARGET`
+VERSION_LINE=`echo $VERSION_NUMSTR | cut -d: -f1`
+VERSION_STR=`echo $VERSION_NUMSTR | cut -d: -f2-3`
+echo "@@ -$VERSION_LINE,1 +$VERSION_LINE,1 @@" >> $CONTROL_DIFF
+echo "-$VERSION_STR" >> $CONTROL_DIFF
+echo "+Version: $VERSION-1" >> $CONTROL_DIFF
+
+SIZE_NUMSTR=`grep "Installed-Size" -n $CONTROL_TARGET`
+SIZE_LINE=`echo $SIZE_NUMSTR | cut -d: -f1`
+SIZE_STR=`echo $SIZE_NUMSTR | cut -d: -f2-3`
+echo "@@ -$SIZE_LINE,1 +$SIZE_LINE,1 @@" >> $CONTROL_DIFF
+echo "-$SIZE_STR" >> $CONTROL_DIFF
+echo "+Installed-Size: $PKGSIZE" >> $CONTROL_DIFF
+
+ARCH_NUMSTR=`grep "Architecture" -n $CONTROL_TARGET`
+ARCH_LINE=`echo $ARCH_NUMSTR | cut -d: -f1`
+ARCH_STR=`echo $ARCH_NUMSTR | cut -d: -f2-3`
+echo "@@ -$ARCH_LINE,1 +$ARCH_LINE,1 @@" >> $CONTROL_DIFF
+echo "-$ARCH_STR" >> $CONTROL_DIFF
+echo "+Architecture: $ARCH" >> $CONTROL_DIFF
+
+patch $CONTROL_TARGET < $CONTROL_DIFF
+
+# Patching desktop file
+
+DESKTOP_TARGET=$DEBROOT/usr/share/applications/freshmemory.desktop
+DESKTOP_DIFF=${DEBIAN_DIR}/desktop.diff
+cp /dev/null $DESKTOP_DIFF
+
+VERSION_NUMSTR=`grep "Version" -n $DESKTOP_TARGET`
+VERSION_LINE=`echo $VERSION_NUMSTR | cut -d: -f1`
+VERSION_STR=`echo $VERSION_NUMSTR | cut -d: -f2-3`
+echo "@@ -$VERSION_LINE,1 +$VERSION_LINE,1 @@" >> $DESKTOP_DIFF
+echo "-$VERSION_STR" >> $DESKTOP_DIFF
+echo "+Version=$VERSION" >> $DESKTOP_DIFF
+
+patch $DESKTOP_TARGET < $DESKTOP_DIFF
+
+# Access rights
+
+sudo chown root:root -R ${DEBROOT}
+sudo chmod g-w -R ${DEBROOT}
+sudo chmod -x ${DEBROOT}/etc/xdg/freshmemory/freshmemory.ini
+
+# Make deb
+
+dpkg-deb -b ${DEBROOT} ${DEBROOT}.deb
+lintian ${DEBROOT}.deb
+
diff --git a/packaging/make-wininstaller.bat b/packaging/make-wininstaller.bat
new file mode 100644
index 0000000..9b0d0ee
--- /dev/null
+++ b/packaging/make-wininstaller.bat
@@ -0,0 +1,15 @@
+cd ..
+lrelease freshmemory.pro
+
+cd eula
+call make plain
+
+cd ..\packaging
+
+cd qt-win
+call copy_qtdlls.bat
+
+cd ..
+"C:\Program Files (x86)\NSIS\unicode\makensis.exe" freshmemory.nsi
+
+pause \ No newline at end of file
diff --git a/packaging/packaging.txt b/packaging/packaging.txt
new file mode 100644
index 0000000..cf93b13
--- /dev/null
+++ b/packaging/packaging.txt
@@ -0,0 +1,66 @@
+Set Versions:
+ - version.txt - For qmake and Windows installer
+ - src/version.h - Only dictionary and study file versions
+
+What the scripts do:
+ - Generate translations: lrelease
+
+Prepare packages:
+ - Ubuntu 64-bit
+ - Windows
+ - Source archive
+
+Windows
+=============
+Required installs:
+- (Sphinx-doc)
+- NSIS Unicode
+ https://code.google.com/p/unsis/downloads/list
+- Set QTDIR=C:\Qt\5.2.1
+
+Compile:
+ qmake
+ make release
+
+Make installer:
+ Click make-wininstaller.bat
+
+
+Ubuntu Linux
+==============
+
+Required installs:
+ qt5-default
+ qtbase5-dev
+ qttools5-dev-tools
+ qttranslations5-l10n
+ g++
+ python-sphinx
+ git
+
+Compile:
+ qmake
+ make
+
+./packaging/make-deb.sh
+
+What script does:
+ * All file structure are created
+ * Changelog is zipped
+ * Architecture and Installed-Size are set in debian control
+ * Version is set in freshmemory.desktop
+ * Checks with lintian
+
+Clean:
+./packaging/clean-deb.sh
+
+http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/How-to-make-deb-packages/
+
+
+Source archive
+=====================
+
+From the repository root:
+ packaging/create-source-archive.sh
+
+
diff --git a/packaging/qt-win/cleanup.bat b/packaging/qt-win/cleanup.bat
new file mode 100644
index 0000000..fb8324d
--- /dev/null
+++ b/packaging/qt-win/cleanup.bat
@@ -0,0 +1,2 @@
+del *.dll
+rd /s /q imageformats
diff --git a/packaging/qt-win/copy_qtdlls.bat b/packaging/qt-win/copy_qtdlls.bat
new file mode 100644
index 0000000..09b372d
--- /dev/null
+++ b/packaging/qt-win/copy_qtdlls.bat
@@ -0,0 +1,28 @@
+call cleanup.bat
+
+copy %QTDIR%\bin\Qt5Core.dll .
+copy %QTDIR%\bin\Qt5Gui.dll .
+copy %QTDIR%\bin\Qt5Widgets.dll .
+copy %QTDIR%\bin\Qt5Network.dll .
+copy %QTDIR%\bin\libwinpthread-1.dll .
+copy %QTDIR%\bin\icuin51.dll .
+copy %QTDIR%\bin\icuuc51.dll .
+copy %QTDIR%\bin\icudt51.dll .
+copy %QTDIR%\bin\libgcc_s_dw2-1.dll .
+copy %QTDIR%\bin\libstdc*-6.dll .
+
+set QTIMG_PLUGINS=%QTDIR%\plugins\imageformats
+set DSTIMG_PLUGINS=.\imageformats
+mkdir %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qgif.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qico.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qjpeg.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qmng.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qsvg.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qtga.dll %DSTIMG_PLUGINS%
+copy %QTIMG_PLUGINS%\qtiff.dll %DSTIMG_PLUGINS%
+
+set QT_PLATFORMS=%QTDIR%\plugins\platforms
+set DST_PLATFORMS=.\platforms
+mkdir %DST_PLATFORMS%
+copy %QT_PLATFORMS%\qwindows.dll %DST_PLATFORMS%
diff --git a/packaging/qt-win/list.txt b/packaging/qt-win/list.txt
new file mode 100644
index 0000000..283afa7
--- /dev/null
+++ b/packaging/qt-win/list.txt
@@ -0,0 +1,25 @@
+QTDIR = C:\Qt\5\5.2.1\mingw48_32
+
+%QTDIR%\bin:
+ Qt5Core.dll
+ Qt5Gui.dll
+ Qt5Widgets.dll
+ Qt5Network.dll
+ libwinpthread-1.dll
+ icuin51.dll
+ icuuc51.dll
+ icudt51.dll
+ libgcc_s_dw2-1.dll
+ libstdc++-6.dll
+
+%QTDIR%\plugins\imageformats:
+ qgif.dll
+ qico.dll
+ qjpeg.dll
+ qmng.dll
+ qsvg.dll
+ qtga.dll
+ qtiff.dll
+
+%QTDIR%\plugins\platforms:
+ qtwindows.dll