diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2010-11-10 09:51:09 +1100 |
---|---|---|
committer | Jon Loeliger <jdl@jdl.com> | 2010-11-13 15:47:29 -0600 |
commit | 37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6 (patch) | |
tree | 26035a19464d9a564939f0ad9ac360f5ae005506 /dtdiff | |
parent | 73ae43ea44a40c2ac00dd94523f270177a1e72e9 (diff) | |
download | dtc-37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6.zip dtc-37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6.tar.gz dtc-37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6.tar.bz2 |
dtc: Add code to make diffing trees easier
This patch adds a "dtdiff" script to do a useful form diff of two
device trees. This automatically converts the tree to dts form (if
it's not already) and uses a new "-s" option in dtc to "sort" the
tree. That is, it sorts the reserve entries, it sorts the properties
within each node by name, and it sorts nodes by name within their
parent.
This gives a pretty sensible diff between the trees, which will ignore
semantically null internal rearrangements (directly diffing the dts
files can give a lot of noise due to the order changes).
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'dtdiff')
-rw-r--r-- | dtdiff | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +#! /bin/bash + +# This script uses the bash <(...) extension. +# If you want to change this to work with a generic /bin/sh, make sure +# you fix that. + + +DTC=dtc + +source_and_sort () { + DT="$1" + if [ -d "$DT" ]; then + IFORMAT=fs + elif [ -f "$DT" ]; then + case "$DT" in + *.dts) + IFORMAT=dts + ;; + *.dtb) + IFORMAT=dtb + ;; + esac + fi + + if [ -z "$IFORMAT" ]; then + echo "Unrecognized format for $DT" >&2 + exit 2 + fi + + $DTC -I $IFORMAT -O dts -qq -f -s -o - "$DT" +} + +if [ $# != 2 ]; then + echo "Usage: dtdiff <device tree> <device tree>" >&2 + exit 1 +fi + +diff -u <(source_and_sort "$1") <(source_and_sort "$2") |