3cfe24f8ce
stand now are built of a static list of files, the prototype for the packages is not being dynamically generated. The goal will be to make changes to have dynamically generated package prototypes. This commit was SVN r11160.
228 строки
5.7 KiB
Bash
Исполняемый файл
228 строки
5.7 KiB
Bash
Исполняемый файл
#!/bin/ksh
|
|
|
|
# Copyright (c) 2006 Sun Microsystems, Inc. All rights reserved.
|
|
# Use is subject to license terms.
|
|
|
|
#
|
|
# This script takes as input a path to a prototype space of files that are to be
|
|
# encapsulated in Solaris packages. The installation must include both 32 and
|
|
# 64 bit libaries and prefixed in the correct manner.
|
|
#
|
|
# The steps to build are as follows using vpaths:
|
|
# % cd ompi-trunk
|
|
# % ./autogen.sh
|
|
# % mkdir -p vpath/64 vpath/32/ vpath/proto
|
|
#
|
|
# (sparc build)
|
|
# % cd vpath/64
|
|
# % ../../configure --enable-shared --enable-mpi-f90 \
|
|
# --with-tm=/path/to/OpenPBS --with-threads=solaris --enable-mpi-threads \
|
|
# CFLAGS="-xarch=v9" CXXFLAGS="-xarch=v9" FFLAGS="-stackvar -mt -dalign \
|
|
# -fpp -xarch=v9" FCFLAGS="-xarch=v9 -KPIC" --disable-binaries \
|
|
# --prefix=/opt/SUNWhpc/HPC7.0 --libdir=/opt/SUNWhpc/HPC7.0/lib/sparcv9 \
|
|
# --includedir=/opt/SUNWhpc/HPC7.0/include/v9
|
|
# % make DESTDIR=/path/to/ompi-trunk/vpath/proto install
|
|
# % cd ../32
|
|
# % ../../configure --enable-shared --enable-mpi-f90 \
|
|
# --with-tm=/path/to/OpenPBS --with-threads=solaris --enable-mpi-threads \
|
|
# CFLAGS="" CXXFLAGS="" FFLAGS="-stackvar -mt -dalign -fpp" \
|
|
# FCFLAGS="-KPIC" --prefix=/opt/SUNWhpc/HPC7.0 \
|
|
# --libdir=/opt/SUNWhpc/HPC7.0/lib --includedir=/opt/SUNWhpc/HPC7.0/include
|
|
# % make DESTDIR=/path/to/ompi-trunk/vpath/proto install
|
|
# % cd ../../contrib/dist/solaris
|
|
# % ./bld_solaris_pkgs /path/to/vpath/proto/opt/SUNWhpc/HPC7.0
|
|
#
|
|
# (amd/i386 build)
|
|
# % cd vpath/64
|
|
# % ../../configure --enable-shared --enable-mpi-f90 \
|
|
# --with-tm=/path/to/OpenPBS --with-threads=solaris --enable-mpi-threads \
|
|
# CFLAGS="" CXXFLAGS="" FFLAGS="-stackvar -mt -dalign \
|
|
# -fpp" FCFLAGS="-KPIC" \
|
|
# --prefix=/opt/SUNWhpc/HPC7.0 --libdir=/opt/SUNWhpc/HPC7.0/lib/amd64 \
|
|
# --includedir=/opt/SUNWhpc/HPC7.0/include/amd64
|
|
# % make DESTDIR=/path/to/ompi-trunk/vpath/proto install
|
|
# % cd ../32
|
|
# % ../../configure --enable-shared --enable-mpi-f90 \
|
|
# --with-tm=/path/to/OpenPBS --with-threads=solaris --enable-mpi-threads \
|
|
# CFLAGS="" CXXFLAGS="" FFLAGS="-stackvar -mt -dalign -fpp" \
|
|
# FCFLAGS="-KPIC" --prefix=/opt/SUNWhpc/HPC7.0 \
|
|
# --libdir=/opt/SUNWhpc/HPC7.0/lib --includedir=/opt/SUNWhpc/HPC7.0/include
|
|
# % make DESTDIR=/path/to/ompi-trunk/vpath/proto install
|
|
# % cd ../../contrib/dist/solaris
|
|
# % ./bld_solaris_pkgs /path/to/vpath/proto/opt/SUNWhpc/HPC7.0
|
|
#
|
|
# This is not the ideal case for long term use. There needs to be changes to
|
|
# build dynamic packages instead of the static packages we have now.
|
|
#
|
|
|
|
PATH=/usr/bin/usr/sbin:${PATH}
|
|
|
|
#
|
|
# global variables
|
|
#
|
|
ARCH=`uname -p`
|
|
DATE=`date +'%Y.%m.%d'`
|
|
#PKGNAMES="SUNWompi SUNWompimn SUNWomsc SUNWorte SUNWortemn"
|
|
PKGNAMES="SUNWompi SUNWorte SUNWortemn"
|
|
PLATFORM=`uname -s`
|
|
PROTO=
|
|
SED_PKGINFO_PROTO=sed_pkginfo_proto
|
|
SPOOLDEV=`pwd`"/${PLATFORM}/${ARCH}/${DATE}"
|
|
|
|
#
|
|
# build_package: This function takes as input the name of the package to build
|
|
# and constructs the package into ${SPOOLDEV}/${PLATFORM}/${ARCH}/${DATE}
|
|
#
|
|
function build_package
|
|
{
|
|
f_pkg_name=$1
|
|
|
|
if [ ${BASE} ] ; then
|
|
SPOOLDEV=${BASE}
|
|
fi
|
|
|
|
if [ ! -d ${SPOOLDEV} ] ; then
|
|
mkdir -p ${SPOOLDEV}
|
|
fi
|
|
pkgmk -b ${PROTO} -d ${SPOOLDEV} -f prototype.${f_pkg_name}
|
|
}
|
|
|
|
#
|
|
# build_sed_script: This function creates the temporary sed script that is used
|
|
# to process the pkginfo and prototype template files.
|
|
#
|
|
function build_sed_script
|
|
{
|
|
if [ ${ARCH} == sparc ] ; then
|
|
lib_v9="sparcv9"
|
|
inc_v9="v9"
|
|
elif [ ${ARCH} == i386 ] ; then
|
|
lib_v9="amd64"
|
|
inc_v9="amd64"
|
|
else
|
|
lib_v9="64"
|
|
inc_v9="64"
|
|
fi
|
|
|
|
if [ -f ${SED_PKGINFO_PROTO} ] ; then
|
|
rm -f ${SED_PKGINFO_PROTO}
|
|
fi
|
|
|
|
cat << _EOF > ${SED_PKGINFO_PROTO}
|
|
s/\/LIB_ISAV9/\/${lib_v9}/g
|
|
s/\/INC_ISAV9/\/${inc_v9}/g
|
|
s/\/LIB_ISA/\/${ARCH}/g
|
|
s/\/INC_ISA/\/${ARCH}/g
|
|
s/\/ISA/\/${ARCH}/g
|
|
_EOF
|
|
|
|
}
|
|
|
|
#
|
|
# cleanup_pkginfo: This function takes a single input of a package name and
|
|
# removes the non-templete version of the pkginfo file after the package
|
|
# has been created.
|
|
#
|
|
function cleanup_pkginfo
|
|
{
|
|
f_pkginfo_name=pkginfo.$1
|
|
|
|
if [ -f ${f_pkginfo_name} ] ; then
|
|
rm -f ${f_pkginfo_name}
|
|
fi
|
|
}
|
|
|
|
#
|
|
# cleanup_prototype: This function takes a single input of a package name and
|
|
# removes the non-templete version of the prototype file after the package
|
|
# has been created.
|
|
#
|
|
function cleanup_prototype
|
|
{
|
|
f_proto_name=prototype.$1
|
|
|
|
if [ -f ${f_proto_name} ] ; then
|
|
rm -f ${f_proto_name}
|
|
fi
|
|
}
|
|
|
|
#
|
|
# update_pkginfo: This function takes a single input of a package name and
|
|
# creates the needed pkginfo file from the template and processing it
|
|
# with the sed_pkginfo_proto script.
|
|
#
|
|
function update_pkginfo
|
|
{
|
|
f_pkginfo_name=pkginfo.$1
|
|
|
|
if [ -f ${f_pkginfo_name} ] ; then
|
|
rm -f ${f_pkginfo_name}
|
|
fi
|
|
|
|
sed -f ${SED_PKGINFO_PROTO} ${f_pkginfo_name}.tmpl > ${f_pkginfo_name}
|
|
}
|
|
|
|
#
|
|
# update_prototype: This function takes a single input of a package name and
|
|
# creates the needed prototype file from the template and processing it
|
|
# with the sed_pkginfo_proto script.
|
|
#
|
|
function update_prototype
|
|
{
|
|
f_proto_name=prototype.$1
|
|
|
|
if [ -f ${f_proto_name} ] ; then
|
|
rm -f ${f_proto_name}
|
|
fi
|
|
|
|
sed -f ${SED_PKGINFO_PROTO} ${f_proto_name}.tmpl > ${f_proto_name}
|
|
}
|
|
|
|
#
|
|
#
|
|
#
|
|
function usage
|
|
{
|
|
prog=`basename $0`
|
|
print "Usage: ${prog} [-b build-base] -p proto-dir"
|
|
print " -b path to place built packages"
|
|
print " -p path to the prototype space of files to be packaged"
|
|
}
|
|
|
|
#
|
|
# main
|
|
#
|
|
if (( $# < 1 )) ; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
while getopts b:p: a
|
|
do
|
|
case "$a" in
|
|
b) BASE=$OPTARG;;
|
|
p) PROTO=$OPTARG;;
|
|
esac
|
|
done
|
|
|
|
if [ ! -d ${PROTO} ]; then
|
|
print "Error: the proto space ${PROTO} does not exist."
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
build_sed_script
|
|
|
|
for pkg in ${PKGNAMES}
|
|
do
|
|
update_pkginfo ${pkg}
|
|
update_prototype ${pkg}
|
|
|
|
build_package ${pkg}
|
|
|
|
cleanup_pkginfo ${pkg}
|
|
cleanup_prototype ${pkg}
|
|
done
|
|
|
|
rm ${SED_PKGINFO_PROTO}
|