]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-java-requires
- report errors
[packages/rpm.git] / rpm-java-requires
1 #!/bin/sh
2 # This script reads filenames from STDIN and outputs any relevant requires
3 # information that needs to be included in the package.
4 #
5 # Based on rpm-4.4.2/scripts/find-req.pl
6 # Authors: Elan Ruusamäe <glen@pld-linux.org>
7
8 export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
9
10 javaclassversion() {
11         [ $# -gt 0 ] || return 1
12
13         local classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
14         if [ -z "$classver" ]; then
15                 return 1
16         fi
17
18         local v
19         for v in $classver; do
20                 echo "java(ClassDataVersion) >= $v"
21         done
22         return 0
23 }
24
25 javajarversion() {
26         local jar="$1"
27         local ret=0
28
29         # check only files, symlinks could point outside buildroot
30         [ -f "$jar" -a ! -L "$jar" ] || return $ret
31
32         tmp=$(mktemp -d)
33         unzip -q -d $tmp $jar >&2
34         javaclassversion $(find $tmp -type f -name '*.class') || {
35                 echo >&2 "ERROR: Class version could not be extracted from $jar"
36                 ret=1
37         }
38         rm -rf $tmp
39
40         return $ret
41 }
42
43 find_requires() {
44         local ret=0
45         for file in $FILES; do
46                 case $file in
47                 *.jar)
48                         javajarversion "$file" || ret=1
49                 ;;
50                 *.class)
51                         javaclassversion "$file" || {
52                                 echo >&2 "ERROR: Class version could not be extracted from $file"
53                                 ret=1
54                         }
55                 ;;
56                 esac
57         done
58         return $ret
59 }
60
61 FILES=$(cat -)
62
63 t=$(mktemp)
64 ret=0
65 find_requires > $t || ret=1
66 rm -f $t
67 exit $ret
This page took 0.065058 seconds and 4 git commands to generate.