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