1*b1cdbd2cSJim Jagielski#!/bin/sh
2*b1cdbd2cSJim Jagielski# *************************************************************
3*b1cdbd2cSJim Jagielski#
4*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
5*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
6*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
7*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
8*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
9*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
10*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
11*b1cdbd2cSJim Jagielski#
12*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
13*b1cdbd2cSJim Jagielski#
14*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
15*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
16*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
18*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
19*b1cdbd2cSJim Jagielski#  under the License.
20*b1cdbd2cSJim Jagielski#
21*b1cdbd2cSJim Jagielski# *************************************************************
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim JagielskiMYUID=`id | sed "s/(.*//g" | sed "s/.*=//"`
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim Jagielskiif [ $MYUID -ne 0 ]
26*b1cdbd2cSJim Jagielskithen
27*b1cdbd2cSJim Jagielski	echo You need to have super-user permissions to run this patch script
28*b1cdbd2cSJim Jagielski	exit 1
29*b1cdbd2cSJim Jagielskifi
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielskiecho
32*b1cdbd2cSJim Jagielskiecho "Searching for the PRODUCTNAMEPLACEHOLDER installation ..."
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim JagielskiRPMNAME=`rpm -qa | grep SEARCHPACKAGENAMEPLACEHOLDER`
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielskiif [ "x$RPMNAME" != "x" ]
37*b1cdbd2cSJim Jagielskithen
38*b1cdbd2cSJim Jagielski  PRODUCTINSTALLLOCATION="`rpm --query --queryformat "%{INSTALLPREFIX}" $RPMNAME`"
39*b1cdbd2cSJim Jagielski  FULLPRODUCTINSTALLLOCATION="${PRODUCTINSTALLLOCATION}/PRODUCTDIRECTORYNAME"
40*b1cdbd2cSJim Jagielskielse
41*b1cdbd2cSJim Jagielski  echo "PRODUCTNAMEPLACEHOLDER is not installed"
42*b1cdbd2cSJim Jagielski  exit 1
43*b1cdbd2cSJim Jagielskifi
44*b1cdbd2cSJim Jagielski
45*b1cdbd2cSJim Jagielski# Last chance to exit ..
46*b1cdbd2cSJim Jagielskiecho
47*b1cdbd2cSJim Jagielskiread -p "Patching the installation in ${FULLPRODUCTINSTALLLOCATION}. Continue (y/n) ? " -n 1 reply leftover
48*b1cdbd2cSJim Jagielskiecho
49*b1cdbd2cSJim Jagielski[ "$reply" == "y" ] || exit 1
50*b1cdbd2cSJim Jagielski
51*b1cdbd2cSJim Jagielskiecho
52*b1cdbd2cSJim Jagielskiecho "About to update the following packages ..."
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim JagielskiBASEDIR=`dirname $0`
55*b1cdbd2cSJim Jagielski
56*b1cdbd2cSJim JagielskiRPMLIST=""
57*b1cdbd2cSJim Jagielskifor i in `ls $BASEDIR/RPMS/*.rpm`
58*b1cdbd2cSJim Jagielskido
59*b1cdbd2cSJim Jagielski  rpm --query `rpm --query --queryformat "%{NAME}\n" --package $i` && RPMLIST="$RPMLIST $i"
60*b1cdbd2cSJim Jagielskidone
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski# Save UserInstallation value
63*b1cdbd2cSJim JagielskiBOOTSTRAPRC="${FULLPRODUCTINSTALLLOCATION}/program/bootstraprc"
64*b1cdbd2cSJim JagielskiUSERINST=`grep UserInstallation ${BOOTSTRAPRC}`
65*b1cdbd2cSJim Jagielski
66*b1cdbd2cSJim Jagielski# Check, if kde-integration rpm is available
67*b1cdbd2cSJim JagielskiKDERPM=`ls $BASEDIR/RPMS/*.rpm | grep kde-integration`
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielskiif [ "x$KDERPM" != "x" ]; then
70*b1cdbd2cSJim Jagielski  # Check, that $RPMLIST does not contain kde integration rpm (then it is already installed)
71*b1cdbd2cSJim Jagielski  KDERPMINSTALLED=`grep kde-integration ${RPMLIST}`
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski  if [ "x$KDERPMINSTALLED" == "x" ]; then
74*b1cdbd2cSJim Jagielski    # Install the kde integration rpm
75*b1cdbd2cSJim Jagielski    RPMLIST="$RPMLIST $KDERPM"
76*b1cdbd2cSJim Jagielski  fi
77*b1cdbd2cSJim Jagielskifi
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielskiecho
80*b1cdbd2cSJim Jagielskirpm --upgrade -v --hash --prefix $PRODUCTINSTALLLOCATION --notriggers $RPMLIST
81*b1cdbd2cSJim Jagielskiecho
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski# Some RPM versions have problems with -U and --prefix
84*b1cdbd2cSJim Jagielskiif [ ! -f ${BOOTSTRAPRC} ]; then
85*b1cdbd2cSJim Jagielski  echo Update failed due to a bug in RPM, uninstalling ..
86*b1cdbd2cSJim Jagielski  rpm --erase -v --nodeps --notriggers `rpm --query --queryformat "%{NAME} " --package $RPMLIST`
87*b1cdbd2cSJim Jagielski  echo
88*b1cdbd2cSJim Jagielski  echo Now re-installing new packages ..
89*b1cdbd2cSJim Jagielski  echo
90*b1cdbd2cSJim Jagielski  rpm --install -v --hash --prefix $PRODUCTINSTALLLOCATION --notriggers $RPMLIST
91*b1cdbd2cSJim Jagielski  echo
92*b1cdbd2cSJim Jagielskifi
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski# Restore the UserInstallation key if necessary
95*b1cdbd2cSJim JagielskiDEFUSERINST=`grep UserInstallation ${BOOTSTRAPRC}`
96*b1cdbd2cSJim Jagielskiif [ "${USERINST}" != "${DEFUSERINST}" ]; then
97*b1cdbd2cSJim Jagielski  mv -f ${BOOTSTRAPRC} ${BOOTSTRAPRC}.$$
98*b1cdbd2cSJim Jagielski  sed "s|UserInstallation.*|${USERINST}|" ${BOOTSTRAPRC}.$$ > ${BOOTSTRAPRC}
99*b1cdbd2cSJim Jagielski  rm -f ${BOOTSTRAPRC}.$$
100*b1cdbd2cSJim Jagielskifi
101*b1cdbd2cSJim Jagielski
102*b1cdbd2cSJim Jagielskiecho "Done."
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielskiexit 0
105