On building compatible architectures
by Rob Taylor
Hi all,
Emmet and myself had quite a deep conversation on enabling morph to
build backwards compatible architectures on a given system.
The current use-case in point is building an armv7l system on an armv8l
system
Our conclusion the best way to handle this is to add knowledge to
_validate_architecture (buildcommand.py:124) about which architectures
are backwards compatible to others, starting with that armv8 is
backwards compatible to armv7.
We also discussed the case of armv6, which is relevant for )the
hypothetical case of) building for Raspberry Pi. This is a more complex
situation, to summarise:
* armv8 is backwards compatible, apart from [1]
* Deprecated Instructions
* SETEND
*IT, partially
* Obsolete Instructions
* SWP, SWPB
* VFP short vectors
* CP15 barrier
and SETEND is specifically disallowed by Linux armv8 support.
There is one specific case of SETEND usage I can find, which is a string
optimisation library that is part of raspbian - arm-mem [2]
It seems very recent kernels include emulation for most of the obsolete
instructions (I can identify SWP support in 3.17), however anything
using SETEND and IT will be trouble.
As a potential solution to this, we postulated two armv6 architectures
lets call 'armv6' and 'armv6_8'. 'armv6_8' would be the safe subset of
armv6 to build/run on armv8. 'armv6' would allow all instructions. Then,
for example, a system using arm-mem would only be included in
definitions for 'armv6l', and it would be clearly wrong to use in
definitions for 'armv6_8'.
HTH
Rob
[1]
http://www.linuxplumbersconf.org/2014/ocw//system/presentations/2361/orig...
[2] https://github.com/bavison/arm-mem
7 years, 7 months
[PATCH 0/6] Add support to deploy to devices in rawdisk.write
by Pedro Alvarez
Repo: baserock:baserock/morph
Branch: baserock/pedroalvarez/rawdisk-to-device4
Sha1: 8b3f1e02b6c5e1d69e34b1b924681f8c408bae54
Land: master
Pedro Alvarez (6):
Add 'is_device' function to check if we are deploying to a device
Add force flag to 'mkfs.btrfs'
Disable loop mount, leave the system decide
Move DISK_SIZE detection inside create_raw_disk_image
Don't create the rawdisk image inside of create_local_system
Don't create rawdisk image if deploying to a device
morphlib/exts/kvm.write | 1 +
morphlib/exts/openstack.write | 1 +
morphlib/exts/rawdisk.write | 7 ++++++-
morphlib/exts/virtualbox-ssh.write | 1 +
morphlib/writeexts.py | 20 ++++++++++++--------
5 files changed, 21 insertions(+), 9 deletions(-)
--
1.7.10.4
7 years, 7 months
[PATCH] Make cycle.sh work for target systems too
by Paul Sherwood
repo: baserock:baserock/definitions
branch: baserock/ps/cycle-from-chroot
This re-write runs all of the system-version-manager commands on
the target cluster via ssh, so in addition to self-upgrades,
cycle.sh can now be used to upgrade a target device (eg a devboard)
while working in Baserock VM or chroot
---
diff --git a/scripts/cycle.sh b/scripts/cycle.sh
index c0e2aa6..ca6983e 100755
--- a/scripts/cycle.sh
+++ b/scripts/cycle.sh
@@ -14,6 +14,8 @@
# with this program; if not, write to the Free Software Foundation,
Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+set -e
+
usage() {
echo "Usage: cycle.sh some-system some-cluster [newversion]"
echo
@@ -38,24 +40,27 @@ if [ ! -z "$3" ] ; then
fi
fi
-if system-version-manager get-running | grep -q "^$newversion$"; then
- echo "You are currently running the $newversion system."
+location=`cat $2 | grep location | sed 's/ \+//g' | cut -d":" -f2`
+svm="ssh $location system-version-manager"
+runningversion=`$svm get-running'`
+
+if [ $runningversion = $newversion ]; then
+ echo "$newversion is currently running at $location"
echo "Maybe you want to boot into a different system version?"
exit 1
fi
-set -e
-set -v
-
-runningversion=`system-version-manager get-running`
-system-version-manager set-default $runningversion
-if system-version-manager list | grep -q "^$newversion$"; then
- system-version-manager remove $newversion
+$svm "set-default $runningversion"
+if $svm "list" | grep -q "^$newversion$"; then
+ $svm "remove $newversion"
fi
+echo $(date +%Y-%m-%d\ %T) "Cyclng $location from $runningversion to
$newversion"
+
morph gc
morph build "$1"
sed -i "s|^- morph: .*$|- morph: $1|" "$2"
-morph deploy --upgrade "$2" self.HOSTNAME=$(hostname)
self.VERSION_LABEL=$newversion
-system-version-manager list
+host=`ssh $location hostname`
+morph deploy --upgrade "$2" self.HOSTNAME=$host
self.VERSION_LABEL=$newversion
+$svm "list"
--
cgit v0.9.0.3-67-gacbf
7 years, 7 months
[PATCH 0/4] Documentation for kvm and virtualbox-ssh write extensions
by Pete Fotheringham
Pushed to `pf-document-extensions` branch in githup
https://github.com/petefoth/morph/tree/pf-document-extensions
Pete Fotheringham (4):
Add more information on existing parameters. Add AUTOSTART
parameter
Improve readability by adding blank lines
Refere to .write.help file for documentation
More complete help documentation
morphlib/exts/kvm.write | 6 ++-
morphlib/exts/kvm.write.help | 30 +++++++++---
morphlib/exts/virtualbox-ssh.write | 31 +++---------
morphlib/exts/virtualbox-ssh.write.help | 87 +++++++++++++++++++++++++++++++--
4 files changed, 117 insertions(+), 37 deletions(-)
--
1.7.11.3
7 years, 7 months
[PATCH 0/2] Add an ARMv7 hard-floot rootfs
by James Thomas
Branch: baserock/james/add_rootfs
Sha1: cbe5905ae3e408f70d8c9e1721a1b7993e70cb88
It's very useful to be able to simply download a hard float rootfs to use for
testing (e.g for board bring-up), so add a system (just a devel system without
a bsp) to the release.morph to ensure there's one available to download
James Thomas (2):
Add a rootfs only armv7lhf system
Add rootfs to release
clusters/release.morph | 5 ++++
systems/devel-system-armv7lhf-rootfs.morph | 38 ++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
create mode 100644 systems/devel-system-armv7lhf-rootfs.morph
--
1.9.3
7 years, 7 months