]> git.pld-linux.org Git - packages/rpm.git/blame_incremental - rpm-java-requires
- print out rpm requires/provides from eclipse feature.xml
[packages/rpm.git] / rpm-java-requires
... / ...
CommitLineData
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
10# save $- state, to enable in functions
11debug=$-
12
13# enable debug: FIND_JAVAREQ_DEBUG=true
14FIND_JAVAREQ_DEBUG=${FIND_JAVAREQ_DEBUG:-false}
15
16javaclassversion() {
17 set -$debug
18 [ $# -gt 0 ] || return 1
19 $FIND_JAVAREQ_DEBUG && echo >&2 ">> class: $*"
20
21 local classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
22 if [ -z "$classver" ]; then
23 return 1
24 fi
25
26 local v
27 for v in $classver; do
28 echo "java(ClassDataVersion) >= $v"
29 done
30 return 0
31}
32
33javajarversion() {
34 set -$debug
35 local jar="$1"
36 local tmp ret=0
37 $FIND_JAVAREQ_DEBUG && echo >&2 ">> jar: $jar"
38
39 # check only files, symlinks could point outside buildroot
40 [ -f "$jar" -a ! -L "$jar" ] || return $ret
41
42 tmp=$(mktemp -d)
43 unzip -q -d $tmp $jar >&2
44 # workaround for .jar files with stupid permissions
45 chmod -R u+rwX $tmp
46
47 # find .jar and .class files
48 for file in $(find $tmp -type f '(' -name '*.class' -o -name '*.jar' ')'); do
49 case "$file" in
50 *.jar)
51 # recursion!
52 javajarversion "$file" || ret=1
53 ;;
54 *.class)
55 javaclassversion "$file" || {
56 echo >&2 "ERROR: Class version could not be extracted from $file"
57 ret=1
58 }
59 ;;
60 esac
61 done
62 rm -rf $tmp
63
64 return $ret
65}
66
67find_requires() {
68 set -$debug
69 local ret=0
70 for file in $FILES; do
71 case $file in
72 *.jar)
73 javajarversion "$file" || ret=1
74 ;;
75 *.class)
76 javaclassversion "$file" || {
77 echo >&2 "ERROR: Class version could not be extracted from $file"
78 ret=1
79 }
80 ;;
81 esac
82 done
83 return $ret
84}
85
86FILES=$(cat -)
87
88t=$(mktemp)
89ret=0
90find_requires > $t || ret=1
91sort -u $t
92rm -f $t
93exit $ret
This page took 0.025448 seconds and 4 git commands to generate.