From 8124bdf39b719c66e61355c0bc64f8235c4fbec0 Mon Sep 17 00:00:00 2001 From: Petr Mladek Date: Fri, 8 Jul 2011 12:01:56 +0200 Subject: better support for distro packaging This is port from the build repo. The main differences are: + splits package-ooo into several scripts (bin/distro-install-*) + renames many variables to avoid OOO prefix and to better fit the variables produced by the current bootstrap configure.in + uses OOO_VENDOR from bootstrap/configure.in to add distro specific hacks; the conditions have been updated only for "Novell, inc." + install most of the desktop integration from sysui using sysui/desktop/share/create_tree.sh + do not install two extra templates: $OOINSTBASE/basis$VERSION/share/template/en-US/forms/resume.ott $OOINSTBASE/basis$VERSION/share/template/en-US/officorr/project-proposal.ott should get merged with other templates + do not install pyunorc-update64; it is needed only when you want to run 32-bit LO on 64-bit system; is anyone using it? + do not call install-dictionaries: + do not call build-galleries: is anyone using them? + do not install ootool and ooconfig is anyone using them? are they still working? Signed-off-by: Michael Meeks Signed-off-by: Miklos Vajna Signed-off-by: Bjoern Michaelsen --- bin/bash-completion.in | 90 ++++++ bin/distro-install-clean-up | 89 ++++++ bin/distro-install-desktop-integration | 180 +++++++++++ bin/distro-install-file-lists | 555 +++++++++++++++++++++++++++++++++ bin/distro-install-sdk | 86 +++++ bin/generate-bash-completion | 234 ++++++++++++++ bin/java-set-classpath.in | 64 ++++ 7 files changed, 1298 insertions(+) create mode 100644 bin/bash-completion.in create mode 100755 bin/distro-install-clean-up create mode 100755 bin/distro-install-desktop-integration create mode 100755 bin/distro-install-file-lists create mode 100755 bin/distro-install-sdk create mode 100755 bin/generate-bash-completion create mode 100644 bin/java-set-classpath.in (limited to 'bin') diff --git a/bin/bash-completion.in b/bin/bash-completion.in new file mode 100644 index 000000000000..77087c59316c --- /dev/null +++ b/bin/bash-completion.in @@ -0,0 +1,90 @@ +# Programmable bash_completion file for the main office applications +# It is based on /etc/profile.d/complete.bash from SUSE Linux 10.1 + +_def=; _dir=; _file=; _nosp= +if complete -o default _nullcommand &> /dev/null ; then + _def="-o default" + _dir="-o dirnames" + _file="-o filenames" +fi +_minusdd="-d ${_dir}" +_minusdf="-d ${_file}" +if complete -o nospace _nullcommand &> /dev/null ; then + _nosp="-o nospace" + _minusdd="${_nosp} ${_dir}" + _minusdf="${_nosp} ${_dir}" +fi +complete -r _nullcommand &> /dev/null + +# General expanding shell function +@OFFICE_SHELL_FUNCTION@ () +{ + # bash `complete' is broken because you can not combine + # -d, -f, and -X pattern without missing directories. + local c=${COMP_WORDS[COMP_CWORD]} + local a="${COMP_LINE}" + local e s g=0 cd dc t="" + local IFS + + shopt -q extglob && g=1 + test $g -eq 0 && shopt -s extglob + # Don't be fooled by the bash parser if extglob is off by default + cd='*-?(c)d*' + dc='*-d?(c)*' + + case "${1##*/}" in +@BASH_COMPLETION_SUFFIXES_CHECKS@ + *) e='!*' + esac + + case "$(complete -p ${1##*/} 2> /dev/null)" in + *-d*) ;; + *) s="-S/" + esac + + IFS=' +' + case "$c" in + \$\(*\)) eval COMPREPLY=\(${c}\) ;; + \$\(*) COMPREPLY=($(compgen -c -P '$(' -S ')' -- ${c#??})) ;; + \`*\`) eval COMPREPLY=\(${c}\) ;; + \`*) COMPREPLY=($(compgen -c -P '\`' -S '\`' -- ${c#?})) ;; + \$\{*\}) eval COMPREPLY=\(${c}\) ;; + \$\{*) COMPREPLY=($(compgen -v -P '${' -S '}' -- ${c#??})) ;; + \$*) COMPREPLY=($(compgen -v -P '$' -- ${c#?})) ;; + \~*/*) COMPREPLY=($(compgen -f -X "$e" -- ${c})) ;; + \~*) COMPREPLY=($(compgen -u ${s} -- ${c})) ;; + *@*) COMPREPLY=($(compgen -A hostname -P '@' -S ':' -- ${c#*@})) ;; + *[*?[]*) COMPREPLY=($(compgen -G "${c}")) ;; + *[?*+\!@]\(*\)*) + if test $g -eq 0 ; then + COMPREPLY=($(compgen -f -X "$e" -- $c)) + test $g -eq 0 && shopt -u extglob + return + fi + COMPREPLY=($(compgen -G "${c}")) ;; + *) + if test "$c" = ".." ; then + COMPREPLY=($(compgen -d -X "$e" -S / ${_nosp} -- $c)) + else + for s in $(compgen -f -X "$e" -- $c) ; do + if test -d $s ; then + COMPREPLY=(${COMPREPLY[@]} $(compgen -f -X "$e" -S / -- $s)) + elif test -z "$t" ; then + COMPREPLY=(${COMPREPLY[@]} $s) + else + case "$(file -b $s 2> /dev/null)" in + $t) COMPREPLY=(${COMPREPLY[@]} $s) ;; + esac + fi + done + fi ;; + esac + test $g -eq 0 && shopt -u extglob +} + + +complete -d -X '.[^./]*' -F @OFFICE_SHELL_FUNCTION@ ${_file} \ +@BASH_COMPLETION_OOO_APPS@ + +unset _def _dir _file _nosp _minusdd _minusdf diff --git a/bin/distro-install-clean-up b/bin/distro-install-clean-up new file mode 100755 index 000000000000..7283bb9dcf2c --- /dev/null +++ b/bin/distro-install-clean-up @@ -0,0 +1,89 @@ +#!/bin/sh + +. ./*[Ee]nv.[Ss]et.sh + +echo "Cleaning up ..."; + +remove_help_localization() +{ + lang=$1 + + # nothing to be done if the localization is en-US if it does not exist + # or if it is already removed + test "$lang" = "en-US" -o \ + ! -e $DESTDIR$INSTALLDIR/help/$lang -o \ + -L $DESTDIR$INSTALLDIR/help/$lang && return; + + echo "... remove \"$lang\"" + + rm -rf $DESTDIR$INSTALLDIR/help/$lang + grep -v "$INSTALLDIR/help/$lang" $DESTDIR/gid_Module_Root.$lang >$DESTDIR/gid_Module_Root.$lang.new + mv -f $DESTDIR/gid_Module_Root.$lang.new $DESTDIR/gid_Module_Root.$lang + # FIXME: the following code could be used without the condition + # and should replace the lines above after only the milestones + # providing gid_Module_Helppack_Help and fixed gid_Module_Root.$lang + # are supported + # Note: The problem with gid_Module_Root.$lang is that it still includes + # %dir */help/* entries. + # Note: It was still necessary on ppc with gcj (OOo-2.0.2). Strange. Have to + # investigate it later. + if test -f $DESTDIR/gid_Module_Helppack_Help.$lang ; then + grep -v "$INSTALLDIR/help/$lang" $DESTDIR/gid_Module_Helppack_Help.$lang >$DESTDIR/gid_Module_Helppack_Help.$lang.new + mv -f $DESTDIR/gid_Module_Helppack_Help.$lang.new $DESTDIR/gid_Module_Helppack_Help.$lang + fi + + # Note: We created a compat symlink in the past. It is no longer necessary. + # We do not want it because RPM has problems with update when we remove + # poor localizations in never packages +} + +# Check if the English help is installed and is in the main package (is first on the list) +# Note that Java-disabled builds do not create help at all. +if test -f $DESTDIR$INSTALLDIR/help/en/sbasic.cfg -a \ + "`for lang in $WITH_LANG_LIST ; do echo $lang ; break ; done`" = "en-US" ; then + + echo "Removing duplicated English help..." + + for lang in $WITH_LANG_LIST ; do + test ! -f $DESTDIR$INSTALLDIR/help/en/sbasic.cfg -o ! -f $DESTDIR$INSTALLDIR/help/$lang/sbasic.cfg && continue; + if diff $DESTDIR$INSTALLDIR/help/en/sbasic.cfg $DESTDIR$INSTALLDIR/help/$lang/sbasic.cfg >/dev/null 2>&1 ; then + remove_help_localization $lang + fi + done + + echo "Removing poor help localizations..." + + for lang in $WITH_POOR_HELP_LOCALIZATIONS ; do + remove_help_localization $lang + done +fi + +echo "Fixing permissions..." +for dir in $DOCDIR $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/examples ; do + if test -d $dir -a -w $dir ; then + find "$dir" -type f \( -name "*.txt" -o -name "*.java" -o -name "*.xml" -o \ + -name "*.xcu" -o -name "*.xcs" -o -name "*.html" -o \ + -name "*.pdf" -o -name "*.ps" -o -name "*.gif" -o \ + -name "*.png" -o -name "*.jpg" -o -name "Makefile" -o \ + -name "manifest.mf" \) -exec chmod 644 {} \; + fi +done + +if test "z$DESTDIR" != "z" ; then + echo "Checking for DESTDIR inside installed files..." + found_destdir= + for file in `find $DESTDIR -type f` ; do + grep -q "$DESTDIR" $file && echo "$file: includes the string \"$DESTDIR\"" && found_destdir=1 + done + if test "z$found_destdir" != "z" ; then + echo "!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!" + echo "The path DESTDIR:$DESTDIR was found inside some" + echo "installed files. It is probably a bug." + echo + echo "Especially, if the DESTDIR is set to \$RPM_BUILD_ROOT" + echo "when creating RPM packages. Even it could be a security hole" + echo "if the application searches /var/tmp for binaries or" + echo "config files because the directory is world-writable." + echo "!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!" + fi +fi diff --git a/bin/distro-install-desktop-integration b/bin/distro-install-desktop-integration new file mode 100755 index 000000000000..c00c8c6754fb --- /dev/null +++ b/bin/distro-install-desktop-integration @@ -0,0 +1,180 @@ +#!/bin/sh + +. ./*[Ee]nv.[Ss]et.sh + +PRODUCTVERSION_NODOT=`echo $PRODUCTVERSION | sed -e "s/\.//"` + +mkdir -p $DESTDIR$PREFIXDIR/bin + + +create_wrapper() +{ + echo "Install $PREFIXDIR/bin/$1" + + mkdir -p $DESTDIR$PREFIXDIR/bin + cat <$DESTDIR$PREFIXDIR/bin/$1 +#!/bin/sh +$INSTALLDIR/program/$2 $3 "\$@" +EOT + chmod 755 $DESTDIR$PREFIXDIR/bin/$1 + # put into file list + test -f "$DESTDIR/$4" && echo "$PREFIXDIR/bin/$1" >>$DESTDIR/$4 +} + +create_man_link() +{ + echo "Install $MANDIR/man1/$1.1.gz" + + mkdir -p $DESTDIR$MANDIR/man1 + echo ".so man1/$2.1" >| $DESTDIR$MANDIR/man1/$1.1 + gzip -f $DESTDIR$MANDIR/man1/$1.1 + test -f "$DESTDIR/$3" && echo "$MANDIR/man1/$1.1.gz" >>"$DESTDIR/$3" +} + +install_man() +{ + echo "Install $MANDIR/man1/$1.1.gz" + + mkdir -p $DESTDIR$MANDIR/man1 + cp sysui/desktop/man/$1.1 $DESTDIR$MANDIR/man1 || exit 1; + gzip -f $DESTDIR$MANDIR/man1/$1.1 + test -f "$DESTDIR/$2" && echo "$MANDIR/man1/$1.1.gz" >>"$DESTDIR/$2" +} + + +add_wrapper() +{ + lowrapper_name="$1" + target_binary="$2" + target_option_1="$3" + used_man_page="$4" + desktop_file="$5" + file_list="$6" + + # do we want compat oowrapper? + oowrapper_name="" + if test "$WITH_COMPAT_OOWRAPPERS" == 'YES' ; then + oowrapper_name=`echo "$lowrapper_name" | sed -e "s/^lo/oo/"` + # "oo" prefix only for wrappers stating with "lo" prefix + test "$oowrapper_name" = "$lowrapper_name" && oowrapper_name= + fi + + # wrappers + create_wrapper "$lowrapper_name" "$target_binary" "$target_option_1" "$file_list" + test -n "$oowrapper_name" && create_wrapper "$oowrapper_name" "$target_binary" "$target_option_1" "$file_list" + + # man pages + if test "$used_man_page" = "$lowrapper_name" ; then + # need to install the manual page + install_man "$lowrapper_name" "$file_list" + else + # just link the manual page + create_man_link "$lowrapper_name" "$used_man_page" "$file_list" + fi + test -n "$oowrapper_name" && create_man_link "$oowrapper_name" "$used_man_page" "$file_list" + + # add desktop file to the right file list + test -n "$desktop_file" -a -f "$DESTDIR/$file_list" && echo "/usr/share/applications/$desktop_file" >>"$DESTDIR/$file_list" +} + +# install desktop integration from plain packages +sysui_temp=`mktemp -d /tmp/distro-pack-desktop-integration-XXXXXX` +cp -a sysui/unxlng*/misc/libreoffice/* "$sysui_temp" +cp -a sysui/desktop/share/create_tree.sh "$sysui_temp" +builddir=`pwd` +cd $sysui_temp +# we want non-versioned stuff in the distro packages +for file in * ; do + sed -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION_NODOT/\1/" \ + -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION/\1/" \ + -e "s/\($PRODUCTNAME\) $PRODUCTVERSION/\1/" \ + "$file" >"$file.new" + mv "$file.new" "$file" +done +# call in subshell to do not malfrom PRODUCTVERSION, ... +( + export OFFICE_PREFIX=$LIBDIR + export PREFIX=$INSTALLDIRNAME + export ICON_PREFIX=$INSTALLDIRNAME + export ICON_SOURCE_DIR=$builddir/sysui/desktop/icons + export PRODUCTVERSION= + export KDEMAINDIR=/usr + export GNOMEDIR=/usr + export GNOME_MIME_THEME=hicolor + /bin/bash ./create_tree.sh +) +cd - +rm -rf $sysui_temp + +# we do not want some stuff from the plain packages +rm -f $DESTDIR/$PREFIXDIR/bin/$INSTALLDIRNAME* +rm -f $DESTDIR/usr/share/applications/libreoffice-javafilter.desktop +rm -f $DESTDIR/usr/share/applications/libreoffice-printeradmin.desktop +if test -d $DESTDIR/opt ; then + rm -f $DESTDIR/opt/$INSTALLDIRNAME + rmdir --ignore-fail-on-non-empty $DESTDIR/opt +fi + +# we want non-versioned desktop files +cd $DESTDIR/$INSTALLDIR/share/xdg +# we want non-versioned stuff in the distro packages +for file in *.desktop ; do + sed -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION_NODOT/\1/" \ + -e "s/\($INSTALLDIRNAME\)$PRODUCTVERSION/\1/" \ + -e "s/\($PRODUCTNAME\) $PRODUCTVERSION/\1/" \ + "$file" >"$file.new" + mv "$file.new" "$file" +done +cd - + +# put the stuff installed by create_tree.sh into the right file lists +# desktop files will be added by the corresponding add_wrapper command +if test -f $DESTDIR/gid_Module_Root_Brand ; then + for dir in /usr/share/application-registry \ + /usr/share/mimelnk/application \ + /usr/share/mime/packages \ + /usr/share/mime-info \ + /usr/share/icons ; do + find "$DESTDIR$dir" \( -type f -o -type l \) -printf "$dir/%P\n" >>$DESTDIR/gid_Module_Root_Brand + done +fi + +# wrappers and man pages +# FIXME: do not have desktop file and MIME icon for unopkg +add_wrapper lobase soffice "--base" "libreoffice" "libreoffice-base.desktop" "gid_Module_Brand_Prg_Base" +add_wrapper localc soffice "--calc" "libreoffice" "libreoffice-calc.desktop" "gid_Module_Brand_Prg_Calc" +add_wrapper lodraw soffice "--draw" "libreoffice" "libreoffice-draw.desktop" "gid_Module_Brand_Prg_Draw" +add_wrapper lomath soffice "--math" "libreoffice" "libreoffice-math.desktop" "gid_Module_Brand_Prg_Math" +add_wrapper loimpress soffice "--impress" "libreoffice" "libreoffice-impress.desktop" "gid_Module_Brand_Prg_Impress" +add_wrapper loweb soffice "--web" "libreoffice" "" "gid_Module_Brand_Prg_Wrt" +add_wrapper lowriter soffice "--writer" "libreoffice" "libreoffice-writer.desktop" "gid_Module_Brand_Prg_Wrt" +add_wrapper lofromtemplate soffice ".uno:NewDoc" "libreoffice" "libreoffice-base.desktop" "gid_Module_Root_Brand" +add_wrapper libreoffice soffice "" "libreoffice" "libreoffice-startcenter.desktop" "gid_Module_Root_Brand" +add_wrapper loffice soffice "" "libreoffice" "" "gid_Module_Root_Brand" +add_wrapper unopkg unopkg "" "unopkg" "" "gid_Module_Root_Brand" + +# /usr/bin/ooffice symlink is necessary by java UNO components to find +# the UNO installation using $PATH, see +# http://udk.openoffice.org/common/man/spec/transparentofficecomponents.html +# Note: if you want to support parallel installation of more OOo versions +# you cannot include this link directly into the package +# For example, the Novell package mark this symlink as %ghost +# and update it in %post and %postun +ln -sf $INSTALLDIR/program/soffice $PREFIXDIR/bin/soffice + +# create bash completion +mkdir -p $DESTDIR/etc/bash_completion.d +./bin/generate-bash-completion bin/bash-completion.in $DESTDIR/etc/bash_completion.d/$INSTALLDIRNAME.sh +test -f $DESTDIR/gid_Module_Root_Brand && echo "/etc/bash_completion.d/$INSTALLDIRNAME.sh" >>$DESTDIR/gid_Module_Root_Brand +if test "$WITH_COMPAT_OOWRAPPERS" = "YES" ; then + ./bin/generate-bash-completion --compat-oowrappers bin/bash-completion.in $DESTDIR/etc/bash_completion.d/ooffice.sh + test -f $DESTDIR/gid_Module_Root_Brand && echo "/etc/bash_completion.d/ooffice.sh" >>$DESTDIR/gid_Module_Root_Brand +fi + +echo "Install $OOINSTDIR/basis$VERSION/program/java-set-classpath"; +mkdir -p $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/program +sed -e "s|@INSTALLDIR@|$INSTALLDIR|g" bin/java-set-classpath.in >| "$DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/program/java-set-classpath" || exit 1; +chmod 755 "$DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/program/java-set-classpath" +test -f $DESTDIR/gid_Module_Root_Brand && echo "$INSTALLDIR/basis$PRODUCTVERSION/program/java-set-classpath" >>$DESTDIR/gid_Module_Root_Brand + +exit 0 \ No newline at end of file diff --git a/bin/distro-install-file-lists b/bin/distro-install-file-lists new file mode 100755 index 000000000000..fbd4d1c67005 --- /dev/null +++ b/bin/distro-install-file-lists @@ -0,0 +1,555 @@ +#!/bin/sh + +. ./*[Ee]nv.[Ss]et.sh + +BUILDDIR=`pwd` +FILELISTSDIR="$BUILDDIR/file-lists" + +# remove installed file even from the file list +# Params: file_list file_to_remove +remove_file() +{ + rm -f "$DESTDIR/$2" + perl -pi -e "s|^$2$||" "$1" +} + +# move one file from one list of files to a second one +# Params: target_file_list source_file_list file_to_move +mv_file_between_flists() +{ + if grep "^$3\$" $2 >/dev/null 2>&1 ; then + # \$3 can be regular expression + grep "^$3\$" $2 >>$1 + perl -pi -e "s|^$3$||" $2 + fi +} +# add the directories from the source list of files to the target list of +# file which are used in the target list of files but are missing there +# Params: target_file_list source_file_list +add_used_directories() +{ + sort -u -r $2 | sed -n "s|^%dir \(.*\)\$|s%^\\\\(\1\\\\).*%\\\\1%p|p" >$2.pattern + sed -n -f $2.pattern $1 | sort -u | sed "s|^|%dir |" >>$1 + rm $2.pattern + sort -u $1 >$1.unique + mv $1.unique $1 +} + +# remove a duplicity between two filelist +# Params: filelist_with_original filelist_with_duplicity duplicit_path +remove_duplicity_from_flists() +{ + if grep "$3" "$1" >/dev/null 2>&1 && \ + grep "$3" "$2" >/dev/null 2>&1 ; then + perl -pi -e "s|^$3$||" $2 + fi +} + +# merges one file list into another one +# Params: source_filelist dest_filelist replace_dest +merge_flists() +{ + if test -f "$1" ; then + cat "$1" >>"$2" + sort -u "$2" >"$2".sorted + mv "$2".sorted "$2" + fi +} + +if ! test -f $DESTDIR/gid_Module_Root; then + echo "Error: Failed to generate package file lists"; + echo " Have you defined DESTDIR?" + exit 1; +fi + + +rm -rf "$FILELISTSDIR" +mkdir -p "$FILELISTSDIR" + +cd $DESTDIR + +if test "z$OOO_VENDOR" != "zDebian" ; then + + echo "Generating package file lists for $OOO_VENDOR..." + + rm -f common_list.txt + for module in gid_Module_Root gid_Module_Root_Brand \ + gid_Module_Root_Files_Images \ + gid_Module_Root_Files_[0-9] \ + gid_Module_Root_Hack \ + gid_Module_Oo_Linguistic \ + gid_Module_Root_Ure_Hidden ; do + merge_flists $module $FILELISTSDIR/common_list.txt + done + + if test "$SPLIT_APP_MODULES" = "YES" ; then + merge_flists gid_Module_Prg_Base_Bin $FILELISTSDIR/base_list.txt + merge_flists gid_Module_Prg_Calc_Bin $FILELISTSDIR/calc_list.txt + merge_flists gid_Module_Prg_Draw_Bin $FILELISTSDIR/draw_list.txt + merge_flists gid_Module_Prg_Math_Bin $FILELISTSDIR/math_list.txt + merge_flists gid_Module_Prg_Impress_Bin $FILELISTSDIR/impress_list.txt + merge_flists gid_Module_Prg_Wrt_Bin $FILELISTSDIR/writer_list.txt + merge_flists gid_Module_Brand_Prg_Base $FILELISTSDIR/base_list.txt + merge_flists gid_Module_Brand_Prg_Calc $FILELISTSDIR/calc_list.txt + merge_flists gid_Module_Brand_Prg_Draw $FILELISTSDIR/draw_list.txt + merge_flists gid_Module_Brand_Prg_Math $FILELISTSDIR/math_list.txt + merge_flists gid_Module_Brand_Prg_Impress $FILELISTSDIR/impress_list.txt + merge_flists gid_Module_Brand_Prg_Wrt $FILELISTSDIR/writer_list.txt + # FIXME: small; low dependencies; why optional module? + merge_flists gid_Module_Optional_OGLTrans $FILELISTSDIR/impress_list.txt + else + merge_flists gid_Module_Prg_Base_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Prg_Calc_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Prg_Draw_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Prg_Math_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Prg_Impress_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Prg_Wrt_Bin $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Base $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Calc $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Draw $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Math $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Impress $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Brand_Prg_Wrt $FILELISTSDIR/common_list.txt + # FIXME: small; low dependencies; why optional module? + merge_flists gid_Module_Optional_OGLTrans $FILELISTSDIR/common_list.txt + fi + + if test "$SPLIT_OPT_FEATURES" = "YES" ; then + if test "z$OOO_VENDOR" = "zMandriva" ; then + merge_flists gid_Module_Optional_Binfilter $FILELISTSDIR/filter-binfilter_list.txt + merge_flists gid_Module_Langpack_Binfilter_en_US $FILELISTSDIR/filter-binfilter_list.txt + merge_flists gid_Module_Optional_Grfflt $FILELISTSDIR/draw_list.txt + merge_flists gid_Module_Optional_Headless $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Javafilter $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Pymailmerge $FILELISTSDIR/pyuno_list.txt + merge_flists gid_Module_Optional_Pyuno $FILELISTSDIR/pyuno_list.txt + merge_flists gid_Module_Optional_Testtool $FILELISTSDIR/testtool_list.txt + merge_flists gid_Module_Optional_Xsltfiltersamples $FILELISTSDIR/common_list.txt + else + merge_flists gid_Module_Optional_Binfilter $FILELISTSDIR/filters_list.txt + merge_flists gid_Module_Optional_Grfflt $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Headless $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Javafilter $FILELISTSDIR/filters_list.txt + merge_flists gid_Module_Optional_Pymailmerge $FILELISTSDIR/mailmerge_list.txt + merge_flists gid_Module_Optional_Pyuno $FILELISTSDIR/pyuno_list.txt + merge_flists gid_Module_Optional_Testtool $FILELISTSDIR/testtool_list.txt + merge_flists gid_Module_Optional_Xsltfiltersamples $FILELISTSDIR/filters_list.txt + fi + else + merge_flists gid_Module_Optional_Binfilter $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Langpack_Binfilter $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Grfflt $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Headless $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Javafilter $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Pymailmerge $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Pyuno $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Testtool $FILELISTSDIR/common_list.txt + merge_flists gid_Module_Optional_Xsltfiltersamples $FILELISTSDIR/common_list.txt + fi + + # lang packs + for lang in `echo $WITH_LANG_LIST | sed -e s/-/_/g`; do + lang_lists= + if test "$OOO_VENDOR" = "Mandriva" -o \( "$OOO_VENDOR" = "Novell, Inc." -a "$SPLIT_APP_MODULES" = "YES" \) ; then + test -f gid_Module_Langpack_Basis_$lang && lang_lists="$lang_lists gid_Module_Langpack_Basis_$lang" || : + test -f gid_Module_Langpack_Brand_$lang && lang_lists="$lang_lists gid_Module_Langpack_Brand_$lang" || : + test -f gid_Module_Langpack_Resource_$lang && lang_lists="$lang_lists gid_Module_Langpack_Resource_$lang" || : + test -f gid_Module_Langpack_Impress_$lang && lang_lists="$lang_lists gid_Module_Langpack_Impress_$lang" || : + test -f gid_Module_Langpack_Draw_$lang && lang_lists="$lang_lists gid_Module_Langpack_Draw_$lang" || : + test -f gid_Module_Langpack_Math_$lang && lang_lists="$lang_lists gid_Module_Langpack_Math_$lang" || : + test -f gid_Module_Langpack_Calc_$lang && lang_lists="$lang_lists gid_Module_Langpack_Calc_$lang" || : + test -f gid_Module_Langpack_Base_$lang && lang_lists="$lang_lists gid_Module_Langpack_Base_$lang" || : + test -f gid_Module_Langpack_Writer_$lang && lang_lists="$lang_lists gid_Module_Langpack_Writer_$lang" || : + test -f gid_Module_Langpack_Binfilter_$lang && lang_lists="$lang_lists gid_Module_Langpack_Binfilter_$lang" || : + # Place helps on dedicated packages. + test -f gid_Module_Helppack_Help_$lang && sort -u gid_Module_Helppack_Help_$lang > $FILELISTSDIR/help_${lang}_list.txt || : + else + test -f gid_Module_Langpack_Basis_$lang && lang_lists="$lang_lists gid_Module_Langpack_Basis_$lang" || : + test -f gid_Module_Langpack_Brand_$lang && lang_lists="$lang_lists gid_Module_Langpack_Brand_$lang" || : + test -f gid_Module_Langpack_Resource_$lang && lang_lists="$lang_lists gid_Module_Langpack_Resource_$lang" || : + test -f gid_Module_Langpack_Impress_$lang && lang_lists="$lang_lists gid_Module_Langpack_Impress_$lang" || : + test -f gid_Module_Langpack_Draw_$lang && lang_lists="$lang_lists gid_Module_Langpack_Draw_$lang" || : + test -f gid_Module_Langpack_Math_$lang && lang_lists="$lang_lists gid_Module_Langpack_Math_$lang" || : + test -f gid_Module_Langpack_Calc_$lang && lang_lists="$lang_lists gid_Module_Langpack_Calc_$lang" || : + test -f gid_Module_Langpack_Base_$lang && lang_lists="$lang_lists gid_Module_Langpack_Base_$lang" || : + test -f gid_Module_Langpack_Writer_$lang && lang_lists="$lang_lists gid_Module_Langpack_Writer_$lang" || : + test -f gid_Module_Langpack_Binfilter_$lang && lang_lists="$lang_lists gid_Module_Langpack_Binfilter_$lang" || : + test -f gid_Module_Helppack_Help_$lang && lang_lists="$lang_lists gid_Module_Helppack_Help_$lang" || : + fi + if test -n "$lang_lists" ; then + # all files are installed below $INSTALLDIR/basis; we want to own also $INSTALLDIR + echo "%dir $INSTALLDIR" >$FILELISTSDIR/lang_${lang}_list.txt + cat $lang_lists | sort -u >>$FILELISTSDIR/lang_${lang}_list.txt + fi + # some help files are in _Langpack_{Writer,Impress,...}_ + # move them from -l10n to -help + if test "$OOO_VENDOR" = "Mandriva" -o \( "$OOO_VENDOR" = "Novell, Inc." -a "$SPLIT_APP_MODULES" = "YES" \) ; then + for lang in `echo $WITH_LANG_LIST | sed -e s/-/_/g`; do + test -f $FILELISTSDIR/help_${lang}_list.txt || continue; + mv_file_between_flists $FILELISTSDIR/help_${lang}_list.txt $FILELISTSDIR/lang_${lang}_list.txt $INSTALLDIR/basis$PRODUCTVERSION/help/.* + add_used_directories $FILELISTSDIR/help_${lang}_list.txt $FILELISTSDIR/lang_${lang}_list.txt + done + fi + done + + if test -f $FILELISTSDIR/lang_en_US_list.txt -a "$OOO_VENDOR" = "Novell, Inc." -a "$SPLIT_APP_MODULES" != "YES" ; then + cat $FILELISTSDIR/lang_en_US_list.txt >>$FILELISTSDIR/common_list.txt + rm $FILELISTSDIR/lang_en_US_list.txt + fi + + if test -f gid_Module_Root_SDK ; then + cp gid_Module_Root_SDK $FILELISTSDIR/sdk_list.txt + fi + + cd $FILELISTSDIR + + # kde subpackage + test -f $DESTDIR/gid_Module_Optional_Kde && cp $DESTDIR/gid_Module_Optional_Kde kde_list.txt || : + mv_file_between_flists kde_list.txt common_list.txt $INSTALLDIR/program/kdefilepicker + mv_file_between_flists kde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/fps_kde.uno.so + mv_file_between_flists kde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libvclplug_kdel..so + mv_file_between_flists kde_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libkabdrv1.so + add_used_directories kde_list.txt common_list.txt + + # create kde4 subpackage + mv_file_between_flists kde4_list.txt kde_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/kde4be1.uno.so + mv_file_between_flists kde4_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libvclplug_kde4l..so + mv_file_between_flists kde4_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/fps_kde4.uno.so + add_used_directories kde4_list.txt common_list.txt + + # gnome subpackage + test -f $DESTDIR/gid_Module_Optional_Gnome && cp $DESTDIR/gid_Module_Optional_Gnome gnome_list.txt || : + mv_file_between_flists gnome_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libevoab2.so + mv_file_between_flists gnome_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/fps_gnome.uno.so + mv_file_between_flists gnome_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libvclplug_gtk[0-9]*l..so + mv_file_between_flists common_list.txt gnome_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/ucpgvfs1.uno.so + add_used_directories gnome_list.txt common_list.txt + + # mono subpackage + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/cli_.*.dll + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/cli_.*.dll.config + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/policy.*.cli_.*.dll + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/ure/lib/cli_.*.dll + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/ure/lib/cli_.*.dll.config + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/ure/lib/policy.*.cli_.*.dll + mv_file_between_flists mono_list.txt common_list.txt $INSTALLDIR/ure/lib/libcli_.*.so + add_used_directories mono_list.txt common_list.txt + # add the files from GAC if it was installed + test -f mono_gac && cat mono_gac >>mono_list.txt + + # mailmerge + if test "$SPLIT_OPT_FEATURES" = "YES" ; then + if test "z$OOO_VENDOR" = "zMandriva" ; then + flist=pyuno_list.txt + else + flist=mailmerge_list.txt + fi + mv_file_between_flists $flist common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/mailmerge.py + add_used_directories $flist common_list.txt + fi + + if test "z$OOO_VENDOR" = "zNovell" ; then + # officebean subpackage + mv_file_between_flists officebean_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/classes/officebean.jar + mv_file_between_flists officebean_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libofficebean.so + add_used_directories officebean_list.txt common_list.txt + fi + + if test -f sdk_list.txt ; then + # in this case we move all entries including directories + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "%dir $DOCDIRBASE/sdk/docs.*" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/docs.*" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/examples" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$DOCDIRBASE/sdk/index.html" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "%dir $INSTALLDIR/basis$PRODUCTVERSION/sdk/examples.*" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/sdk/docs" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/sdk/examples.*" + mv_file_between_flists sdk_doc_list.txt sdk_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/sdk/index.html" + add_used_directories sdk_doc_list.txt sdk_list.txt + fi + + if test "$OOO_VENDOR" = "Novell, Inc." -a "$SPLIT_APP_MODULES" = "YES" ; then + # move the prebuilt icons into a hacky temporary package + # we want to repack them into a noarch package as soon as possible + # without the build dependency on the huge devel package + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_classic8.zip + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_crystal.zip + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_hicontrast.zip + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_industrial.zip + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_tango.zip + mv_file_between_flists icon_themes_prebuilt.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images.zip + fi + + # Mandriva packaging + if test "$OOO_VENDOR" = "Mandriva"; then + # Not used + remove_file common_list.txt $INSTALLDIR/share/gallery/htmltheme.orig + remove_file common_list.txt $INSTALLDIR/share/dict/ooo/dictionary.lst + + # And these are in -draw package + mv_file_between_flists draw_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/registry/modules/org/openoffice/TypeDetection/Filter/fcfg_drawgraphics_filters.xcu + mv_file_between_flists draw_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/registry/modules/org/openoffice/TypeDetection/Filter/fcfg_drawgraphics_types.xcu + + # And these are in -impress package + mv_file_between_flists impress_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/registry/modules/org/openoffice/TypeDetection/Filter/fcfg_impressgraphics_filters.xcu + mv_file_between_flists impress_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/registry/modules/org/openoffice/TypeDetection/Types/fcfg_impressgraphics_types.xcu + + # Split out the gallery + mv_file_between_flists gallery_list.txt common_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/share/gallery.*" + test -r galleries.txt && cat galleries.txt >> gallery_list.txt + + # Split out dtd-officedocument1.0 + mv_file_between_flists dtd_list.txt common_list.txt "$INSTALLDIR/share/dtd/officedocument.*" + + # Split out java stuff + mv_file_between_flists java_common_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/JREProperties.class + mv_file_between_flists java_common_list.txt common_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/program/classes.*" + mv_file_between_flists java_common_list.txt common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libofficebean.so + mv_file_between_flists java_common_list.txt common_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/share/Scripts/java.*" + mv_file_between_flists java_common_list.txt filter-binfilter_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/classes/aportisdoc.jar + mv_file_between_flists java_common_list.txt filter-binfilter_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/classes/pocketword.jar + mv_file_between_flists java_common_list.txt filter-binfilter_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/classes/pexcel.jar + mv_file_between_flists java_common_list.txt writer_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/classes/writer2latex.jar + + # Move arch-dependent/dup files from common to core + for f in \ + ".*\.so" \ + ".*\.so\..*" \ + "program/.*\.rdb" \ + program/configimport.bin \ + program/javaldx \ + program/msfontextract \ + program/nsplugin \ + program/oosplash.bin \ + program/pagein \ + program/pagein-calc \ + program/pagein-common \ + program/pagein-draw \ + program/pagein-impress \ + program/pagein-writer \ + program/pkgchk.bin \ + program/pluginapp.bin \ + program/setofficelang.bin \ + program/soffice.bin \ + program/spadmin.bin \ + program/uno.bin \ + program/unopkg.bin \ + program/uri-encode + do + mv_file_between_flists core_list.txt common_list.txt "$INSTALLDIR/basis$PRODUCTVERSION/$f" + done + + # Put gtk/gnome stuff into gnome package + mv_file_between_flists gnome_list.txt core_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/gnome-open-url.bin + mv_file_between_flists gnome_list.txt core_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/fps_gnome.uno.so + mv_file_between_flists gnome_list.txt core_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/ucpgvfs1.uno.so + mv_file_between_flists gnome_list.txt core_list.txt $INSTALLDIR/basis$PRODUCTVERSION/program/libeggtray680li.so + + # Ship ooqstart for gnome in gnome package + mv_file_between_flists gnome_list.txt core_list.txt "$INSTALLDIR/program/libqstart_gtk680.*" + + # themes are included in other packages + # don't use remove_file as we don't want them removed from the buildroot. + mv_file_between_flists /dev/null common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_crystal.zip + mv_file_between_flists /dev/null common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_hicontrast.zip + mv_file_between_flists /dev/null common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_industrial.zip + mv_file_between_flists /dev/null common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images_tango.zip + mv_file_between_flists /dev/null common_list.txt $INSTALLDIR/basis$PRODUCTVERSION/share/config/images.zip + fi + + # remove known duplicities to do not have files packaged in two packages + # the Bulgarian fixes can be removed after the issue #54110 is fixed + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/arrowhd.soe + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/classic.sog + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/hatching.soh + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/modern.sog + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/palette.soc + remove_duplicity_from_flists common_list.txt lang_bg_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/styles.sod + # the British fixes can be removed after the issue #54113 is fixed + remove_duplicity_from_flists common_list.txt lang_en-GB_list.txt $INSTALLDIR/basis$PRODUCTVERSION/presets/config/standard.sog + +else + + echo "Creating package directories..." + + test -d pkg && rm -r pkg || : + + # Create package tree (needed by Debian's dpkg) + # create_package_directory + create_package_directory() + { + listfile=$1 + directory="$2" + perl -nl \ + -e " if(/^%dir (.*)/) + {system('mkdir', '-p', '-m', '755', \"$directory\".\$1);} + else + {rename('./'.\$_, \"$directory\".\$_);} + " \ + $listfile + } + + create_package_directory gid_Module_Root_Ure_Hidden pkg/ure + + create_package_directory gid_Module_Root pkg/libreoffice-common + create_package_directory gid_Module_Root_Brand pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_Images pkg/libreoffice-common + create_package_directory gid_Module_Oo_Linguistic pkg/libreoffice-common + create_package_directory gid_Module_Optional_Xsltfiltersamples pkg/libreoffice-common + create_package_directory gid_Module_Optional_Javafilter pkg/libreoffice-common + if [ -f gid_Module_Optional_Binfilter ]; then + create_package_directory gid_Module_Optional_Binfilter pkg/libreoffice-filter-binfilter + fi + create_package_directory gid_Module_Optional_Grfflt pkg/libreoffice-draw + create_package_directory gid_Module_Prg_Calc_Bin pkg/libreoffice-calc + create_package_directory gid_Module_Prg_Math_Bin pkg/libreoffice-math + create_package_directory gid_Module_Prg_Draw_Bin pkg/libreoffice-draw + create_package_directory gid_Module_Prg_Wrt_Bin pkg/libreoffice-writer + create_package_directory gid_Module_Prg_Impress_Bin pkg/libreoffice-impress + create_package_directory gid_Module_Prg_Base_Bin pkg/libreoffice-base + create_package_directory gid_Module_Brand_Prg_Calc pkg/libreoffice-calc + create_package_directory gid_Module_Brand_Prg_Math pkg/libreoffice-math + create_package_directory gid_Module_Brand_Prg_Draw pkg/libreoffice-draw + create_package_directory gid_Module_Brand_Prg_Wrt pkg/libreoffice-writer + create_package_directory gid_Module_Brand_Prg_Impress pkg/libreoffice-impress + create_package_directory gid_Module_Brand_Prg_Base pkg/libreoffice-base + create_package_directory gid_Module_Optional_Pyuno pkg/python-uno + create_package_directory gid_Module_Optional_Gnome pkg/libreoffice-gnome + create_package_directory gid_Module_Optional_Kde pkg/libreoffice-kde + + create_package_directory gid_Module_Root_Files_2 pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_3 pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_4 pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_5 pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_6 pkg/libreoffice-common + create_package_directory gid_Module_Root_Files_7 pkg/libreoffice-common + create_package_directory gid_Module_Optional_Testtool pkg/libreoffice-qa-tools + if [ -e gid_Module_Optional_Pymailmerge ]; then + create_package_directory gid_Module_Optional_Pymailmerge pkg/libreoffice-emailmerge + else # post m26 + mkdir -p pkg/libreoffice-emailmerge/$INSTALLDIR/basis$PRODUCTVERSION/program + mv pkg/libreoffice-common/$INSTALLDIR/basis$PRODUCTVERSION/program/mailmerge.py \ + pkg/libreoffice-emailmerge/$INSTALLDIR/basis$PRODUCTVERSION/program/mailmerge.py + fi + create_package_directory gid_Module_Optional_OGLTrans pkg/libreoffice-ogltrans + + create_package_directory gid_Module_Root_SDK pkg/libreoffice-dev + + for l in `echo $WITH_LANG_LIST`; do + for p in Impress Draw Math Calc Base Writer; do + create_package_directory gid_Module_Langpack_${p}_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l + done + create_package_directory gid_Module_Langpack_Basis_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l + create_package_directory gid_Module_Langpack_Brand_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l + create_package_directory gid_Module_Langpack_Resource_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l + create_package_directory gid_Module_Helppack_Help_`echo $l | sed -e s/-/_/g` pkg/libreoffice-help-$l + if [ -f gid_Module_Optional_Binfilter ]; then + if [ "$l" = "en-US" ]; then + create_package_directory gid_Module_Langpack_Binfilter_en_US pkg/libreoffice-filter-binfilter + else + create_package_directory gid_Module_Langpack_Binfilter_`echo $l | sed -e s/-/_/g` pkg/libreoffice-l10n-$l + fi + fi + # some help files are in _Langpack_{Writer,Impress,...}_ + # move them from -l10n to -help + if [ "$l" = "en-US" ]; then d=en; else d=$l; fi + mv pkg/libreoffice-l10n-$l/$INSTALLDIR/basis$PRODUCTVERSION/help/$d/* \ + pkg/libreoffice-help-$l/$INSTALLDIR/basis$PRODUCTVERSION/help/$d && \ + rmdir pkg/libreoffice-l10n-$l/$INSTALLDIR/basis$PRODUCTVERSION/help/$d + done + + # move_wrappers [...] + move_wrappers() + { + directory=$1 + shift + mkdir -m755 -p "$directory"/usr/bin + while test -n "$1"; do + mv usr/*bin/"$1$BINSUFFIX" "$directory"/usr/bin + shift + done + } + move_wrappers pkg/libreoffice-common soffice unopkg + if test "$COMPAT_OOWRAPPERS" = "YES" ; then + move_wrappers pkg/libreoffice-common ooffice oofromtemplate + move_wrappers pkg/libreoffice-base oobase + move_wrappers pkg/libreoffice-writer oowriter ooweb + move_wrappers pkg/libreoffice-calc oocalc + move_wrappers pkg/libreoffice-impress ooimpress + move_wrappers pkg/libreoffice-math oomath + move_wrappers pkg/libreoffice-draw oodraw + fi + move_wrappers pkg/libreoffice-common libreoffice lofromtemplate + move_wrappers pkg/libreoffice-base lobase + move_wrappers pkg/libreoffice-writer lowriter loweb + move_wrappers pkg/libreoffice-calc localc + move_wrappers pkg/libreoffice-impress loimpress + move_wrappers pkg/libreoffice-math lomath + move_wrappers pkg/libreoffice-draw lodraw + + # Move all libraries, binaries, *.rdb from -common to -core + for d in $INSTALLDIR/basis$PRODUCTVERSION/program $INSTALLDIR/program; do \ + if [ ! -d $DESTDIR/pkg/libreoffice-core/$d ]; then \ + mkdir -p $DESTDIR/pkg/libreoffice-core/$d; \ + fi && + ( cd pkg/libreoffice-common/$d + find -maxdepth 1 \ + -regex '\./\(.*\.so.*\|.*\.bin\|pagein\|nsplugin\|kdefilepicker\|msfontextract\|.*\.rdb\|javaldx\|uri-encode\)' \ + -exec mv {} $DESTDIR/pkg/libreoffice-core/$d \; + ); \ + done + + # install additional ooo-build scripts & misc stuff + mkdir -p pkg/libreoffice-common/usr/share/man/man1 + if test "$COMPAT_OOWRAPPERS" = "YES" ; then + mv usr/share/man/man1/openoffice$BINSUFFIX.1 \ + pkg/libreoffice-common/usr/share/man/man1 + fi + mv usr/share/man/man1/libreoffice$BINSUFFIX.1 \ + pkg/libreoffice-common/usr/share/man/man1 + mkdir -p pkg/libreoffice-common/etc/bash_completion.d + if test "$COMPAT_OOWRAPPERS" = "YES" ; then + mv etc/bash_completion.d/ooffice$BINSUFFIX.sh \ + pkg/libreoffice-common/etc/bash_completion.d + fi + mv etc/bash_completion.d/libreoffice$BINSUFFIX.sh \ + pkg/libreoffice-common/etc/bash_completion.d + mv .$INSTALLDIR/basis$PRODUCTVERSION/program/java-set-classpath \ + pkg/libreoffice-common/$INSTALLDIR/program + if echo $WITH_LANG_LIST | grep -q en-US; then + for i in forms/resume.ott officorr/project-proposal.ott; do \ + mkdir -p pkg/libreoffice-common/$INSTALLDIR/basis$PRODUCTVERSION/share/template/en-US/`dirname $i`; \ + mv .$INSTALLDIR/basis$PRODUCTVERSION/share/template/en-US/$i \ + pkg/libreoffice-common/$INSTALLDIR/basis$PRODUCTVERSION/share/template/en-US/$i; \ + done; \ + fi + # Warn for any remaining files + find . -path './pkg' -prune -o -not -name 'gid_Module_*' -not -type d -exec echo "File not packaged: {}" \; +fi + +# mark the config files +RPM_CONFIG_FILE_TAGS= +if test "$OOO_VENDOR" = "Novell, Inc." -o "$OOO_VENDOR" = "RedHat"; then + RPM_CONFIG_FILE_TAGS="%config" +elif test "$OOO_VENDOR" = "PLD" ; then + RPM_CONFIG_FILE_TAGS="%config(noreplace) %verify(not md5 size mtime)" +fi + +if test "z$RPM_CONFIG_FILE_TAGS" != "z" ; then + cd $FILELISTSDIR + perl -pi -e "s|^($INSTALLDIR/help/.*\.xsl)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/help/.*\.css)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/program/[a-zA-Z0-9_\.]*rc)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/program/.*\.xsl)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/config/[a-zA-Z0-9]*rc)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/dict/ooo/.*\.lst)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/psprint/.*\.conf)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/registry/.*\.xcu)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/registry/.*\.properties)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/share/registry/.*\.xcs)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + -e "s|^($INSTALLDIR/user/config/.*\.so.)\$|$RPM_CONFIG_FILE_TAGS \\1|;" \ + *_list.txt +fi + +mkdir -p $FILELISTSDIR/orig +mv -f $DESTDIR/gid_Module_* $FILELISTSDIR/orig diff --git a/bin/distro-install-sdk b/bin/distro-install-sdk new file mode 100755 index 000000000000..b147b4522d2f --- /dev/null +++ b/bin/distro-install-sdk @@ -0,0 +1,86 @@ +#!/bin/sh + +. ./*[Ee]nv.[Ss]et.sh + +if test -d $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk ; then + + echo "SDK installation clean up" + + # bin potential .orig files + find $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk -name "*.orig" -exec rm -f {} \; + + # move some SDK directories to the right place according to FHS + # note that examples must stay in $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk because there are used + # relative paths to $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/setting and it does not work via + # a symlink + mkdir -p $DESTDIR$PREFIXDIR/include + mkdir -p $DESTDIR$DATADIR/idl + mkdir -p $DESTDIR$DATADIR/$INSTALLDIRNAME/sdk + mkdir -p $DESTDIR$DOCDIR/sdk + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/include $DESTDIR$PREFIXDIR/include/$INSTALLDIRNAME + if [ -d $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/classes ]; then + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/classes $DESTDIR$DATADIR/$INSTALLDIRNAME/sdk/classes + fi + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/idl $DESTDIR$DATADIR/idl/$INSTALLDIRNAME + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/docs $DESTDIR$DOCDIR/sdk + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/share/readme $DESTDIR$DOCDIR/sdk/readme + mv $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/index.html $DESTDIR$DOCDIR/sdk + + # compat symlinks + ln -sf $PREFIXDIR/include/$INSTALLDIRNAME $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/include + ln -sf $DATADIR/$INSTALLDIRNAME/sdk/classes $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/classes + ln -sf $DATADIR/idl/$INSTALLDIRNAME $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/idl + ln -sf $DOCDIR/sdk/docs $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/ + ln -sf $DOCDIR/sdk/index.html $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/index.html + ln -sf $INSTALLDIR/basis$PRODUCTVERSION/sdk/examples $DESTDIR$DOCDIR/sdk/examples + + # fix file list + sed -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/include|\1$PREFIXDIR/include/$INSTALLDIRNAME|" \ + -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/classes|\1$DATADIR/$INSTALLDIRNAME/sdk/classes|" \ + -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/idl|\1$DATADIR/idl/$INSTALLDIRNAME|" \ + -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/docs|\1$DOCDIR/sdk/docs|" \ + -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/share/readme|\1$DOCDIR/sdk/readme|" \ + -e "s|^$INSTALLDIR/basis$PRODUCTVERSION/sdk/index.html$|$DOCDIR/sdk/index.html|" \ + -e "s|^\(%dir \)\?$INSTALLDIR/basis$PRODUCTVERSION/sdk/share.*$||" \ + -e "/\.orig$/D" \ + -e "/^$/D" \ + $DESTDIR/gid_Module_Root_SDK | sort -u \ + >$DESTDIR/gid_Module_Root_SDK.new + mv $DESTDIR/gid_Module_Root_SDK.new $DESTDIR/gid_Module_Root_SDK + # + echo "%dir $DATADIR/$INSTALLDIRNAME/sdk" >>$DESTDIR/gid_Module_Root_SDK + echo "%dir $DATADIR/$INSTALLDIRNAME" >>$DESTDIR/gid_Module_Root_SDK + echo "%dir $DATADIR/idl" >>$DESTDIR/gid_Module_Root_SDK + echo "%dir $DOCDIR/sdk/docs" >>$DESTDIR/gid_Module_Root_SDK + echo "%dir $DOCDIR/sdk" >>$DESTDIR/gid_Module_Root_SDK + echo "%dir $DOCDIR" >>$DESTDIR/gid_Module_Root_SDK + echo "$INSTALLDIR/basis$PRODUCTVERSION/sdk/include" >>$DESTDIR/gid_Module_Root_SDK + echo "$INSTALLDIR/basis$PRODUCTVERSION/sdk/classes" >>$DESTDIR/gid_Module_Root_SDK + echo "$INSTALLDIR/basis$PRODUCTVERSION/sdk/idl" >>$DESTDIR/gid_Module_Root_SDK + echo "$INSTALLDIR/basis$PRODUCTVERSION/sdk/docs" >>$DESTDIR/gid_Module_Root_SDK + echo "$INSTALLDIR/basis$PRODUCTVERSION/sdk/index.html" >>$DESTDIR/gid_Module_Root_SDK + echo "$DOCDIR/sdk/examples" >>$DESTDIR/gid_Module_Root_SDK + + # generate default profiles + for file in setsdkenv_unix.csh setsdkenv_unix.sh ; do + sed -e "s,@OO_SDK_NAME@,openoffice.org${PRODUCTVERSION}_sdk," \ + -e "s,@OO_SDK_HOME@,$INSTALLDIR/basis$PRODUCTVERSION/sdk," \ + -e "s,@OFFICE_HOME@,$INSTALLDIR," \ + -e "s,@OFFICE_BASE_HOME@,$INSTALLDIR/basis$PRODUCTVERSION," \ + -e "s,@OO_SDK_URE_HOME@,$INSTALLDIR/basis$PRODUCTVERSION/ure-link," \ + -e "s,@OO_SDK_MAKE_HOME@,/usr/bin," \ + -e "s,@OO_SDK_ZIP_HOME@,/usr/bin," \ + -e "s,@OO_SDK_CPP_HOME@,/usr/bin," \ + -e "s,@OO_SDK_CC_55_OR_HIGHER@,," \ + -e "s,@OO_SDK_JAVA_HOME@,$JAVA_HOME," \ + -e "s,@OO_SDK_OUTPUT_DIR@,\$HOME," \ + -e "s,@SDK_AUTO_DEPLOYMENT@,NO," \ + $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/$file.in \ + > $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/$file + chmod 755 $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/$file + echo $INSTALLDIR/basis$PRODUCTVERSION/sdk/$file >>$DESTDIR/gid_Module_Root_SDK + done + + # FIXME: I rather set this file to be non-world-writttable for now, i#64812 + chmod go-w $DESTDIR$INSTALLDIR/basis$PRODUCTVERSION/sdk/settings/component.uno.map +fi diff --git a/bin/generate-bash-completion b/bin/generate-bash-completion new file mode 100755 index 000000000000..dafe413cbbc9 --- /dev/null +++ b/bin/generate-bash-completion @@ -0,0 +1,234 @@ +#!/usr/bin/env perl +# script to generate LibreOffice bash_completion file for the main applications +# written by Rene Engelhard , Public Domain +# updated for libreoffice-build by Petr Mladek , Public Domain +# yes, this script probably is not real good code :) but still easier +# to maintain than adding those entries statically many times in +# a file... + +use strict; + +my @DRAWDOCS=("sxd", "std", "dxf", "emf", "eps", "met", "pct", "sgf", "sgv", "sda", + "sdd", "vor", "svm", "wmf", "bmp", "gif", "jpg", "jpeg", "jfif", "fif", + "jpe", "pcd", "pcx", "pgm", "png", "ppm", "psd", "ras", "tga", "tif", + "tiff", "xbm", "xpm", "odg", "otg", "fodg", "odc", "odi", "sds", + "wpg", "svg"); + +my @IMPRESSDOCS=("sxi", "sti", "ppt", "pps", "pot", "sxd", "sda", "sdd", "sdp", + "vor", "cgm", "odp", "otp", "fodp", "ppsm", "ppsx", "pptm", "pptx", + "potm", "potx"); + +my @TEMPLATES=("stw", "dot", "vor", "stc", "xlt", "sti", "pot", "std", "stw", + "dotm", "dotx", "potm", "potx", "xltm", "xltx"); + +my @MATHDOCS=("sxm", "smf", "mml", "odf"); + +my @MASTERDOCS=("sxg", "odm", "sgl"); + +my @WRITERDOCS=("doc", "dot", "rtf", "sxw", "stw", "sdw", "vor", "txt", "htm?", + "xml", "wp", "wpd", "wps", "odt", "ott", "fodt", "docm", "docx", + "dotm", "dotx"); + +my @WEBDOCS=("htm", "html", "stw", "txt", "vor", "oth"); + +my @BASEDOCS=("odb"); + +my @CALCDOCS=("sxc", "stc", "dif", "dbf", "xls", "xlw", "xlt", "rtf", "sdc", "vor", + "slk", "txt", "htm", "html", "wk1", "wks", "123", "xml", "ods", "ots", + "fods", "csv", "xlsb", "xlsm", "xlsx", "xltm", "xltx"); + +my @EXTENSIONS=("oxt"); + +# default names of lowrappers +# use "" if you want to disable any wrapper +my %APPS = ( + office => "libreoffice", + master => "", + base => "lobase", + calc => "localc", + draw => "lodraw", + impress => "loimpress", + math => "lomath", + template => "lofromtemplate", + unopkg => "unopkg", + web => "loweb", + writer => "lowriter", +); + +my $office_shell_function = "_loexp_"; + +sub usage() +{ + print "Script to Generate bash completion for LO wrappers\n\n"; + + print "Usage: $0 --help\n"; + print " $0 [--binsuffix=suffix]\n"; + print "\t\t[--compat-oowrappers]\n"; + print "\t\t[--office=wrapper_name]\n"; + print "\t\t[--master=wrapper_name]\n"; + print "\t\t[--base=wrapper_name]\n"; + print "\t\t[--calc=wrapper_name]\n"; + print "\t\t[--draw=wrapper_name]\n"; + print "\t\t[--impress=wrapper_name]\n"; + print "\t\t[--math=wrapper_name]\n"; + print "\t\t[--template=wrapper_name]\n"; + print "\t\t[--unopkg=wrapper_name]\n"; + print "\t\t[--web=wrapper_name]\n"; + print "\t\t[--writer=wrapper_name]\n"; + print "\t\tinput_file\n"; + print "\t\toutput_file\n\n"; + + print "Options:\n"; + print "\t--help\t\tprint this help\n"; + print "\t--binsuffix\tdefines a suffix that is added after each wrapper\n"; + print "\t--compat-oowrappers\tset wrapper names to the old default oo* wrapper names\n"; + + print "The other options allows to redefine the wrapper names.\n"; + print "The value \"\" can be used to disable any wrapper.\n\n"; +} + +my $infilename; +my $outfilename; +my $binsuffix = ''; + +my $opt; +foreach my $arg (@ARGV) { + if ( $arg =~ /--help/ ) { + usage(); + exit 0; + } elsif ( $arg =~ /--compat-oowrappers/ ) { + $APPS{'office'} = "ooffice"; + $APPS{'master'} = ""; + $APPS{'base'} = "oobase"; + $APPS{'calc'} = "oocalc"; + $APPS{'draw'} = "oodraw"; + $APPS{'impress'} = "ooimpress"; + $APPS{'math'} = "oomath"; + $APPS{'template'} = "oofromtemplate"; + $APPS{'unopkg'} = "unopkg"; + $APPS{'web'} = "ooweb"; + $APPS{'writer'} = "oowriter"; + $office_shell_function = "_ooexp_"; + } elsif ( $arg =~ /--binsuffix=(.*)/ ) { + $binsuffix = "$1"; + } elsif ( $arg =~ /--office=(.*)/ ) { + $APPS{'office'} = "$1"; + } elsif ( $arg =~ /--master=(.*)/ ) { + $APPS{'master'} = "$1"; + } elsif ( $arg =~ /--base=(.*)/ ) { + $APPS{'base'} = "$1"; + } elsif ( $arg =~ /--calc=(.*)/ ) { + $APPS{'calc'} = "$1"; + } elsif ( $arg =~ /--draw=(.*)/ ) { + $APPS{'draw'} = "$1"; + } elsif ( $arg =~ /--impress=(.*)/ ) { + $APPS{'impress'} = "$1" + } elsif ( $arg =~ /--math=(.*)/ ) { + $APPS{'math'} = "$1"; + } elsif ( $arg =~ /--template=(.*)/ ) { + $APPS{'template'} = "$1"; + } elsif ( $arg =~ /--unopkg=(.*)/ ) { + $APPS{'unopkg'} = "$1"; + } elsif ( $arg =~ /--web=(.*)/ ) { + $APPS{'web'} = "$1"; + } elsif ( $arg =~ /--writer=(.*)/ ) { + $APPS{'writer'} = "$1" + } elsif ( $arg =~ /^-.*/ ) { + printf STDERR "Error: invalid option \"$arg\", try --help\n"; + exit 1; + } elsif ( $outfilename ) { + printf STDERR "Error: too much arguments, try --help\n"; + exit 1; + } else { + if ($infilename) { + $outfilename = "$arg"; + } else { + $infilename = "$arg"; + } + } +} + +unless ( $infilename ) { + printf STDERR "Error: undefined input file, try --help\n"; + exit 1; +} + +unless ( $outfilename ) { + printf STDERR "Error: undefined output file, try --help\n"; + exit 1; +} + +#add binsuffix +foreach my $app (keys %APPS) { + $APPS{$app} .= "$binsuffix" unless ( "$APPS{$app}" eq "" ); +} + +sub print_suffixes_check { + my $app = shift(@_); + my $first_suffix = shift(@_); + + ($first_suffix) || die "Error: No suffix defined for $app\n"; + + print BCOUTFILE " $app)\t\te=\'!*.+(" . $first_suffix . "|" . uc($first_suffix); + foreach my $suffix (@_) { + print BCOUTFILE "|" . $suffix; + print BCOUTFILE "|" . uc($suffix); + } + print BCOUTFILE ")\' ;;\n"; +} + +sub print_suffixes_checks { + foreach my $app (keys %APPS) { + # skip the disabled wrapper + next if ( $APPS{$app} eq "" ); + + if ($app eq "draw" ) { print_suffixes_check ($APPS{$app}, @DRAWDOCS); } + if ($app eq "writer") { print_suffixes_check ($APPS{$app}, @WRITERDOCS, @MASTERDOCS); } + if ($app eq "web") { print_suffixes_check ($APPS{$app}, @WEBDOCS); } + if ($app eq "math") { print_suffixes_check ($APPS{$app}, @MATHDOCS); } + if ($app eq "impress") { print_suffixes_check ($APPS{$app}, @IMPRESSDOCS); } + if ($app eq "base") { print_suffixes_check ($APPS{$app}, @BASEDOCS); } + if ($app eq "calc") { print_suffixes_check ($APPS{$app}, @CALCDOCS); } + if ($app eq "master") { print_suffixes_check ($APPS{$app}, @MASTERDOCS); } + if ($app eq "template") { print_suffixes_check ($APPS{$app}, @TEMPLATES); } + # libreoffice should contain all... + if ($app eq "office") { print_suffixes_check ($APPS{$app}, @DRAWDOCS, @WRITERDOCS, @MATHDOCS, @IMPRESSDOCS, @BASEDOCS, @CALCDOCS, @MASTERDOCS, @TEMPLATES, @WEBDOCS); } + # unopkg is a standalone tool + if ($app eq "unopkg") { print_suffixes_check ($APPS{$app}, @EXTENSIONS); } + } +} + +sub print_apps { + my $app_to_print; + foreach my $app (keys %APPS) { + # skip the disabled wrapper + next if ( $APPS{$app} eq "" ); + + print BCOUTFILE "\t\t\t\t\t$app_to_print \\\n" if ($app_to_print); + $app_to_print = $APPS{$app}; + } + # the last app will be printed without the final backslash + ($app_to_print) || die "Error: No LO wrapper was selected\n"; + print BCOUTFILE "\t\t\t\t\t$app_to_print\n"; +} + + +open (BCINFILE, "$infilename") || die "Error: can't open $infilename for reading: $!\n"; +open (BCOUTFILE, "> $outfilename") || die "Error: can't open $outfilename for writing: $!\n"; + +while (my $line = ) { + chomp $line; + + $line =~ s/\@OFFICE_SHELL_FUNCTION\@/$office_shell_function/; + + if ($line =~ m/\@BASH_COMPLETION_SUFFIXES_CHECKS\@/) { + print_suffixes_checks(); + } elsif ($line =~ m/\@BASH_COMPLETION_OOO_APPS\@/) { + print_apps(); + } else { + print BCOUTFILE "$line\n"; + } +} + +close (BCINFILE); +close (BCOUTFILE); diff --git a/bin/java-set-classpath.in b/bin/java-set-classpath.in new file mode 100644 index 000000000000..539e8592fa39 --- /dev/null +++ b/bin/java-set-classpath.in @@ -0,0 +1,64 @@ +#!/bin/sh + +#***************************************************************************** +# +# java-set-classpath - Utility to update the default CLASSPATH for OpenOffice.org +# +# Initial version by: Petr Mladek +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2, as +# published by the Free Software Foundation. +# +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +#***************************************************************************** + +if test "z$1" = "z" ; then + echo "Update the default CLASSPATH for OpenOffice.org" + echo "" + echo "Usage: $0 [dir|jar]..." + echo "" + echo "The utility updates the OpenOffice.org system setting. It adds or removes" + echo "the given directories and jar-files to or from the default CLASSPATH" + echo "depending on if they are available on the system or not." + echo "" + echo "Parameters:" + echo " dir - absolute path to a directory" + echo " jar - absolute path to a jar-file" + exit 0; +fi + +JVM_CONFIG_FILE=@OOINSTBASE@/basis-link/program/fundamentalbasisrc + +for path in $@ ; do + if test "z${path%%/*}" != "z" ; then + echo "Warning: the path "$path" is not absolute and will be ignored" + continue + fi + if test -e $path ; then + # the file exist + grep "URE_MORE_JAVA_CLASSPATH_URLS.*file:/*$path\([[:space:]].*\)\?$" $JVM_CONFIG_FILE >/dev/null && continue + # it is not registered + TMP_FILE=`mktemp /tmp/ooset-java-class.XXXXXXXXXX` || exit 1 + sed -e "s|^\(.*URE_MORE_JAVA_CLASSPATH_URLS.*\)$|\1 file://$path|" $JVM_CONFIG_FILE >$TMP_FILE + mv -f $TMP_FILE $JVM_CONFIG_FILE + chmod 644 $JVM_CONFIG_FILE + else + # the file does not exist, remove it from the configuration + TMP_FILE=`mktemp /tmp/ooset-java-class.XXXXXXXXXX` || exit 1; + sed -e "s|^\(.*URE_MORE_JAVA_CLASSPATH_URLS.*\)file:/*$path\([[:space:]].*\)\?$|\1\2|" \ + -e "s/\(URE_MORE_JAVA_CLASSPATH_URLS=\)[[:space:]]\+/\1/" \ + -e "/^.*URE_MORE_JAVA_CLASSPATH_URLS/s/[[:space:]]\+/ /g" \ + -e "/^.*URE_MORE_JAVA_CLASSPATH_URLS/s/[[:space:]]*$//" $JVM_CONFIG_FILE >$TMP_FILE + mv -f $TMP_FILE $JVM_CONFIG_FILE + chmod 644 $JVM_CONFIG_FILE + fi +done -- cgit