parent
2d5f8ba8db
commit
73cbdb8fb3
@ -0,0 +1,313 @@ |
|||||||
|
#!/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 <http://www.gnu.org/licenses/>. |
||||||
|
# --------------------------------------------------------------------- |
||||||
|
|
||||||
|
|
||||||
|
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 |
||||||
|
} |
||||||
|
|
||||||
|
MAKE_TAG=true |
||||||
|
|
||||||
|
if [ $# == "1" ]; then |
||||||
|
if [ $1 == "notag" ]; then |
||||||
|
MAKE_TAG=false; |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
ARCHITECTURE=`uname -m` |
||||||
|
|
||||||
|
rm -rf "build/linux/release" |
||||||
|
rm -rf install |
||||||
|
|
||||||
|
QMAKE_PATH=`which qmake-qt4` |
||||||
|
if [ $? == "0" ]; then |
||||||
|
QT_VERSION=`$QMAKE_PATH --version | grep -i "Using Qt version" | sed -e "s/Using Qt version \(.*\) in.*/\1/"` |
||||||
|
if [ `echo $QT_VERSION | sed -e "s/\.//g"` -lt 480 ]; then |
||||||
|
notifyError "Qt library not recent enough" |
||||||
|
fi |
||||||
|
else |
||||||
|
notifyError "qmake-qt4 not found" |
||||||
|
fi |
||||||
|
|
||||||
|
LRELEASES=`which lrelease` |
||||||
|
QT_PATH="/usr/lib/$ARCHITECTURE-linux-gnu" |
||||||
|
PLUGINS_PATH="$QT_PATH/qt4/plugins" |
||||||
|
GUI_TRANSLATIONS_DIRECTORY_PATH="../Qt-4.8/translations" |
||||||
|
|
||||||
|
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 ..." |
||||||
|
|
||||||
|
if [ "$ARCHITECTURE" == "x86_64" ]; then |
||||||
|
$QMAKE_PATH Sankore_3.1.pro -spec linux-g++-64 |
||||||
|
else |
||||||
|
$QMAKE_PATH Sankore_3.1.pro -spec linux-g++ |
||||||
|
fi |
||||||
|
|
||||||
|
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 |
||||||
|
if [ $MAKE_TAG == true ]; then |
||||||
|
git tag -a "v$VERSION" -m "Generating setup for v$VERSION" |
||||||
|
git push origin --tags |
||||||
|
fi |
||||||
|
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" |
||||||
|
|
||||||
|
copyQtLibrary(){ |
||||||
|
if ls "$QT_LIBRARY_SOURCE_PATH/$1.so" &> /dev/null; then |
||||||
|
cp "$QT_LIBRARY_SOURCE_PATH/$1.so.?" "$QT_LIBRARY_DEST_PATH/" |
||||||
|
cp "$QT_LIBRARY_SOURCE_PATH/$1.so.?.?.?" "$QT_LIBRARY_DEST_PATH/" |
||||||
|
else |
||||||
|
notifyError "$1 library not found in path: $QT_LIBRARY_SOURCE_PATH" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
copyQtLibrary libQtDBus |
||||||
|
copyQtLibrary libQtScript |
||||||
|
copyQtLibrary libQtSvg |
||||||
|
copyQtLibrary libQtXmlPatterns |
||||||
|
copyQtLibrary libQtNetwork |
||||||
|
copyQtLibrary libQtXml |
||||||
|
copyQtLibrary libQtGui |
||||||
|
copyQtLibrary libQtCore |
||||||
|
copyQtLibrary libphonon |
||||||
|
copyQtLibrary libQtWebKit |
||||||
|
|
||||||
|
notify-send "QT" "Internalization ..." |
||||||
|
if [ ! -e $GUI_TRANSLATIONS_DIRECTORY_PATH ]; then |
||||||
|
notifyError "gui translations pro file not found at: $GUI_TRANSLATIONS_DIRECTORY_PATH" |
||||||
|
else |
||||||
|
cd $GUI_TRANSLATIONS_DIRECTORY_PATH |
||||||
|
$LRELEASES translations.pro |
||||||
|
cd - |
||||||
|
if [ ! -e build/linux/release/product/i18n ]; then |
||||||
|
mkdir build/linux/release/product/i18n |
||||||
|
fi |
||||||
|
#copying qt gui translation |
||||||
|
cp $GUI_TRANSLATIONS_DIRECTORY_PATH/qt_??.qm build/linux/release/product/i18n/ |
||||||
|
fi |
||||||
|
|
||||||
|
$LRELEASES Sankore_3.1.pro |
||||||
|
cp resources/i18n/*.qm build/linux/release/product/i18n/ |
||||||
|
|
||||||
|
rm -rf install/linux |
||||||
|
mkdir -p install/linux |
||||||
|
|
||||||
|
cd build/linux/release/product |
||||||
|
|
||||||
|
#Removing .svn directories ... |
||||||
|
find . -name .svn -exec rm -rf {} \; 2> /dev/null |
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>. |
||||||
|
# --------------------------------------------------------------------- |
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>. |
||||||
|
# --------------------------------------------------------------------- |
||||||
|
|
||||||
|
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 <http://www.gnu.org/licenses/>. |
||||||
|
# --------------------------------------------------------------------- |
||||||
|
|
||||||
|
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 <claudio@open-sankore.org> `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-Sankoré Developers team <dev@open-sankore.org>" >> "$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 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" |
||||||
|
|
||||||
|
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 |
||||||
|
|
Loading…
Reference in new issue