summaryrefslogtreecommitdiffstats
path: root/classes/override_image_types_ostree.inc
diff options
context:
space:
mode:
Diffstat (limited to 'classes/override_image_types_ostree.inc')
-rw-r--r--classes/override_image_types_ostree.inc155
1 files changed, 0 insertions, 155 deletions
diff --git a/classes/override_image_types_ostree.inc b/classes/override_image_types_ostree.inc
deleted file mode 100644
index 241afcd..0000000
--- a/classes/override_image_types_ostree.inc
+++ /dev/null
@@ -1,155 +0,0 @@
1# overrides meta-updater/classes/image_types_ostree.bbclass
2# - add do_image_ostree flags:
3# - dirs, cleandirs: to avoid mktemp, rm, cd, and to also remove at clean
4# - subimages, imgsuffix: to use automatic link creation
5# - override of IMAGE_CMD_ostree
6# - use the added flags
7# - IMGDEPLOYDIR, instead of DEPLOY_DIR_IMAGE
8
9OSTREE_ROOTFS="${WORKDIR}/ostree-root"
10do_image_ostree[dirs] = "${OSTREE_ROOTFS}"
11do_image_ostree[cleandirs] = "${OSTREE_ROOTFS}"
12do_image_ostree[subimages] = "rootfs.ostree.tar.bz2"
13do_image_ostree[imgsuffix] = "."
14export OSTREE_ROOTFS
15
16IMAGE_CMD_ostree () {
17 if [ -z "$OSTREE_REPO" ]; then
18 bbfatal "OSTREE_REPO should be set in your local.conf"
19 fi
20
21 if [ -z "$OSTREE_BRANCHNAME" ]; then
22 bbfatal "OSTREE_BRANCHNAME should be set in your local.conf"
23 fi
24
25 cp -a ${IMAGE_ROOTFS}/* ${OSTREE_ROOTFS}
26 chmod a+rx ${OSTREE_ROOTFS}
27 sync
28
29 for d in var/*; do
30 if [ "${d}" != "var/local" ]; then
31 rm -rf ${d}
32 fi
33 done
34
35 # Create sysroot directory to which physical sysroot will be mounted
36 mkdir sysroot
37 ln -sf sysroot/ostree ostree
38
39 rm -rf tmp/*
40 ln -sf sysroot/tmp tmp
41
42 mkdir -p usr/rootdirs
43
44 mv etc usr/
45 # Implement UsrMove
46 dirs="bin sbin lib"
47
48 for dir in ${dirs} ; do
49 if [ -d ${dir} ] && [ ! -L ${dir} ] ; then
50 mv ${dir} usr/rootdirs/
51 rm -rf ${dir}
52 ln -sf usr/rootdirs/${dir} ${dir}
53 fi
54 done
55
56 if [ -n "$SYSTEMD_USED" ]; then
57 mkdir -p usr/etc/tmpfiles.d
58 tmpfiles_conf=usr/etc/tmpfiles.d/00ostree-tmpfiles.conf
59 echo "d /var/rootdirs 0755 root root -" >>${tmpfiles_conf}
60 echo "L /var/rootdirs/home - - - - /sysroot/home" >>${tmpfiles_conf}
61 else
62 mkdir -p usr/etc/init.d
63 tmpfiles_conf=usr/etc/init.d/tmpfiles.sh
64 echo '#!/bin/sh' > ${tmpfiles_conf}
65 echo "mkdir -p /var/rootdirs; chmod 755 /var/rootdirs" >> ${tmpfiles_conf}
66 echo "ln -sf /sysroot/home /var/rootdirs/home" >> ${tmpfiles_conf}
67
68 ln -s ../init.d/tmpfiles.sh usr/etc/rcS.d/S20tmpfiles.sh
69 fi
70
71 # Preserve OSTREE_BRANCHNAME for future information
72 mkdir -p usr/share/sota/
73 echo -n "${OSTREE_BRANCHNAME}" > usr/share/sota/branchname
74
75 # Preserve data in /home to be later copied to /sysroot/home by sysroot
76 # generating procedure
77 mkdir -p usr/homedirs
78 if [ -d "home" ] && [ ! -L "home" ]; then
79 mv home usr/homedirs/home
80 ln -sf var/rootdirs/home home
81 fi
82
83 # Move persistent directories to /var
84 dirs="opt mnt media srv"
85
86 for dir in ${dirs}; do
87 if [ -d ${dir} ] && [ ! -L ${dir} ]; then
88 if [ "$(ls -A $dir)" ]; then
89 bbwarn "Data in /$dir directory is not preserved by OSTree. Consider moving it under /usr"
90 fi
91
92 if [ -n "$SYSTEMD_USED" ]; then
93 echo "d /var/rootdirs/${dir} 0755 root root -" >>${tmpfiles_conf}
94 else
95 echo "mkdir -p /var/rootdirs/${dir}; chown 755 /var/rootdirs/${dir}" >>${tmpfiles_conf}
96 fi
97 rm -rf ${dir}
98 ln -sf var/rootdirs/${dir} ${dir}
99 fi
100 done
101
102 if [ -d root ] && [ ! -L root ]; then
103 if [ "$(ls -A root)" ]; then
104 bberror "Data in /root directory is not preserved by OSTree."
105 exit 1
106 fi
107
108 if [ -n "$SYSTEMD_USED" ]; then
109 echo "d /var/roothome 0755 root root -" >>${tmpfiles_conf}
110 else
111 echo "mkdir -p /var/roothome; chown 755 /var/roothome" >>${tmpfiles_conf}
112 fi
113
114 rm -rf root
115 ln -sf var/roothome root
116 fi
117
118 if [ -n "${SOTA_SECONDARY_ECUS}" ]; then
119 mkdir -p var/sota/ecus
120 cp ${SOTA_SECONDARY_ECUS} var/sota/ecus
121 fi
122
123 # Creating boot directories is required for "ostree admin deploy"
124
125 mkdir -p boot/loader.0
126 mkdir -p boot/loader.1
127 ln -sf boot/loader.0 boot/loader
128
129 checksum=`sha256sum ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} | cut -f 1 -d " "`
130
131 # Copy kernel and initramfs and their signature files
132 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL} boot/vmlinuz-${checksum}
133 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_KERNEL}.p7b boot/vmlinuz-${checksum}.p7b
134 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT} boot/initramfs-${checksum}
135 cp ${DEPLOY_DIR_IMAGE}/${OSTREE_INITRAMFS_IMAGE}-${MACHINE}${RAMDISK_EXT}.p7b boot/initramfs-${checksum}.p7b
136
137 # Copy image manifest
138 cat ${IMAGE_MANIFEST} | cut -d " " -f1,3 > usr/package.manifest
139
140 # Create a tarball that can be then commited to OSTree repo
141 OSTREE_TAR=${IMGDEPLOYDIR}/${IMAGE_NAME}.rootfs.ostree.tar.bz2
142 tar -C ${OSTREE_ROOTFS} --xattrs --xattrs-include='*' -cjf ${OSTREE_TAR} .
143 sync
144
145 if ! ostree --repo=${OSTREE_REPO} refs 2>&1 > /dev/null; then
146 ostree --repo=${OSTREE_REPO} init --mode=archive-z2
147 fi
148
149 # Commit the result
150 ostree --repo=${OSTREE_REPO} commit \
151 --tree=dir=${OSTREE_ROOTFS} \
152 --skip-if-unchanged \
153 --branch=${OSTREE_BRANCHNAME} \
154 --subject="Commit-id: ${IMAGE_NAME}"
155}