Commit 75d1dcbc authored by Vladimir Bashkirtsev's avatar Vladimir Bashkirtsev

We should use bind mounted /home /root /var instead of symlinks during build

parent 21b7dd10
......@@ -49,17 +49,23 @@ $(PACKAGES):
mount -t proc /proc mnt/proc
mount -t sysfs /sysfs mnt/sys
mount -t tmpfs /tmp mnt/tmp
mount -t tmpfs /tmp mnt/var/tmp
mount /dev/$(SECONDARY)1 mnt/build
if [ -d mnt/data ] ; then \
mount /dev/$(DISK)4 mnt/data ; \
mount --bind mnt/data/home mnt/home ; \
mount --bind mnt/data/root mnt/root ; \
mount --bind mnt/data/var mnt/var ; \
fi
mount -t tmpfs /tmp mnt/var/tmp
mount /dev/$(SECONDARY)1 mnt/build
chroot mnt $(MAKE) -C $(current_dir)$(firstword $(subst ., ,$@)) $(word 2, $(subst ., ,$@))
umount -l mnt/var/tmp
if [ -d mnt/data ] && [[ $$(findmnt -M mnt/data) ]] ; then \
umount -l mnt/var ; \
umount -l mnt/root ; \
umount -l mnt/home ; \
umount -l mnt/data ; \
fi
umount -l mnt/build
umount -l mnt/var/tmp
umount -l mnt/tmp
umount -l mnt/sys
umount -l mnt/proc
......
......@@ -394,6 +394,24 @@
<target name="setup-build-boot-kernel">
<fail unless="BOARD" message="Correct machine type must be specified"/>
<delete file="${sysdir}/.success"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<echo file="${sysdir}/lib/systemd/system/mount-fstab.service">[Unit]
Description=Mount all fstab partitions
After=local-fs.target
Before=systemd-networkd.service
DefaultDependencies=no
[Service]
Type=oneshot
StandardOutput=tty
ExecStart=/bin/mount -a
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/mount-fstab.service ${sysdir}/etc/systemd/system/rescue.target.wants/mount-fstab.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/build.service">[Unit]
Description=Build boot kernel
......@@ -406,6 +424,9 @@ ExecStartPost=/sbin/poweroff
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/build">#!/bin/sh
LC_ALL=POSIX
PATH=/bin:/usr/bin:/sbin:/usr/sbin
......@@ -424,14 +445,11 @@ if [ $? -eq 0 ]; then
fi
rm -rf /etc/systemd/system/rescue.target.wants
rm /lib/systemd/system/mount-fstab.service
rm /lib/systemd/system/build.service
rm /lib/systemd/system/build
</echo>
<chmod file="${sysdir}/lib/systemd/system/build" perm="755"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
<exec executable="cp" failonerror="true">
<arg line="-drv ${basedir}/kernelconfig ${sysdir}"/>
</exec>
......@@ -478,6 +496,24 @@ rm /lib/systemd/system/build
<target name="setup-reduce-locales-ab" if="ABstart">
<delete file="${sysdir}/.success"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<echo file="${sysdir}/lib/systemd/system/mount-fstab.service">[Unit]
Description=Mount all fstab partitions
After=local-fs.target
Before=systemd-networkd.service
DefaultDependencies=no
[Service]
Type=oneshot
StandardOutput=tty
ExecStart=/bin/mount -a
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/mount-fstab.service ${sysdir}/etc/systemd/system/rescue.target.wants/mount-fstab.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/reduce-locales.service">[Unit]
Description=Reduce locales
......@@ -490,6 +526,9 @@ ExecStartPost=/sbin/poweroff
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/reduce-locales.service ${sysdir}/etc/systemd/system/rescue.target.wants/reduce-locales.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/reduce-locales">#!/bin/sh
/sbin/fsck -yf /dev/${SECONDARY}2
/bin/mount -o discard /dev/${SECONDARY}2 /mnt
......@@ -499,14 +538,11 @@ chroot mnt localedef -i en_GB -f UTF-8 en_GB.UTF-8
/bin/mount -o remount,rw /
/usr/bin/touch /.success
/bin/rm -rf /etc/systemd/system/rescue.target.wants
/bin/rm /lib/systemd/system/mount-fstab.service
/bin/rm /lib/systemd/system/reduce-locales.service
/bin/rm /lib/systemd/system/reduce-locales
</echo>
<chmod file="${sysdir}/lib/systemd/system/reduce-locales" perm="755"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/reduce-locales.service ${sysdir}/etc/systemd/system/rescue.target.wants/reduce-locales.service"/>
</exec>
</target>
<target name="check-reduce-locales-success">
......@@ -535,10 +571,29 @@ chroot mnt localedef -i en_GB -f UTF-8 en_GB.UTF-8
<target name="setup-build">
<fail unless="BOARD" message="Correct machine type must be specified"/>
<delete file="${sysdir}/.success"/>
<echo file="${sysdir}/lib/systemd/system/machine-id.service">[Unit]
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<echo file="${sysdir}/lib/systemd/system/mount-fstab.service">[Unit]
Description=Mount all fstab partitions
After=local-fs.target
Before=systemd-networkd.service
DefaultDependencies=no
[Service]
Type=oneshot
StandardOutput=tty
ExecStart=/bin/mount -a
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/mount-fstab.service ${sysdir}/etc/systemd/system/rescue.target.wants/mount-fstab.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/machine-id.service">[Unit]
Description=Setup /etc/machine-id
Before=systemd-networkd.service
After=local-fs.target
After=local-fs.target mount-fstab.service
DefaultDependencies=no
[Service]
Type=oneshot
......@@ -550,9 +605,8 @@ WantedBy=rescue.target
</echo>
<echo file="${sysdir}/lib/systemd/system/build.service">[Unit]
Description=Build ${ant.project.name}
After=network-online.target local-fs.target
Wants=systemd-networkd.service
Wants=systemd-resolved.service
After=network-online.target remote-fs.target
Wants=systemd-networkd.service systemd-resolved.service remote-fs.target
[Service]
Type=oneshot
......@@ -563,6 +617,9 @@ ExecStartPost=/sbin/poweroff
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/build">#!/bin/sh
LC_ALL=POSIX
PATH=/bin:/usr/bin:/sbin:/usr/sbin
......@@ -595,15 +652,12 @@ if [ $? -eq 0 ]; then
fi
rm -rf /etc/systemd/system/rescue.target.wants
rm /lib/systemd/system/mount-fstab.service
rm /lib/systemd/system/machine-id.service
rm /lib/systemd/system/build.service
rm /lib/systemd/system/build
</echo>
<chmod file="${sysdir}/lib/systemd/system/build" perm="755"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
</target>
<target name="setup-go-bootstrap" if="GO_BOOTSTRAP">
......@@ -632,10 +686,29 @@ rm /lib/systemd/system/build
<target name="setup-build-www">
<fail unless="BOARD" message="Correct machine type must be specified"/>
<delete file="${sysdir}/.success"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<echo file="${sysdir}/lib/systemd/system/mount-fstab.service">[Unit]
Description=Mount all fstab partitions
After=local-fs.target
Before=systemd-networkd.service
DefaultDependencies=no
[Service]
Type=oneshot
StandardOutput=tty
ExecStart=/bin/mount -a
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/mount-fstab.service ${sysdir}/etc/systemd/system/rescue.target.wants/mount-fstab.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/machine-id.service">[Unit]
Description=Setup /etc/machine-id
Before=systemd-networkd.service
After=local-fs.target
After=local-fs.target mount-fstab.service
DefaultDependencies=no
[Service]
Type=oneshot
......@@ -660,6 +733,9 @@ ExecStartPost=/sbin/poweroff
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/build">#!/bin/sh
LC_ALL=POSIX
PATH=/bin:/usr/bin:/sbin:/usr/sbin
......@@ -695,12 +771,12 @@ if [ $? -eq 0 ]; then
fi
rm -rf /etc/systemd/system/rescue.target.wants
rm /lib/systemd/system/mount-fstab.service
rm /lib/systemd/system/machine-id.service
rm /lib/systemd/system/build.service
rm /lib/systemd/system/build
</echo>
<chmod file="${sysdir}/lib/systemd/system/build" perm="755"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/build.service ${sysdir}/etc/systemd/system/rescue.target.wants/build.service"/>
</exec>
......@@ -752,6 +828,24 @@ rm /lib/systemd/system/build
<target name="setup-check-strip-and-trim-ab" if="ABstart">
<delete file="${sysdir}/.success"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<echo file="${sysdir}/lib/systemd/system/mount-fstab.service">[Unit]
Description=Mount all fstab partitions
After=local-fs.target
Before=systemd-networkd.service
DefaultDependencies=no
[Service]
Type=oneshot
StandardOutput=tty
ExecStart=/bin/mount -a
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/mount-fstab.service ${sysdir}/etc/systemd/system/rescue.target.wants/mount-fstab.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/check-strip-and-trim.service">[Unit]
Description=Check, strip and trim file system
......@@ -764,6 +858,9 @@ ExecStartPost=/sbin/poweroff
[Install]
WantedBy=rescue.target
</echo>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/check-strip-and-trim.service ${sysdir}/etc/systemd/system/rescue.target.wants/check-strip-and-trim.service"/>
</exec>
<echo file="${sysdir}/lib/systemd/system/check-strip-and-trim">#!/bin/sh
/sbin/fsck -yf /dev/${SECONDARY}1
/sbin/fsck -yf /dev/${SECONDARY}2
......@@ -788,14 +885,11 @@ WantedBy=rescue.target
/bin/mount -o remount,rw /
/usr/bin/touch /.success
/bin/rm -rf /etc/systemd/system/rescue.target.wants
/bin/rm /lib/systemd/system/mount-fstab.service
/bin/rm /lib/systemd/system/check-strip-and-trim.service
/bin/rm /lib/systemd/system/check-strip-and-trim
</echo>
<chmod file="${sysdir}/lib/systemd/system/check-strip-and-trim" perm="755"/>
<mkdir dir="${sysdir}/etc/systemd/system/rescue.target.wants"/>
<exec executable="ln" failonerror="true">
<arg line="-s /lib/systemd/system/check-strip-and-trim.service ${sysdir}/etc/systemd/system/rescue.target.wants/check-strip-and-trim.service"/>
</exec>
<exec executable="sed" failonerror="true">
<arg line="-e 's/disk\/by-label\/data/${DISK}4/' -i ${sysdir}/etc/fstab"/>
</exec>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment