| |
@@ -1,144 +0,0 @@
|
| |
- #!/bin/bash
|
| |
- #
|
| |
- # DESCRIPTION
|
| |
- # -----------
|
| |
- # This script resolves dependencies of the given beakerlib libraries installed
|
| |
- # in BEAKER_LIBRARY_PATH. Dependencies are resolved from Makefiles which
|
| |
- # contains Requires and RhtsRequires fields specifying RPM dependencies.
|
| |
- #
|
| |
- # RhtsRequires are mandatory RPM requirements that need to be installed before
|
| |
- # running the test.
|
| |
- #
|
| |
- # Requires are optional RPM requirements that the harness should try to install
|
| |
- # on the system-under-test (SUT), but they are not mandatory.
|
| |
- #
|
| |
- # RETURNS
|
| |
- # -------
|
| |
- # After the script finishes, it prints two lines, with space delimited list of
|
| |
- # components from RhtsRequires and Requires.
|
| |
- #
|
| |
- # BEAKERLIB_LIBRARY_PATH - path with the libraries
|
| |
- #
|
| |
- # AUTHORS
|
| |
- # -------
|
| |
- # Jakub Heger <jheger@redhat.com>
|
| |
- # Martin Kyral <mkyral@redhat.com>
|
| |
- # Miroslav Vadkerti <mvadkert@redhat.com>
|
| |
- #
|
| |
-
|
| |
- [ -z "$BEAKERLIB_LIBRARY_PATH" ] && BEAKERLIB_LIBRARY_PATH="/mnt/libraries"
|
| |
-
|
| |
- # options
|
| |
- OPTS="h"
|
| |
-
|
| |
- #
|
| |
- # helpers
|
| |
- #
|
| |
-
|
| |
- function print_info() {
|
| |
- printf ":: %s\n" "$@"
|
| |
- }
|
| |
-
|
| |
- function print_error() {
|
| |
- printf "Error: %s\n" "$@"
|
| |
- }
|
| |
-
|
| |
- function exit_error() {
|
| |
- print_error "$@"
|
| |
- exit 1
|
| |
- }
|
| |
-
|
| |
- function help() {
|
| |
- cat <<EOF
|
| |
- usage: $(basename $0) [-h] TEST_PATH
|
| |
-
|
| |
-
|
| |
- Authors:
|
| |
- Jakub Heger <jheger AT redhat.com>
|
| |
- Martin Kyral <mkyral AT redhat.com>
|
| |
- Miroslav Vadkerti <mvadkert AT redhat.com>
|
| |
-
|
| |
- Options:
|
| |
- -h Print this help.
|
| |
- EOF
|
| |
- }
|
| |
-
|
| |
- #
|
| |
- # Main
|
| |
- #
|
| |
-
|
| |
- while getopts $OPTS OPTION
|
| |
- do
|
| |
- case $OPTION in
|
| |
- h)
|
| |
- help
|
| |
- exit
|
| |
- ;;
|
| |
- esac
|
| |
- done
|
| |
-
|
| |
- TEST=$1
|
| |
- [ -z "$TEST" ] && exit_error "No test specified"
|
| |
- [ -f "$TEST/Makefile" ] || exit 0
|
| |
-
|
| |
- REQUIRES_DEPS=
|
| |
- RHTSREQUIRES_DEPS=
|
| |
- PROCESSED_LIBS=
|
| |
-
|
| |
- #
|
| |
- # Process a beakerlib library and recursively resolve it's dependencies.
|
| |
- #
|
| |
- # Params:
|
| |
- # $1 - library name - e.g. httpd/http
|
| |
- #
|
| |
- function process_library() {
|
| |
- # skip already processed beakerlib libraries
|
| |
- grep -wq "$1" <<< "$PROCESSED_LIBS" && return
|
| |
- PROCESSED_LIBS="$PROCESSED_LIBS $1"
|
| |
-
|
| |
- local COMPONENT=${1///*}
|
| |
- local LIBRARY=${1##*/}
|
| |
-
|
| |
- # check if library exists
|
| |
- if [ ! -d "${BEAKERLIB_LIBRARY_PATH}/$COMPONENT/Library/$LIBRARY" ]; then
|
| |
- print_error "Could not find library '$1' in '$BEAKERLIB_LIBRARY_PATH'"
|
| |
- return
|
| |
- fi
|
| |
-
|
| |
- resolve_deps "${BEAKERLIB_LIBRARY_PATH}/$COMPONENT/Library/$LIBRARY"
|
| |
- }
|
| |
-
|
| |
- #
|
| |
- # Recursively resolves test dependencies of beakerlib test specified with a path.
|
| |
- #
|
| |
- # Params:
|
| |
- # $1 - path to a beakerlib test
|
| |
- #
|
| |
- function resolve_deps() {
|
| |
- local REQUIRES=$(sed -n 's/.*\"Requires:[[:space:]]*\(.*\)".*/\1/p' "$1/Makefile")
|
| |
- local RHTSREQUIRES=$(sed -n 's/.*RhtsRequires:[[:space:]]*\(.*\)".*/\1/p' "$1/Makefile")
|
| |
- # sed -n 's/.*Requires:[[:space:]]*\(.*\)".*/\1/p' $1/Makefile
|
| |
-
|
| |
- for REQ in $REQUIRES; do
|
| |
- if egrep -qv '^\$\(' <<< "$REQ"; then
|
| |
- REQUIRES_DEPS="$REQUIRES_DEPS $REQ"
|
| |
- fi
|
| |
- done
|
| |
-
|
| |
- for RHTSREQ in $RHTSREQUIRES; do
|
| |
- if egrep -q "^library\(" <<< "$RHTSREQ"; then
|
| |
- process_library $(sed 's/library(\(.*\))/\1/' <<< "$RHTSREQ")
|
| |
- elif egrep -qv '^\$\(' <<< "$RHTSREQ"; then
|
| |
- RHTSREQUIRES_DEPS="$RHTSREQUIRES_DEPS $RHTSREQ"
|
| |
- fi
|
| |
- done
|
| |
- }
|
| |
-
|
| |
- resolve_deps "$TEST"
|
| |
-
|
| |
- echo "$RHTSREQUIRES_DEPS" | xargs -n1 | sort | uniq | tr '\n' ' '
|
| |
- echo
|
| |
- echo "$REQUIRES_DEPS" | xargs -n1 | sort | uniq | tr '\n' ' '
|
| |
- echo
|
| |
-
|
| |
- # vim: ts=2 sw=2 sts=2 ft=sh et ai:
|
| |
Signed-off-by: Andrei Stepanov astepano@redhat.com