#!/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
|