diff --git a/.gitignore b/.gitignore
index 624229a4..6de0441e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -61,6 +61,8 @@ Makefile
Makefile.Debug
Makefile.Release
+buildContext
+
# plugins #
###########
diff --git a/buildDebianPackage.sh b/buildDebianPackage.sh
deleted file mode 100755
index ea624b90..00000000
--- a/buildDebianPackage.sh
+++ /dev/null
@@ -1,429 +0,0 @@
-#!/bin/bash
-# --------------------------------------------------------------------
-# 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, see .
-# ---------------------------------------------------------------------
-
-
-#**********************
-# functions
-#**********************
-
-checkUser()
-{
- if [ `id -u` -ne 0 ]; then
- echo "Please run the script as root, may be using fakeroot command as follow"
- echo "fakeroot ./buildDebianPackage.sh [options]"
- exit 1
- fi
-}
-
-initializeVariables()
-{
- APPLICATION_NAME="OpenBoard"
- MAKE_TAG=true
- STANDARD_QT_USED=false
-
- PRODUCT_PATH="build/linux/release/product"
- QT_PATH="/opt/qt55"
- PLUGINS_PATH="$QT_PATH/plugins"
- GUI_TRANSLATIONS_DIRECTORY_PATH="$QT_PATH/translations"
- QT_LIBRARY_DEST_PATH="$PRODUCT_PATH/qtlib"
- QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib"
- if [ -z $ARCHITECTURE ]; then
- ARCHITECTURE=`uname -m`
- if [ "$ARCHITECTURE" == "x86_64" ]; then
- ARCHITECTURE="amd64"
- fi
- if [ "$ARCHITECTURE" == "i686" ]; then
- ARCHITECTURE="i386"
- fi
- fi
- NOTIFY_CMD=`which notify-send`
- QMAKE_PATH="$QT_PATH/bin/qmake"
- LRELEASES="$QT_PATH/bin/lrelease"
- ZIP_PATH=`which zip`
-
-}
-
-
-notifyError(){
- if [ -e "$NOTIFY_CMD" ]; then
- $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
- fi
- printf "\033[31merror:\033[0m $1\n"
- exit 1
-}
-
-notifyProgress(){
- if [ -e "$NOTIFY_CMD" ]; then
- $NOTIFY_CMD "$1" "$2"
- fi
- printf "\033[32m--> Achieved task:\033[0m $1:\n\t$2\n"
-}
-
-alertIfPreviousVersionInstalled(){
- APT_CACHE=`which apt-cache`
- if [ ! -e "$APT_CACHE" ]; then
- notifyError "apt-cache command not found"
- else
- SEARCH_RESULT=`$APT_CACHE search ${APPLICATION_NAME}`
- if [ `echo $SEARCH_RESULT | grep -c ${APPLICATION_NAME}` -ge 1 ]; then
- notifyError "Found a previous version of ${APPLICATION_NAME}. Remove it to avoid to put it as dependency"
- fi
- fi
-}
-
-checkDir(){
- if [ ! -d "$1" ]; then
- notifyError "Directory not found : $1"
- fi
-}
-
-checkExecutable(){
- if [ ! -e "$1" ]; then
- notifyError "$1 command not found"
- fi
-}
-
-copyQtLibrary(){
- if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then
- cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.? "$QT_LIBRARY_DEST_PATH/"
- cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.? "$QT_LIBRARY_DEST_PATH/"
- cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.?.? "$QT_LIBRARY_DEST_PATH/"
- else
- notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH"
- fi
-}
-
-
-buildWithStandardQt(){
- # if both Qt4 and Qt5 are installed, choose Qt5
- export QT_SELECT=5
- STANDARD_QT=`which qmake`
- if [ $? == "0" ]; then
- QT_VERSION=`$STANDARD_QT --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"`
- if [ `echo $QT_VERSION | sed -e "s/\.//g"` -gt 480 ]; then
- notifyProgress "Standard QT" "A recent enough qmake has been found. Using this one instead of custom one"
- STANDARD_QT_USED=true
- QMAKE_PATH=$STANDARD_QT
- LRELEASES=`which lrelease`
- PLUGINS_PATH="$STANDARD_QT/../plugins"
- fi
- fi
-}
-
-buildImporter(){
- IMPORTER_DIR="../OpenBoard-Importer/"
- IMPORTER_NAME="OpenBoardImporter"
- checkDir $IMPORTER_DIR
- cd ${IMPORTER_DIR}
-
- rm moc_*
- rm -rf debug release
- rm *.o
-
- #git reset --hard
- #git pull
-
- $QMAKE_PATH ${IMPORTER_NAME}.pro
- make clean
- make -j4
- checkExecutable $IMPORTER_NAME
- cd -
-}
-
-#**********************
-# script
-#**********************
-checkUser
-
-for var in "$@"
-do
- if [ $var == "notag" ]; then
- MAKE_TAG=false
- fi
-# forcing a architecture because of cross compiling
- if [ $var == "i386" ]; then
- ARCHITECTURE="i386"
- fi
- if [ $var == "amd64" ]; then
- ARCHITECTURE="amd64"
- fi
-done
-
-initializeVariables
-#buildWithStandardQt
-
-alertIfPreviousVersionInstalled
-
-# check of directories and executables
-checkDir $QT_PATH
-checkDir $PLUGINS_PATH
-checkDir $GUI_TRANSLATIONS_DIRECTORY_PATH
-
-checkExecutable $QMAKE_PATH
-checkExecutable $LRELEASES
-checkExecutable $ZIP_PATH
-
-#build third party application
-buildImporter
-notifyProgress "OpenBoardImporter" "Built Importer"
-
-# cleaning the build directory
-rm -rf "build/linux/release"
-rm -rf install
-
-notifyProgress "QT" "Internalization"
-$LRELEASES ${APPLICATION_NAME}.pro
-cd $GUI_TRANSLATIONS_DIRECTORY_PATH
-$LRELEASES translations.pro
-cd -
-
-notifyProgress "${APPLICATION_NAME}" "Building ${APPLICATION_NAME}"
-
-if [ "$ARCHITECTURE" == "amd64" ]; then
- $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++-64
-else
- $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++
-fi
-
-make -j 4 release-install
-
-if [ ! -e "$PRODUCT_PATH/${APPLICATION_NAME}" ]; then
- notifyError "${APPLICATION_NAME} build failed"
-fi
-
-notifyProgress "Git Hub" "Make a tag of the delivered version"
-
-VERSION=`cat build/linux/release/version`
-
-if [ ! -f build/linux/release/version ]; then
- notifyError "version not found"
-#else
-# LAST_COMMITED_VERSION="`git describe $(git rev-list --tags --max-count=1)`"
-# if [ "v$VERSION" != "$LAST_COMMITED_VERSION" ]; then
-# if [ $MAKE_TAG == true ]; then
-# git tag -a "OBv$VERSION" -m "OpenBoard setup for v$VERSION"
-# git push origin --tags
-# fi
-# fi
-fi
-
-cp resources/linux/run.sh $PRODUCT_PATH
-chmod a+x $PRODUCT_PATH/run.sh
-
-cp -R resources/linux/qtlinux/* $PRODUCT_PATH/
-
-notifyProgress "QT" "Copying plugins and library ..."
-cp -R $PLUGINS_PATH $PRODUCT_PATH/
-
-# copying customization
-cp -R resources/customizations $PRODUCT_PATH/
-
-# copying importer
-mkdir -p $PRODUCT_PATH/Importer
-cp -R ${IMPORTER_DIR}/${IMPORTER_NAME} $PRODUCT_PATH/Importer
-
-if [ $STANDARD_QT_USED == false ]; then
-#copying custom qt library
- mkdir -p $QT_LIBRARY_DEST_PATH
- copyQtLibrary libQt5Core
- copyQtLibrary libQt5Gui
- copyQtLibrary libQt5Multimedia
- copyQtLibrary libQt5MultimediaWidgets
- copyQtLibrary libQt5Network
- copyQtLibrary libQt5OpenGL
- copyQtLibrary libQt5PrintSupport
- copyQtLibrary libQt5Script
- copyQtLibrary libQt5Svg
- copyQtLibrary libQt5WebKit
- copyQtLibrary libQt5WebKitWidgets
- copyQtLibrary libQt5Xml
- copyQtLibrary libQt5XmlPatterns
-fi
-
-notifyProgress "QT" "Internationalization"
-if [ ! -e $PRODUCT_PATH/i18n ]; then
- mkdir $PRODUCT_PATH/i18n
-fi
-#copying qt gui translation
-cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $PRODUCT_PATH/i18n/
-
-rm -rf install/linux
-mkdir -p install/linux
-
-#Removing .svn directories ...
-cd $PRODUCT_PATH
-find . -name .svn -exec rm -rf {} \; 2> /dev/null
-cd -
-
-notifyProgress "Building ${APPLICATION_NAME}" "Finished to build ${APPLICATION_NAME} building the package"
-
-BASE_WORKING_DIR="packageBuildDir"
-
-#creating package directory
-mkdir $BASE_WORKING_DIR
-mkdir "$BASE_WORKING_DIR/DEBIAN"
-mkdir -p "$BASE_WORKING_DIR/usr/share/applications"
-mkdir -p "$BASE_WORKING_DIR/usr/local"
-
-
-cat > "$BASE_WORKING_DIR/DEBIAN/prerm" << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# 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 3 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, see .
-# ---------------------------------------------------------------------
-
-xdg-desktop-menu uninstall /usr/share/applications/${APPLICATION_NAME}.desktop
-exit 0
-#DEBHELPER#
-EOF
-
-cat > "$BASE_WORKING_DIR/DEBIAN/postinst" << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# 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 3 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, see .
-# ---------------------------------------------------------------------
-
-xdg-desktop-menu install --novendor /usr/share/applications/${APPLICATION_NAME}.desktop
-exit 0
-#DEBHELPER#
-EOF
-
-
-APPLICATION_DIRECTORY_NAME="${APPLICATION_NAME}-$VERSION"
-PACKAGE_DIRECTORY="$BASE_WORKING_DIR/usr/local/$APPLICATION_DIRECTORY_NAME"
-#move build directory to packages directory
-cp -R $PRODUCT_PATH $PACKAGE_DIRECTORY
-
-
-cat > $BASE_WORKING_DIR/usr/local/$APPLICATION_DIRECTORY_NAME/run.sh << EOF
-#!/bin/bash
-# --------------------------------------------------------------------
-# 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 3 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, see .
-# ---------------------------------------------------------------------
-
-env LD_LIBRARY_PATH=/usr/local/$APPLICATION_DIRECTORY_NAME/qtlib:$LD_LIBRARY_PATH /usr/local/$APPLICATION_DIRECTORY_NAME/${APPLICATION_NAME}
-EOF
-
-
-CHANGE_LOG_FILE="$BASE_WORKING_DIR/DEBIAN/changelog-${APPLICATION_NAME}-$VERSION.txt"
-CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control"
-CHANGE_LOG_TEXT="changelog.txt"
-
-echo "${APPLICATION_NAME} ($VERSION) $ARCHITECTURE; urgency=low" > "$CHANGE_LOG_FILE"
-echo >> "$CHANGE_LOG_FILE"
-cat $CHANGE_LOG_TEXT >> "$CHANGE_LOG_FILE"
-echo >> "$CHANGE_LOG_FILE"
-echo "-- Claudio Valerio `date`" >> "$CHANGE_LOG_FILE"
-
-echo "Package: ${APPLICATION_NAME}" > "$CONTROL_FILE"
-echo "Version: $VERSION" >> "$CONTROL_FILE"
-echo "Section: education" >> "$CONTROL_FILE"
-echo "Priority: optional" >> "$CONTROL_FILE"
-echo "Architecture: $ARCHITECTURE" >> "$CONTROL_FILE"
-echo "Essential: no" >> "$CONTROL_FILE"
-echo "Installed-Size: `du -s $PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE"
-echo "Maintainer: ${APPLICATION_NAME} Developers team " >> "$CONTROL_FILE"
-echo "Homepage: http://www.openboard.org" >> "$CONTROL_FILE"
-echo -n "Depends: " >> "$CONTROL_FILE"
-unset tab
-declare -a tab
-let count=0
-for l in `objdump -p $PACKAGE_DIRECTORY/${APPLICATION_NAME} | grep NEEDED | awk '{ print $2 }'`; do
- for lib in `dpkg -S $l | awk -F":" '{ print $1 }'`; do
- #echo $lib
- presence=`echo ${tab[*]} | grep -c "$lib"`;
- if [ "$presence" == "0" ]; then
- tab[$count]=$lib;
- ((count++));
- fi;
- done;
-done;
-
-for ((i=0;i<${#tab[@]};i++)); do
- if [ $i -ne "0" ]; then
- echo -n ", " >> "$CONTROL_FILE"
- fi
- echo -n "${tab[$i]} (>= "`dpkg -p ${tab[$i]} | grep "Version: " | awk '{ print $2 }' | sed -e 's/\([:. 0-9?]*\).*/\1/g' | sed -e 's/\.$//'`") " >> "$CONTROL_FILE"
-done
-echo -n ", onboard" >> "$CONTROL_FILE"
-echo "" >> "$CONTROL_FILE"
-echo "Description: This a interactive white board that uses a free standard format." >> "$CONTROL_FILE"
-
-find $BASE_WORKING_DIR/usr/ -exec md5sum {} > $BASE_WORKING_DIR/DEBIAN/md5sums 2>/dev/null \;
-APPLICATION_SHORTCUT="$BASE_WORKING_DIR/usr/share/applications/${APPLICATION_NAME}.desktop"
-echo "[Desktop Entry]" > $APPLICATION_SHORTCUT
-echo "Version=$VERSION" >> $APPLICATION_SHORTCUT
-echo "Encoding=UTF-8" >> $APPLICATION_SHORTCUT
-echo "Name=${APPLICATION_NAME} ($VERSION)" >> $APPLICATION_SHORTCUT
-echo "GenericName=${APPLICATION_NAME}" >> $APPLICATION_SHORTCUT
-echo "Comment=Logiciel de création de présentations pour tableau numérique interactif (TNI)" >> $APPLICATION_SHORTCUT
-echo "Exec=/usr/local/$APPLICATION_DIRECTORY_NAME/run.sh" >> $APPLICATION_SHORTCUT
-echo "Icon=/usr/local/$APPLICATION_DIRECTORY_NAME/${APPLICATION_NAME}.png" >> $APPLICATION_SHORTCUT
-echo "StartupNotify=true" >> $APPLICATION_SHORTCUT
-echo "Terminal=false" >> $APPLICATION_SHORTCUT
-echo "Type=Application" >> $APPLICATION_SHORTCUT
-echo "Categories=Education;" >> $APPLICATION_SHORTCUT
-cp "resources/images/${APPLICATION_NAME}.png" "$PACKAGE_DIRECTORY/${APPLICATION_NAME}.png"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
-chmod 755 "$BASE_WORKING_DIR/DEBIAN/postinst"
-
-mkdir -p "install/linux"
-DEBIAN_PACKAGE_NAME="${APPLICATION_NAME}_`lsb_release -is`_`lsb_release -rs`_${VERSION}_$ARCHITECTURE.deb"
-
-chown -R root:root $BASE_WORKING_DIR
-dpkg -b "$BASE_WORKING_DIR" "install/linux/$DEBIAN_PACKAGE_NAME"
-
-#clean up mess
-rm -rf $BASE_WORKING_DIR
-
-notifyProgress "${APPLICATION_NAME}" "Package built"
-
-
-exit 0
diff --git a/release_scripts/linux/build.sh b/release_scripts/linux/build.sh
new file mode 100755
index 00000000..d241083d
--- /dev/null
+++ b/release_scripts/linux/build.sh
@@ -0,0 +1,166 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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, see .
+# ---------------------------------------------------------------------
+
+initializeVariables()
+{
+ APPLICATION_NAME="OpenBoard"
+ STANDARD_QT_USED=false
+
+ # Root directory
+ PROJECT_ROOT="`pwd`/../.."
+ BUILD_DIR="$PROJECT_ROOT/build/linux/release"
+ PRODUCT_PATH="$BUILD_DIR/product"
+
+ # Qt installation path. This may vary across machines
+ QT_PATH="/home/craig/dev/qt5/qtbase"
+ PLUGINS_PATH="$QT_PATH/plugins"
+ GUI_TRANSLATIONS_DIRECTORY_PATH="$QT_PATH/translations"
+ QT_LIBRARY_DEST_PATH="$PRODUCT_PATH/qtlib"
+ QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib"
+ QMAKE_PATH="$QT_PATH/bin/qmake"
+ LRELEASES="$QT_PATH/bin/lrelease"
+
+ NOTIFY_CMD=`which notify-send`
+ ZIP_PATH=`which zip`
+
+ if [ -z $ARCHITECTURE ]; then
+ ARCHITECTURE=`uname -m`
+ fi
+}
+
+notifyError(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
+ fi
+ printf "\033[31merror:\033[0m $1\n"
+ exit 1
+}
+
+notifyProgress(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD "$1" "$2"
+ fi
+ printf "\033[32m--> Achieved task:\033[0m $1:\n\t$2\n"
+}
+
+checkDir(){
+ if [ ! -d "$1" ]; then
+ notifyError "Directory not found : $1"
+ fi
+}
+
+checkExecutable(){
+ if [ ! -e "$1" ]; then
+ notifyError "$1 command not found"
+ fi
+}
+
+buildWithStandardQt(){
+ # if both Qt4 and Qt5 are installed, choose Qt5
+ export QT_SELECT=5
+ STANDARD_QT=`which qmake`
+ if [ $? == "0" ]; then
+ QT_VERSION=`$STANDARD_QT --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"`
+ if [ `echo $QT_VERSION | sed -e "s/\.//g"` -gt 480 ]; then
+ notifyProgress "Standard QT" "A recent enough qmake has been found. Using this one instead of custom one"
+ STANDARD_QT_USED=true
+ QMAKE_PATH=$STANDARD_QT
+ LRELEASES=`which lrelease`
+ PLUGINS_PATH="$STANDARD_QT/../plugins"
+ fi
+ fi
+}
+
+buildImporter(){
+ IMPORTER_DIR="../OpenBoard-Importer/"
+ IMPORTER_NAME="OpenBoardImporter"
+ checkDir $IMPORTER_DIR
+ cd ${IMPORTER_DIR}
+
+ rm moc_*
+ rm -rf debug release
+ rm *.o
+
+ notifyProgress "Building importer"
+
+ $QMAKE_PATH ${IMPORTER_NAME}.pro
+ make clean
+ make -j4
+ checkExecutable $IMPORTER_NAME
+ cd -
+}
+
+
+
+
+# Check command-line arguments to force an architecture
+
+for var in "$@"
+do
+ if [ $var == "i686" ]; then
+ ARCHITECTURE="i386"
+ fi
+ if [ $var == "x86_64" ]; then
+ ARCHITECTURE="amd64"
+ fi
+done
+
+
+initializeVariables
+#buildWithStandardQt
+
+cd $PROJECT_ROOT
+
+# check of directories and executables
+checkDir $QT_PATH
+checkDir $PLUGINS_PATH
+checkDir $GUI_TRANSLATIONS_DIRECTORY_PATH
+
+checkExecutable $QMAKE_PATH
+checkExecutable $LRELEASES
+checkExecutable $ZIP_PATH
+
+#build third party application
+buildImporter
+notifyProgress "OpenBoardImporter" "Built Importer"
+
+
+# cleaning the build directory
+rm -rf $BUILD_DIR
+
+# Generate translations
+notifyProgress "QT" "Internationalization"
+$LRELEASES ${APPLICATION_NAME}.pro
+cd $GUI_TRANSLATIONS_DIRECTORY_PATH
+$LRELEASES translations.pro
+cd -
+
+notifyProgress "${APPLICATION_NAME}" "Building ${APPLICATION_NAME}"
+
+if [ "$ARCHITECTURE" == "amd64" ]; then
+ $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++-64
+else
+ $QMAKE_PATH ${APPLICATION_NAME}.pro -spec linux-g++
+fi
+
+
+make -j4 release-install
+
+if [ ! -e "$PRODUCT_PATH/${APPLICATION_NAME}" ]; then
+ notifyError "${APPLICATION_NAME} build failed"
+else
+ notifyProgress "Finished building OpenBoard. You may now run the packaging script."
+fi
diff --git a/release_scripts/linux/debian_package_files/postinst b/release_scripts/linux/debian_package_files/postinst
new file mode 100644
index 00000000..f3152d3b
--- /dev/null
+++ b/release_scripts/linux/debian_package_files/postinst
@@ -0,0 +1,19 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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 3 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, see .
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu install --novendor /usr/share/applications/openboard.desktop
+ln -s /opt/openboard/run.sh /usr/bin/openboard
+exit 0
diff --git a/release_scripts/linux/debian_package_files/prerm b/release_scripts/linux/debian_package_files/prerm
new file mode 100644
index 00000000..5b1612c1
--- /dev/null
+++ b/release_scripts/linux/debian_package_files/prerm
@@ -0,0 +1,19 @@
+#!/bin/bash
+# --------------------------------------------------------------------
+# 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 3 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, see .
+# ---------------------------------------------------------------------
+
+xdg-desktop-menu uninstall /usr/share/applications/openboard.desktop
+rm -f /usr/bin/openboard
+exit 0
diff --git a/release_scripts/linux/package.sh b/release_scripts/linux/package.sh
new file mode 100755
index 00000000..f4b9311a
--- /dev/null
+++ b/release_scripts/linux/package.sh
@@ -0,0 +1,270 @@
+#!/bin/bash
+# ----------------------------------------------------------------------------
+# Packaging script for OpenBoard, for debian-compatible distributions.
+#
+# This should be run after `build.sh`.
+# ----------------------------------------------------------------------------
+
+
+# ----------------------------------------------------------------------------
+# Function definitions
+# ----------------------------------------------------------------------------
+checkUser()
+{
+ if [ `id -u` -ne 0 ]; then
+ echo "Please run the script as root"
+ exit 1
+ fi
+}
+
+checkBuild()
+{
+ if [ -z "$ARCHITECTURE" ]; then
+ echo "Make sure you have built the software first using ./build.sh"
+ exit 1
+ fi
+}
+
+notifyError(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD -t 0 -i "/usr/share/icons/oxygen/64x64/status/dialog-error.png" "$1"
+ fi
+ printf "\033[31merror:\033[0m $1\n"
+ exit 1
+}
+
+notifyProgress(){
+ if [ -e "$NOTIFY_CMD" ]; then
+ $NOTIFY_CMD "$1" "$2"
+ fi
+ printf "\033[32m--> \033[0m $1:\n\t$2\n"
+}
+
+copyQtLibrary(){
+ if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.? "$QT_LIBRARY_DEST_PATH/"
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.? "$QT_LIBRARY_DEST_PATH/"
+ cp -P $QT_LIBRARY_SOURCE_PATH/$1.so.?.?.? "$QT_LIBRARY_DEST_PATH/"
+ strip $QT_LIBRARY_DEST_PATH/$1.so.?.?.?
+ else
+ notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH"
+ fi
+}
+
+copyQtPlugin(){
+ if ls "$QT_PLUGINS_SOURCE_PATH/$1" &> /dev/null; then
+ cp -r $QT_PLUGINS_SOURCE_PATH/$1 $QT_PLUGINS_DEST_PATH/
+ strip $QT_PLUGINS_DEST_PATH/$1/*
+
+ else
+ notifyError "$1 plugin not found in path: $QT_PLUGINS_SOURCE_PATH"
+ fi
+}
+
+initializeVariables()
+{
+ # This script's path
+ SCRIPT_PATH=`pwd`
+
+ PROJECT_ROOT="$SCRIPT_PATH/../.."
+
+ # Where the application was built (see build.sh)
+ BUILD_DIR="$PROJECT_ROOT/build/linux/release"
+ PRODUCT_PATH="$BUILD_DIR/product"
+ IMPORTER_DIR="$PROJECT_ROOT/../OpenBoard-Importer/"
+ IMPORTER_NAME="OpenBoardImporter"
+
+ # Where the package is built to
+ PACKAGE_BUILD_DIR="$PROJECT_ROOT/install"
+
+ # Temporary folder, where we put all the files that will be built into the
+ # package
+ BASE_WORKING_DIR="debianPackage"
+
+ APPLICATION_NAME="OpenBoard"
+ APPLICATION_CODE="openboard"
+ APPLICATION_PATH="/opt"
+
+ # Where most of the files end up in the package
+ PACKAGE_DIRECTORY=$BASE_WORKING_DIR/$APPLICATION_PATH/$APPLICATION_CODE
+ QT_PLUGINS_DEST_PATH="$PACKAGE_DIRECTORY/plugins"
+ QT_LIBRARY_DEST_PATH="$PACKAGE_DIRECTORY/qtlib"
+
+ DESKTOP_FILE_PATH="$BASE_WORKING_DIR/usr/share/applications"
+ APPLICATION_SHORTCUT="$DESKTOP_FILE_PATH/${APPLICATION_CODE}.desktop"
+
+ DESCRIPTION="Interactive white board software"
+ VERSION=`cat $BUILD_DIR/version`
+ ARCHITECTURE=`cat buildContext`
+
+ # Qt installation path. This may vary across machines
+ QT_PATH="/home/craig/dev/qt5/qtbase"
+ QT_PLUGINS_SOURCE_PATH="$QT_PATH/plugins"
+ GUI_TRANSLATIONS_DIRECTORY_PATH="$QT_PATH/translations"
+ QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib"
+
+ NOTIFY_CMD=`which notify-send`
+ ZIP_PATH=`which zip`
+}
+
+# ----------------------------------------------------------------------------
+# Script
+# ----------------------------------------------------------------------------
+
+initializeVariables
+
+checkBuild
+checkUser
+
+cd $PROJECT_ROOT
+
+rm -rf $PACKAGE_DIRECTORY
+mkdir -p $PACKAGE_DIRECTORY
+
+rm -rf $PACKAGE_BUILD_DIR
+
+
+notifyProgress "Copying product directory and resources"
+cp -R $PRODUCT_PATH/* $PACKAGE_DIRECTORY
+chown -R root:root $PACKAGE_DIRECTORY
+
+cp resources/linux/run.sh $PACKAGE_DIRECTORY
+chmod a+x $PACKAGE_DIRECTORY/run.sh
+
+cp -R resources/customizations $PACKAGE_DIRECTORY/
+cp -R resources/linux/qtlinux/* $PACKAGE_DIRECTORY/
+
+notifyProgress "Copying importer"
+mkdir -p $PACKAGE_DIRECTORY/Importer
+cp -R "$IMPORTER_DIR/$IMPORTER_NAME" "$PACKAGE_DIRECTORY/Importer"
+
+notifyProgress "Stripping importer and main executable"
+strip $PACKAGE_DIRECTORY/$APPLICATION_NAME
+strip $PACKAGE_DIRECTORY/Importer/$IMPORTER_NAME
+
+notifyProgress "Copying and stripping Qt plugins"
+mkdir -p $QT_PLUGINS_DEST_PATH
+copyQtPlugin mediaservice
+copyQtPlugin audio
+copyQtPlugin generic
+copyQtPlugin platforms
+copyQtPlugin printsupport
+copyQtPlugin xcbglintegrations
+
+notifyProgress "Copying and stripping Qt libraries"
+mkdir -p $QT_LIBRARY_DEST_PATH
+copyQtLibrary libQt5Core
+copyQtLibrary libQt5Gui
+copyQtLibrary libQt5Multimedia
+copyQtLibrary libQt5MultimediaWidgets
+copyQtLibrary libQt5Network
+copyQtLibrary libQt5OpenGL
+copyQtLibrary libQt5PrintSupport
+copyQtLibrary libQt5Script
+copyQtLibrary libQt5Svg
+copyQtLibrary libQt5WebChannel
+copyQtLibrary libQt5WebKit
+copyQtLibrary libQt5WebKitWidgets
+copyQtLibrary libQt5Widgets
+copyQtLibrary libQt5XcbQpa
+copyQtLibrary libQt5Xml
+copyQtLibrary libQt5XmlPatterns
+
+notifyProgress "Copying Qt translations"
+mkdir -p $PACKAGE_DIRECTORY/i18n
+cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $PACKAGE_DIRECTORY/i18n/
+
+
+# ----------------------------------------------------------------------------
+# DEBIAN directory of package (control, md5sums, postinst etc)
+# ----------------------------------------------------------------------------
+mkdir -p "$BASE_WORKING_DIR/DEBIAN"
+
+# Copy prerm, postinst scripts
+cp -r "$SCRIPT_PATH/debian_package_files/prerm" "$BASE_WORKING_DIR/DEBIAN/"
+cp -r "$SCRIPT_PATH/debian_package_files/postinst" "$BASE_WORKING_DIR/DEBIAN/"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm"
+chmod 755 "$BASE_WORKING_DIR/DEBIAN/postinst"
+
+# Generate md5 sums of everything in the application path (e.g /opt) and the desktop entry
+find $BASE_WORKING_DIR/$APPLICATION_PATH/ -exec md5sum {} > $BASE_WORKING_DIR/DEBIAN/md5sums 2>/dev/null \;
+find $DESKTOP_FILE_PATH/ -exec md5sum {} > $BASE_WORKING_DIR/DEBIAN/md5sums 2>/dev/null \;
+
+# Generate control file
+CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control"
+
+echo "Package: ${APPLICATION_NAME}" > "$CONTROL_FILE"
+echo "Version: $VERSION" >> "$CONTROL_FILE"
+echo "Section: education" >> "$CONTROL_FILE"
+echo "Priority: optional" >> "$CONTROL_FILE"
+echo "Architecture: $ARCHITECTURE" >> "$CONTROL_FILE"
+echo "Essential: no" >> "$CONTROL_FILE"
+echo "Installed-Size: `du -s $PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE"
+echo "Maintainer: ${APPLICATION_NAME} Developers team " >> "$CONTROL_FILE"
+echo "Homepage: https://github.com/DIP-SEM/OpenBoard" >> "$CONTROL_FILE"
+
+# Generate dependency list
+echo -n "Depends: " >> "$CONTROL_FILE"
+echo -n "libpaper1, zlib1g (>= 1.2.8), libssl1.0.0 (>= 1.0.1), libx11-6, libgl1-mesa-glx, libc6 (>= 2.19), libstdc++6 (>= 4.9.2), libgomp1, libgcc1 (>= 4.9.2), onboard" >> "$CONTROL_FILE"
+
+#unset tab
+#declare -a tab
+#let count=0
+#for l in `objdump -p $PACKAGE_DIRECTORY/${APPLICATION_NAME} | grep NEEDED | awk '{ print $2 }'`; do
+# for lib in `dpkg -S $l | awk -F":" '{ print $1 }'`; do
+# echo $lib
+# presence=`echo ${tab[*]} | grep -c "$lib"`;
+# if [ "$presence" == "0" ]; then
+# tab[$count]=$lib;
+# ((count++));
+# fi;
+# done;
+#done;
+
+#for ((i=0;i<${#tab[@]};i++)); do
+# if [ $i -ne "0" ]; then
+# echo -n ", " >> "$CONTROL_FILE"
+# fi
+# echo -n "${tab[$i]} (>= "`dpkg -p ${tab[$i]} | grep "Version: " | awk '{ print $2 }' | sed -e 's/\([:. 0-9?]*\).*/\1/g' | sed -e 's/\.$//'`") " >> "$CONTROL_FILE"
+#done
+#echo -n ", onboard" >> "$CONTROL_FILE"
+
+echo "" >> "$CONTROL_FILE"
+echo "Description: $DESCRIPTION" >> "$CONTROL_FILE"
+
+# ----------------------------------------------------------------------------
+# .desktop file
+# ----------------------------------------------------------------------------
+mkdir -p $DESKTOP_FILE_PATH
+echo "[Desktop Entry]" > $APPLICATION_SHORTCUT
+echo "Version=$VERSION" >> $APPLICATION_SHORTCUT
+echo "Encoding=UTF-8" >> $APPLICATION_SHORTCUT
+echo "Name=${APPLICATION_NAME} ($VERSION)" >> $APPLICATION_SHORTCUT
+echo "Comment=$DESCRIPTION" >> $APPLICATION_SHORTCUT
+#echo "Exec=$APPLICATION_PATH/$APPLICATION_CODE/run.sh" >> $APPLICATION_SHORTCUT
+echo "Exec=$APPLICATION_CODE %f" >> $APPLICATION_SHORTCUT
+echo "Icon=$APPLICATION_PATH/$APPLICATION_CODE/${APPLICATION_NAME}.png" >> $APPLICATION_SHORTCUT
+echo "StartupNotify=true" >> $APPLICATION_SHORTCUT
+echo "Terminal=false" >> $APPLICATION_SHORTCUT
+echo "Type=Application" >> $APPLICATION_SHORTCUT
+echo "Categories=Education;" >> $APPLICATION_SHORTCUT
+cp "resources/images/${APPLICATION_NAME}.png" "$PACKAGE_DIRECTORY/${APPLICATION_NAME}.png"
+
+
+
+# ----------------------------------------------------------------------------
+# Building the package
+# ----------------------------------------------------------------------------
+notifyProgress "Building package"
+mkdir -p "$PACKAGE_BUILD_DIR/linux"
+DEBIAN_PACKAGE_NAME="${APPLICATION_NAME}_`lsb_release -is`_`lsb_release -rs`_${VERSION}_$ARCHITECTURE.deb"
+
+dpkg -b "$BASE_WORKING_DIR" "$PACKAGE_BUILD_DIR/linux/$DEBIAN_PACKAGE_NAME"
+
+#clean up mess
+#rm -rf $BASE_WORKING_DIR
+
+notifyProgress "${APPLICATION_NAME}" "Package built"
+
+
+exit 0
diff --git a/OpenBoard.packproj b/release_scripts/osx/OpenBoard.packproj
similarity index 100%
rename from OpenBoard.packproj
rename to release_scripts/osx/OpenBoard.packproj
diff --git a/release.macx.sh b/release_scripts/osx/release.macx.sh
similarity index 100%
rename from release.macx.sh
rename to release_scripts/osx/release.macx.sh
diff --git a/OpenBoard.iss b/release_scripts/windows/OpenBoard.iss
similarity index 100%
rename from OpenBoard.iss
rename to release_scripts/windows/OpenBoard.iss
diff --git a/release.win7.vc9.bat b/release_scripts/windows/release.win7.vc9.bat
similarity index 100%
rename from release.win7.vc9.bat
rename to release_scripts/windows/release.win7.vc9.bat
diff --git a/resources/linux/run.sh b/resources/linux/run.sh
index a9c1a4a5..b84a92fd 100644
--- a/resources/linux/run.sh
+++ b/resources/linux/run.sh
@@ -14,4 +14,15 @@
# along with this program. If not, see .
# ---------------------------------------------------------------------
-env LD_LIBRARY_PATH=$PWD/qtlib:$PWD/plugins/cffadaptor:$LD_LIBRARY_PATH ./Open-Sankore
+# Directory of the script
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do
+ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+ SOURCE="$(readlink "$SOURCE")"
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+# Add custom libraries to LD_LIBRARY_PATH
+# TODO: Remomve the need for this
+env LD_LIBRARY_PATH=$DIR/qtlib:$LD_LIBRARY_PATH $DIR/OpenBoard