#!/bin/bash # This is LibreOffice build script of xzm module for Porteus # Version 2019-05-18 (2) # Copyright 2019 Blaze admin at ublaze.ru # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Root check if [ `whoami` != "root" ]; then echo -e "\nOnly root can run this.\n" exit 1 fi PRGNAM=${PRGNAM:-LibreOffice} VERSION=${VERSION:-`curl -sv http://download.documentfoundation.org/libreoffice/stable/ 2>/dev/null | grep [0-9].[0-9].[0-9] | sort -u | tail -1 | cut -d'"' -f4 | tr -d /`} BUILD=${BUILD:-1} TAG=${TAG:-bl} LOLANG=${LOLANG:-$1} BOLD=${BOLD:-"\e[1m"} CYAN=${CYAN:-"\e[96m"} GREEN=${GREEN:-"\e[92m"} RED=${RED:-"\e[31m"} RESET=${RESET:-"\e[0m"} if [ -z "$LOLANG" ]; then echo -e "\nUsage: ${BOLD}update-libreoffice ${CYAN}your-language${RESET}\nFor example: ${BOLD}update-libreoffice ${CYAN}en-US${RESET}\n" # How to check supported languages of LO: # curl -sv http://download.documentfoundation.org/libreoffice/stable/6.2.3/rpm/x86_64/ 2>/dev/null | awk '/pack/' | cut -d'_' -f7 | cut -d'.' -f1 | sort -u | tr '\n' ' ' | fmt echo -e "Supported languages:\naf am ar as ast be bg bn bn-IN bo br brx bs ca ca-valencia cs cy da de dgo dsb dz el en-GB en-US en-ZA eo es et eu fa fi fr fy ga gd gl gu gug he hi hr hsb hu id is it ja ka kab kk km kmr-Latn kn ko kok ks lb lo lt lv mai mk ml mn mni mr my nb ne nl nn nr nso oc om or pa-IN pl pt pt-BR ro ru rw sa-IN sat sd si sid sk sl sq sr sr-Latn ss st sv sw-TZ ta te tg th tn tr ts tt ug uk uz ve vec vi xh zh-CN zh-TW zu\n" exit 1 fi # Check if LO installed in the system if [ -d "/opt/libreoffice*/program" ]; then MYVER=${MYVER:-`/opt/libreoffice*/program/soffice --version | awk '{print $2}' | sed 's/..$//'`} fi if [ "$MYVER" == "$VERSION" ]; then echo -e "You have the latest ${GREEN}$MYVER${RESET} version of $PRGNAM" exit else read -p "$(echo -e Do you want to build $PRGNAM ${GREEN}$VERSION${RESET} xzm module? [y/n])" -n 1 -r -s && echo if [[ $REPLY =~ ^[Yy]$ ]]; then echo "We continue the execution of the $0 script" &>/dev/null else exit fi fi if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION if [[ "$ARCH" == i686 || "$ARCH" == i586 ]]; then # Download LibreOffice echo -e "\nDownloading LibreOffice" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/x86/LibreOffice\_"$VERSION"'_Linux_x86_'rpm.tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86_'rpm.tar.gz rm -f $TMP/LibreOffice_"$VERSION".*'_Linux_x86_'rpm/RPMS/libreoffice?.?-dict-{es,fr}-*.rpm mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86_'rpm/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86_'rpm rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86_'rpm.tar.gz # Download helppack echo -e "\nDownloading ${BOLD}${CYAN}$LOLANG${RESET} helppack" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/x86/LibreOffice\_"$VERSION"'_Linux_x86_rpm_helppack_'"$LOLANG".tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86_rpm_helppack_'"$LOLANG".tar.gz mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86_rpm_helppack_'"$LOLANG"/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86_rpm_helppack_'"$LOLANG" rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86_rpm_helppack_'"$LOLANG".tar.gz elif [[ "$ARCH" == x86_64 ]]; then # Download LibreOffice echo -e "\nDownloading LibreOffice" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/'x86_64'/LibreOffice\_"$VERSION"'_Linux_x86-64_'rpm.tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86-64_'rpm.tar.gz rm -f $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_'rpm/RPMS/libreoffice?.?-dict-{es,fr}-*.rpm mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_'rpm/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_'rpm rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86-64_'rpm.tar.gz # Download helppack echo -e "\nDownloading ${BOLD}${CYAN}$LOLANG${RESET} helppack" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/'x86_64'/LibreOffice\_"$VERSION"'_Linux_x86-64_rpm_helppack_'"$LOLANG".tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86-64_rpm_helppack_'"$LOLANG".tar.gz mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_rpm_helppack_'"$LOLANG"/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_rpm_helppack_'"$LOLANG" rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86-64_rpm_helppack_'"$LOLANG".tar.gz else echo 'Failed to download LibreOffice!' exit 1 fi if [[ "$LOLANG" != 'en-US' && "$ARCH" == i686 || "$ARCH" == i586 ]]; then # Download langpack echo -e "\nDownloading ${BOLD}${CYAN}$LOLANG${RESET} langpack" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/'x86'/LibreOffice\_"$VERSION"'_Linux_x86_rpm_langpack_'"$LOLANG".tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86_rpm_langpack_'"$LOLANG".tar.gz mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86_rpm_langpack_'"$LOLANG"/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86_rpm_langpack_'"$LOLANG" rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86_rpm_langpack_'"$LOLANG".tar.gz elif [[ "$LOLANG" != 'en-US' && "$ARCH" == x86_64 ]]; then # Download langpack echo -e "\nDownloading ${BOLD}${CYAN}$LOLANG${RESET} langpack" wget -q --show-progress http://download.documentfoundation.org/libreoffice/stable/"$VERSION"/rpm/'x86_64'/LibreOffice\_"$VERSION"'_Linux_x86-64_rpm_langpack_'"$LOLANG".tar.gz tar -xf LibreOffice_"$VERSION"'_Linux_x86-64_rpm_langpack_'"$LOLANG".tar.gz mv $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_rpm_langpack_'"$LOLANG"/RPMS/* $PKG rm -rf $TMP/LibreOffice_"$VERSION".*'_Linux_x86-64_rpm_langpack_'"$LOLANG" rm -f $TMP/LibreOffice_"$VERSION"'_Linux_x86-64_rpm_langpack_'"$LOLANG".tar.gz elif [[ "$LOLANG" == 'en-US' ]]; then echo "$LOLANG = en-US" &>/dev/null else echo "Failed to download your ${BOLD}$LOLANG${RESET} language for LibreOffice!" exit 1 fi # Extract all rpm echo -e "\nBuilding of $OUTPUT/$PRGNAM-$VERSION-$ARCH-$LOLANG-$BUILD$TAG.xzm module" cd $PKG for i in `find . -type f | fgrep .rpm | sort`; do rpm2cpio $i | cpio -idmv &>/dev/null; done rm -f *.rpm # Cleaning of LO rm -rf $PKG/var rm -rf $PKG/opt/libreoffice?.?/{readmes,CREDITS.fodt,LICENSE,LICENSE.fodt,LICENSE.html,NOTICE} # Fix of double menu entries find $PKG/usr/share/applications/ -name *.desktop -delete mv -f $PKG/opt/libreoffice?.?/share/xdg/*.desktop $PKG/usr/share/applications # If you use official LibreOffice 6.1.x (or higher) rpm.tar.gz package - # need to drop avahi and wayland dependences. # set SAL_USE_VCLPLUGIN=gtk LO=$(find $PKG/opt/libreoffice*/program -name soffice | awk 'NR==1 {print $0}') sed -i -e '/^#\ restore/i# Prefer GTK2\nexport SAL_USE_VCLPLUGIN=${SAL_USE_VCLPLUGIN:-gtk}\n' $LO # built two dummy/empty libraries (need for run LO Impress) cd $(echo $LO | sed 's|soffice||') gcc -shared -o libavahi-client.so.3 -x c - < /dev/null gcc -shared -o libavahi-common.so.3 -x c - < /dev/null unset LO # Building of LO xzm module mksquashfs $PKG $OUTPUT/$PRGNAM-$VERSION-$ARCH-$LOLANG-$BUILD$TAG.xzm -b 256K -comp xz -Xbcj x86 -noappend rm -rf $PKG # Check on LO xzm file exists in /tmp if [ -f "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$LOLANG-$BUILD$TAG.xzm" ]; then echo -e "\n${BOLD}Your $PRGNAM module is at: ${GREEN}${BOLD}$OUTPUT/$PRGNAM-$VERSION-$ARCH-$LOLANG-$BUILD$TAG.xzm${RESET}\n${BOLD}Please move it to your modules folder to survive a reboot.${RESET}\n" else echo -e "\n${RED}${BOLD}Faile. Your $PRGNAM module is not built.${RESET}\n" fi