#!/bin/sh
##
## Make template ssbuild-scripts to prepare, configure, build and install...
## Copyright (c) 2002-2007 SATOH Fumiyasu @ OSS Technology Co. Japan
##                         <http://www.osstech.co.jp/>
##

set -e
set -u
umask 0022
LC_ALL=C
export LC_ALL

SB_PKG_PREFIX=""
SB_PKG_VENDOR="OSS Technology Co., Japan <http://www.osstech.co.jp/>"
SB_DEST_PREFIX="/opt/osstech"
SB_DEST_EXEC_PREFIX="/opt/osstech"

COPYING='Copyright (c) 2002-2007 SATOH Fumiyasu, All rights reserved.'
VERSION='2007-04-04' # since 2002-04-01
HEADER="by ssbuild-template
## $COPYING
##
## Generated by: $0 $VERSION
## Generated at: `date '+%Y-%m-%d %H:%M:%S'`
##"

mkdir -p dist log source

## ======================================================================

test -f ssbuild-common || cat <<EOF_COMMON >ssbuild-common
#!/bin/sh
##
## ssbuild-common $HEADER

set -x
set -e
set -u

. /opt/osstech/lib/ssbuild/env-pre.sh

cd "\`dirname "\$0"\`"

SB_TOP_DIR="\`pwd\`"
SB_LOG_DIR="\$SB_TOP_DIR/log"
SB_SOURCE_DIR="\$SB_TOP_DIR/source"
SB_BUILD_DIR="\$SB_TOP_DIR/build"
SB_DEST_DIR="\$SB_TOP_DIR/dest"
SB_PKG_DIR="\$SB_TOP_DIR/pkg"
SB_DATETIME="\`date '+%Y%m%d%H%M%S'\`"

. ./ssbuild-00info

. /opt/osstech/lib/ssbuild/env-post.sh
EOF_COMMON

## ======================================================================

test -f ssbuild-all || cat <<EOF_ALL >ssbuild-all
#!/bin/sh
##
## ssbuild-all $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

for build in ssbuild-[1-9][0-9]*; do
    echo "\$build: Start"
    if "./\$build"; then
	echo "\$build: End"
    else
	echo "\$build: Failed"
	exit 1
    fi
done
EOF_ALL

## ======================================================================

test -f ssbuild-clean || cat <<EOF_CLEAN >ssbuild-clean
#!/bin/sh
##
## ssbuild-all $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

rm -rf log build dest pkg 
mkdir log
EOF_CLEAN

## ======================================================================

test -f ssbuild-soruce || cat <<EOF_SOURCE >ssbuild-source
#!/bin/sh
##
## ssbuild-all $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

./ssbuild-clean

dst_base="\$SB_PKG_PREFIX\$SB_PKG_NAME-\$SB_PKG_VERSION\${SB_PKG_RELEASE:+-\$SB_PKG_RELEASE}"
trap 'rm -rf "\$dst_base"' 0
trap 'rm -rf "\$dst_base"; exit 1' HUP INT QUIT TERM PIPE

rm -rf "\$dst_base"
mkdir "\$dst_base"
find . \\( -name "\$dst_base" -o -name .svn \\) -prune -o -print |cpio -pdl "\$dst_base"
tar cf "../\$dst_base.ssbuild.tar" "\$dst_base"
EOF_SOURCE

## ======================================================================

test -f ssbuild-00info || cat <<EOF_INFO >ssbuild-00info
#!/bin/sh
##
## ssbuild-00info $HEADER

SB_PKG_PREFIX="${SB_PKG_PREFIX:-}"
SB_PKG_NAME="\`pwd |sed 's#^.*/##;s#-[^-]*\$##;s#-[^-]*\$##'\`"
SB_PKG_VERSION="\`pwd |sed 's#-[^-]*\$##;s#^.*-##'\`"
SB_PKG_RELEASE="\`pwd |sed 's#^.*-##'\`"
SB_PKG_SUMMARY="\$SB_PKG_NAME \$SB_PKG_VERSION"
SB_PKG_VENDOR="${SB_PKG_VENDOR:-}"

SB_SOURCE1="\$SB_SOURCE_DIR/\$SB_PKG_NAME-\$SB_PKG_VERSION.tar.gz"
SB_BUILD1_DIR="\$SB_BUILD_DIR/\$SB_PKG_NAME-\$SB_PKG_VERSION"

SB_DEST_PREFIX="${SB_DEST_PREFIX:-}"
SB_DEST_EXEC_PREFIX="${SB_DEST_EXEC_PREFIX:-/usr}"
SB_DEST_BIN_DIR="\$SB_DEST_EXEC_PREFIX/bin"
SB_DEST_SBIN_DIR="\$SB_DEST_EXEC_PREFIX/sbin"
SB_DEST_LIBEXEC_DIR="\$SB_DEST_EXEC_PREFIX/libexec"
SB_DEST_DATA_DIR="\$SB_DEST_EXEC_PREFIX/share"
SB_DEST_SYSCONF_DIR="\$SB_DEST_PREFIX/etc"
SB_DEST_SHAREDSTATE_DIR="\$SB_DEST_EXEC_PREFIX/com"
SB_DEST_LOCALSTATE_DIR="\$SB_DEST_PREFIX/var"
SB_DEST_LIB_DIR="\$SB_DEST_EXEC_PREFIX/lib"
SB_DEST_INCLUDE_DIR="\$SB_DEST_EXEC_PREFIX/include"
SB_DEST_INFO_DIR="\$SB_DEST_DATA_DIR/info"
SB_DEST_MAN_DIR="\$SB_DEST_DATA_DIR/man"
EOF_INFO

## ======================================================================

test -f ssbuild-10prepare || cat <<EOF_PREPARE >ssbuild-10prepare
#!/bin/sh
##
## ssbuild-10prepare $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

rm -rf "\$SB_BUILD_DIR"
mkdir "\$SB_BUILD_DIR"
cd "\$SB_BUILD_DIR"

xzcat "\$SB_SOURCE1" |tar xf -
cd "\$SB_BUILD1_DIR"

#xzcat "\$SB_SOURCE_DIR/CHANGEME.patch" |patch -p1
EOF_PREPARE

## ======================================================================

test -f ssbuild-20configure || cat <<EOF_CONFIGURE >ssbuild-20configure
#!/bin/sh
##
## ssbuild-20configure $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

cd "\$SB_BUILD1_DIR"

./configure \\
--prefix="\$SB_DEST_PREFIX" \\
--exec-prefix="\$SB_DEST_EXEC_PREFIX" \\
--bindir="\$SB_DEST_BIN_DIR" \\
--sbindir="\$SB_DEST_SBIN_DIR" \\
--libexecdir="\$SB_DEST_LIBEXEC_DIR" \\
--datadir="\$SB_DEST_DATA_DIR" \\
--sysconfdir="\$SB_DEST_SYSCONF_DIR" \\
--sharedstatedir="\$SB_DEST_SHAREDSTATE_DIR" \\
--localstatedir="\$SB_DEST_LOCALSTATE_DIR" \\
--libdir="\$SB_DEST_LIB_DIR" \\
--includedir="\$SB_DEST_INCLUDE_DIR" \\
--infodir="\$SB_DEST_INFO_DIR" \\
--mandir="\$SB_DEST_MAN_DIR" \\
#FIXME 2>&1|tee "\$SB_LOG_DIR/ssbuild-\$SB_DATETIME.configure.log"
EOF_CONFIGURE

## ======================================================================

test -f ssbuild-30build || cat <<EOF_BUILD >ssbuild-30build
#!/bin/sh
##
## ssbuild-30build $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

cd "\$SB_BUILD1_DIR"

make \\
#FIXME 2>&1|tee "\$SB_LOG_DIR/ssbuild-\$SB_DATETIME.make.log"

#make test \\
##FIXME 2>&1|tee "\$SB_LOG_DIR/ssbuild-\$SB_DATETIME.make_test.log"
EOF_BUILD

## ======================================================================

test -f ssbuild-40install || cat <<EOF_INSTALL >ssbuild-40install
#!/bin/sh
##
## ssbuild-40install $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

cd "\$SB_BUILD1_DIR"

if [ x"\$SB_DEST_DIR" != x"/" ]; then
    rm -rf "\$SB_DEST_DIR"
    mkdir "\$SB_DEST_DIR"
    chmod g-s "\$SB_DEST_DIR"
fi

make install \\
DESTDIR="\$SB_DEST_DIR" \\
#FIXME 2>&1|tee "\$SB_LOG_DIR/ssbuild-\$SB_DATETIME.make_install.log"

## FIXME: Create post-install and use install-info(8) in it...
rm -f "$SB_DEST_DIR$SB_DEST_DATA_DIR/info/dir"

find "\$SB_DEST_DIR\$SB_DEST_SYSCONF_DIR" -type f \\
|while read file; do
    mv "\$file" "\$file.default"
done
EOF_INSTALL

## ======================================================================

test -f ssbuild-50mkpkg || cat <<EOF_MKPKG >ssbuild-50mkpkg
#!/bin/sh
##
## ssbuild-50mkpkg $HEADER

. "\`dirname "\$0"\`/ssbuild-common"

if [ x"\$SB_DEST_DIR" = x"/" ]; then
    echo "\$0: cannot use this script for / directory" 1>&2
    exit 1
fi

rm -rf "\$SB_PKG_DIR"
mkdir "\$SB_PKG_DIR"

ssbuild-pkgmk \\
    \${SB_PKG_RELEASE:+--revision} \${SB_PKG_RELEASE:+"\$SB_PKG_RELEASE"} \\
    \${SB_PKG_VENDOR:+--vendor} \${SB_PKG_VENDOR:+"\$SB_PKG_VENDOR"} \\
    \${SB_PKG_SUMMARY:+--summary} \${SB_PKG_SUMMARY:+"\$SB_PKG_SUMMARY"} \\
    "\$SB_DEST_DIR" \\
    "\$SB_PKG_PREFIX\$SB_PKG_NAME" \\
    "\$SB_PKG_VERSION" \\
    "\$SB_PKG_DIR"
EOF_MKPKG

## ======================================================================

for ssbuild in ssbuild-*; do
    test -f "dist/$ssbuild" || cp -p "$ssbuild" dist/
done
chmod +x ssbuild-*

exit 0

