OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

87 lines
2.4 KiB

#!/bin/sh
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: lib/misc/compare_builddirs.sh
# Copyright (C) 2008 The OpenSDE Project
# Copyright (C) 2005 - 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- SDE-COPYRIGHT-NOTE-END ---
config=default
if [ "$1" = -cfg ]; then
config="$2"
fi
compare_builddirs() {
local config="$1" dir0="${2%/}" dir1="${3%/}"
local cfgid0="${dir0#build/}" cfgid1="${dir1#build/}"
local cfg0= cfg1=
echo "compare: $cfgid0 vs. $cfgid1"
# config dir
if grep -q "^export SDECFG_ID='$cfgid0'" config/$config/config; then
cfg0="config/$config"
elif [ -f "$dir0/etc/ROCK-CONFIG/packages" ]; then
cfg0="$dir0/etc/ROCK-CONFIG"
elif [ -f "$dir0/etc/SDE-CONFIG/packages" ]; then
cfg0="$dir0/etc/SDE-CONFIG"
else
echo "Unable to detect '$dir0' config."
fi
if grep -q "^export SDECFG_ID='$cfgid1'" config/$config/config; then
cfg1="config/$config"
elif [ -f "$dir1/etc/ROCK-CONFIG/packages" ]; then
cfg1="$dir1/etc/ROCK-CONFIG"
elif [ -f "$dir1/etc/SDE-CONFIG/packages" ]; then
cfg1="$dir1/etc/SDE-CONFIG"
else
echo "Unable to detect '$dir1' config."
fi
[ -n "$cfg0" -a -n "$cfg1" ] || exit 1
# package list
#diff -U1 "$cfg0/packages" "$cfg1/packages"
# dir0 vs dir1
for flist in "$dir0/var/adm/flists/"*; do
pkg="${flist#$dir0/var/adm/flists/}"
if [ -f "$dir1/var/adm/flists/$pkg" ]; then
diff -U1 "$flist" "$dir1/var/adm/flists/$pkg"
else
echo "missing '$pkg' at '$cfgid1'"
fi
done
for flist in "$dir1/var/adm/flists/"*; do
pkg="${flist#$dir1/var/adm/flists/}"
if [ ! -f "$dir0/var/adm/flists/$pkg" ]; then
echo "missing '$pkg' at '$cfgid0'"
fi
done
}
bd0= bd1=
find build/$config-*/ -maxdepth 0 -type d 2> /dev/null | while read -r builddir; do
if [ -z "$bd0" ]; then
# first builddir
bd0="$builddir"
elif [ -z "$bd1" ]; then
# second builddir
bd1="$builddir"
else
# third or another builddir, rotate
bd0="$bd1"
bd1="$builddir"
fi
if [ -n "$bd0" -a -n "$bd1" ]; then
compare_builddirs "$config" "$bd0" "$bd1"
fi
done