xref: /AOO42X/main/setup_native/source/opensolaris/bundledextensions/svc-ooo_bundled_extensions (revision b5ffe9b538c2ae169395e094ada5be59c5565375)
1#!/sbin/sh
2
3. /lib/svc/share/smf_include.sh
4
5#The start method is used for installing and updating the
6#extensions. The service keeps a list
7#(share/extensions/install/installed) of the extensions which were
8#already installed. During installation, the bundled extensions are
9#copied to the install folder (share/extensions/install). Finally this
10#service, which is part of the office installation package, will be
11#started and the start "method" of this script is called. Then all
12#extensions in the "install" folder are checked if they are already
13#installed by reading the list "installed". Because the list is empty
14#at this time, all the extensions will be installed.
15#
16#If this service is restarted then the script checks if there is an
17#extensions which is not yet installed, that is there is no entry for
18#it in the 'installed' file. Only if this is the case then that
19#extensions will be installed and its path is added to 'installed'.
20#
21#In case of an update, new versions of existing extensions and
22#completely new extensions may be copied to the 'install' folder. Also
23#a new 'installed' file will be copied which replaces the existing
24#file. The new 'installed' file does not contain any entries of
25#installed extensions. Therefore the next time when the start method is
26#run all extensions contained in share/extensions/install will be
27#installed.
28
29#Create the folder which contains the temporary user installation
30INSTDIR=`/usr/bin/mktemp -d "/tmp/userinstall.XXXXXX"`
31
32OOO_BASE_DIR="/opt/openoffice.org/basis${OOOBASEVERSION}"
33
34case "$1" in
35'start')
36    EXTENSIONDIR=/opt/openoffice.org${OOOBRANDPACKAGEVERSION}/share/extension/install
37    for FILE in $EXTENSIONDIR/*.oxt
38    do
39    #We check if the file exist, because if there is no extension
40    #then $FILE will contain "<..>/*.oxt"
41    if [ -f "$FILE" ]; then
42            #Determine if this extension is already installed. We do
43        #that by checking the file "installed" which contains a
44        #list of all installed extensions including the full path
45        EXTENSIONFILE=`basename $FILE`
46        INSTALLED=`sed -n "/$EXTENSIONFILE/p" $EXTENSIONDIR/installed`
47
48        if [ -z "$INSTALLED" ]; then
49            #We have not found the name of the extension in the
50        #list. That is, it has not been installed (with unopkg) yet.
51        #Therefore we do it now.
52        echo installing $FILE
53        /opt/openoffice.org${OOOBRANDPACKAGEVERSION}/program/unopkg add --shared --bundled "$FILE" '-env:UserInstallation=file://$INSTDIR' '-env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
54        #Let us remember that this extensions has been installed
55        #by adding the path name of the extension to the file
56        #installed
57        echo $FILE >> $EXTENSIONDIR/installed
58        fi
59    fi
60    done
61
62    #Now check for extensions which need to be uninstalled
63    #(unopkg). This is the case if the list of extensions in the file
64    #installed contains the name of an extension which does not exist
65    #in the the folder <..>/share/extension/install.
66#     LINE=""
67#     NEWCONTENT=""
68#     REMOVED=""
69#     LIST=`cat $EXTENSIONDIR/installed`
70#     #remove blank lines
71#     LIST=`echo "$LIST" | sed '/^[:blank:]*$/d'`
72
73#     echo "$LIST" |  while [ 1 ]
74#     do
75#   read LINE || break
76#   if [ ! -f "$LINE" ]; then
77#       #The extension file has been removed from
78#       #share/extension/install. Now we remove the installed
79#       #extension
80#       echo removing `basename $LINE`
81#       /opt/openoffice.org${OOOBRANDPACKAGEVERSION}/program/unopkg remove --shared --bundled "`basename $LINE`" '-env:UserInstallation=file://$INSTDIR' '-env:UNO_JAVA_JFW_INSTALL_DATA=$OOO_BASE_DIR/share/config/javasettingsunopkginstall.xml' '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
82#       REMOVED=1
83#   else
84#       NEWCONTENT+=$LINE
85#       NEWCONTENT+="\n"
86#   fi
87#     done
88
89#     #Write the new list to the file "installed". It now has all names
90#     #remove which refered to previously removed extensions (removed
91#     #from .../share/extension/install)
92#     if  [ "$REMOVED" ]; then
93#   #remove the last empty line
94#   NEWCONTENT=`echo "$NEWCONTENT" | sed '/^[:space:]*$/d'`
95#   echo "$NEWCONTENT" > $EXTENSIONDIR/installed
96#     fi
97
98    ;;
99    'stop')
100    echo "#### stop ####"
101    ;;
102    *)
103    echo "Usage: $0 { start | stop }"
104    exit 1
105    ;;
106esac
107
108exit $SMF_EXIT_OK
109