2 # This script reads filenames from STDIN and outputs any relevant requires
3 # information that needs to be included in the package.
5 # Based on rpm-4.4.2/scripts/find-req.pl
6 # Authors: Elan Ruusamäe <glen@pld-linux.org>
8 export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
11 [ $# -gt 0 ] || return
14 classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
15 [ "$classver" ] || return
16 for v in $classver; do
17 echo "java(ClassDataVersion) >= $v"
24 # check only files, symlinks could point outside buildroot
25 [ -f "$jar" -a ! -L "$jar" ] || return
28 unzip -q -d $tmp $jar >&2
29 javaclassversion $(find $tmp -type f -name '*.class')
36 for file in $FILES; do
39 javajarversion "$file"
40 unzip -p $file | javadeps --requires --rpmformat --keywords -
43 javaclassversion "$file"
44 javadeps --requires --rpmformat --keywords $file
51 for file in $FILES; do
54 unzip -p $file | javadeps --provides --rpmformat --keywords --starprov -
57 javadeps --provides --rpmformat --keywords --starprov $file
63 REQUIRES=$(find_requires)
64 PROVIDES=$(find_provides)
66 # This is a little magic trick to get all REQUIRES that are not
67 # in PROVIDES. While RPM functions correctly when such deps exist,
68 # they make the metadata a bit bloated.
70 # Filter out dups from both lists
71 REQUIRES=$(echo "$REQUIRES" | sort | uniq)
72 PROVIDES=$(echo "$PROVIDES" | sort | uniq)
75 # Get a list of elements that exist in exactly one of PROVIDES or REQUIRES
77 UNIQ=$(echo "$PROVIDES
78 $REQUIRES" | sort | uniq -u)
81 # Of those, only choose the ones that are in REQUIRES
84 $REQUIRES" | sort | uniq -d