#!/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 . # --------------------------------------------------------------------- ####################################################################### # functions # ####################################################################### 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 } checkExecutable(){ if [ ! -x $1 ]; then notify-send "$1 executable not found" fi } checkDirectory(){ if [ ! -d $1 ]; then notify-send "$1 directory not found" fi } ####################################################################### # path definition # ####################################################################### QT_PATH="/usr/local/Trolltech/Qt-4.7.3" QT_PLUGINS_PATH="$QT_PATH/plugins" RELEASE_DIR=build/linux/release BUILD_DIR=$RELEASE_DIR/product GUI_TRANSLATIONS_DIRECTORY_PATH="../Qt-sankore3.1/translations" QT_LIBRARY_SOURCE_PATH="$QT_PATH/lib" SANKORE_SRC_PLUGINS_PATH="plugins" SANKORE_DST_PLUGINS_PATH=build/linux/release/product/plugins CFF_ADAPTOR_SRC_PLUGIN_PATH=$SANKORE_SRC_PLUGINS_PATH/cffadaptor/build/linux/release/lib QMAKE_PATH="$QT_PATH/bin/qmake" LRELEASE="../Qt-sankore3.1/bin/lrelease" #LRELEASE="/usr/local/Trolltech/Qt-4.7.3/bin/lrelease" ARCHITECTURE=`uname -m` ####################################################################### # initials checks # ####################################################################### checkExecutable $QMAKE_PATH checkExecutable $LRELEASE checkDirectory $GUI_TRANSLATIONS_DIRECTORY_PATH checkDirectory $QT_PLUGINS_PATH checkDirectory $QT_LIBRARY_SOURCE_PATH checkDirectory $CFF_ADAPTOR_PLUGIN_PATH ####################################################################### # cleaning # ####################################################################### #rm -rf $RELEASE_DIR ####################################################################### # Internalization # ####################################################################### notify-send "QT" "Internalization ..." cd $GUI_TRANSLATIONS_DIRECTORY_PATH $LRELEASE translations.pro cd - if [ ! -e $BUILD_DIR/i18n ]; then mkdir -p $BUILD_DIR/i18n fi #copying qt gui translation cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm $BUILD_DIR/i18n/ $LRELEASE Sankore_3.1.pro ####################################################################### # building # ####################################################################### notify-send "Open-Sankore" "Building Open-Sankore ..." if [ "$ARCHITECTURE" == "x86_64" ]; then $QMAKE_PATH -spec linux-g++-64 else $QMAKE_PATH -spec linux-g++ fi checkDirectory $BUILD_DIR make -j 4 release-install ####################################################################### # github tag # ####################################################################### notify-send "Git Hub" "Make a tag of the delivered version" VERSION=`cat $RELEASE_DIR/version` if [ ! -f $RELEASE_DIR/version ]; then notifyError "version not found" exit 1 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 ####################################################################### # coping resources # ####################################################################### cp resources/linux/run.sh $BUILD_DIR chmod +x $BUILD_DIR/run.sh cp -R resources/linux/qtlinux/* $BUILD_DIR cp -R resources/customizations $BUILD_DIR notify-send "Sankore" "Copying plugins..." mkdir "$SANKORE_DST_PLUGINS_PATH" mkdir "$SANKORE_DST_PLUGINS_PATH/cffadaptor" cp -R $CFF_ADAPTOR_SRC_PLUGIN_PATH/*.so* "$SANKORE_DST_PLUGINS_PATH/cffadaptor" notify-send "QT" "Coping plugins and library ..." cp -R $QT_PLUGINS_PATH $BUILD_DIR #copying custom qt library QT_LIBRARY_DEST_PATH="$BUILD_DIR/qtlib" mkdir $QT_LIBRARY_DEST_PATH copyQtLibrary(){ if [ ! -e "$QT_LIBRARY_SOURCE_PATH/$1.so.4" ]; 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/ } copyQtLibrary libphonon copyQtLibrary libQtWebKit copyQtLibrary libQtDBus copyQtLibrary libQtScript copyQtLibrary libQtSvg copyQtLibrary libQtXmlPatterns copyQtLibrary libQtNetwork copyQtLibrary libQtXml copyQtLibrary libQtGui copyQtLibrary libQtCore # uncomment for Qt 4.8 #copyQtLibrary libQtOpenGL ####################################################################### # Removing unwanted files # ####################################################################### cd $BUILD_DIR #Removing .svn directories ... find . -name .svn -exec rm -rf {} \; 2> /dev/null cd - notify-send "Building Sankore" "Finished to build Sankore building the package" ####################################################################### # build debian # ####################################################################### 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_DIR $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" if [ "$ARCHITECTURE" == "x86_64" ]; then ARCHITECTURE="amd64" fi if [ "$ARCHITECTURE" == "i686" ]; then ARCHITECTURE="i386" fi 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: Open-Sankore Developers team " >> "$CONTROL_FILE" echo "Homepage: http://dev.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; #additional dependencies tab[$count]="gtk2-engines-pixbuf" ((count++)) tab[$count]="ttf-mscorefonts-installer" ((count++)) 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 creation de presentations pour tableau numerique 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" rm install/linux/Open-Sankore_*.deb fakeroot 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 fakeroot rm -rf $BASE_WORKING_DIR ####################################################################### # tar.gz # ####################################################################### echo `pwd` cp -R $RELEASE_DIR/product $RELEASE_DIR/Open-Sankore.$VERSION cd $RELEASE_DIR rm ../../../install/linux/Open-Sankore.tar.gz tar cvzf ../../../install/linux/Open-Sankore.tar.gz Open-Sankore.$VERSION -C . notify-send "Open-Sankore" "tar.gz Build done"