@@ -7,10 +7,35 @@ baseimage_info() {
7
7
info " [baseimage] $* "
8
8
}
9
9
10
+ baseimage_builder_init () {
11
+ BASEIMAGE_ROOTFS=" $( cf_distro_debootstrap_chroot) "
12
+ baseimage_info " builder type: sudo"
13
+ baseimage_info " creating rootfs: ${BASEIMAGE_ROOTFS} "
14
+ [ " ${BASEIMAGE_ROOTFS} " ] || baseimage_die " no rootfs path"
15
+ baseimage_builder_exec rm -Rf " ${BASEIMAGE_ROOTFS} "
16
+ baseimage_builder_exec mkdir -p " ${BASEIMAGE_ROOTFS} " || baseimage_die " mkdir ${BASEIMAGE_ROOTFS} "
17
+ }
18
+
19
+ baseimage_builder_exec () {
20
+ baseimage_info " builder exec: $@ "
21
+ sudo " $@ "
22
+ return $?
23
+ }
24
+
25
+ baseimage_builder_destroy () {
26
+ [ " ${BASEIMAGE_ROOTFS} " ] || baseimage_die " no rootfs path"
27
+ baseimage_info " destroying rootfs: ${BASEIMAGE_ROOTFS} "
28
+ baseimage_builder_exec rm -Rf " ${BASEIMAGE_ROOTFS} "
29
+ }
30
+
31
+ baseimage_rootfs_exec () {
32
+ baseimage_info " exec in rootfs: $@ "
33
+ baseimage_builder_exec chroot " ${BASEIMAGE_ROOTFS} " " $@ "
34
+ }
35
+
10
36
create_baseimage () {
11
37
local baseimage_name=$( cf_distro_baseimage_name)
12
38
local baseimage_id=$( docker_find_image " ${baseimage_name} " )
13
- local chroot_tmp=$( cf_distro_debootstrap_chroot)
14
39
local tarball_tmp=$( cf_distro_debootstrap_tarball)
15
40
local debootstra_args=" "
16
41
@@ -25,11 +50,6 @@ create_baseimage() {
25
50
return $?
26
51
fi
27
52
28
- baseimage_info " no rootfs tarball: ${tarball_tmp} ... creating it"
29
-
30
- sudo rm -Rf " ${chroot_tmp} "
31
- sudo mkdir -p " ${chroot_tmp} " || baseimage_die " mkdir ${chroot_tmp} "
32
-
33
53
local keyring=$( cf_distro_keyring)
34
54
35
55
[ " $DISTRO_ARCH " ] && debootstrap_args=" $debootstrap_args --arch=$DISTRO_ARCH "
@@ -41,67 +61,69 @@ create_baseimage() {
41
61
42
62
[ " $DISTRO_SCRIPT " ] || DISTRO_SCRIPT=" ${DCK_BUILDPACKAGE_CFDIR} /bootstrap/$DISTRO_NAME "
43
63
64
+ baseimage_info " no rootfs tarball: ${tarball_tmp} ... creating it"
65
+
66
+ baseimage_builder_init
67
+
44
68
baseimage_info " running debootstrap: ${DISTRO_NAME} / ${DISTRO_ARCH} "
45
69
46
- sudo debootstrap \
70
+ baseimage_builder_exec debootstrap \
47
71
$debootstrap_args \
48
72
" ${DISTRO_NAME} " \
49
- " ${chroot_tmp } " \
73
+ " ${BASEIMAGE_ROOTFS } " \
50
74
" ${DISTRO_MIRROR} " \
51
75
" ${DISTRO_SCRIPT} " || baseimage_die " debootstrap"
52
76
53
77
baseimage_info " configure extra apt repos"
54
78
55
79
if [ " $DISTRO_APT_SOURCES " ]; then
56
- echo " $DISTRO_APT_SOURCES " | sudo chroot " ${chroot_tmp} " bash -c ' cat >> /etc/apt/sources.list' || baseimage_die " failed adding apt sources"
80
+ echo " $DISTRO_APT_SOURCES " | baseimage_rootfs_exec bash -c ' cat >> /etc/apt/sources.list' || baseimage_die " failed adding apt sources"
57
81
fi
58
82
59
83
baseimage_info " installing extra packages"
60
84
61
85
if [ " $DISTRO_EXTRA_PACKAGES " ]; then
62
- sudo chroot " ${chroot_tmp} " apt-get install -y $DISTRO_EXTRA_PACKAGES || baseimage_die " install extra packages: ${DISTRO_EXTRA_PACKAGES} "
86
+ baseimage_rootfs_exec apt-get install -y $DISTRO_EXTRA_PACKAGES || baseimage_die " install extra packages: ${DISTRO_EXTRA_PACKAGES} "
63
87
fi
64
88
65
89
baseimage_info " marking unneeded packages as auto"
66
90
67
91
for i in $DISTRO_MARK_AUTO ; do
68
- sudo chroot " ${chroot_tmp} " apt-mark auto " $i "
92
+ baseimage_rootfs_exec apt-mark auto " $i "
69
93
done
70
94
71
95
baseimage_info " removing unneeded packages"
72
96
73
- sudo chroot " ${chroot_tmp} " apt-get autoremove -y
74
- sudo chroot " ${chroot_tmp} " apt-get autoclean
75
-
76
- sudo chroot " ${chroot_tmp} " apt-get remove -y --purge $( sudo chroot " ${chroot_tmp} " dpkg -l | grep " ^rc" | awk ' {print $2}' | tr ' \n' ' ' )
97
+ baseimage_rootfs_exec apt-get autoremove -y
98
+ baseimage_rootfs_exec apt-get autoclean
99
+ baseimage_rootfs_exec apt-get remove -y --purge $( baseimage_rootfs_exec dpkg -l | grep " ^rc" | awk ' {print $2}' | tr ' \n' ' ' )
77
100
78
101
baseimage_info " extra package removal"
79
102
80
103
for i in $DISTRO_REMOVE_PACKAGES ; do
81
104
baseimage_info " ... removing: $i "
82
- sudo chroot " ${chroot_tmp} " dpkg --force-remove-essential --remove " $i "
83
- sudo chroot " ${chroot_tmp} " dpkg --force-remove-essential --purge " $i "
105
+ baseimage_rootfs_exec dpkg --force-remove-essential --remove " $i "
106
+ baseimage_rootfs_exec dpkg --force-remove-essential --purge " $i "
84
107
done
85
108
86
109
baseimage_info " removing unwanted files"
87
110
88
111
for i in $DISTRO_REMOVE_FILES ; do
89
- sudo chroot " ${chroot_tmp} " rm -Rf " $i "
112
+ baseimage_rootfs_exec rm -Rf " $i "
90
113
done
91
114
92
115
baseimage_info " creating rootfs tarball"
93
116
94
117
mkdir -p ` dirname " $tarball_tmp " ` || baseimage_die " failed creating tarball dir"
95
- sudo tar -C $chroot_tmp -c . > " $tarball_tmp " || baseimage_die " failed taring chroot"
96
- sudo rm -Rf $chroot_tmp
118
+ baseimage_builder_exec tar -C " ${BASEIMAGE_ROOTFS} " -c . > " $tarball_tmp " || baseimage_die " failed taring chroot"
97
119
98
120
baseimage_info " importing docker image"
99
121
100
122
docker_import_tarball " ${tarball_tmp} " " ${baseimage_name} "
101
123
102
124
baseimage_info " cleanup"
103
125
104
- sudo rm -Rf " $chroot_tmp "
126
+ baseimage_builder_destroy
105
127
106
128
return $?
107
129
}
0 commit comments