38360b6ed72fed582499a472a28ec56e44d277d4minfrin#!/usr/bin/ksh
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# Licensed to the Apache Software Foundation (ASF) under one or more
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# contributor license agreements. See the NOTICE file distributed with
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# this work for additional information regarding copyright ownership.
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# The ASF licenses this file to You under the Apache License, Version 2.0
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# (the "License"); you may not use this file except in compliance with
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# the License. You may obtain a copy of the License at
38360b6ed72fed582499a472a28ec56e44d277d4minfrin#
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# http://www.apache.org/licenses/LICENSE-2.0
38360b6ed72fed582499a472a28ec56e44d277d4minfrin#
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# Unless required by applicable law or agreed to in writing, software
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# distributed under the License is distributed on an "AS IS" BASIS,
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# See the License for the specific language governing permissions and
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# limitations under the License.
38360b6ed72fed582499a472a28ec56e44d277d4minfrin#
38360b6ed72fed582499a472a28ec56e44d277d4minfrin#
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# minstallp.ksh # create an installp image of ${NAME} (defined in aixinfo)
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# from TEMPDIR using mkinstallp (part of bos.adt.insttools)
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $# == 0 ]] && echo $0: Syntax error && echo "Syntax: $0 <BaseDirectory>" && exit -1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrinumask 022
38360b6ed72fed582499a472a28ec56e44d277d4minfrinTEMPDIR=$1
38360b6ed72fed582499a472a28ec56e44d277d4minfrinBASE=`pwd`
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $? != 0 ]] && echo $0: ${TEMPDIR} -- bad directory && exit -1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# clean up side-effects from DEBUG passes - usr/local might be there as
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# a circular link i.e. usr/local points at /usr/local
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# as we are not using /usr/local for ASF packaging, remove it!
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# mkinstallp seems to make usr/local -> /usr/local
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ -f usr/local ]] && rm -f usr/local && echo removed unexpected usr/local !!
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ -L usr/local ]] && rm -f usr/local && echo removed unexpected usr/local !!
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ -d usr/local ]] && rm -rf usr/local && echo removed unexpected usr/local !!
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# use the aixinfo for PKG NAME VERSION etc labels
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${BASE}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin. build/aix/aixinfo
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# INFO=${BASE}/build/aix/.info
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# mkdir -p $INFO
38360b6ed72fed582499a472a28ec56e44d277d4minfrinINFO=${BASE}/build/aix
38360b6ed72fed582499a472a28ec56e44d277d4minfrintemplate=${INFO}/${PKG}.${NAME}.${VERSION}.template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# mkinstallp template definitions
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# TODO: add AIX oslevel/uname information for package filename
38360b6ed72fed582499a472a28ec56e44d277d4minfrinpackage=$PKG
38360b6ed72fed582499a472a28ec56e44d277d4minfrinname=$NAME
38360b6ed72fed582499a472a28ec56e44d277d4minfrinvrmf=$VERSION
38360b6ed72fed582499a472a28ec56e44d277d4minfrinrelease=$RELEASE
38360b6ed72fed582499a472a28ec56e44d277d4minfrindescr="$NAME version ${VERSION} for $ARCH ${VENDOR}"
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# copy LICENSE information
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# TODO: setup template so that license acceptance is required
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# TODO: add Copyright Information for display during install
38360b6ed72fed582499a472a28ec56e44d277d4minfrinmkdir -p ${TEMPDIR}/usr/swlag/en_US
38360b6ed72fed582499a472a28ec56e44d277d4minfrincp ${BASE}/LICENSE ${TEMPDIR}/usr/swlag/en_US/${PKG}.${NAME}.la
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# remove files we do not want as "part" possibly
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# left-over from a previous packaging
38360b6ed72fed582499a472a28ec56e44d277d4minfrinrm -rf .info lpp_name tmp usr/lpp
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $? -ne 0 ]] && echo $cmd: cleanup error && pwd && ls -ltr && exit -1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin#if we are going to add extra symbolic links - do it now
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ -r build/aix/aixlinks ]] && ksh build/aix/aixlinks
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# get the directory sizes in blocks
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfor d in etc opt var
38360b6ed72fed582499a472a28ec56e44d277d4minfrindo
38360b6ed72fed582499a472a28ec56e44d277d4minfrin if [[ -d $d/${NAME} ]]
38360b6ed72fed582499a472a28ec56e44d277d4minfrin then
38360b6ed72fed582499a472a28ec56e44d277d4minfrin set `du -s $d/${NAME}`
38360b6ed72fed582499a472a28ec56e44d277d4minfrin else
38360b6ed72fed582499a472a28ec56e44d277d4minfrin [[ -d $d ]] && set `du -s $d`
38360b6ed72fed582499a472a28ec56e44d277d4minfrin fi
38360b6ed72fed582499a472a28ec56e44d277d4minfrin # make sure the argument exists before using setting values
38360b6ed72fed582499a472a28ec56e44d277d4minfrin if [[ -d $d ]]
38360b6ed72fed582499a472a28ec56e44d277d4minfrin then
38360b6ed72fed582499a472a28ec56e44d277d4minfrin eval nm$d=/"$2"
38360b6ed72fed582499a472a28ec56e44d277d4minfrin let sz$d=$1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin fi
38360b6ed72fed582499a472a28ec56e44d277d4minfrindone
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfiles=./${NAME}.${VERSION}
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}/..
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfind ${files} -type d -exec chmod og+rx {} \;
38360b6ed72fed582499a472a28ec56e44d277d4minfrinchmod -R go+r ${files}
38360b6ed72fed582499a472a28ec56e44d277d4minfrinchown -R 0.0 ${files}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrincat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrinPackage Name: ${PKG}.${NAME}
38360b6ed72fed582499a472a28ec56e44d277d4minfrinPackage VRMF: ${VERSION}.${RELEASE}
38360b6ed72fed582499a472a28ec56e44d277d4minfrinUpdate: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrinFileset
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset Name: ${PKG}.${NAME}.rte
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset VRMF: ${VERSION}.${RELEASE}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset Description: ${descr}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin USRLIBLPPFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin EOUSRLIBLPPFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Bosboot required: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin License agreement acceptance required: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Name of license agreement:
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Include license files in this package: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Requisites:
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $szetc -ne 0 ]] && echo " Upsize: ${nmetc} $szetc;" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $szopt -ne 0 ]] && echo " Upsize: ${nmopt} $szopt;" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $szvar -ne 0 ]] && echo " Upsize: ${nmvar} $szvar;" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrinecho " USRFiles" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# USR part -- i.e. files in /usr and /opt
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}/..
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfind ${files}/usr/swlag ${files}/opt \
38360b6ed72fed582499a472a28ec56e44d277d4minfrin | sed -e s#^${files}## | sed -e "/^$/d" >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrinecho " EOUSRFiles" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrinif [[ $szetc -gt 0 || $szvar -gt 0 ]]
38360b6ed72fed582499a472a28ec56e44d277d4minfrinthen
38360b6ed72fed582499a472a28ec56e44d277d4minfrinINSTROOT=${TEMPDIR}/usr/lpp/${PKG}.${NAME}/inst_root
38360b6ed72fed582499a472a28ec56e44d277d4minfrinmkdir -p ${INSTROOT}
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $szetc -gt 0 ]] && find ./etc -type d | backup -if - | (cd ${INSTROOT}; restore -xqf -) >/dev/null
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $szvar -gt 0 ]] && find ./var -type d | backup -if - | (cd ${INSTROOT}; restore -xqf -) >/dev/null
38360b6ed72fed582499a472a28ec56e44d277d4minfrincat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOT Part: Y
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOTFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# ROOT part
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}/..
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfind ${files}/etc ${files}/var \
38360b6ed72fed582499a472a28ec56e44d277d4minfrin | sed -e s#^${files}## | sed -e "/^$/d" >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrinelse
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# no ROOT parts to include
38360b6ed72fed582499a472a28ec56e44d277d4minfrincat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOT Part: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOTFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfi
38360b6ed72fed582499a472a28ec56e44d277d4minfrincat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin EOROOTFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Relocatable: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOFileset
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
748efed86127783eb9c65fe445fdc751d2e4f0e1trawick# man pages as separate fileset
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}
38360b6ed72fed582499a472a28ec56e44d277d4minfrinif [[ -d usr/share/man ]]
38360b6ed72fed582499a472a28ec56e44d277d4minfrinthen
38360b6ed72fed582499a472a28ec56e44d277d4minfrin # manual pages, space required calculation
38360b6ed72fed582499a472a28ec56e44d277d4minfrin set `du -s usr/share/man`
38360b6ed72fed582499a472a28ec56e44d277d4minfrin szman=$1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin descr="$NAME ${VERSION} man pages ${VENDOR}"
38360b6ed72fed582499a472a28ec56e44d277d4minfrin cat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrinFileset
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset Name: ${PKG}.${NAME}.man.en_US
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset VRMF: ${VERSION}.${RELEASE}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Fileset Description: ${descr}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin USRLIBLPPFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin EOUSRLIBLPPFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Bosboot required: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin License agreement acceptance required: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Name of license agreement:
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Include license files in this package: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Requisites:
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin echo " Upsize: /usr/share/man ${szman};" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin echo " USRFiles" >> $template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin cd ${TEMPDIR}/..
38360b6ed72fed582499a472a28ec56e44d277d4minfrin find ${files}/usr/share | sed -e s#^${files}## | sed -e "/^$/d" >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin cat - <<EOF >>$template
38360b6ed72fed582499a472a28ec56e44d277d4minfrin EOUSRFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOT Part: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrin ROOTFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin EOROOTFiles
38360b6ed72fed582499a472a28ec56e44d277d4minfrin Relocatable: N
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOFileset
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrinEOF
38360b6ed72fed582499a472a28ec56e44d277d4minfrinfi
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# use mkinstallp to create the fileset. result is in ${TEMPDIR}/tmp
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# must actually sit in TEMPDIR for ROOT part processing to succeed
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# also - need "empty" directories to exist, as they do not get copied
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# in the inst_root part
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${TEMPDIR}
38360b6ed72fed582499a472a28ec56e44d277d4minfrinmkinstallp -d ${TEMPDIR} -T ${template}
38360b6ed72fed582499a472a28ec56e44d277d4minfrin[[ $? -ne 0 ]] && echo mkinstallp returned error status && exit -1
38360b6ed72fed582499a472a28ec56e44d277d4minfrin
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# copy package to build/aix
38360b6ed72fed582499a472a28ec56e44d277d4minfrin# create TOC
38360b6ed72fed582499a472a28ec56e44d277d4minfrincp ${TEMPDIR}/tmp/$PKG.$NAME.$VERSION.0.bff ${BASE}/build/aix
38360b6ed72fed582499a472a28ec56e44d277d4minfrincd ${BASE}/build/aix
38360b6ed72fed582499a472a28ec56e44d277d4minfrinrm -f $PKG.$NAME.$VERSION.$ARCH.I
38360b6ed72fed582499a472a28ec56e44d277d4minfrinmv $PKG.$NAME.$VERSION.0.bff $PKG.$NAME.$ARCH.$VERSION.I
38360b6ed72fed582499a472a28ec56e44d277d4minfrinrm -f .toc
38360b6ed72fed582499a472a28ec56e44d277d4minfrininutoc .