summaryrefslogtreecommitdiffstats
path: root/remote/tools/base
diff options
context:
space:
mode:
authorJonathan Bauer2013-02-22 16:50:49 +0100
committerJonathan Bauer2013-02-22 16:50:49 +0100
commit3a5c93b73f204d2a4209ec3fc688e97309601aca (patch)
tree88eaa265e267098a01d804ee78a5556a0ef942cc /remote/tools/base
parentlogging debug extended (diff)
parentAdded helper/fileutil.inc that provides tarcopy, an error-checking version of... (diff)
downloadtm-scripts-3a5c93b73f204d2a4209ec3fc688e97309601aca.tar.gz
tm-scripts-3a5c93b73f204d2a4209ec3fc688e97309601aca.tar.xz
tm-scripts-3a5c93b73f204d2a4209ec3fc688e97309601aca.zip
Merge branch 'master' of git.openslx.org:openslx-ng/tm-scripts
Diffstat (limited to 'remote/tools/base')
-rw-r--r--remote/tools/base/base.build63
1 files changed, 35 insertions, 28 deletions
diff --git a/remote/tools/base/base.build b/remote/tools/base/base.build
index e580e359..fa58585d 100644
--- a/remote/tools/base/base.build
+++ b/remote/tools/base/base.build
@@ -9,7 +9,7 @@ fetch_source() {
build() {
BUILDDIR=${TOOL_DIR}/${TOOL}/build
- [ ! -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
+ mkdir -p ${BUILDDIR}
FILELIST="list_binaries_and_files"
[ -e ${FILELIST} ] && rm ${FILELIST}
@@ -19,42 +19,47 @@ build() {
BIN_LOCATION=$(which ${BIN})
if [ ! -z ${BIN_LOCATION} -a -e ${BIN_LOCATION} ];
then
- echo "[$TOOL] Processing $BIN at $BIN_LOCATION ..."
- echo ${BIN_LOCATION} >> ${FILELIST}
- [ -L ${BIN_LOCATION} ] \
- && echo "[$TOOL] ${BIN_LOCATION} is a symbolic link, copying $(readlink -f ${BIN_LOCATION})" \
- && echo $(readlink -f ${BIN_LOCATION}) >> ${FILELIST}
+ pdebug "Processing $BIN at $BIN_LOCATION ..."
+ echo ${BIN_LOCATION} >> "${FILELIST}"
+ [ -L "${BIN_LOCATION}" ] \
+ && pdebug "${BIN_LOCATION} is a symbolic link, copying $(readlink -f "${BIN_LOCATION}")" \
+ && echo $(readlink -f "${BIN_LOCATION}") >> "${FILELIST}"
else
- echo "[$TOOL] ${BIN} not found on the system! Please install it."
- exit 1
+ perror "${BIN} not found on the system! Please install it."
fi
done
for LIB in ${REQUIRED_LIBRARIES}
do
- for LIB_LOCATION in $(locate ${LIB}|grep ^/lib/)
+ for LIB_LOCATION in $(locate ${LIB} | grep ^/lib/)
do
- echo ${LIB_LOCATION} >> ${FILELIST}
+ echo ${LIB_LOCATION} >> "${FILELIST}"
done
done
for FILE in ${REQUIRED_DIRECTORIES}
do
- [ ! -f ${FILE} ] && echo ${FILE} >> ${FILELIST}
+ [ ! -d ${FILE} ] && perror "Missing required directory $FILE"
+ echo ${FILE} >> "${FILELIST}"
done
for FILE in ${REQUIRED_FILES}
do
- [ ! -d ${FILE} ] && echo ${FILE} >> ${FILELIST}
+ [ ! -f ${FILE} ] && perror "Missing required file $FILE"
+ echo ${FILE} >> "${FILELIST}"
done
- echo "[$TOOL] File list generated as ${BUILDDIR}/${FILELIST}."
- echo "--------------------------------------------------------------------"
- (tar -cpv $(cat ${FILELIST}) | tar -xpv -C ${BUILDDIR}) &>/dev/null
+ local NUMFILES=$(cat "${FILELIST}" | wc -l)
+ if [ "x$NUMFILES" != "x" -a "x$NUMFILES" != "x0" ]; then
+ pinfo "File list generated at ${BUILDDIR}/${FILELIST} ($NUMFILES entries)"
+ tar -cp $(cat "${FILELIST}") | tar -xp -C "${BUILDDIR}"
+ local RET=$?
+ [ $RET -ne 0 ] && perror "tar-copy from '$FILELIST' to '$BUILDDIR' failed."
+ fi
}
clean_users_and_groups() {
# Pass the root directory of the "system" you want to clean, eg '/' for your real machine (probably a bad idea)
- [ $# -ne 1 ] && echo "Missing param to clean_users_and_groups" && exit 1
+ [ $# -ne 1 ] && perror "Missing param to clean_users_and_groups"
local SYSBASE=$1
local PASSWD=${SYSBASE}/etc/passwd
local GROUP=${SYSBASE}/etc/group
@@ -81,40 +86,41 @@ clean_users_and_groups() {
post_copy() {
# make basic directory structure
- mkdir -p ${INIT_DIR}/{bin,dev,proc,lib,etc,mnt,sys,var/run,var/lock,var/log,run/lock,run/shm,openslx/mnt}
+ mkdir -p "${INIT_DIR}/{bin,dev,proc,lib,etc,mnt,sys,var/run,var/lock,var/log,run/lock,run/shm,openslx/mnt}"
# copy devices from running system
- cp -a /dev/{console,kmsg,mem,null,shm,tty,tty0,tty1,tty9,fb0,urandom,zero} \
- ${INIT_DIR}/dev
+ cp -a "/dev/{console,kmsg,mem,null,shm,tty,tty0,tty1,tty9,fb0,urandom,zero}" \
+ "${INIT_DIR}/dev"
# set /etc/environment to include /openslx/bin and /openslx/sbin
echo "PATH=\"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/openslx/sbin:/openslx/bin\"" \
- > ${INIT_DIR}/etc/environment
+ > "${INIT_DIR}/etc/environment"
# copy static files
- cp -r ${TOOL_DIR}/${TOOL}/data/* ${INIT_DIR}
+ cp -r "${TOOL_DIR}/${TOOL}/data/*" "${INIT_DIR}"
# better: dirname $(ldd $SHELL|grep libc | awk -F " " '{print $3}')
# copy pam modules, TODO: better way to find arch-dependant interfix...
- (tar -cpv $(dirname $(locate pam_unix.so|grep ^/lib/)) | tar -xpv -C ${INIT_DIR}) &>/dev/null
+ tarcopy "$(dirname $(locate pam_unix.so | grep ^/lib/))" "${INIT_DIR}"
# quick fix for /etc/fstab
- echo "# no configuration" >> ${INIT_DIR}/etc/fstab
+ echo "# no configuration" >> "${INIT_DIR}/etc/fstab"
# link /etc/mtab, needed for systemd
[ ! -e ${INIT_DIR}/etc/mtab ] && ln -s /proc/self/mounts ${INIT_DIR}/etc/mtab
# quick fix for missing group in /etc/group
- echo "lock:x:128:" >> ${INIT_DIR}/etc/group
+ add_group "lock"
# clean passwd/group files (do BEFORE setting root pw)
clean_users_and_groups "${INIT_DIR}"
- # setup root account
- sed -i "s/^root:.*/root:\$6\$QGcBjw6e\$sJvGXBfKuNd4Cx5\.aVxJT7PCq\/AWrP\/JLgvDHBGN164Rp2HRIENPQzieO\/2ctlQS7yRgWwaWTqJkZr7Uq37af1:15657:0:99999:7:::/g" ${INIT_DIR}/etc/shadow
+ # setup root accoun
+ USER=root PASSWORD="!r00t" add_user
+
[ ! -d ${INIT_DIR}/root ] && mkdir ${INIT_DIR}/root
- echo "minibox" > ${INIT_DIR}/etc/hostname
+ echo "minilinux-$(hostname)" > "${INIT_DIR}/etc/hostname"
# copy kernel modules
#[ ! -d ${INIT_DIR}/lib/modules/$(uname -r) ] && mkdir -p ${INIT_DIR}/lib/modules/$(uname -r)
@@ -122,5 +128,6 @@ post_copy() {
#quick fix xterm symlink
[ -e /usr/lib/libXaw7.so.7.0.0 ] && \
- ln -s /usr/lib/libXaw7.so.7.0.0 ${INIT_DIR}/usr/lib/libXaw7.so.7
+ ln -s "/usr/lib/libXaw7.so.7.0.0" "${INIT_DIR}/usr/lib/libXaw7.so.7"
}
+