diff -c -r -N openssh-3.0.2p1/contrib/aix/README openssh-3.0.2p1-aix/contrib/aix/README
*** openssh-3.0.2p1/contrib/aix/README	Thu Jan  1 11:00:00 1970
--- openssh-3.0.2p1-aix/contrib/aix/README	Mon Mar  4 06:51:58 2002
***************
*** 0 ****
--- 1,36 ----
+ Overview:
+ 
+ This directory contains files to build an AIX native (installp or SMIT
+ installable) openssh package.
+ 
+ 
+ Directions:
+ 
+ ./configure [options]
+ cd contrib/aix; ./buildbff.sh
+ 
+ 
+ Acknowledgements:
+ 
+ The contents of this directory are based on Ben Lindstrom's Solaris
+ buildpkg.sh. Ben also supplied inventory.sh.
+ 
+ Jim Abbey's (GPL'ed) lppbuild-2.1 was used to learn how to build .bff's
+ and for comparison with the output from this script, however no code
+ from lppbuild is included and it is not required for operation.
+ 
+ 
+ Other notes:
+ 
+ The script treats all packages as USR packages (not ROOT+USR when
+ appropriate).  It seems to work, though......
+ 
+ 
+ Disclaimer:
+ 
+ It is hoped that it is useful but there is no warranty. If it breaks
+ you get to keep both pieces.
+ 
+ 
+ 	- Darren Tucker (dtucker at zip dot com dot au)
+ 	  2002/03/01
diff -c -r -N openssh-3.0.2p1/contrib/aix/buildbff.sh openssh-3.0.2p1-aix/contrib/aix/buildbff.sh
*** openssh-3.0.2p1/contrib/aix/buildbff.sh	Thu Jan  1 11:00:00 1970
--- openssh-3.0.2p1-aix/contrib/aix/buildbff.sh	Mon Mar  4 23:06:33 2002
***************
*** 0 ****
--- 1,187 ----
+ #!/bin/sh
+ #
+ # buildbff.sh: Create AIX SMIT-installable OpenSSH packages
+ #
+ # Author: Darren Tucker (dtucker at zip dot com dot au)
+ # This file is placed in the public domain and comes with absolutely
+ # no warranty.
+ # 
+ # Based originally on Ben Lindstrom's buildpkg.sh for Solaris
+ #
+ 
+ umask 022
+ PKGNAME=openssh
+ 
+ PATH=$PATH:`pwd`		# set path for external tools
+ export PATH
+ 
+ ## 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/\"$//'`
+ BFFVERSION=`echo $VERSION | sed 's/p/./g'`
+ 
+ echo "Building BFF for $PKGNAME $VERSION (package version $BFFVERSION)"
+ PKGDIR=package
+ 
+ # Clean build directory and package file
+ rm -rf $PKGDIR
+ mkdir $PKGDIR
+ rm -f $PKGNAME-$VERSION.bff
+ 
+ if [ ! -f ../../Makefile ]
+ then
+ 	echo "Top-level Makefile not found (did you run ./configure?)"
+ 	exit 1
+ fi
+ 
+ ## Start by faking root install 
+ echo "Faking root install..."
+ START=`pwd`
+ FAKE_ROOT=$START/$PKGDIR
+ cd ../.. 
+ make install-nokeys DESTDIR=$FAKE_ROOT
+ 
+ #
+ # Fill in some details, like prefix and sysconfdir
+ #	the eval also expands variables like sysconfdir=${prefix}/etc
+ #	provided they are eval'ed in the correct order
+ #
+ for confvar in prefix exec_prefix bindir sbindir libexecdir datadir mandir mansubdir sysconfdir piddir
+ do
+ 	eval $confvar=`grep "^$confvar=" Makefile | cut -d = -f 2`
+ done
+ 
+ # Rename config files; postinstall script will copy them if necessary
+ for cfgfile in ssh_config sshd_config ssh_prng_cmds
+ do
+ 	mv $FAKE_ROOT/$sysconfdir/$cfgfile $FAKE_ROOT/$sysconfdir/$cfgfile.default
+ done
+ 
+ #
+ # Generate lpp control files.
+ #	working dir is $FAKE_ROOT but files are generated in contrib/aix
+ #	and moved into place just before creation of .bff
+ #
+ cd $FAKE_ROOT
+ echo Generating LPP control files
+ find . ! -name . -print >../openssh.al
+ inventory.sh >../openssh.inventory
+ cp ../../../LICENCE ../openssh.copyright
+ 
+ #
+ # Create postinstall script
+ #
+ cat <<EOF >>../openssh.post_i
+ #!/bin/sh
+ 
+ # Create configs from defaults if necessary
+ for cfgfile in ssh_config sshd_config ssh_prng_cmds
+ do
+         if [ ! -f $sysconfdir/\$cfgfile ]
+         then
+                 echo "Creating \$cfgfile from default"
+                 cp $sysconfdir/\$cfgfile.default $sysconfdir/\$cfgfile
+         else
+                 echo "\$cfgfile already exists."
+         fi
+ done
+ 
+ # Generate keys unless they already exist
+ if [ -f "$sysconfdir/ssh_host_key" ] ; then
+         echo "$sysconfdir/ssh_host_key already exists, skipping."
+ else
+         $bindir/ssh-keygen -t rsa1 -f $sysconfdir/ssh_host_key -N ""
+ fi
+ if [ -f $sysconfdir/ssh_host_dsa_key ] ; then
+         echo "$sysconfdir/ssh_host_dsa_key already exists, skipping."
+ else
+         $bindir/ssh-keygen -t dsa -f $sysconfdir/ssh_host_dsa_key -N ""
+ fi
+ if [ -f $sysconfdir/ssh_host_rsa_key ] ; then
+         echo "$sysconfdir/ssh_host_rsa_key already exists, skipping."
+ else 
+         $bindir/ssh-keygen -t rsa -f $sysconfdir/ssh_host_rsa_key -N ""
+ fi
+ 
+ # Add to system startup if required
+ if grep $sbindir/sshd /etc/rc.tcpip >/dev/null
+ then
+         echo "sshd found in rc.tcpip, not adding."
+ else
+         echo >>/etc/rc.tcpip
+         echo "echo Starting sshd" >>/etc/rc.tcpip
+         echo "$sbindir/sshd" >>/etc/rc.tcpip
+ fi
+ EOF
+ 
+ #
+ # Create liblpp.a and move control files into it
+ #
+ echo Creating liblpp.a
+ (
+ 	cd ..
+ 	for i in al copyright inventory post_i
+ 	do
+ 		ar -r liblpp.a openssh.$i
+ 		rm openssh.$i
+ 	done
+ )
+ 
+ #
+ # Create lpp_name
+ #
+ # This will end up looking something like:
+ # 4 R I OpenSSH {
+ # OpenSSH 3.0.2.1 1 N U en_US OpenSSH 3.0.2p1 Portable for AIX
+ # [
+ # %
+ # /usr/local/bin 8073
+ # /usr/local/etc 189
+ # /usr/local/libexec 185
+ # /usr/local/man/man1 145
+ # /usr/local/man/man8 83
+ # /usr/local/sbin 2105
+ # /usr/local/share 3
+ # %
+ # ]
+ echo Creating lpp_name
+ cat <<EOF >../lpp_name
+ 4 R I $PKGNAME {
+ $PKGNAME $BFFVERSION 1 N U en_US OpenSSH $VERSION Portable for AIX
+ [
+ %
+ EOF
+ 
+ for i in $bindir $sysconfdir $libexecdir $mandir/man1 $mandir/man8 $sbindir $datadir
+ do
+ 	# get size in 512 byte blocks
+ 	size=`du $FAKE_ROOT/$i | awk '{print $1}'`
+ 	echo "$i $size" >>../lpp_name
+ done
+ 
+ echo '%' >>../lpp_name
+ echo ']' >>../lpp_name
+ echo '}' >>../lpp_name
+ 
+ #
+ # Move pieces into place
+ #
+ mkdir -p usr/lpp/openssh
+ mv ../liblpp.a usr/lpp/openssh
+ mv ../lpp_name .
+ 
+ #
+ # Now invoke backup to create .bff file
+ #	note: lpp_name needs to be the first file do we generate the
+ #	file list on the fly and feed it to backup using -i
+ #
+ echo Creating $PKGNAME-$VERSION.bff with backup...
+ (
+ 	echo "./lpp_name"
+ 	find . ! -name lpp_name -a ! -name . -print 
+ ) | backup  -i -q -f ../$PKGNAME-$VERSION.bff $filelist
+ 
+ cd ..
+ 
+ rm -rf $PKGDIR
+ echo $0: done.
+ 
diff -c -r -N openssh-3.0.2p1/contrib/aix/inventory.sh openssh-3.0.2p1-aix/contrib/aix/inventory.sh
*** openssh-3.0.2p1/contrib/aix/inventory.sh	Thu Jan  1 11:00:00 1970
--- openssh-3.0.2p1-aix/contrib/aix/inventory.sh	Mon Mar  4 23:15:44 2002
***************
*** 0 ****
--- 1,63 ----
+ #!/bin/sh
+ #
+ # inventory.sh
+ #
+ # Originall written by Ben Lindstrom, modified by Darren Tucker to use perl
+ #
+ # This will produced and AIX package inventory file, which looks like:
+ #
+ # /usr/local/bin:
+ #          class=apply,inventory,openssh
+ #          owner=root
+ #          group=system
+ #          mode=755
+ #          type=DIRECTORY
+ # /usr/local/bin/slogin:
+ #          class=apply,inventory,openssh
+ #          owner=root
+ #          group=system
+ #          mode=777
+ #          type=SYMLINK
+ #          target=ssh
+ # /usr/local/share/Ssh.bin:
+ #          class=apply,inventory,openssh
+ #          owner=root
+ #          group=system
+ #          mode=644
+ #          type=FILE
+ #          size=VOLATILE
+ #          checksum=VOLATILE
+ 
+ find . ! -name . -print | perl -ne '{
+ 	chomp;
+ 	if ( -l $_ ) {
+ 		($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=lstat;
+ 	} else {
+ 		($dev,$ino,$mod,$nl,$uid,$gid,$rdev,$sz,$at,$mt,$ct,$bsz,$blk)=stat;
+ 	}
+ 
+ 	# Start to display inventory information
+ 	$name = $_;
+ 	$name =~ s|^.||;	# Strip leading dot from path
+ 	print "$name:\n";
+ 	print "\tclass=apply,inventory,openssh\n";
+ 	print "\towner=root\n";
+ 	print "\tgroup=system\n";
+ 	printf "\tmode=%lo\n", $mod & 07777;	# Mask perm bits
+ 	
+ 	if ( -l $_ ) {
+ 		# Entry is SymLink
+ 		print "\ttype=SYMLINK\n";
+ 		printf "\ttarget=%s\n", readlink($_);
+ 	} elsif ( -f $_ ) {
+ 		# Entry is File
+ 		print "\ttype=FILE\n";
+ 		print "\tsize=VOLATILE\n";
+ 		print "\tchecksum=VOLATILE\n";
+ 	} elsif ( -d $_ ) {
+ 		# Entry is Directory
+ 		print "\ttype=DIRECTORY\n";
+ 	} 
+ }'
+ 
+ 
