You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
calculate-utils-2.2-install/data/calculate

140 lines
3.5 KiB

#!/sbin/runscript
# Copyright 2011 Calculate Ltd. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
depend() {
need localmount root fsck modules
before keymaps consolefont dbus
use swap hostname
}
check_install_ability()
{
local pkg=$1
FEATURES="-getbinpkg" FETCHCOMMAND=false DISTDIR=/usr/portage/distfiles emerge -fq $pkg &>/dev/null
}
is_already_install()
{
local pkg=$1
local category=`echo $pkg | cut -d\/ -f1`
local pkg=`echo $pkg | cut -d\/ -f2`
local categoryPath=/var/db/pkg/${category}
[[ -e $categoryPath ]] && ls $categoryPath | grep -q "^$pkg"
}
install_pkg()
{
local pkg=$1
ebegin "Installing $pkg"
FEATURES="-getbinpkg" FETCHCOMMAND=false DISTDIR=/usr/portage/distfiles emerge $pkg &>/dev/null
}
variable_value()
{
local varname=$1
cl-install -vv --filter $varname |
sed -rn "s/^$varname\s+\[[rw]\]\s+(.*)$/\1/p"
}
install_video_driver()
{
ebegin "Checking video drivers"
case `variable_value os_install_x11_video_drv` in
fglrx)
local drv="x11-drivers/ati-drivers"
;;
nvidia)
local nvidiamask=`variable_value os_nvidia_mask`
[[ -n $nvidiamask ]] && \
echo $nvidiamask >/etc/portage/package.mask/nvidia
local drv="x11-drivers/nvidia-drivers"
;;
*)
true
;;
esac
if [[ -n $drv ]]
then
if ! is_already_install $drv
then
check_install_ability $drv && install_pkg $drv
fi
eend $?
else
eend 0
fi
}
# create user guest if system has not non-root user
create_nonroot_user() {
if which cl-desktop &>/dev/null &&
[[ -z $(variable_value cl_migrate_user | sed -r "s/[][,']|root//g") ]] &&
[[ `variable_value os_install_linux_system` != "server" ]]
then
# passwd of non root user
local nonroot_pw='$5$e/joOLXL$5GfArWgJx7BEcGqil3hTZoPGqWLRUUjCbzvl3gTWN75'
# name of non root user
local nonroot_user="guest"
ebegin "Creating ${nonroot_user} user"
useradd -p "${nonroot_pw}" \
--groups users,wheel,audio,cdrom,video,cdrw,usb,plugdev,games,lp,scanner,uucp \
${nonroot_user}
eend $?
fi
}
# create/update all user profile
configure_users() {
if which cl-desktop &>/dev/null
then
for user in $(variable_value cl_migrate_user | sed -r "s/[][,']//g")
do
HOME_DIR=`getent passwd $user | awk -F: '{ print( $6 ); }'`
if [[ $user == "root" ]] || [[ -f $HOME_DIR/.calculate/ini.env ]]
then
cl-desktop $user
fi
done
fi
}
start() {
install_video_driver
LANG=C create_nonroot_user
LANG=C /usr/bin/cl-install --startup --live
LANG=C configure_users
/usr/sbin/env-update
source /etc/profile
/sbin/update-modules
# reinit net.* services
local roottype=`variable_value os_root_type`
[[ $roottype == "livecd" ]] && udevadm trigger --action="add" --subsystem-match=net
/sbin/rc-update --update
return 0
}
stop() {
local roottype=`variable_value os_root_type`
if [[ $roottype == "hdd" ]] && rc-config list boot | grep -q calculate
then
rc-update del calculate boot
local distdir="/usr/portage/distfiles"
[[ -d "${distdir}" ]] && [[ -n "`ls ${distdir}`" ]] && rm ${distdir}/*
fi
}