[PATCH 3/3] better support for distro packaging

Petr Mladek pmladek at suse.cz
Fri Jul 8 03:01:56 PDT 2011


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?
---
 Makefile.in                            |   12 +-
 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 ++++
 configure.in                           |   97 ++++++-
 set_soenv.in                           |   15 +-
 10 files changed, 1413 insertions(+), 9 deletions(-)
 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

diff --git a/Makefile.in b/Makefile.in
index ced0ed2..128b2d6 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,11 +20,17 @@ all: Makefile dmake/dmake at EXEEXT@ src.downloaded
 
 install:
 	@. ./*[Ee]nv.[Ss]et.sh && \
-	echo "Installing in $${libdir:- at libdir@}/@INSTALL_DIRNAME at ..." && \
-	ooinstall "$${libdir:- at libdir@}/@INSTALL_DIRNAME@" && \
+	echo "Installing in @INSTALLDIR at ..." && \
+	ooinstall "@INSTALLDIR@" && \
 	echo "" && \
 	echo "Installation finished, you can now execute:" && \
-	echo "$${libdir:- at libdir@}/@INSTALL_DIRNAME@/program/soffice"
+	echo "@INSTALLDIR@/program/soffice"
+
+distro-pack-install: install
+	./bin/distro-install-clean-up
+	./bin/distro-install-desktop-integration
+	./bin/distro-install-sdk
+	./bin/distro-install-file-lists
 
 dev-install:
 	@. ./*[Ee]nv.[Ss]et.sh && \
diff --git a/bin/bash-completion.in b/bin/bash-completion.in
new file mode 100644
index 0000000..77087c5
--- /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
+ at 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
+ at 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} \
+ at 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 0000000..7283bb9
--- /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 0000000..c00c8c6
--- /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 <<EOT >$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 0000000..fbd4d1c
--- /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,...}_<lang>
+        # 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 <list_file> <directory_name>
+    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,...}_<lang>
+        # 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 <directory_name> <name> [...]
+    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 0000000..b147b45
--- /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, at OO_SDK_NAME@,openoffice.org${PRODUCTVERSION}_sdk," \
+	    -e "s, at OO_SDK_HOME@,$INSTALLDIR/basis$PRODUCTVERSION/sdk," \
+	    -e "s, at OFFICE_HOME@,$INSTALLDIR," \
+	    -e "s, at OFFICE_BASE_HOME@,$INSTALLDIR/basis$PRODUCTVERSION," \
+	    -e "s, at OO_SDK_URE_HOME@,$INSTALLDIR/basis$PRODUCTVERSION/ure-link," \
+	    -e "s, at OO_SDK_MAKE_HOME@,/usr/bin," \
+	    -e "s, at OO_SDK_ZIP_HOME@,/usr/bin," \
+	    -e "s, at OO_SDK_CPP_HOME@,/usr/bin," \
+	    -e "s, at OO_SDK_CC_55_OR_HIGHER@,," \
+	    -e "s, at OO_SDK_JAVA_HOME@,$JAVA_HOME," \
+	    -e "s, at OO_SDK_OUTPUT_DIR@,\$HOME," \
+	    -e "s, at 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 0000000..dafe413
--- /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 <rene at debian.org>, Public Domain
+# updated for libreoffice-build by Petr Mladek <pmladek at suse.cz>, 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 = <BCINFILE>) {
+    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 0000000..539e859
--- /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 <pmladek at suse.cz>
+#
+#  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
diff --git a/configure.in b/configure.in
index f12dcdf..6969bec 100755
--- a/configure.in
+++ b/configure.in
@@ -276,6 +276,18 @@ AC_ARG_ENABLE(broffice,
 	 locale is removed, giving uniform branding.]),
 ,enable_broffice=no)
 
+AC_ARG_ENABLE(split-app-modules,
+    AS_HELP_STRING([--enable-split-app-modules],
+        [Split file lists for app modules, e.g. base, calc.
+         Has effect only with make distro-pack-install]),
+,)
+
+AC_ARG_ENABLE(split-opt-features,
+    AS_HELP_STRING([--enable-split-opt-features],
+        [Split file lists for some optional features, .e.g. pyuno, testtool.
+         Has effect only with make distro-pack-install]),
+,)
+
 AC_ARG_ENABLE(cairo,
     AS_HELP_STRING([--disable-cairo],
         [Determines whether to use Cairo library on platforms where Cairo is
@@ -1230,6 +1242,13 @@ AC_ARG_WITH(unix-wrapper,
     ],
 ,)
 
+AC_ARG_WITH(compat-oowrappers,
+    AS_HELP_STRING([--with-compat-oowrappers],
+        [Install oo* wrappers in parallel with
+         lo* ones to keep backward compatibility.
+         Has effect only with make distro-pack-install]),
+,)
+
 AC_ARG_WITH(asm-home,
     AS_HELP_STRING([--with-asm-home],
         [For Windows, please supply the path for the ml.exe or ml64.exe assembler.])
@@ -6172,6 +6191,18 @@ else
 fi
 AC_SUBST(ENABLE_BROFFICE)
 
+SPLIT_APP_MODULES=""
+if test "$enable_split_app_modules" = "yes"; then
+    SPLIT_APP_MODULES="YES"
+fi
+AC_SUBST(SPLIT_APP_MODULES)
+    
+SPLIT_OPT_FEATURES=""
+if test "$enable_split_opt_features" = "yes"; then
+    SPLIT_OPT_FEATURES="YES"
+fi
+AC_SUBST(SPLIT_OPT_FEATURES)
+
 dnl ===================================================================
 dnl Check whether the Cairo libraries are available.
 dnl ===================================================================
@@ -7834,6 +7865,14 @@ fi
 AC_SUBST(OOO_JUNIT_JAR)
 
 dnl ===================================================================
+dnl Product version
+dnl ===================================================================
+AC_MSG_CHECKING([for product version])
+[eval $(sed -n -e 's/ //g' -e '/PRODUCTVERSION=/p' solenv/inc/productversion.mk)]
+AC_MSG_RESULT([$PRODUCTVERSION])
+AC_SUBST(PRODUCTVERSION)
+
+dnl ===================================================================
 dnl Dealing with l10n options
 dnl ===================================================================
 GIT_REPO_NAMES="artwork base calc components extensions extras filters help impress libs-core libs-extern libs-extern-sys libs-gui postprocess sdk testing ure writer"
@@ -7865,8 +7904,11 @@ for lang in $WITH_LANG ; do
    test `echo "$all_langs" | sed "s|.* $lang .*|found|"` = "found" && continue;
    AC_MSG_ERROR([invalid language: $lang; supported languages are: $ALL_LANGS])
 done
+# list with substituted ALL
+WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
 AC_SUBST(ALL_LANGS)
 AC_SUBST(WITH_LANG)
+AC_SUBST(WITH_LANG_LIST)
 AC_SUBST(GIT_REPO_NAMES)
 
 AC_MSG_CHECKING([for another 'intro' bitmap])
@@ -7917,13 +7959,58 @@ else
 fi
 AC_SUBST(UNIXWRAPPERNAME)
 
-INSTALL_DIRNAME=`echo AC_PACKAGE_NAME | tr [[:upper:]] [[:lower:]]`
+AC_MSG_CHECKING([whether to install the compat oo* wrappers]) 
+if test "$with_compat_oowrappers" = "yes" ; then 
+    WITH_COMPAT_OOWRAPPERS=YES 
+    AC_MSG_RESULT(yes) 
+else 
+    WITH_COMPAT_OOWRAPPERS=
+    AC_MSG_RESULT(no) 
+fi 
+AC_SUBST(WITH_COMPAT_OOWRAPPERS) 
+
+AC_MSG_CHECKING([for product name])
+PRODUCTNAME=AC_PACKAGE_NAME
+AC_MSG_RESULT([$PRODUCTNAME])
+AC_SUBST(PRODUCTNAME)
+
+INSTALLDIRNAME=`echo AC_PACKAGE_NAME | tr [[:upper:]] [[:lower:]]`
 AC_MSG_CHECKING([for install dirname])
 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes" ; then
-   INSTALL_DIRNAME="$with_install_dirname"
-fi
-AC_MSG_RESULT([$INSTALL_DIRNAME])
-AC_SUBST(INSTALL_DIRNAME)
+   INSTALLDIRNAME="$with_install_dirname"
+fi
+AC_MSG_RESULT([$INSTALLDIRNAME])
+AC_SUBST(INSTALLDIRNAME)
+
+AC_MSG_CHECKING([for prefix])
+PREFIXDIR="$prefix"
+AC_MSG_RESULT([$PREFIXDIR])
+AC_SUBST(PREFIXDIR)
+
+AC_MSG_CHECKING([for install dir])
+INSTALLDIR="$libdir/$INSTALLDIRNAME"
+AC_MSG_RESULT([$INSTALLDIR])
+AC_SUBST(INSTALLDIR)
+
+AC_MSG_CHECKING([for libdir])
+LIBDIR=[$(eval echo $(eval echo $libdir))]
+AC_MSG_RESULT([$LIBDIR])
+AC_SUBST(LIBDIR)
+
+AC_MSG_CHECKING([for data dir])
+DATADIR=[$(eval echo $(eval echo $datadir))]
+AC_MSG_RESULT([$DATADIR])
+AC_SUBST(DATADIR)
+
+AC_MSG_CHECKING([for man dir])
+MANDIR=[$(eval echo $(eval echo $mandir))]
+AC_MSG_RESULT([$MANDIR])
+AC_SUBST(MANDIR)
+
+AC_MSG_CHECKING([for doc dir])
+DOCDIR=[$(eval echo $(eval echo $docdir))]
+AC_MSG_RESULT([$DOCDIR])
+AC_SUBST(DOCDIR)
 
 AC_MSG_CHECKING([whether to statically link to Gtk])
 if test -n "$enable_static_gtk" && test "$enable_static_gtk" != "no"; then
diff --git a/set_soenv.in b/set_soenv.in
index 8e39314..4c047b6 100755
--- a/set_soenv.in
+++ b/set_soenv.in
@@ -1592,10 +1592,12 @@ ToFile( "Empty",             $empty,             "n" );
 ToFile( "Platform independent constant values.", $empty, "c" );
 # Languages
 ToFile( "WITH_LANG",         "@WITH_LANG@",      "e" );
+ToFile( "WITH_LANG_LIST",    "@WITH_LANG_LIST@", "e" );
 ToFile( "INTRO_BITMAP",      "@INTRO_BITMAP@",   "e" );
 ToFile( "ABOUT_BITMAP",      "@ABOUT_BITMAP@",   "e" );
 ToFile( "OOO_VENDOR",        "@OOO_VENDOR@",     "e" );
 ToFile( "OOODMAKEMODE",      "YES",              "e" );
+ToFile( "PRODUCTVERSION",    "@PRODUCTVERSION@", "e" );
 ToFile( "WITH_POOR_HELP_LOCALIZATIONS", $WITH_POOR_HELP_LOCALIZATIONS, "e" );
 
 ToFile( "CALL_CDECL",        $CALL_CDECL,        "e" );
@@ -1622,8 +1624,17 @@ ToFile( "EXTERNAL_WARNINGS_NOT_ERRORS", "TRUE",  "e" );
 ToFile( "PRODUCT",           "@PRODUCT@",        "e" );
 ToFile( "PROFULLSWITCH",     "@PROFULLSWITCH@",  "e" );
 ToFile( "PROEXT",            $PROEXT,            "e" );
-ToFile( "VALGRIND_CFLAGS",   "@VALGRIND_CFLAGS@",  "e" );
+ToFile( "VALGRIND_CFLAGS",   "@VALGRIND_CFLAGS@","e" );
+ToFile( "WITH_COMPAT_OOWRAPPERS", "@WITH_COMPAT_OOWRAPPERS@", "e" );
 ToFile( "UNIXWRAPPERNAME",   "@UNIXWRAPPERNAME@","e" );
+ToFile( "PRODUCTNAME",       "@PRODUCTNAME@",    "e" );
+ToFile( "INSTALLDIRNAME",    "@INSTALLDIRNAME@", "e" );
+ToFile( "PREFIXDIR",         "@PREFIXDIR@",      "e" );
+ToFile( "INSTALLDIR",        "@INSTALLDIR@",     "e" );
+ToFile( "LIBDIR",            "@LIBDIR@",         "e" );
+ToFile( "DATADIR",           "@DATADIR@",        "e" );
+ToFile( "MANDIR",            "@MANDIR@",         "e" );
+ToFile( "DOCDIR",            "@DOCDIR@",          "e" );
 ToFile( "BUILD_MOZAB",       "@BUILD_MOZAB@",    "e" );
 ToFile( "PREBUILD_MOZAB",    $PREBUILD_MOZAB,    "e" );
 ToFile( "MOZILLA_VERSION",   $MOZILLA_VERSION,   "e" );
@@ -1642,6 +1653,8 @@ ToFile( "ENABLE_SYSTRAY_GTK", "@ENABLE_SYSTRAY_GTK@", "e" );
 ToFile( "ENABLE_STATIC_GTK", "@ENABLE_STATIC_GTK@", "e" );
 ToFile( "ENABLE_CAIRO",      "@ENABLE_CAIRO@",     "e" );
 ToFile( "ENABLE_BROFFICE",   "@ENABLE_BROFFICE@",  "e" );
+ToFile( "SPLIT_APP_MODULES", "@SPLIT_APP_MODULES@","e" );
+ToFile( "SPLIT_OPT_FEATURES","@SPLIT_OPT_FEATURES@","e" );
 ToFile( "ENABLE_OPENGL",     "@ENABLE_OPENGL@",    "e" );
 ToFile( "ENABLE_PDFIMPORT",  "@ENABLE_PDFIMPORT@", "e" );
 ToFile( "ENABLE_MINIMIZER",   "@ENABLE_MINIMIZER@","e" );
-- 
1.7.3.4


--=-FY6SJZIUzbXnJuBxpGHu
Content-Disposition: attachment; filename="libs-core-0001-Support-distro-packaging.patch"
Content-Type: text/x-patch; name="libs-core-0001-Support-distro-packaging.patch"; charset="UTF-8"
Content-Transfer-Encoding: 7bit



More information about the LibreOffice mailing list