From 37c0b6a0916c31a5eae0a9ddfcc5d0b8fb4569c6 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 10 Nov 2010 09:51:09 +1100 Subject: 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 --- dtdiff | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 dtdiff (limited to 'dtdiff') diff --git a/dtdiff b/dtdiff new file mode 100644 index 0000000..5fa772b --- /dev/null +++ b/dtdiff @@ -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 " >&2 + exit 1 +fi + +diff -u <(source_and_sort "$1") <(source_and_sort "$2") -- cgit v1.1