wok annotate get-LibreOffice/stuff/get-LibreOffice @ rev 25002

updated nrg2iso (0.4 -> 0.4.1)
author Hans-G?nter Theisgen
date Mon May 16 14:45:30 2022 +0100 (2022-05-16)
parents 57a7405e48e5
children ae58b675745d
rev   line source
ben@7832 1 #!/bin/sh
Hans-G?nter@21202 2 # get-LibreOffice - create and install SliTaz package LibreOffice
Hans-G?nter@21202 3 # excluding KDE and GNOME integration and test suite.
ben@7832 4 #
Hans-G?nter@23888 5 # (C) 2020 SliTaz - GNU General Public License v3.
ben@7832 6 # Author : Ben Arnold <ben@seawolfsanctuary.com>
ben@7832 7 # via : get-OpenOffice3 (Eric Joseph-Alexandre <erjo@slitaz.org>)
Hans-G?nter@21202 8 # modified by Hans-Günter Theisgen on 2019-04-07
Hans-G?nter@23888 9 # modified by Hans-Günter Theisgen on 2020-03-17
Hans-G?nter@23888 10 # modified by Hans-Günter Theisgen on 2020-07-24
ben@7832 11 #
ben@7832 12
Hans-G?nter@21202 13 # === Initialisations ===
Hans-G?nter@21202 14
Hans-G?nter@21202 15 PKGS_DB="/var/lib/tazpkg" # packages database directory
Hans-G?nter@21202 16 PACKAGE="LibreOffice" # package to create and install
Hans-G?nter@21202 17 CATEGORY="office"
Hans-G?nter@21202 18 SHORT_DESC="Productivity suite."
Hans-G?nter@21202 19 WEB_SITE="https://www.libreoffice.org"
Hans-G?nter@21202 20 LICENCE="MPL v2.0"
Hans-G?nter@21202 21
ben@8234 22 DIR="stable"
pascal@14217 23 SUFFIX="Linux_x86_rpm.tar.gz"
Hans-G?nter@21202 24 PREFIX="http://download.documentfoundation.org/libreoffice/$DIR"
ben@7832 25
Hans-G?nter@23157 26 DEPENDS="cups"
Hans-G?nter@21202 27 EXCLUDE="kde|gnome|test"
ben@7833 28
Hans-G?nter@21202 29 # Declare functions check_root, status, ...
Hans-G?nter@21202 30 . /lib/libtaz.sh
Hans-G?nter@21202 31 # and make commandline options (if any) available as variables
Hans-G?nter@23157 32
Hans-G?nter@21202 33 is_installed()
ben@7832 34 {
Hans-G?nter@21202 35 if [ -d $root$PKGS_DB/installed/$PACKAGE ]
Hans-G?nter@21202 36 then #package is deemed to be installed
ben@7832 37 return 0
Hans-G?nter@21202 38 else
ben@7832 39 return 1
ben@7832 40 fi
ben@7832 41 }
ben@7832 42
Hans-G?nter@21202 43 # Show available commandline options, if requested by --help
Hans-G?nter@21202 44 if [ "$help" = "yes" ]
Hans-G?nter@21202 45 then
Hans-G?nter@21202 46 echo "Available commandline options:
Hans-G?nter@21202 47 $0
Hans-G?nter@21202 48 --version=<version>
Hans-G?nter@21202 49 --root=<path_to_root>
Hans-G?nter@21202 50 --install=yes|no
Hans-G?nter@21202 51 --keep=no|yes
Hans-G?nter@21202 52 --srcdir=<directory_for_source_packages>
Hans-G?nter@21202 53 --tmpdir=<directory_to_build-package>"
Hans-G?nter@21202 54 exit
Hans-G?nter@21202 55 fi
Hans-G?nter@21202 56
Hans-G?nter@21202 57 # Check for system administrator privileges
ben@7832 58 check_root
ben@7832 59
Hans-G?nter@21202 60 title "Package $PACKAGE will be build as SliTaz package and installed"
Hans-G?nter@21202 61
Hans-G?nter@21202 62 # Fetch latest $DIR version, unless version is set by option --version
Hans-G?nter@23888 63 #[ -z "$version" ] && version="latest"
Hans-G?nter@23888 64 [ -z "$version" ] && version="6.2.8.2" &&
Hans-G?nter@23888 65 echo "Newer versions than 6.2.8.2 are not available in 32-bit flavour!"
Hans-G?nter@21202 66
Hans-G?nter@21202 67 # Fetch language pack according to $LANG, unless otherwise set by option --lang
Hans-G?nter@21202 68 [ -z "$lang" ] && lang="automatic"
Hans-G?nter@21202 69
Hans-G?nter@21202 70 # Install SliTaz package, unless inhibited by option --install=no
Hans-G?nter@21202 71 [ -z "$install" ] && install="yes"
Hans-G?nter@21202 72
Hans-G?nter@21202 73 # Delete SliTaz package file $PACKAGE-$VERSION.tazpkg after installation,
Hans-G?nter@21202 74 # unless option --keep=yes is given
Hans-G?nter@21202 75 [ -z "$keep" ] && keep="no"
Hans-G?nter@21202 76
Hans-G?nter@21202 77 # Directory for temporary files
Hans-G?nter@21202 78 [ -z "$tempdir" ] && TEMP_DIR="/tmp/get-$PACKAGE"
Hans-G?nter@21202 79
Hans-G?nter@21202 80 # Directory for source archives
Hans-G?nter@21202 81 [ -z "$srcdir" ] && SOURCE_DIR="/tmp/src-$PACKAGE"
Hans-G?nter@21202 82
Hans-G?nter@21202 83 # Logging file
Hans-G?nter@21202 84 LOG="/tmp/$(basename $0 .sh).log"
Hans-G?nter@21202 85
Hans-G?nter@21202 86 cat <<EOT
Hans-G?nter@21202 87 Options in use:
Hans-G?nter@21202 88 root : $root/
Hans-G?nter@21202 89 version : $version
Hans-G?nter@21202 90 lang : $lang
Hans-G?nter@21202 91 install package : $install
Hans-G?nter@21202 92 keep tazpkg : $keep
Hans-G?nter@21202 93 source directory: $SOURCE_DIR
Hans-G?nter@21202 94 build directory : $TEMP_DIR
Hans-G?nter@23157 95 logging file: $LOG
Hans-G?nter@21202 96
Hans-G?nter@21202 97 EOT
Hans-G?nter@21202 98
Hans-G?nter@21202 99 separator; newline
Hans-G?nter@21202 100
Hans-G?nter@21202 101 # === Remove package, if installed ===
Hans-G?nter@21202 102 if is_installed
Hans-G?nter@21202 103 then
ben@7832 104 echo "$PACKAGE is already installed."
Hans-G?nter@21202 105 [ -n "$root" ] && exit 0
Hans-G?nter@21202 106 echo -n "Would you like to remove and reinstall this package [y/N]? "
ben@7832 107 read answer
ben@7832 108 case "$answer" in
Hans-G?nter@21202 109 (y|Y)
Hans-G?nter@21202 110 action "Removing installed version..."
Hans-G?nter@21202 111 tazpkg remove $PACKAGE --root="$root/"
Hans-G?nter@21202 112 [ ! is_installed ] &&
Hans-G?nter@21202 113 die "Can't remove installed version. Exiting." ;;
Hans-G?nter@21202 114 (*)
ben@7832 115 exit 0 ;;
ben@7832 116 esac
ben@7832 117 fi
ben@7832 118
Hans-G?nter@21202 119 # === Fetch archive file, if not existing ===
ben@7832 120
Hans-G?nter@21202 121 if [ "$version" == "latest" ]
Hans-G?nter@21202 122 then
pascal@22312 123 VERSIONS="$(wget -qO - $PREFIX/ | \
pascal@22312 124 sed '/href=\"[0-9]/!d;s/.*href=\"//;s/[/\">].*//' | tac)"
pascal@22312 125 if [ -z "$VERSIONS" ]
Hans-G?nter@21202 126 then
Hans-G?nter@21202 127 echo "Can't detect an appropriate version. The version numbering or URL may have changed. Exiting."
Hans-G?nter@21202 128 exit 1
Hans-G?nter@21202 129 fi
Hans-G?nter@21202 130 else
Hans-G?nter@23157 131 DIR="old"
Hans-G?nter@23157 132 PREFIX="http://downloadarchive.documentfoundation.org/libreoffice/$DIR"
pascal@22312 133 VERSIONS="$version"
Hans-G?nter@21202 134 fi
Hans-G?nter@21202 135
Hans-G?nter@23157 136 for VERSION in $VERSIONS
Hans-G?nter@23157 137 do # foreach VERSION
pascal@22312 138
Hans-G?nter@23888 139 VER="${VERSION/\-/}" # without hyphens
Hans-G?nter@23888 140 TARBALL="LibreOffice_${VER}_${SUFFIX}"
Hans-G?nter@23888 141 WGET_URL="$PREFIX/${VERSION}/rpm/x86/${TARBALL}"
Hans-G?nter@21202 142
Hans-G?nter@23888 143 # Set LANG_URL to fetch language package
Hans-G?nter@23888 144 if [ "$lang" = "automatic" ]
Hans-G?nter@23888 145 then # use language from $LANG of running process
Hans-G?nter@23888 146 for LOC in ${LANG/_/-} ${LANG%_*}
Hans-G?nter@23888 147 do
Hans-G?nter@23888 148 L_SUFFIX="Linux_x86_rpm_langpack_$LOC.tar.gz"
Hans-G?nter@23888 149 L_TARBALL="LibreOffice_${VER}_${L_SUFFIX}"
Hans-G?nter@23888 150 LANG_URL="$PREFIX/${VERSION}/rpm/x86/${L_TARBALL}"
Hans-G?nter@23888 151 busybox wget -s $LANG_URL 2> /dev/null || continue
Hans-G?nter@23888 152 echo "Added language pack for $LANG ($LOC)."
Hans-G?nter@23888 153 break
Hans-G?nter@23888 154 done
Hans-G?nter@23888 155 else
Hans-G?nter@23888 156 L_SUFFIX="Linux_x86_rpm_langpack_$lang.tar.gz"
Hans-G?nter@21202 157 L_TARBALL="LibreOffice_${VER}_${L_SUFFIX}"
Hans-G?nter@21202 158 LANG_URL="$PREFIX/${VERSION}/rpm/x86/${L_TARBALL}"
Hans-G?nter@23888 159 busybox wget -s $LANG_URL 2> /dev/null &&
Hans-G?nter@23888 160 echo "Added language pack for $lang."
Hans-G?nter@23888 161 fi
Hans-G?nter@21202 162
Hans-G?nter@23888 163 CUR_DIR=$(pwd)
Hans-G?nter@23888 164 mkdir -p $TEMP_DIR
Hans-G?nter@23888 165 cd $TEMP_DIR
Hans-G?nter@21202 166
Hans-G?nter@23888 167 if [ -f $SOURCE_DIR/$TARBALL ]
Hans-G?nter@21202 168 then
Hans-G?nter@23888 169 echo "Using existing archive file $TARBALL"
Hans-G?nter@23888 170 else
Hans-G?nter@23888 171 action "Fetching the archives..."
Hans-G?nter@23888 172 newline
Hans-G?nter@23888 173 # Check if $SOURCE_DIR exists
Hans-G?nter@23888 174 [ -d $SOURCE_DIR ] || mkdir -p $SOURCE_DIR
Hans-G?nter@23888 175 wget -c $WGET_URL -O $SOURCE_DIR/$TARBALL || continue
Hans-G?nter@23888 176 if [ -n $L_TARBALL ] # language pack required?
Hans-G?nter@23888 177 then
Hans-G?nter@23888 178 wget -c $LANG_URL -O $SOURCE_DIR/$L_TARBALL
Hans-G?nter@23888 179 fi
Hans-G?nter@23888 180 status
ben@9549 181 fi
shann@16807 182
Hans-G?nter@23888 183 break
pascal@22312 184
Hans-G?nter@23888 185 done # foreach VERSION
pascal@22312 186
Hans-G?nter@21202 187 if [ ! -f $SOURCE_DIR/$TARBALL ]
Hans-G?nter@21202 188 then
ben@7832 189 rm -rf $SOURCE_DIR
Hans-G?nter@21202 190 echo "Could not get $TARBALL. Exiting."
ben@7832 191 exit 1
ben@7832 192 fi
ben@7832 193
Hans-G?nter@21202 194 # === Extract files from archives ===
Hans-G?nter@21202 195 action "Extracting the archives..."
Hans-G?nter@21202 196 newline
Hans-G?nter@21202 197 mkdir -p $TEMP_DIR
Hans-G?nter@21202 198 for TB in $TARBALL $L_TARBALL
Hans-G?nter@21202 199 do
Hans-G?nter@21202 200 tar xvzf $SOURCE_DIR/$TB -C $TEMP_DIR > $LOG 2>&1 ||
Hans-G?nter@21202 201 (echo "Failed to extract $TB" ; exit 1)
Hans-G?nter@21202 202 done
ben@7833 203
Hans-G?nter@21202 204 # === Create SliTaz package ===
ben@9549 205
Hans-G?nter@21202 206 # Prepare metadata for SliTaz package
ben@9549 207
Hans-G?nter@21202 208 # Get version found in archive
Hans-G?nter@21202 209 # (often directory is still RC version when final is present)
Hans-G?nter@21202 210 VERSION_FROM_ARCHIVE=$(cd $TEMP_DIR;find . -type d 2> /dev/null \
Hans-G?nter@21202 211 | grep LibreOffice | head -n 1 | sed 's/_/ /g' | awk '{print $2}')
Hans-G?nter@21202 212 echo -n "(found v${VERSION_FROM_ARCHIVE})"
Hans-G?nter@21202 213
Hans-G?nter@21202 214 # Merge language pack into main package
Hans-G?nter@21202 215 if [ -n $L_TARBALL ] # language pack required?
Hans-G?nter@21202 216 then
Hans-G?nter@21202 217 TARBALL_NAME="${TARBALL/.tar.gz/}"
ben@9549 218 L_TARBALL_NAME="${L_TARBALL/.tar.gz/}"
Hans-G?nter@21202 219 mv -f $TEMP_DIR/${L_TARBALL_NAME/$VERSION/$VERSION_FROM_ARCHIVE}/RPMS/*.rpm \
Hans-G?nter@21202 220 $TEMP_DIR/${TARBALL_NAME/$VERSION/$VERSION_FROM_ARCHIVE}/RPMS/
ben@7833 221 fi
ben@7832 222 status
ben@7832 223
Hans-G?nter@21202 224 # Extracted archives can be removed
ben@7832 225 rm -rf $SOURCE_DIR
ben@7832 226
Hans-G?nter@21202 227 # Extract almost everything from RPMS directory
Hans-G?nter@21202 228 action "Extracting RPMs..."
Hans-G?nter@21202 229 newline
Hans-G?nter@21202 230 cd $TEMP_DIR/${TARBALL_NAME/$VERSION/$VERSION_FROM_ARCHIVE}/RPMS
ben@7832 231 for i in *.rpm
Hans-G?nter@21202 232 do
Hans-G?nter@21202 233 if (! echo $i | egrep -qi $EXCLUDE)
Hans-G?nter@21202 234 then
ben@7832 235 echo -n "."
ben@7832 236 (rpm2cpio $i | cpio -id >> $LOG 2>&1 ) && rm -f $i
ben@7832 237 fi
Hans-G?nter@21202 238 done
Hans-G?nter@21202 239 status
shann@16807 240
Hans-G?nter@21202 241 # Move files to package tree $PACKAGE-$VERSION/fs/
Hans-G?nter@21202 242 action "Preparing package..."
Hans-G?nter@21202 243 mkdir -p $PACKAGE-$VERSION/fs/usr/lib/libreoffice
Hans-G?nter@21202 244 mkdir -p $PACKAGE-$VERSION/fs/usr/share
ben@7832 245
Hans-G?nter@21202 246 # use mv instead of 'cp -a' to save space
Hans-G?nter@21202 247 mv opt/libreoffice* $PACKAGE-$VERSION/fs/usr/lib
Hans-G?nter@21202 248 mv usr/share/mime $PACKAGE-$VERSION/fs/usr/share
Hans-G?nter@21202 249 mv usr/share/icons $PACKAGE-$VERSION/fs/usr/share
Hans-G?nter@21202 250 mv usr/bin $PACKAGE-$VERSION/fs/usr
ben@7832 251
Hans-G?nter@21202 252 # relocalised libexec directory
Hans-G?nter@21202 253 bin=$PACKAGE-$VERSION/fs/usr/bin/libreoffice${VERSION:0:3}
Hans-G?nter@21202 254 if [ -L $bin ]
Hans-G?nter@21202 255 then
Hans-G?nter@21202 256 target=$(readlink $bin)
Hans-G?nter@21202 257 rm -f $bin
Hans-G?nter@21202 258 ln -s ${target/opt/usr\/lib\/libreoffice} $bin
Hans-G?nter@21202 259 else
Hans-G?nter@21202 260 sed -i 's#/opt/#/usr/lib/libreoffice/#' $bin
Hans-G?nter@21202 261 fi
ben@7832 262
Hans-G?nter@21202 263 # Create recipe for SliTaz package
ben@7832 264 cat > $PACKAGE-$VERSION/receipt <<EOT
ben@7832 265 # SliTaz package receipt.
ben@7832 266
ben@7832 267 PACKAGE="$PACKAGE"
ben@7832 268 VERSION="$VERSION"
Hans-G?nter@21202 269 CATEGORY="$CATEGORY"
Hans-G?nter@21202 270 TAGS="writer spreadsheet database"
Hans-G?nter@21202 271 SHORT_DESC="$SHORT_DESC"
Hans-G?nter@21202 272 LICENSE="$LICENCE"
Hans-G?nter@21202 273 WEB_SITE="$WEB_SITE"
Hans-G?nter@21202 274 DEPENDS="$DEPENDS"
ben@7832 275
ben@7832 276 post_install()
ben@7832 277 {
pascal@21713 278 ln -sf /usr/lib/libreoffice?* \\
Hans-G?nter@21202 279 /usr/lib/libreoffice
Hans-G?nter@21202 280 path_libreoffice=\$(find /usr/lib/libreoffice -name libreoffice*.*)
ben@7832 281
Hans-G?nter@21202 282 # Remove links, if existing
Hans-G?nter@21202 283 rm -f /usr/share/applications/libreoffice-*
shann@16807 284
Hans-G?nter@21202 285 # Create links
Hans-G?nter@21202 286 cd /usr/share/applications
pascal@21713 287 ln -sf \$path_libreoffice/share/xdg/base.desktop \\
Hans-G?nter@21202 288 libreoffice-base.desktop
pascal@21713 289 ln -sf \$path_libreoffice/share/xdg/impress.desktop \\
Hans-G?nter@21202 290 libreoffice-impress.desktop
pascal@21713 291 ln -sf \$path_libreoffice/share/xdg/writer.desktop \\
Hans-G?nter@21202 292 libreoffice-writer.desktop
pascal@21713 293 ln -sf \$path_libreoffice/share/xdg/calc.desktop \\
Hans-G?nter@21202 294 libreoffice-calc.desktop
pascal@21713 295 ln -sf \$path_libreoffice/share/xdg/math.desktop \\
Hans-G?nter@21202 296 libreoffice-math.desktop
pascal@21713 297 ln -sf \$path_libreoffice/share/xdg/draw.desktop \\
Hans-G?nter@21202 298 libreoffice-draw.desktop
shann@16807 299
Hans-G?nter@21202 300 chmod +x \$path_libreoffice/share/xdg/*.desktop
shann@16807 301
pascal@21712 302 # Fix menu entries
pascal@21713 303 sed -i 's|^\\([Ee]xec=libreoffice\\)[0-9\\.]*|\\0|' \\
pascal@21712 304 \$path_libreoffice/share/xdg/*.desktop
pascal@21712 305
shann@16807 306 # If necessary, recreate links for soffice
Hans-G?nter@21202 307 rm -f /usr/bin/soffice
Hans-G?nter@21202 308 rm -f /usr/bin/libreoffice
Hans-G?nter@21202 309 ln -sf \$path_libreoffice/program/soffice /usr/bin/libreoffice
Hans-G?nter@21202 310 ln -sf \$path_libreoffice/program/soffice /usr/bin/soffice
ben@7832 311 }
ben@7832 312
ben@7832 313 post_remove()
ben@7832 314 {
shann@16807 315 rm -f /usr/share/applications/libreoffice-*
ben@7832 316 }
Hans-G?nter@21202 317 EOT
ben@7832 318
ben@7832 319 status
ben@7832 320
Hans-G?nter@21202 321 # Create the package
ben@7832 322 tazpkg pack $PACKAGE-$VERSION
ben@7832 323
Hans-G?nter@21202 324 # Remove package tree
ben@7832 325 rm -rf $PACKAGE-$VERSION
ben@7832 326
Hans-G?nter@21202 327 # === Install the SliTaz package ===
Hans-G?nter@21202 328 [ "$install" == "yes" ] &&
Hans-G?nter@21202 329 tazpkg install $PACKAGE-$VERSION.tazpkg --root="$root"
ben@7832 330
Hans-G?nter@21202 331 # === Cleanup ===
Hans-G?nter@21202 332 # Preserve package file, if requested
Hans-G?nter@23157 333 [ "$keep" == "yes" ] &&
Hans-G?nter@23157 334 ( mv $PACKAGE-$VERSION.tazpkg $CUR_DIR &&
Hans-G?nter@23157 335 echo Saved $PACKAGE-$VERSION.tazpkg to $CUR_DIR )
Hans-G?nter@21202 336
Hans-G?nter@21202 337 # Remove temporary build directory
pascal@10921 338 cd $CUR_DIR
ben@7832 339 rm -rf $TEMP_DIR