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