From 071d84964a7bb8ccb85086e0b7d6e3df86f14ee6 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Tue, 22 May 2007 19:59:27 +0000 Subject: [PATCH] - Th version, based on find-java-req.sh:AC-branch Changed files: rpm-java-requires -> 1.1 --- rpm-java-requires | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 rpm-java-requires diff --git a/rpm-java-requires b/rpm-java-requires new file mode 100644 index 0000000..40db41b --- /dev/null +++ b/rpm-java-requires @@ -0,0 +1,50 @@ +#!/bin/sh +# This script reads filenames from STDIN and outputs any relevant requires +# information that needs to be included in the package. +# +# Based on rpm-4.4.2/scripts/find-req.pl +# Authors: Elan Ruusamäe + +export PATH="/sbin:/usr/sbin:/bin:/usr/bin" + +javaclassversion() { + [ $# -gt 0 ] || return + + local ver + classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u) + [ "$classver" ] || return + for v in $classver; do + echo "java(ClassDataVersion) >= $v" + done +} + +javajarversion() { + local jar="$1" + + # check only files, symlinks could point outside buildroot + [ -f "$jar" -a ! -L "$jar" ] || return + +# echo >&2 "find java requires: ${jar#$RPM_BUILD_ROOT}" + + tmp=$(mktemp -d) + unzip -q -d $tmp $jar >&2 + javaclassversion $(find $tmp -type f -name '*.class') + rm -rf $tmp +} + +FILES=$(cat -) + +find_requires() { + for file in $FILES; do + case $file in + *.jar) + javajarversion "$file" + ;; + *.class) + javaclassversion "$file" + ;; + esac + done +} + +find_requires | sort -u -- 2.43.0