-
Notifications
You must be signed in to change notification settings - Fork 0
/
vroot_common
executable file
·137 lines (120 loc) · 4.55 KB
/
vroot_common
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
set -e
################################################################################
# conf file location
################################################################################
VROOT_CONF_FILE=~/.vrootrc
################################################################################
# determines if you are on Debian or Ubuntu
################################################################################
function vroot_get_linux_distribution()
{
local distribution=unknown
local mybin=/usr/bin/lsb_release
if [ -x ${mybin} ]; then
distribution=$(${mybin} --id --short)
fi
echo ${distribution}
}
################################################################################
# determines if you are on Debian or Ubuntu
################################################################################
function vroot_get_linux_distribution_codename()
{
local codename=unknown
local mybin=/usr/bin/lsb_release
if [ -x ${mybin} ]; then
codename=$(${mybin} --codename --short)
fi
echo ${codename}
}
################################################################################
# installs a default conf file
################################################################################
function vroot_write_conf_file_if_not_exist()
{
if [ ! -e "${VROOT_CONF_FILE}" ]; then
local codename=$(vroot_get_linux_distribution_codename)
local distribution=$(vroot_get_linux_distribution_codename)
echo "
#
# the location where your vroots will live
#
VROOT_BASE=${HOME}/.vroot
#
# the default architecture to build vroots in if none is specified
#
VROOT_DEFAULT_ARCHITECTURE=amd64
#
# the default codename to build vroots with if none is specified
#
VROOT_DEFAULT_CODENAME=${codename}
#
# the default distribution to build vroots with if none is specified
#
VROOT_DEFAULT_DISTRIBUTION=${distribution}
" > ${VROOT_CONF_FILE}
fi
}
################################################################################
# sources the conf file if it exists
################################################################################
function vroot_source_conf_file()
{
if [ -r "${VROOT_CONF_FILE}" ]; then
. ${VROOT_CONF_FILE}
fi
}
################################################################################
# converts a vroot name to its directory location
################################################################################
function vroot_get_directory()
{
local vroot=$1
local directory="${VROOT_BASE}/${vroot}"
mkdir -p ${VROOT_BASE}
echo ${directory}
}
################################################################################
# gets the absolute path of a directory. isn't there a utility for this?
################################################################################
function vroot_get_absolute_path()
{
local directory=$1
cd $1 > /dev/null
local absolute_path=$(pwd)
cd - > /dev/null
echo ${absolute_path}
}
################################################################################
# mounts the directories from the host
################################################################################
function vroot_mount_dirs()
{
local vroot_directory=$1
sudo -- mount -t proc /proc ${vroot_directory}/proc 2> /dev/null || true
sudo -- mount --bind /tmp ${vroot_directory}/tmp 2> /dev/null || true
sudo -- mount --bind /home ${vroot_directory}/home 2> /dev/null || true
sudo -- mount --bind /dev ${vroot_directory}/dev 2> /dev/null || true
sudo -- mount --bind /dev/pts ${vroot_directory}/dev/pts 2> /dev/null || true
sudo -- mount --bind /dev/shm ${vroot_directory}/dev/shm 2> /dev/null || true
}
################################################################################
# unmounts the directories from the host
################################################################################
function vroot_umount_dirs()
{
local vroot_directory=$1
sudo -- umount ${vroot_directory}/dev/shm 2> /dev/null || true
sudo -- umount ${vroot_directory}/dev/pts 2> /dev/null || true
sudo -- umount ${vroot_directory}/dev 2> /dev/null || true
sudo -- umount ${vroot_directory}/tmp 2> /dev/null || true
sudo -- umount ${vroot_directory}/proc 2> /dev/null || true
sudo -- umount ${vroot_directory}/home 2> /dev/null || true
}
################################################################################
# main
################################################################################
vroot_write_conf_file_if_not_exist
vroot_source_conf_file
base=$(basename $0)