version 1.7, 2010/04/20 18:26:00 |
version 1.16, 2010/04/23 00:01:30 |
|
|
# Copyright (c) 2006 Alex Holst <a@mongers.org> |
# Copyright (c) 2006 Alex Holst <a@mongers.org> |
|
|
BASEDIR=/var/siteXX |
BASEDIR=/var/siteXX |
user_add_args="-m -gid =uid" |
useradd_args="-m -gid =uid" |
[ -e /var/siteXX/siteXXrc ] && . /var/siteXX/siteXXrc |
[ -e /var/siteXX/siteXXrc ] && . /var/siteXX/siteXXrc |
|
|
export PKG_PATH |
export PKG_PATH |
|
|
do_pre() { |
do_pre() { |
# nothing to do |
echo 'Running post install from sxxu' |
} |
} |
|
|
do_post() { |
do_post() { |
# nothing to do |
echo 'See /var/log/install.log for install messages.' |
} |
} |
|
|
|
# Strip comments (and leading/trailing whitespace if IFS is set) |
|
# from a file and spew to stdout |
|
stripcom() { |
|
local _file="$1" |
|
local _line |
|
|
|
{ |
|
while read _line ; do |
|
_line=${_line%%#*} # strip comments |
|
test -z "$_line" && continue |
|
echo $_line |
|
done |
|
} < $_file |
|
} |
|
|
|
|
process_roles() { |
process_roles() { |
local _oldpwd="${PWD}" |
local _oldpwd="${PWD}" |
|
|
|
|
fi |
fi |
|
|
local _roles |
local _roles |
|
unset _roles |
set -A _roles |
set -A _roles |
local _role |
local _role |
while read _role; do |
stripcom roles | while read _role; do |
_roles[${#_roles[@]}]="$_role" |
if [ -n "${_role}" ]; then |
done < roles |
_roles[${#_roles[@]}]="$_role" |
|
fi |
|
done |
|
|
for _role in "${_roles[@]}"; do |
for _role in "${_roles[@]}"; do |
apply_role "$_role" |
apply_role "$_role" |
|
|
|
|
echo ' ==> Setting PKG_PATH' |
echo ' ==> Setting PKG_PATH' |
local _line |
local _line |
while read _line; do |
stripcom pkg_path | while read _line; do |
if [ -z "${PKG_PATH}" ]; then |
if [ -z "${PKG_PATH}" ]; then |
PKG_PATH="$_line" |
PKG_PATH="$_line" |
else |
else |
PKG_PATH="${PKG_PATH}:${_line}" |
PKG_PATH="${PKG_PATH}:${_line}" |
fi |
fi |
done < pkg_path |
done |
|
|
|
PKG_PATH=`eval echo $PKG_PATH` |
} |
} |
|
|
run_command_lists() { |
run_command_lists() { |
|
|
|
|
echo " ==> Running $_cmd $_args" |
echo " ==> Running $_cmd $_args" |
local _line |
local _line |
while read _line; do |
stripcom "${_f}" | while read _line; do |
echo " => ${_line}" |
echo " => ${_cmd} ${_args} ${_line}" |
eval ${_cmd} ${_args} ${_line} |
eval ${_cmd} ${_args} ${_line} |
done < ${_f} |
done |
done |
done |
} |
} |
|
|
|
|
|
|
echo ' ==> Applying patches' |
echo ' ==> Applying patches' |
local _p |
local _p |
for _p in /patches/*; do |
for _p in patches/*; do |
|
[ X"patches/*" == X"${_p}" ] && continue |
echo " => $_p" |
echo " => $_p" |
# -N Always assume a forward patch. |
# -N Always assume a forward patch. |
# -t Never prompt; assume the user is expert |
# -t Never prompt; assume the user is expert |
# -p0 full path, always |
# -p0 full path, always |
patch -N -t -p0 < $_p |
patch -N -t -p0 -d / < "$_p" |
done |
done |
} |
} |
|
|
|
|
apply_role() { |
apply_role() { |
local _role="$1" |
local _role="$1" |
|
|
if [ ! -d "${_role}" ]; then |
local _oldpwd="${PWD}" |
|
local _rolepwd="${BASEDIR}/${_role}" |
|
|
|
if [ ! -d "${_rolepwd}" ]; then |
echo "===> Missing ${_role}" |
echo "===> Missing ${_role}" |
return |
return |
fi |
fi |
|
|
echo "===> Applying ${_role}" |
echo "===> Applying role ${_role}" |
|
|
local _oldpwd="${PWD}" |
cd "${_rolepwd}" |
cd "${_role}" |
if [ -e ./siteXXrc ]; then |
|
|
if [ -e siteXXrc ]; then |
|
echo ' ==> Including siteXXrc' |
echo ' ==> Including siteXXrc' |
. siteXXrc |
. ./siteXXrc |
fi |
fi |
|
|
append_pkg_path |
cd "${_rolepwd}" && append_pkg_path |
run_command_lists |
cd "${_rolepwd}" && run_command_lists |
apply_patches |
cd "${_rolepwd}" && apply_patches |
install_packages |
cd "${_rolepwd}" && install_packages |
|
|
if [ -e install.site ]; then |
cd "${_rolepwd}" |
if [ -x install.site ]; then |
if [ -e ./install.site ]; then |
|
if [ -x ./install.site ]; then |
echo ' ==> Running install.site' |
echo ' ==> Running install.site' |
./install.site |
./install.site |
else |
else |
echo ' ==> Including install.site' |
echo ' ==> Including install.site' |
. install.site |
. ./install.site |
fi |
fi |
fi |
fi |
|
|
|
|
exit |
exit |
fi |
fi |
|
|
do_pre |
do_pre 2>&1 | /usr/bin/tee /var/log/install.log |
process_roles |
process_roles 2>&1 | /usr/bin/tee -a /var/log/install.log | grep '^...>' |
do_post |
do_post 2>&1 | /usr/bin/tee -a /var/log/install.log |