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