]> git.pld-linux.org Git - packages/rpm.git/blame - rpm-java-requires
- BR: tcl
[packages/rpm.git] / rpm-java-requires
CommitLineData
071d8496
JB
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
8export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
9
10javaclassversion() {
2e8dae56 11 [ $# -gt 0 ] || return 1
071d8496 12
2e8dae56
ER
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
071d8496
JB
19 for v in $classver; do
20 echo "java(ClassDataVersion) >= $v"
21 done
2e8dae56 22 return 0
071d8496
JB
23}
24
25javajarversion() {
26 local jar="$1"
2e8dae56 27 local ret=0
071d8496
JB
28
29 # check only files, symlinks could point outside buildroot
2e8dae56 30 [ -f "$jar" -a ! -L "$jar" ] || return $ret
071d8496
JB
31
32 tmp=$(mktemp -d)
33 unzip -q -d $tmp $jar >&2
382c9030
ER
34 # workaround for .jar files with stupid permissions
35 chmod -R u+rwX $tmp
2e8dae56
ER
36 javaclassversion $(find $tmp -type f -name '*.class') || {
37 echo >&2 "ERROR: Class version could not be extracted from $jar"
38 ret=1
39 }
071d8496 40 rm -rf $tmp
071d8496 41
2e8dae56
ER
42 return $ret
43}
071d8496
JB
44
45find_requires() {
2e8dae56 46 local ret=0
071d8496
JB
47 for file in $FILES; do
48 case $file in
49 *.jar)
2e8dae56 50 javajarversion "$file" || ret=1
071d8496
JB
51 ;;
52 *.class)
2e8dae56
ER
53 javaclassversion "$file" || {
54 echo >&2 "ERROR: Class version could not be extracted from $file"
55 ret=1
56 }
071d8496
JB
57 ;;
58 esac
59 done
2e8dae56 60 return $ret
071d8496
JB
61}
62
2e8dae56
ER
63FILES=$(cat -)
64
65t=$(mktemp)
66ret=0
67find_requires > $t || ret=1
ffe7903e 68cat $t
2e8dae56
ER
69rm -f $t
70exit $ret
This page took 0.043163 seconds and 4 git commands to generate.