#!/bin/sh # # Fake Root Solaris Build System - Prototype # # The following code has been provide under Public Domain License. I really # don't care what you use it for. Just as long as you don't complain to me # nor my employer if you break it. - Ben Lindstrom (mouring@eviladmin.org) # umask 022 PKGNAME=OpenSSH ## Extract common info requires for the 'info' part of the package. VERSION=`tail -1 ../../version.h | sed -e 's/.*_\([0-9]\)/\1/g' | sed 's/\"$//'` ARCH=`uname -p` ## Start by faking root install echo "Faking root install..." START=`pwd` FAKE_ROOT=$START/package mkdir $FAKE_ROOT cd ../.. make install-nokeys DESTDIR=$FAKE_ROOT ## Fill in some details, like prefix and sysconfdir ETCDIR=`grep "^sysconfdir=" Makefile | sed 's/sysconfdir=//'` PREFIX=`grep "^prefix=" Makefile | cut -d = -f 2` PIDDIR=`grep "^piddir=" Makefile | cut -d = -f 2` cd $FAKE_ROOT ## Setup our run level stuff while we are at it. mkdir -p $FAKE_ROOT/etc/init.d mkdir -p $FAKE_ROOT/etc/rcS.d mkdir -p $FAKE_ROOT/etc/rc0.d mkdir -p $FAKE_ROOT/etc/rc1.d mkdir -p $FAKE_ROOT/etc/rc2.d ## setup our initscript correctly sed -e "s#%%configDir%%#$ETCDIR#g" \ -e "s#%%openSSHDir%%#$PREFIX#g" \ -e "s#%%pidDir%%#$PIDDIR#g" \ ../opensshd.in > $FAKE_ROOT/etc/init.d/opensshd chmod 711 $FAKE_ROOT/etc/init.d/opensshd ln -s ../init.d/opensshd $FAKE_ROOT/etc/rcS.d/K30opensshd ln -s ../init.d/opensshd $FAKE_ROOT/etc/rc0.d/K30opensshd ln -s ../init.d/opensshd $FAKE_ROOT/etc/rc1.d/K30opensshd ln -s ../init.d/opensshd $FAKE_ROOT/etc/rc2.d/S98opensshd ## Ok, this is outright wrong, but it will work. I'm tired of pkgmk ## whining. for i in *; do PROTO_ARGS="$PROTO_ARGS $i=/$i"; done ## Build info file echo "Building pkginfo file..." cat > pkginfo << _EOF PKG=$PKGNAME NAME=OpenSSH Portable for Solaris DESC="Secure Shell remote access utility; replaces telnet and rlogin/rsh." VENDOR="OpenSSH Portable Team - http://www.openssh.com/portable.html" BASEDIR=$FAKE_ROOT ARCH=$ARCH VERSION=$VERSION CATEGORY=Security BASEDIR=/ _EOF ## Next Build our prototype echo "Building prototype file..." find . | egrep -v "prototype|pkginfo" | sort | pkgproto $PROTO_ARGS | \ awk ' BEGIN { print "i pkginfo" } { $5="root"; $6="sys"; } { print; }' > prototype ## Step back a directory and now build the package. echo "Building package.." cd .. pkgmk -d . -f $FAKE_ROOT/prototype -o rm -rf $FAKE_ROOT echo | pkgtrans -os . $PKGNAME-$ARCH-$VERSION.pkg rm -rf $PKGNAME