OSDN Git Service

[update] : Added auto unmount
[alterlinux/LUBS.git] / lubs
1 #!/usr/bin/env bash
2
3 set -e -u
4
5 export LANG=C
6
7
8 arch=amd64
9 work_dir="work"
10 script_path=$(readlink -f ${0%/*})
11 codename="bionic"
12 mirror="http://ftp.jaist.ac.jp/pub/Linux/ubuntu/"
13
14
15 # Show an INFO message
16 # _msg_info <message>
17 function _msg_info () {
18     local _msg="${@}"
19     echo "[LUBS Core] INFO: ${_msg}"
20 }
21
22 # Show an ERROR message then exit with status
23 # _msg_error <message> <exit code>
24 function _msg_error() {
25     local _msg="${1}"
26     local _error=${2}
27     echo
28     echo "[LUBS Core] ERROR: ${_msg}" >&2
29     echo
30     if [[ ! ${_error} = 0 ]]; then
31         exit ${_error}
32     fi
33 }
34
35 function run_cmd () {
36     "${script_path}/lubs-chroot" "${work_dir}/airootfs" ${@}
37 }
38
39 function prepare_build {
40     if [[ ${EUID} -ne 0 ]]; then
41         _msg_error "This script must be run as root." 1
42     fi
43     
44     [[ ! -d "${work_dir}" ]] && mkdir -p "${work_dir}"
45
46     local mount
47     for mount in $(mount | awk '{print $3}' | grep $(realpath ${work_dir})); do
48         _msg_info "Unmounting ${mount}"
49         umount "${mount}"
50     done
51
52 }
53
54 function make_basefs() {
55     _msg_info "Installing Ubuntu to '${work_dir}/airootfs/'..."
56     mkdir -p ${work_dir}/airootfs
57     debootstrap --arch=${arch} --verbose --merged-usr ${codename} ${work_dir}/airootfs ${mirror}
58     _msg_info "${codename} installed successfully!"
59 }
60
61 function make_packages() {
62     run_cmd apt-get update
63 }
64
65 prepare_build
66 make_basefs
67 make_packages