From 16388311763c87c08157d3cbd7bed54e7d7dd39c Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 8 Dec 2011 16:32:43 +0100 Subject: [PATCH] first version of debian package builder script --- buildDebianPackage | 263 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100755 buildDebianPackage diff --git a/buildDebianPackage b/buildDebianPackage new file mode 100755 index 00000000..ca709d01 --- /dev/null +++ b/buildDebianPackage @@ -0,0 +1,263 @@ +#!/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 . +# --------------------------------------------------------------------- + + +notifyError(){ + notify-send -t 0 "Error occoured" "An error occours during the sankore build:\n\t$1" -i /usr/share/icons/oxygen/64x64/status/dialog-error.png + exit 1 +} + +rm -rf "build/linux/release" +rm -rf install + +QT_PATH="/usr/local/Trolltech/Qt-4.7.3" +PLUGINS_PATH="$QT_PATH/plugins" +QMAKE_PATH="$QT_PATH/bin/qmake" + +if [ ! -e "$QMAKE_PATH" ]; then + notifyError "qmake command not found at $QMAKE_PATH" +fi + +if [ ! -e "$PLUGINS_PATH" ]; then + notifyError "plugins path not found at $PLUGINS_PATH" +fi + +notify-send "Open-Sankore" "Building Open-Sankore ..." +$QMAKE_PATH -spec linux-g++ + +make -j 4 release-install + + +notify-send "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 + echo creating a tag with the version $VERSION +# git tag -a "v$VERSION" -m "Generating setup for v$VERSION" +# git push origin --tags + fi +fi + +cp resources/linux/run.sh build/linux/release/product +chmod +x build/linux/release/product/run.sh + +cp -R resources/linux/qtlinux/* build/linux/release/product/ + +notify-send "QT" "Coping plugins and library ..." +cp -R $PLUGINS_PATH build/linux/release/product/ + +#copying custom qt library +QT_LIBRARY_DEST_PATH="build/linux/release/product/qtlib" +mkdir $QT_LIBRARY_DEST_PATH +QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib" + +copyQtLibrary(){ + if [ ! -e "$QT_LIBRARY_SOURCE_PATH/$1.so.4.7.3" ]; then + notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH" + fi + cp "$QT_LIBRARY_SOURCE_PATH/$1.so.4" "$QT_LIBRARY_DEST_PATH/" + cp "$QT_LIBRARY_SOURCE_PATH/$1.so.4.7.3" "$QT_LIBRARY_DEST_PATH/" +} + +copyQtLibrary libQtWebKit +copyQtLibrary libQtDBus +copyQtLibrary libQtScript +copyQtLibrary libQtSvg +copyQtLibrary libQtXmlPatterns +copyQtLibrary libQtNetwork +copyQtLibrary libQtXml +copyQtLibrary libQtGui +copyQtLibrary libQtCore + +if [ ! -e "$QT_LIBRARY_SOURCE_PATH/libphonon.so.4.4.0" ]; then + notifyError "phonon library not found in path: $QT_LIBRARY_SOURCE_PATH" +else + cp "$QT_LIBRARY_SOURCE_PATH/libphonon.so.4" "$QT_LIBRARY_DEST_PATH/" + cp "$QT_LIBRARY_SOURCE_PATH/libphonon.so.4.4.0" "$QT_LIBRARY_DEST_PATH/" +fi + +rm -rf install/linux +mkdir -p install/linux + +#mv build/linux/release/product build/linux/release/Sankore.$VERSION +cd build/linux/release/product + +#Removing .svn directories ... +find . -name .svn -exec rm -rf {} \; 2> /dev/null +#tar cvzf ../../../install/linux/Sankore\ 3.1.tar.gz Sankore_3.1.$VERSION -C . + +cd - +notify-send "Building Sankore" "Finished to build Sankore 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/Open-Sankore.desktop +exit 0 +#DEBHELPER# +EOF + +cat > "$BASE_WORKING_DIR/DEBIAN/postint" << 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/Open-Sankore.desktop +exit 0 +#DEBHELPER# +EOF + + +SANKORE_DIRECTORY_NAME="Open-Sankore-$VERSION" +SANKORE_PACKAGE_DIRECTORY="$BASE_WORKING_DIR/usr/local/$SANKORE_DIRECTORY_NAME" +#move sankore build directory to packages directory +cp -R build/linux/release/product $SANKORE_PACKAGE_DIRECTORY + + +cat > $BASE_WORKING_DIR/usr/local/$SANKORE_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/$SANKORE_DIRECTORY_NAME/qtlib:$LD_LIBRARY_PATH /usr/local/$SANKORE_DIRECTORY_NAME/Open-Sankore +EOF + + +CHANGE_LOG_FILE="$BASE_WORKING_DIR/DEBIAN/changelog-sankore-$VERSION.txt" +CONTROL_FILE="$BASE_WORKING_DIR/DEBIAN/control" +CHANGE_LOG_TEXT="changelog.txt" + +ARCHITECTURE=`uname -i` + +echo "Open-Sankore ($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: open-sankore" > "$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 $SANKORE_PACKAGE_DIRECTORY | awk '{ print $1 }'`" >> "$CONTROL_FILE" +echo "Maintainer: Claudio VALERIO " >> "$CONTROL_FILE" +echo "Homepage: http://www.open-sankore.org" >> "$CONTROL_FILE" +echo -n "Depends: " >> "$CONTROL_FILE" +unset tab +declare -a tab +let count=0 +for l in `objdump -p $SANKORE_PACKAGE_DIRECTORY/Open-Sankore | 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 }'`") " >> "$CONTROL_FILE" +done +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 \; +SANKORE_SHORTCUT="$BASE_WORKING_DIR/usr/share/applications/Open-Sankore.desktop" +echo "[Desktop Entry]" > $SANKORE_SHORTCUT +echo "Version=$VERSION" >> $SANKORE_SHORTCUT +echo "Encoding=UTF-8" >> $SANKORE_SHORTCUT +echo "Name=Open-Sankore ($VERSION)" >> $SANKORE_SHORTCUT +echo "GenericName=Open-Sankore" >> $SANKORE_SHORTCUT +echo "Comment=Logiciel de création de présentations pour tableau numérique interactif (TNI)" >> $SANKORE_SHORTCUT +echo "Exec=/usr/local/$SANKORE_DIRECTORY_NAME/run.sh" >> $SANKORE_SHORTCUT +echo "Icon=/usr/local/$SANKORE_DIRECTORY_NAME/sankore.png" >> $SANKORE_SHORTCUT +echo "StartupNotify=true" >> $SANKORE_SHORTCUT +echo "Terminal=false" >> $SANKORE_SHORTCUT +echo "Type=Application" >> $SANKORE_SHORTCUT +echo "Categories=Education" >> $SANKORE_SHORTCUT +echo "Name[fr_FR]=Open-Sankore ($VERSION)" >> $SANKORE_SHORTCUT +cp "resources/images/uniboard.png" "$SANKORE_PACKAGE_DIRECTORY/sankore.png" +chmod 755 "$BASE_WORKING_DIR/DEBIAN" +chmod 755 "$BASE_WORKING_DIR/DEBIAN/prerm" +chmod 755 "$BASE_WORKING_DIR/DEBIAN/postint" + +mkdir -p "install/linux" + +sudo chown -R root:root $BASE_WORKING_DIR +dpkg -b "$BASE_WORKING_DIR" install/linux/Open-Sankore_${VERSION}_$ARCHITECTURE.deb +notify-send "Open-Sankore" "Package built" + +#clean up mess +#sudo rm -rf $BASE_WORKING_DIR +