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