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.
 
 
 
 
 
 

105 lines
2.6 KiB

#!/bin/sh
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: lib/misc/showsorteddeps.sh
# Copyright (C) 2008 The OpenSDE Project
# Copyright (C) 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 ---
cachefiles=
packages=
config=default
if [ "$1" = "-cfg" ]; then
config="$2"
shift; shift
fi
echo_warning() {
echo "$@" | sed -e 's,^,!> ,g' >& 2
}
echo_error() {
echo "$@" | sed -e 's,^,!> ,g' >& 2
exit 1
}
if [ ! -f config/$config/packages ]; then
echo_error "config '$config' doesn't exist, sorry"
fi
# get the list of cache files
#
for pkg; do
confdir=`echo package/*/$pkg/`
if [ -d $confdir ]; then
packages="$packages $pkg"
if [ -f ${confdir}$pkg.cache ]; then
cachefiles="$cachefiles ${confdir}$pkg.cache"
else
echo_warning "package '$pkg' doesn't have a .cache file"
fi
else
echo_warning "package '$pkg' doesn't exist"
fi
done
{
# get the list of interesting packages
# just one level of recursion
#
packages=$( {
echo "$packages" | tr ' ' '\n'
for cache in $cachefiles; do
grep '^\[DEP\]' $cache | cut -d' ' -f2
done } | sort -u | tr -s '\n' | tr '\n' ' ' )
# pattern to search at packages file of this config
#
pkgsexp=$( echo "$packages" | sed -e 's,^ ,,' -e 's, $,,' -e 's,\+,[+],' -e 's, ,\\\|,g' )
# catch interesting data from packages file
# (sorted by package name)
#
mkfifo $0.$$
( sed -n -e "s,^\(.\) \([^ ]*\) \(...\)\.\(...\) [^ ]* \($pkgsexp\) .*,\5 \3\4 \2 \1,p" \
config/$config/packages | sort > $0.$$ ) &
sleep 1
packages_orig="$packages"
while read pkg prio stages status; do
packages_new="${packages/ $pkg / }"
if [ "$packages" != "$packages_new" ]; then
packages="$packages_new"
if [ "$status" != X ] ; then
status='*'
else
status=' '
fi
echo "$prio $stages $status $pkg"
else
echo_warning "what is '$pkg' doing here?"
fi
done < $0.$$
rm $0.$$
# and catch data from dependencies which were not found at packages list
#
for pkg in $packages; do
confdir=`echo package/*/$pkg/`
if [ -f $confdir/$pkg.desc ]; then
echo_warning "dependency '$pkg' is not available for this build."
sed -n -e 's,^\[P\] . \([^ ]*\) \([^ \.]*\)\.\([^ \.]*\).*,\2\3 \1 - '$pkg',p' $confdir/$pkg.desc
else
echo_warning "dependency '$pkg' doesn't exist!"
fi
done
} | sort -n