# HG changeset patch # User Pascal Bellard # Date 1392558427 0 # Node ID 1b9497240a0773e08cd2f660d24d83861e4b6679 # Parent 82a491ecdeb503b9760a9e5e8731e70077c536a2 Add LibreOffice OpenOffice3 diff -r 82a491ecdeb5 -r 1b9497240a07 LibreOffice --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LibreOffice Sun Feb 16 13:47:07 2014 +0000 @@ -0,0 +1,159 @@ +#!/bin/sh +# get-LibreOffice - install LibreOffice excl. KDE/Gnome integration & test suite. +# +# (C) 2010 SliTaz - GNU General Public License v3. +# Author : Ben Arnold +# via : get-OpenOffice3 (Eric Joseph-Alexandre ) +# + +PACKAGE="LibreOffice" +WEB_SITE="http://www.libreoffice.org" +CATEGORY="office" +SHORT_DESC="Productivity suite." +DEPENDS="cups" +SUGGESTED="java6-jre" +DIR="stable" +PREFIX="LibreOffice" +SUFFIX="Linux_x86_rpm.tar.gz" +WGET_URL="http://download.documentfoundation.org/libreoffice/$DIR" + +VERSION="$(basename $(wget -O - $WGET_URL/ 2> /dev/null | \ + sed '/href=\"[0-9]/!d;s/.*href=\"//;s/[/\">].*//' | tail -1))" +if [ -z "$VERSION" ]; then + abort_package "Can't detect an appropriate version. The version numbering or URL may have changed. Aborted." +fi +VER="${VERSION/\-/}" # without hyphens + + +TARBALL="${PREFIX}_${VER}_${SUFFIX}" + +for LOC in ${LANG/_/-} ${LANG%_*}; do + L_SUFFIX="Linux_x86_rpm_langpack_$LOC.tar.gz" + L_TARBALL="${PREFIX}_${VER}_${L_SUFFIX}" + LANG_URL="$WGET_URL/${VERSION}/rpm/x86/${L_TARBALL}" + busybox wget -s $LANG_URL 2> /dev/null || continue + echo "Added $LANG ($LOC)." + break +done +WGET_URL="$WGET_URL/${VERSION}/rpm/x86/${TARBALL}" + +CUR_DIR=$(pwd) +TEMP_DIR="/tmp/$PACKAGE.$$" +SOURCE_DIR="/tmp/src.$$" +EXCLUDE="kde|gnome|test" +LOG="/tmp/$(basename $0 .sh).log" + +# Check if we have the tarball before. +if [ ! -f $SOURCE_DIR/$TARBALL ]; then + echo "Downloading LibreOffice tarball (it's time to have a break)... " + # Check if $SOURCE_DIR exist + test -d $SOURCE_DIR || mkdir -p $SOURCE_DIR + # Get the file. + wget -c $WGET_URL -O $SOURCE_DIR/$TARBALL + if [ -n $L_TARBALL ] ; then # Are we localised? + wget -c $LANG_URL -O $SOURCE_DIR/$L_TARBALL + fi + status +fi +if [ ! -f $SOURCE_DIR/$TARBALL ]; then + rm -rf $SOURCE_DIR + abort_package "Could not download $TARBALL. Exiting." +fi + +echo -n "Extracting files (this may take a while): " + +# Creates TEMP_DIR and extract tarball +mkdir -p $TEMP_DIR +for TB in $TARBALL $L_TARBALL ; do + tar xvzf $SOURCE_DIR/$TB -C $TEMP_DIR > $LOG 2>&1 || + abort_package "Failed to extract $TB" +done + +# Get version found in archive (often directory is still RC version when final is present) +ARCHIVED_VERSION=$(find $TEMP_DIR -type d 2> /dev/null | sed "/$PREFIX/!d;\$!d;s/_/ /g" | awk '{print $2}') +echo -n "(found v${ARCHIVED_VERSION})" + +# Consolidate localisations into main package +if [ -n $L_TARBALL ] ; then # Are we localised? + TARBALL_NAME="${TARBALL/.tar.gz/}" + L_TARBALL_NAME="${L_TARBALL/.tar.gz/}" + mv -f $TEMP_DIR/${L_TARBALL_NAME/$VERSION/$ARCHIVED_VERSION}/RPMS/*.rpm $TEMP_DIR/${TARBALL_NAME/$VERSION/$ARCHIVED_VERSION}/RPMS/ +fi +status + +# Extracted pkg can be removed: Save RAM +rm -rf $SOURCE_DIR + +# Extract everything from RPMS +cd $TEMP_DIR/${TARBALL_NAME/$VERSION/$ARCHIVED_VERSION}/RPMS +for i in *.rpm +do + if (! echo $i | egrep -qi $EXCLUDE); then + echo -n "." + (rpm2cpio $i | cpio -id >> $LOG 2>&1 ) && rm -f $i + fi +done +rpm2cpio libobasis*-gnome-integration*.rpm | cpio -id >> $LOG 2>&1 + +# extracted pkg can be removed: Save RAM +rm -f libobasis*.rpm + +status +echo -n "Preparing package... " + +# Make the package +mkdir -p $PACKAGE-$VERSION/fs/usr/lib $PACKAGE-$VERSION/fs/usr/share + +# use mv instead of 'cp -a' to save RAM +mv opt/libreoffice* $PACKAGE-$VERSION/fs/usr/lib/libreoffice +mv usr/share/mime $PACKAGE-$VERSION/fs/usr/share +mv usr/share/icons $PACKAGE-$VERSION/fs/usr/share +mv usr/bin $PACKAGE-$VERSION/fs/usr + +# relocalized libexec directory +bin=$(echo $PACKAGE-$VERSION/fs/usr/bin/libreoffice${VERSION%.*}) +if [ -L $bin ]; then + target=$(readlink $bin) + rm -f $bin + ln -s ${target/opt/usr\/lib\/libreoffice} $bin +else + sed -i 's#/opt/#/usr/lib/libreoffice/#' $bin +fi + +# Create receipt +cat > $PACKAGE-$VERSION/receipt < + +PACKAGE="OpenOffice3" +URL="http://www.openoffice.org" +PATTERN="Linux_x86_install-rpm" + +for MIRROR in \ +http://mirror.switch.ch/ftp/mirror/OpenOffice \ +http://openoffice.cict.fr \ +http://wwwftp.ciril.fr/pub/openoffice \ +http://artfiles.org/openoffice.org \ +http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/OpenOffice \ +http://ftp.ntua.gr/pub/OpenOffice \ +http://ftp.iitm.ac.in/openoffice \ +http://www.ring.gr.jp/archives/misc/openoffice \ +http://ftp.nluug.nl/pub/office/openoffice \ + +do + wget -O - $MIRROR/ 2> /dev/null | grep -q localized || continue + DIR="stable" + LOC=$(wget -O - $MIRROR/localized/ 2> /dev/null | \ + grep -E ">$LANG/|>${LANG/_/-}/|>${LANG%_*}/" | \ + head -1 | sed 's/.*href=\"\(.*\)\/\".*/\1/') + [ -n "$LOC" ] && DIR="localized/$LOC" + VERSION="$(basename $(wget -O - $MIRROR/$DIR/ 2> /dev/null | grep \ + href=\"[0-9] | tail -1 | sed 's/.*href=\"\(.*\)\".*/\1/') 2> /dev/null)" + [ -n "$VERSION" ] && break +done + +if [ -z "$VERSION" ]; then + abort_package "Can't find VERSION. Abort." +fi +echo "Selecting $DIR version $VERSION ..." +TARBALL="$(wget -O - $MIRROR/$DIR/$VERSION/ \ + 2> /dev/null | grep $PATTERN | tail -1 | sed 's/.*href=\"\(.*\)\".*/\1/')" +echo "Archive is $TARBALL ..." +WGET_URL=$MIRROR/$DIR/$VERSION/$TARBALL + +TEMP_DIR="/tmp/$PACKAGE.$$" +CUR_DIR=$(pwd) +SOURCE_DIR="/tmp/src.$$" +EXCLUDE="kde|gnome|test" +LOG="/tmp/$(basename $0 .sh).log" + +# Check if we have the tarball before. +if [ ! -f $SOURCE_DIR/$TARBALL ]; then + echo "Downloading OppenOffice.org tarball (it's time to have a break)... " + #Check if $SOURCE_DIR exist + test -d $SOURCE_DIR || mkdir -p $SOURCE_DIR + # Get the file. + wget -c $WGET_URL -O $SOURCE_DIR/$TARBALL + status +fi +if [ ! -f $SOURCE_DIR/$TARBALL ]; then + rm -rf $SOURCE_DIR + abort_package "Could not download $TARBALL. Exiting." +fi + +# Creates TEMP_DIR and extract tarball +mkdir -p $TEMP_DIR +echo -n "Extract files from archive..." +tar xvzf $SOURCE_DIR/$TARBALL -C $TEMP_DIR > $LOG 2>&1 || + abort_package "Failed to extract $TARBALL" +status + +# extracted pkg can be removed: Save RAM +rm -rf $SOURCE_DIR + +cd $TEMP_DIR/*/RPMS + +# Extract everything from RPMS +for i in *.rpm +do + if (! echo $i | egrep -qi $EXCLUDE); then + (rpm2cpio $i | cpio -id >> $LOG 2>&1 ) && rm -f $i + fi +done +rpm2cpio desktop-integration/*freedesktop*.rpm | cpio -id >> $LOG 2>&1 + +# extracted pkg can be removed: Save RAM +rm -f desktop-integration/*freedesktop*.rpm + + +# Make the package +mkdir -p $PACKAGE-$VERSION/fs/usr/lib/openoffice \ + $PACKAGE-$VERSION/fs/usr/share + +# use mv instead of 'cp -a' to save RAM +mv opt/openoffice* $PACKAGE-$VERSION/fs/usr/lib/openoffice +mv usr/share/mime $PACKAGE-$VERSION/fs/usr/share +mv usr/share/icons $PACKAGE-$VERSION/fs/usr/share +mv usr/bin $PACKAGE-$VERSION/fs/usr + +# relocalized OOo libexec directory +sed -i 's#/opt/#/usr/lib/openoffice/#' $PACKAGE-$VERSION/fs/usr/bin/openoffice* + +# Create receipt +cat > $PACKAGE-$VERSION/receipt <> \ + $ROOT/var/lib/tazpkg/installed.md5 + [ -s $1/description.txt $ROOT/var/lib/tazpkg/installed/$PACKAGE + ( cd fs ; find *) | sed 's|^|/|' > \ + $ROOT/var/lib/tazpkg/installed/$PACKAGE/files.list + if grep -q ^CONFIG_FILES= $1/receipt ; then + cd fs + find $( . ./receipt ; echo " $CONFIG_FILES" | sed 's| /| |g') |\ + cpio -o -H newc | gzip -9 > \ + $ROOT/var/lib/tazpkg/installed/$PACKAGE/volatile.cpio.gz + for i in $( . ./receipt ; echo $CONFIG_FILES) ; do + [ -e $ROOT$i ] && rm -rf .$i + done + cd .. + fi + sed -i "s/^PACKAGE=/UNPACKED_SIZE=\"$(du -chs $1 | sed '$!d;s/.total//')\"\n&/" \ + $1/receipt + cp $1/receipt $ROOT/var/lib/tazpkg/installed/$PACKAGE + echo "Compute md5sum..." + find fs -type f | xargs md5sum | sed 's| fs/| /|' > \ + $ROOT/var/lib/tazpkg/installed/$PACKAGE/md5sum + echo "Move files..." + ( cd $1/fs ; find ) | while read file ; do + [ -e $1/fs/$file -a ! -e $ROOT/$file ] && + mv $1/fs/$file $(dirname $ROOT/$file) + done +}