mirror of https://github.com/BOINC/boinc.git
92 lines
3.0 KiB
Plaintext
92 lines
3.0 KiB
Plaintext
|
#! /bin/sh
|
||
|
|
||
|
PATH=/bin:/usr/bin:/usr/ucb/bin:/opt/csw/bin
|
||
|
export PATH
|
||
|
|
||
|
if [ -x $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf ] ; then
|
||
|
. $PKG_INSTALL_ROOT/opt/csw/etc/csw.conf
|
||
|
fi
|
||
|
if [ -x $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf ] ; then
|
||
|
. $PKG_INSTALL_ROOT/etc/opt/csw/csw.conf
|
||
|
fi
|
||
|
|
||
|
BOINCUSER=boinc
|
||
|
BOINCGROUP="`( groups ${BOINCUSER} 2>/dev/null || echo boinc ) | gawk '{print $1}'`"
|
||
|
|
||
|
MAJOR=`uname -r | gawk -F. '{print $1}'`
|
||
|
MINOR=`uname -r | gawk -F. '{print $2}'`
|
||
|
# find our run directory
|
||
|
if [ $MAJOR -gt 5 -o \( $MAJOR -eq 5 -a $MINOR -gt 9 \) ] ; then
|
||
|
BOINCDIR=$PKG_INSTALL_ROOT/var/lib/boinc
|
||
|
if [ -d $PKG_INSTALL_ROOT/var/opt/csw/boinc -a ! -d $PKG_INSTALL_ROOT/var/lib/boinc ] ; then
|
||
|
mv -f $PKG_INSTALL_ROOT/var/opt/csw/boinc $PKG_INSTALL_ROOT/var/lib/boinc
|
||
|
fi
|
||
|
else
|
||
|
BOINCDIR=$PKG_INSTALL_ROOT/var/opt/csw/boinc
|
||
|
fi
|
||
|
|
||
|
# find out if the group $BOINCGROUP exists
|
||
|
GROUPENT=`getent group $BOINCGROUP`
|
||
|
|
||
|
# if we need to create the boinc group, find the first unused group number
|
||
|
# 2316 or highter
|
||
|
if [ -z "${GROUPENT}" ] ; then
|
||
|
getent group | gawk -F: '{print $3}' > /tmp/$$.grp
|
||
|
try=2316
|
||
|
while [ ! -z "`grep \^$try /tmp/$$.grp`" ] ; do
|
||
|
try=`expr $try + 1`
|
||
|
done
|
||
|
GROUPNUM=${try}
|
||
|
GROUPENT="${BOINCGROUP}::${try}:"
|
||
|
cp $PKG_INSTALL_ROOT/etc/group $PKG_INSTALL_ROOT/etc/group.boinc_install.bak
|
||
|
echo ${GROUPENT} >> $PKG_INSTALL_ROOT/etc/group
|
||
|
/bin/rm /tmp/$$.grp
|
||
|
else
|
||
|
GROUPNUM=`echo $GROUPENT | gawk -F: '{print $3}'`
|
||
|
fi
|
||
|
|
||
|
# Now find out if the user ${BOINCUSER} exists.
|
||
|
USERENT=`getent passwd $BOINCUSER`
|
||
|
|
||
|
# if we need to create the boinc group, find the first unused user number
|
||
|
# ${BOINCGROUP} or highter
|
||
|
if [ -z "${USERENT}" ] ; then
|
||
|
getent passwd | gawk -F: '{print $3}' >/tmp/$$.user
|
||
|
try="${GROUPNUM}"
|
||
|
while [ ! -z "`grep \^$try /tmp/$$.user`" ] ; do
|
||
|
try=`expr $try + 1`
|
||
|
done
|
||
|
USERENT="${BOINCUSER}:x:${try}:${GROUPNUM}:BOINC client user:${BOINCDIR}:/bin/ksh"
|
||
|
cp $PKG_INSTALL_ROOT/etc/passwd $PKG_INSTALL_ROOT/etc/passwd.boinc_install.bak
|
||
|
echo $USERENT >> $PKG_INSTALL_ROOT/etc/passwd
|
||
|
/bin/rm /tmp/$$.user
|
||
|
fi
|
||
|
|
||
|
# Does our user entry point to the correct directory?
|
||
|
if [ -z "`echo $USERENT | grep $BOINCDIR`" ] ; then
|
||
|
# No. We need to correct it.
|
||
|
USERENT=`echo $USERENT | gawk -F: '{print $1":"$2":"$3":"$4":"$5":'$BOINCDIR':"$7}'`
|
||
|
grep -v \^${BOINCUSER}: $PKG_INSTALL_ROOT/etc/passwd > /tmp/passwd.$$
|
||
|
echo "$USERENT" >> /tmp/passwd.$$
|
||
|
if [ ! -f $PKG_INSTALL_ROOT/etc/passwd.boinc_install.bak ] ; then
|
||
|
cp $PKG_INSTALL_ROOT/etc/passwd $PKG_INSTALL_ROOT/etc/passwd.boinc_install.bak
|
||
|
fi
|
||
|
mv -f /tmp/passwd.$$ $PKG_INSTALL_ROOT/etc/passwd
|
||
|
fi
|
||
|
|
||
|
# check for our shadow entry
|
||
|
shadent="`grep \^$BOINCUSER: $PKG_INSTALL_ROOT/etc/shadow`"
|
||
|
if [ -z "$shadent" ] ; then
|
||
|
shadent="${BOINCUSER}:NP:16384::::::"
|
||
|
cp $PKG_INSTALL_ROOT/etc/shadow $PKG_INSTALL_ROOT/etc/shadow.boinc_install.bak
|
||
|
chmod 0400 $PKG_INSTALL_ROOT/etc/shadow.boinc_install.bak
|
||
|
echo $shadent >> $PKG_INSTALL_ROOT/etc/shadow
|
||
|
fi
|
||
|
|
||
|
# Create the run directory and set permissions properly.
|
||
|
if [ ! -d $BOINCDIR ] ; then
|
||
|
mkdir -p $BOINCDIR
|
||
|
fi
|
||
|
chown -R $BOINCUSER:$BOINCGROUP $BOINCDIR
|
||
|
|