#!/bin/bash
# author:	Dirk Mueller <dmueller@suse.de>
# based on script by Thomas Biege <thomas@suse.de>

# last update:	2005-12-16

unset CDPATH

# if using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
    exit 0
fi
if [ "$NO_BRP_CHECK_RPATH" = "true" ] ; then
        echo "NO_BRP_CHECK_RPATH is set: skipping check"
        exit 0
fi

HAD_ERRORS=0
# check RPATH for bad directories
for FILE in $(find $RPM_BUILD_ROOT -type f \( -perm -0100 -o -perm -0010 -o -perm -0001 \) 2>/dev/null); do
    for RPATH_VAL in $(objdump -p "$FILE" 2>/dev/null | egrep -w '(RPATH|RUNPATH)' | awk '{ print $2 ":"}'); do
	if [ "${RPATH_VAL:0:7}" = "\$ORIGIN" ]; then continue;fi

	while [ -n "$RPATH_VAL" ]; do
	    RPATH_VAL_NXT=${RPATH_VAL%%:*}
	    RPATH_VAL=${RPATH_VAL##$RPATH_VAL_NXT:}
	    test -z "$RPATH_VAL_NXT" && {
		echo "WARNING: ignoring empty rpath \"\" in $FILE"
		continue
	    }
	    test -d "$RPATH_VAL_NXT" && RPATH_VAL_NXT=$(cd ${RPATH_VAL_NXT//#\/\//\/}; pwd -P)

	    case ":$RPATH_VAL_NXT" in
	       :/usr/lib*)
	            ;;
	       :/lib*)
	            ;;
	       :/opt/*/lib*)
	            ;;
	       :/usr/X11R6/lib*)
	            ;;
	       *)
	 	    echo "ERROR: RPATH \"$RPATH_VAL_NXT\" on $FILE is not allowed"
		    HAD_ERRORS=1
	    esac
	done
    done
done

exit $HAD_ERRORS
#exit 0
