#!/bin/sh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License, Version 1.0 only # (the "License"). You may not use this file except in compliance # with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # #ident "%Z%%M% %I% %E% SMI" # PATH=/usr/sadm/bin:$PATH COPY_CONFIG="false" IS_AN_UPGRADE="false" RELEASE="None" # # figure out CLASSES to install # CLASSES="none svmpreserve manifest" # #determine the version of SDS. # Classify into 3 group, SLVM, 421 and pre421 # # # private_pkginfo is to work around a bug in pkginfo, namely, # if the admin file has instance=overwrite, pkginfo, pkgparam etc. # will fail. This is only an issue when upgrading from SDS 4.2.1 to # Solaris Volume Manager because both have the same pkg names. # # The workaround is to directly examine the pkginfo files. # We depend on the fact that there can be exactly one instance of # a pkg at any given time. The instance could toggle between # $PKG and $PKG.2 # For instance=overwrite, the pkg directory is renamed to # .save.${PKG}. Again, there could a second instance of this, # hence we also check for .save.${PKG}.2 # # This approach implies that we are using potentially unstable # interfaces and depending on specific knowledge that may be # incompatible in the future. For example, the fact that there # can be exactly two instances for a pkg is hardcoded into # private_pkginfo. Others are the version formatof the pkg. # # # private_pkginfo: # Returns: PKG_EXISTS and PKGINFO # if PKG_EXISTS is "true" then PKGINFO has a valid path # PKG_EXISTS="false" PKGDIR=${PKG_INSTALL_ROOT:=/}/var/sadm/pkg PKGINFO="" private_pkginfo() { if [ -d ${PKGDIR}/${PKG} ]; then PKGINFO=${PKGDIR}/${PKG}/pkginfo fi if [ -d ${PKGDIR}/${PKG}.2 ]; then PKGINFO=${PKGDIR}/${PKG}.2/pkginfo fi if [ -d ${PKGDIR}/.save.${PKG} ]; then PKGINFO=${PKGDIR}/.save.${PKG}/pkginfo fi if [ -d ${PKGDIR}/.save.${PKG}.2 ]; then PKGINFO=${PKGDIR}/.save.${PKG}.2/pkginfo fi if [ "$PKGINFO" != "" ]; then grep "PKG=SUNWmdr" ${PKGINFO} > /dev/null 2>&1 if [ $? -eq 0 ]; then PKG_EXISTS="true" fi fi } private_pkginfo if [ $PKG_EXISTS = "true" ]; then IS_AN_UPGRADE="true" x=`grep -w VERSION ${PKGINFO} | nawk -F ",|=" '{ printf("%s", $2) }'` if [ "$x" = "4.2.1" ]; then RELEASE="421" else RELEASE="SLVM" fi fi pkginfo -R ${PKG_INSTALL_ROOT} -q SUNWmd\*; if [ $? -eq 0 ]; then IS_AN_UPGRADE="true" RELEASE="pre421" CLASSES="${CLASSES} legacy" COPY_CONFIG="true" fi # # export environment variables to install # echo CLASSES="${CLASSES}" >> $1 echo IS_AN_UPGRADE="${IS_AN_UPGRADE}" >> $1 echo RELEASE="${RELEASE}" >> $1 echo COPY_CONFIG="${COPY_CONFIG}" >> $1 exit 0