OpenSceneGraph/Make/makepkg
2003-06-24 15:40:09 +00:00

221 lines
3.8 KiB
Bash

#!/bin/sh
die()
{
echo >& $1
exit 1
}
x()
{
echo $*
$*
}
print_pkginfo()
{
__pstamp=`fgrep $LOGNAME /etc/passwd | cut -f5 -d":"`
cat <<- EOF
PKG="$1"
NAME="$2"
`[ "$OS" = "SunOS" ] && echo ARCH=sparc`
VERSION=`gmake -s version`
CATEGORY="application,graphics,opengl"
DESC="$3"
BASEDIR="/opt/"
VENDOR="OpenSceneGraph"
EMAIL="info@openscenegraph.org"
PSTAMP=$__pstamp
URL="http://openscenegraph.org"
MAXINST="1"
EOF
}
print_prototype()
{
echo "i pkginfo"
[ -f depend ] && echo "i depend"
for d in $*
do
d=`echo $d | sed 's/\/opt\///`
echo "d none $d ? root sys"
done
for d in $*
do
for f in `ls -1 $d`
do
f=$d/$f
if [ -f $f ]
then
[ -x $f ] && MODE=0555 || MODE=0444
dest=`echo $f | sed 's/\/opt\///'`
echo "f none $dest=$f $MODE root sys"
fi
done
done
}
make_installable()
{
PKGNAME=$1
PKGDIR=$PKGNAME.pkg
DISTNAME="$PKGNAME"-"`gmake -s version`"-"$OS".shar
THISDIR=`pwd`
cd $PKGSUBDIR
cat << INSTALL_EOF > $DISTNAME
#!/bin/sh
cat <<- 'LEOF' | uudecode -p | gzip -d -c | tar xvf -
`tar cvf - $PKGDIR | gzip | uuencode .tmpuu`
LEOF
/bin/sh << EOF
echo =========== INSTALLING $DISTNAME =================
pkgadd -d $PKGNAME.pkg $PKGNAME
rm -rf $PKGDIR
EOF
INSTALL_EOF
chmod +x $DISTNAME
cd $THISDIR
}
make_package()
{
PKGNAME=$1
PKGDIR=$PKGSUBDIR/$PKGNAME.pkg
x rm -rf $PKGDIR
x mkdir $PKGDIR
echo Making pkginfo ...
print_pkginfo "$1" "$2" "$3" > $PKGDIR/pkginfo
shift; shift; shift
echo Making prototype ...
print_prototype $* > $PKGDIR/prototype
# DISTNAME="$PKGNAME"-"`$TOPDIR/bin/osgversion`"-"$OS"-"local"
THISDIR=`pwd`
x cd $PKGDIR
x pkgmk -d .
x cd $THISDIR
# make_installable $PKGNAME $PKGDIR $DISTNAME
# x pkgtrans -s $PKGDIR $DISTNAME $PKGNAME
# x mv "$PKGDIR"/"$DISTNAME" "$PKGDIR"/..
}
intro()
{
echo; echo;
echo "============ Building the $OS Distribution Package ==================="
echo ""
echo " Please note that this script requires that"
echo
echo " 'make install' "
echo
echo " be previously run. Please run "
echo
echo " 'make distribution' "
echo
echo " with the same arguments (if any) as 'make install'"
echo
repeat=1
while [ $repeat = 1 ]
do
printf " Continue? (y/n) [y]: "
read resp
case $resp in
""|Yes|YES|yes|Y|y) repeat=0 ;;
n|N|no|NO) return 1; repeat=0;;
*) repeat=1;;
esac
done
return 0
}
intro || exit 0
OS=$1
TOPDIR=$2
INST_LIBS=$3
INST_PLUGINS=$4
INST_INCLUDE=$5
INST_EXAMPLES=$6
INST_SRC=$7
INST_EXAMPLE_SRC=$8
shift;shift; shift;shift; shift;shift; shift;shift;
INST_DOC=$1
INST_DATA=$2
PKGSUBDIR=dist/PKG
make_package\
"OpenSceneGraph" \
"Open Scene Graph - Run-time environment"\
"An OpenGL based scene graph. This installation includes a set of run-time libraries, and example programs"\
$INST_LIBS $INST_PLUGINS $INST_EXAMPLES\
make_installable "OpenSceneGraph"
#
# Capture include directories
#
SUBDIRS=`ls $TOPDIR/include | grep -v CVS`
INSTARG=""
for d in $SUBDIRS
do
dd="$INST_INCLUDE"/"$d"
[ -d $dd ] && INSTARG="$INSTARG $dd"
done
#
# Capthre examples subdirectories
#
SUBDIRS=`ls $TOPDIR/src/examples | grep -v CVS`
for d in $SUBDIRS
do
dd="$INST_EXAMPLE_SRC"/"$d"
[ -d $dd ] && INSTARG="$INSTARG $dd"
done
#
# Capture Make subdirectory
#
dd="$INST_SRC"/"Make"
echo dd is $dd
ls $dd
[ -d $dd ] && INSTARG="$INSTARG $dd"
make_package\
"OpenSceneGraph-dev"\
"Open Scene Graph - Development environment"\
"An OpenGL based scene graph. This installation includes header files and example program source files"\
$INSTARG
make_installable "OpenSceneGraph-dev"
exit 0