DTC: DTC {before,after} Comparison Script
Guys,
And just for the record, here is the QAD script that I used to verify that all the existing DTS files in the arch/powerpc/boot/dts directory are byte-identical before and after my recent modifications. Naturally, all the DTS files are still in "legacy dts-version 0" still. But I don't think I broke that mode now. :-)
Feel free to productize or otherwise improve on it...
jdl
----------------------------------------------------------------
#!/usr/bin/perl
my $dtc_old = "dtc/dtc-old";
my $dtc_new = "dtc/dtc-new-debug";
my $basic_options = "-b 0 -f -I dts -O dtb";
my $linux_dts_dir = "linux-2.6/arch/powerpc/boot/dts";
# Yeah, sure, we could, like, readdir() this instead... my @boards = (
"bamboo", "ebony", "ep88xc", "holly", "kilauea", "kuroboxHD", "kuroboxHG", "lite5200", "lite5200b", "mpc7448hpc2", "mpc8272ads", "mpc8313erdb", "mpc832x_mds", "mpc832x_rdb", "mpc8349emitx", "mpc8349emitxgp", "mpc834x_mds", "mpc836x_mds", "mpc8540ads", "mpc8541cds", "mpc8544ds", "mpc8548cds", "mpc8555cds", "mpc8560ads", "mpc8568mds", "mpc8572ds", "mpc8610_hpcd", "mpc8641_hpcn", "mpc866ads", # Feh. Bad node references... "mpc885ads", "pq2fads", "prpmc2800", "ps3", "sequoia", "walnut",
);
foreach my $board (@boards) {
my $dts_file = "$linux_dts_dir/$board.dts";
my $old_dtb_file = "/tmp/$board.dtb.old";
my $new_dtb_file = "/tmp/$board.dtb.new";
my $cmd_old = "$dtc_old $basic_options -o $old_dtb_file $dts_file";
my $cmd_new = "$dtc_new $basic_options -o $new_dtb_file $dts_file";
my $cmd_cmp = "cmp $old_dtb_file $new_dtb_file";
print "------------------------------------------------\n";
print "OLD: $cmd_old\n";
unlink($old_dtb_file) if (-f $old_dtb_file);
system("$cmd_old >& /dev/null");
my $status = $?;
if ($status) {
print " FAILED to run old DTC on $board\n";
}
print "NEW: $cmd_new\n";
unlink($new_dtb_file) if (-f $new_dtb_file);
system("$cmd_new >& /dev/null");
$status = $?;
if ($status) {
print " FAILED to run new DTC on $board\n";
}
if (-f $old_dtb_file && -f $new_dtb_file) {
print "CMP: $cmd_cmp\n";
system($cmd_cmp);
$status = $?;
if ($status) {
print " FAILED $board\n";
}
} else {
printf " FAILED: Missing dtb file\n";
}
}