blob: 6b18e187bc549b194f6236b002515cb0970d19e6 (
plain) (
tree)
|
|
#!/bin/bash
# -----------------------------------------------------------------------------
#
# Copyright (c) 2011 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
#
# If you have any feedback please consult http://openslx.org/feedback and
# send your suggestions, praise, or complaints to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
#
# Mini-Linux Toolkit
#
# -----------------------------------------------------------------------------
SELF="$(readlink -f $0)"
ROOT_DIR="$(dirname "${SELF}")"
MLTK_PID="$$"
qnd_exit() {
unset_quiet
kill "$MLTK_PID"
[ $# -ge 1 ] && kill "$1"
}
. "${ROOT_DIR}/helper/logging.inc"
. "${ROOT_DIR}/helper/useradd.inc"
. "${ROOT_DIR}/helper/downloader.inc"
. "${ROOT_DIR}/helper/fileutil.inc"
. "${ROOT_DIR}/helper/binutil.inc"
banner () {
echo -e "\033[38;5;202m\t __ __ __ "
echo -e "\033[38;5;202m\t.--------.| | | |_| |--."
echo -e "\033[38;5;208m\t| || |_| _| < "
echo -e "\033[38;5;214m\t|__|__|__||____|____|__|__|"
echo -e "\033[38;5;214m\t "
echo -e "\033[38;5;220m\t ** OpenSLX Project // 2013 **"
echo -e "\033[38;5;226m\t http://lab.openslx.org/"
echo -e "\033[0m"
}
print_usage() {
echo "Toolkit for creating preboot mini-linux for OpenSLX NG (mltk)"
echo "Usage: $(basename ${SELF}) [target] [-b] [-c] [-d] [module]*"
echo -e ""
echo -e " Target:"
echo -e " core \t minimal initramfs (stage 3.1) to mount the system-container (stage 3.2)."
echo -e " tools \t minimal systemd-based rootfs including basic tools (required for core)."
echo -e ""
echo -e " Target options:"
echo -e " -b \t build current target"
echo -e " -c \t clean current target"
echo -e " -d \t activates debug output for current target"
echo -e ""
echo -e " For target tools, you can pass names of specific modules to clean/build."
echo -e " Otherwise, all modules will be built/cleaned."
echo -e ""
echo -e " Examples:"
echo -e " tools -c -b base policykit sshd (clean all tools, build base, policykit and sshd)"
echo -e " tools -c -b (clean all tools, build all tools)"
echo -e " tools -c base sshd -b sshd ldm -d (clean base and sshd, build sshd and ldm, be verbose)"
echo -e " core -c -b (clean and build core)"
echo -e ""
echo -e " Existing modules for tools are:"
echo -e " $(echo $(ls ${ROOT_DIR}/remote/tools))"
}
initial_checks() {
if [ "x$(whoami)" != "xroot" ]; then
perror "ERROR: You need to have root rights to install packages."
exit 1
else
banner
fi
# setup_tools and build_core
BUILD_CORE="${ROOT_DIR}/server/build_core"
SETUP_TOOLS="${ROOT_DIR}/remote/setup_tools"
[ ! -e "${BUILD_CORE}" ] && perror "Missing script build_core, re-clone. Exiting."
[ ! -e "${SETUP_TOOLS}" ] && perror "Missing script setup_tools, re-clone. Exiting."
}
read_params() {
local MODE=""
local SUBMODE=""
# select target: core or tools
case "$1" in
core)
MODE="CORE"
;;
tools)
MODE="TOOLS"
;;
*)
pwarning "Unknown target: $1"
print_usage
exit 1
;;
esac
shift
# handle rest of arguments
while [ "$#" -gt "0" ]; do
local PARAM="$1"
shift
# options to current target
if [[ "$PARAM" == "-"* ]]; then
case "$PARAM" in
-c)
SUBMODE="CLEAN"
;;
-b)
SUBMODE="BUILD"
;;
-d)
eval ${MODE}_DEBUG="1"
continue
;;
*)
pwarning "Unknown flag to target: $PARAM"
print_usage
exit 1
;;
esac
eval ${MODE}_${SUBMODE}="1"
continue
fi
# module name
[[ $MODE != TOOLS ]] && pwarning "You cannot specify module names for target CORE." && print_usage && exit 1
[[ $SUBMODE != CLEAN && $SUBMODE != BUILD ]] && pwarning "Module name given for --tools, but no action specified (eg. build)" && print_usage && exit 1
eval "${MODE}_LIST_${SUBMODE}=\"\$${MODE}_LIST_${SUBMODE} \$PARAM\""
done
#pinfo "tools clean: $TOOLS_CLEAN -$TOOLS_LIST_CLEAN"
#pinfo "tools build: $TOOLS_BUILD -$TOOLS_LIST_BUILD"
#pinfo "core clean: $CORE_CLEAN"
#pinfo "core build: $CORE_BUILD"
# exit if no command
[[ $CORE_CLEAN == 0 && $CORE_BUILD == 0 && $TOOLS_CLEAN == 0 && $TOOLS_BUILD == 0 ]] && print_usage && exit 1
}
run() {
if [[ $TOOLS_CLEAN == 1 || $TOOLS_BUILD == 1 ]]; then
[[ $TOOLS_DEBUG == 1 ]] && unset_quiet || set_quiet
. "${SETUP_TOOLS}" || perror "Cannot source ${SETUP_TOOLS}"
[[ $TOOLS_CLEAN == 1 ]] && clean_tools $TOOLS_LIST_CLEAN
[[ $TOOLS_BUILD == 1 ]] && generate_stage32 $TOOLS_LIST_BUILD
fi
if [[ $CORE_CLEAN == 1 || $CORE_BUILD == 1 ]]; then
[[ $CORE_DEBUG == 1 ]] && unset_quiet || set_quiet
local TOOL_STR="[CORE]"
. "${BUILD_CORE}" || perror "Cannot source ${BUILD_CORE}"
[[ $CORE_CLEAN == 1 ]] && clean_core
[[ $CORE_BUILD == 1 ]] && generate_stage31
fi
}
CORE_DEBUG="0"
CORE_BUILD="0"
CORE_CLEAN="0"
TOOLS_DEBUG="0"
TOOLS_CLEAN="0"
TOOLS_BUILD="0"
TOOLS_LIST_CLEAN=""
TOOLS_LIST_BUILD=""
initial_checks
read_params $@
run
|