[packages/rpm-build-macros] - move java macros and javaprov here from rpm package

baggins baggins at pld-linux.org
Thu Jan 2 14:39:48 CET 2020


commit 2e434209d35be19548e12eba46cb285664485529
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Thu Jan 2 22:38:59 2020 +0900

    - move java macros and javaprov here from rpm package

 attr.java             |   3 +
 eclipse-feature.xslt  |  81 +++++++++++++++++++++++++
 macros.java           | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++
 macros.pld            | 158 -----------------------------------------------
 rpm-build-macros.spec |  38 +++++++++++-
 rpm-java-requires     | 137 +++++++++++++++++++++++++++++++++++++++++
 6 files changed, 423 insertions(+), 159 deletions(-)
---
diff --git a/rpm-build-macros.spec b/rpm-build-macros.spec
index 846859a..ffc7683 100644
--- a/rpm-build-macros.spec
+++ b/rpm-build-macros.spec
@@ -18,6 +18,11 @@ Source11:	macros.ruby
 Source12:	rubygems.rb
 Source13:	gem_helper.rb
 
+Source20:	attr.java
+Source21:	macros.java
+Source22:	rpm-java-requires
+Source23:	eclipse-feature.xslt
+
 Patch0:		disable-systemd.patch
 #Patchx: %{name}-pydebuginfo.patch
 BuildRequires:	rpm >= 4.4.9-56
@@ -63,7 +68,7 @@ Requires:	ruby
 Requires:	ruby-modules
 Requires:	ruby-rubygems
 Provides:	rpm-rubyprov
-Obsoletes;	rpm-rubyprov
+Obsoletes:	rpm-rubyprov
 
 %description rubyprov
 Ruby tools, which simplifies creation of RPM packages with Ruby
@@ -73,6 +78,27 @@ software.
 Makra ułatwiające tworzenie pakietów RPM z programami napisanymi w
 Ruby.
 
+%package javaprov
+Summary:	Additional utilities for checking Java provides/requires in RPM packages
+Summary(pl.UTF-8):	Dodatkowe narzędzia do sprawdzania zależności kodu w Javie w pakietach RPM
+Group:		Applications/File
+Requires:	%{name} = %{version}-%{release}
+Requires:	jar
+Requires:	file
+Requires:	findutils >= 1:4.2.26
+Requires:	mktemp
+Requires:	unzip
+Provides:	rpm-javaprov
+Obsoletes:	rpm-javaprov
+
+%description javaprov
+Additional utilities for checking Java provides/requires in RPM
+packages.
+
+%description javaprov -l pl.UTF-8
+Dodatkowe narzędzia do sprawdzania zależności kodu w Javie w pakietach
+RPM.
+
 %prep
 %setup -qcT
 cp -p %{SOURCE0} .
@@ -113,12 +139,17 @@ cat %{SOURCE11} %{SOURCE10} >$RPM_BUILD_ROOT%{_usrlibrpm}/macros.d/ruby
 install -p %{SOURCE12} $RPM_BUILD_ROOT%{_usrlibrpm}/rubygems.rb
 install -p %{SOURCE13} $RPM_BUILD_ROOT%{_usrlibrpm}/gem_helper.rb
 
+cat %{SOURCE21} %{SOURCE20} >$RPM_BUILD_ROOT%{_usrlibrpm}/macros.d/java
+install %{SOURCE22} $RPM_BUILD_ROOT%{_usrlibrpm}/java-find-requires
+install %{SOURCE23} $RPM_BUILD_ROOT%{_usrlibrpm}/eclipse-feature.xslt
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(644,root,root,755)
 %{_usrlibrpm}/macros.build
+%{_usrlibrpm}/macros.d/java
 %{_usrlibrpm}/macros.d/kernel
 %{_usrlibrpm}/macros.d/ruby
 %attr(755,root,root) %{_usrlibrpm}/service_generator.sh
@@ -129,3 +160,8 @@ rm -rf $RPM_BUILD_ROOT
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_usrlibrpm}/gem_helper.rb
 %attr(755,root,root) %{_usrlibrpm}/rubygems.rb
+
+%files javaprov
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_usrlibrpm}/java-find-requires
+%{_usrlibrpm}/eclipse-feature.xslt
diff --git a/attr.java b/attr.java
new file mode 100644
index 0000000..a3d1191
--- /dev/null
+++ b/attr.java
@@ -0,0 +1,3 @@
+%__java_requires	env RPM_BUILD_ROOT=%{buildroot} MIN_CLASSDATAVERSION=%{?java_min_classdataversion} %{_rpmhome}/java-find-requires
+%__java_magic		^Java .*
+%__java_path		\\.(jar|class)$
diff --git a/eclipse-feature.xslt b/eclipse-feature.xslt
new file mode 100644
index 0000000..d48df03
--- /dev/null
+++ b/eclipse-feature.xslt
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:output method="text"/>
+
+<!-- we match from root, not to left anything to default template -->
+<xsl:template match="/">
+	<xsl:apply-templates select="feature"/>
+</xsl:template>
+
+<xsl:template match="feature">
+	<!-- process provides -->
+	<xsl:if test="$mode = 'provides'">
+		<!-- include root tag of feature -->
+		<xsl:text>eclipse(</xsl:text>
+			<xsl:value-of select="@id"/>
+			<xsl:text>) = </xsl:text>
+			<xsl:value-of select="@version"/>
+		<xsl:text>
</xsl:text>
+
+		<!-- is feature and plugin any way different? -->
+		<!-- process feature/plugin -->
+		<xsl:for-each select="plugin">
+			<xsl:text>eclipse(</xsl:text>
+				<xsl:value-of select="@id"/>
+				<xsl:text>) = </xsl:text>
+				<xsl:value-of select="@version"/>
+			<xsl:text>
</xsl:text>
+		</xsl:for-each>
+		<!-- process feature/includes -->
+		<xsl:for-each select="includes">
+			<xsl:text>eclipse(</xsl:text>
+				<xsl:value-of select="@id"/>
+				<xsl:text>) = </xsl:text>
+				<xsl:value-of select="@version"/>
+			<xsl:text>
</xsl:text>
+		</xsl:for-each>
+	</xsl:if>
+
+	<!-- process requires -->
+	<xsl:if test="$mode = 'requires'">
+		<xsl:for-each select="requires/import">
+			<xsl:text>eclipse(</xsl:text>
+				<!-- match plugin or feature -->
+				<xsl:if test="@plugin != ''">
+					<xsl:value-of select="@plugin"/>
+				</xsl:if>
+				<xsl:if test="@feature != ''">
+					<xsl:value-of select="@feature"/>
+				</xsl:if>
+			<xsl:text>)</xsl:text>
+
+			<!-- handle match="perfect" (probably means: same version as us) -->
+				<xsl:if test="@match = 'perfect'">
+					<xsl:text> = </xsl:text>
+					<xsl:value-of select="//feature/@version"/>
+				</xsl:if>
+
+				<xsl:if test="@match = 'compatible'">
+					<xsl:text> >= </xsl:text>
+					<xsl:value-of select="@version"/>
+				</xsl:if>
+
+				<!-- apparently: base ver or greater -->
+				<xsl:if test="@match = 'equivalent'">
+					<xsl:text> >= </xsl:text>
+					<xsl:value-of select="@version"/>
+				</xsl:if>
+
+				<!-- no qualifier, assume any? -->
+				<xsl:if test="@match = ''">
+					<xsl:text> >= </xsl:text>
+					<xsl:value-of select="@version"/>
+				</xsl:if>
+
+			<xsl:text>
</xsl:text>
+		</xsl:for-each>
+	</xsl:if>
+
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/macros.java b/macros.java
new file mode 100644
index 0000000..746e426
--- /dev/null
+++ b/macros.java
@@ -0,0 +1,165 @@
+# vim:ts=4 sw=4 noet ft=spec
+#
+# Java macros. based on jpackage macros.java
+#
+# Import packaging conventions from jpackage.org (prefixed with _
+# to avoid name collisions).
+#
+%_javadir		%{_datadir}/java
+%_javadocdir		%{_datadir}/javadoc
+
+# Root directory where all Java VMs/SDK/JREs are installed.
+%_jvmdir		%{_libdir}/jvm
+
+# Root directory where all Java VMs/SDK/JREs expose their jars
+%_jvmjardir		%{_libdir}/jvm-exports
+
+# Root directory for all Java VM/SDK/JRE's private things.
+%_jvmprivdir		%{_libdir}/jvm-private
+
+# Root directory for all architecture dependent parts of Java VM/SDK/JRE's
+%_jvmlibdir		%{_libdir}/jvm
+
+# Root directory for all architecture independent parts of Java VM/SDK/JRE's
+%_jvmdatadir		%{_datadir}/jvm
+
+# Root directory for all configurations parts of Java VM/SDK/JRE's
+%_jvmsysconfdir		%{_sysconfdir}/jvm
+
+# Root directory for all common architecture dependent parts of Java VM/SDK/JRE's
+%_jvmcommonlibdir	%{_libdir}/jvm-common
+
+# Root directory for all common architecture independent parts of Java VM/SDK/JRE's
+%_jvmcommondatadir	%{_datadir}/jvm-common
+
+# Root directory for all common configurations parts of Java VM/SDK/JRE's
+%_jvmcommonsysconfdir	%{_sysconfdir}/jvm-common
+
+# Directory where arch-specific (JNI) version-independent jars are installed.
+%_jnidir		%{_libdir}/java
+
+
+# JDK selection. Set this to name of the JDK implementation to use
+# insead of the system default
+#%use_jdk		icedtea6
+
+# expands to the value with right jdk for BuildRequires header
+# 'jdk' if %%use_jdk is not defined,  jdk(%%use_jdk) otherwise
+# The requirement will not replace current 'default' JDK
+%required_jdk	jdk%{?use_jdk:(%{use_jdk})}
+
+%buildrequires_jdk BuildRequires: %required_jdk
+
+%java_home	%{expand:%%global java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; %{!?use_jdk:unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm}%{?use_jdk:JAVA_HOME=%{_jvmdir}/%{use_jdk}}; echo ${JAVA_HOME:-ERROR})}%java_home
+
+%_javasrcdir	%{_usrsrc}/java
+
+%ant		JAVA_HOME=%{java_home} CLASSPATH=$CLASSPATH ant
+%jar		%{java_home}/bin/jar
+%java		%{expand:%%global java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; %{!?use_jdk:unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd}%{?use_jdk:JAVACMD=%{java_home}/bin/java}; echo $JAVACMD)}%java
+%javac		%{java_home}/bin/javac
+%javadoc	%{java_home}/bin/javadoc
+
+%add_jvm_extension	JAVA_LIBDIR=%{buildroot}/%{_javadir}	%{_bindir}/jvmjar -l
+
+%jpackage_script() \
+install -d $RPM_BUILD_ROOT%{_bindir}\
+cat > $RPM_BUILD_ROOT%{_bindir}/%5 << 'EOF' \
+#!/bin/sh\
+#\
+# %{name} script\
+# JPackage Project <http://www.jpackage.org/>\
+\
+# Source functions library\
+. %{_javadir}-utils/java-functions\
+\
+# Source system prefs\
+if [ -f %{_sysconfdir}/java/%{name}.conf ]; then\
+      . %{_sysconfdir}/java/%{name}.conf\
+fi\
+\
+# Source user prefs\
+if [ -f $HOME/.%{name}rc ]; then\
+      . $HOME/.%{name}rc\
+fi\
+\
+# Configuration\
+MAIN_CLASS=%1\
+BASE_FLAGS=%2\
+BASE_OPTIONS=%3\
+BASE_JARS="%(echo %4 | tr ':' ' ')"\
+\
+# Set parameters\
+set_jvm\
+set_classpath $BASE_JARS\
+set_flags $BASE_FLAGS\
+set_options $BASE_OPTIONS\
+\
+# Let's start\
+run "$@"\
+EOF
+
+# jpackage 1.7
+# Directory for maven depmaps
+#
+%_mavendepmapdir /etc/maven
+%_mavendepmapfragdir /etc/maven/fragments
+
+#
+# add_to_depmap adds an entry to the depmap. The arguments are:
+#
+# %1 the original groupid
+# %2 the original artifact id
+# %3 the version
+# %4 the new groupid
+# %5 the new artifactid
+#
+
+%add_to_maven_depmap() \
+install -dm 755 $RPM_BUILD_ROOT/%{_mavendepmapfragdir}\
+cat >>$RPM_BUILD_ROOT/%{_mavendepmapfragdir}/%{name}<< EOF\
+<dependency>\
+    <maven>\
+        <groupId>%1</groupId>\
+        <artifactId>%2</artifactId>\
+        <version>%3</version>\
+    </maven>\
+    <jpp>\
+        <groupId>%4</groupId>\
+        <artifactId>%5</artifactId>\
+        <version>%3</version>\
+    </jpp>\
+</dependency>\
+\
+EOF\
+%{nil}
+
+#==============================================================================
+#
+# update_maven_depmap updates the main maven depmap
+#
+%update_maven_depmap() \
+echo -e "<dependencies>\\n" > %{_mavendepmapdir}/maven2-depmap.xml\
+if [ -d %{_mavendepmapfragdir} ] && [ -n "`find %{_mavendepmapfragdir} -type f`" ]; then\
+cat %{_mavendepmapfragdir}/* >> %{_mavendepmapdir}/maven2-depmap.xml\
+fi\
+echo -e "</dependencies>\\n" >> %{_mavendepmapdir}/maven2-depmap.xml
+
+# JAVA macros specific for PLD
+
+# Directory for tomcat context configuration files
+%_tomcatconfdir	/etc/tomcat/Catalina/localhost
+
+# Tomcat cache path
+%_tomcatcachedir %{_sharedstatedir}/tomcat/work/Catalina/localhost
+
+# Clear tomcat cache
+# Author: Paweł Zuzelski <pawelz at pld-linux.org>
+#
+# Usage:
+# %%tomcat_clear_cache appname
+#
+# Call this script in %postun scriptlet. It will remove compiled jsps related to
+# given app.
+#
+%tomcat_clear_cache() %{!?1:ERROR}%{?2:ERROR} %{__rm} -rf %{_tomcatcachedir}/%1
diff --git a/macros.pld b/macros.pld
index b0f4195..1a3837f 100644
--- a/macros.pld
+++ b/macros.pld
@@ -1552,164 +1552,6 @@ fi \
 # BuildRequires:	rpmbuild(macros) >= 1.450
 %service(qn) {{%(export noop=%{-n:1} quiet=%{-q:1} RPM_BUILD_ROOT=%{buildroot}; /usr/lib/rpm/service_generator.sh %{*}) };}
 
-# Java macros. based on jpackage macros.java
-#
-# Root directory where all Java VMs/SDK/JREs are installed.
-%_jvmdir		%{_libdir}/jvm
-
-# Root directory where all Java VMs/SDK/JREs expose their jars
-%_jvmjardir		%{_libdir}/jvm-exports
-
-# Root directory for all Java VM/SDK/JRE's private things.
-%_jvmprivdir	%{_libdir}/jvm-private
-
-# Root directory for all architecture dependent parts of Java VM/SDK/JRE's
-%_jvmlibdir		%{_libdir}/jvm
-
-# Root directory for all architecture independent parts of Java VM/SDK/JRE's
-%_jvmdatadir	%{_datadir}/jvm
-
-# Root directory for all configurations parts of Java VM/SDK/JRE's
-%_jvmsysconfdir	%{_sysconfdir}/jvm
-
-# Root directory for all common architecture dependent parts of Java VM/SDK/JRE's
-%_jvmcommonlibdir	%{_libdir}/jvm-common
-
-# Root directory for all common architecture independent parts of Java VM/SDK/JRE's
-%_jvmcommondatadir	%{_datadir}/jvm-common
-
-# Root directory for all common configurations parts of Java VM/SDK/JRE's
-%_jvmcommonsysconfdir	%{_sysconfdir}/jvm-common
-
-# Directory where arch-specific (JNI) version-independent jars are installed.
-%_jnidir		%{_libdir}/java
-
-
-# JDK selection. Set this to name of the JDK implementation to use
-# insead of the system default
-#%use_jdk		icedtea6
-
-# expands to the value with right jdk for BuildRequires header
-# 'jdk' if %%use_jdk is not defined,  jdk(%%use_jdk) otherwise
-# The requirement will not replace current 'default' JDK
-%required_jdk	jdk%{?use_jdk:(%{use_jdk})}
-
-%buildrequires_jdk BuildRequires: %required_jdk
-
-%java_home		%{expand:%%global java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; %{!?use_jdk:unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm}%{?use_jdk:JAVA_HOME=%{_jvmdir}/%{use_jdk}}; echo ${JAVA_HOME:-ERROR})}%java_home
-
-%_javasrcdir	%{_usrsrc}/java
-
-%ant			JAVA_HOME=%{java_home} CLASSPATH=$CLASSPATH ant
-%jar			%{java_home}/bin/jar
-%java			%{expand:%%global java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; %{!?use_jdk:unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd}%{?use_jdk:JAVACMD=%{java_home}/bin/java}; echo $JAVACMD)}%java
-%javac			%{java_home}/bin/javac
-%javadoc		%{java_home}/bin/javadoc
-
-%add_jvm_extension	JAVA_LIBDIR=%{buildroot}/%{_javadir}	%{_bindir}/jvmjar -l
-
-%jpackage_script() \
-install -d $RPM_BUILD_ROOT%{_bindir}\
-cat > $RPM_BUILD_ROOT%{_bindir}/%5 << 'EOF' \
-#!/bin/sh\
-#\
-# %{name} script\
-# JPackage Project <http://www.jpackage.org/>\
-\
-# Source functions library\
-. %{_javadir}-utils/java-functions\
-\
-# Source system prefs\
-if [ -f %{_sysconfdir}/java/%{name}.conf ]; then\
-      . %{_sysconfdir}/java/%{name}.conf\
-fi\
-\
-# Source user prefs\
-if [ -f $HOME/.%{name}rc ]; then\
-      . $HOME/.%{name}rc\
-fi\
-\
-# Configuration\
-MAIN_CLASS=%1\
-BASE_FLAGS=%2\
-BASE_OPTIONS=%3\
-BASE_JARS="%(echo %4 | tr ':' ' ')"\
-\
-# Set parameters\
-set_jvm\
-set_classpath $BASE_JARS\
-set_flags $BASE_FLAGS\
-set_options $BASE_OPTIONS\
-\
-# Let's start\
-run "$@"\
-EOF
-
-# jpackage 1.7
-# Directory for maven depmaps
-#
-%_mavendepmapdir /etc/maven
-%_mavendepmapfragdir /etc/maven/fragments
-
-#
-# add_to_depmap adds an entry to the depmap. The arguments are:
-#
-# %1 the original groupid
-# %2 the original artifact id
-# %3 the version
-# %4 the new groupid
-# %5 the new artifactid
-#
-
-%add_to_maven_depmap() \
-install -dm 755 $RPM_BUILD_ROOT/%{_mavendepmapfragdir}\
-cat >>$RPM_BUILD_ROOT/%{_mavendepmapfragdir}/%{name}<< EOF\
-<dependency>\
-    <maven>\
-        <groupId>%1</groupId>\
-        <artifactId>%2</artifactId>\
-        <version>%3</version>\
-    </maven>\
-    <jpp>\
-        <groupId>%4</groupId>\
-        <artifactId>%5</artifactId>\
-        <version>%3</version>\
-    </jpp>\
-</dependency>\
-\
-EOF\
-%{nil}
-
-#==============================================================================
-#
-# update_maven_depmap updates the main maven depmap
-#
-%update_maven_depmap() \
-echo -e "<dependencies>\\n" > %{_mavendepmapdir}/maven2-depmap.xml\
-if [ -d %{_mavendepmapfragdir} ] && [ -n "`find %{_mavendepmapfragdir} -type f`" ]; then\
-cat %{_mavendepmapfragdir}/* >> %{_mavendepmapdir}/maven2-depmap.xml\
-fi\
-echo -e "</dependencies>\\n" >> %{_mavendepmapdir}/maven2-depmap.xml
-
-# JAVA macros specific for PLD
-
-# Directory for tomcat context configuration files
-%_tomcatconfdir	/etc/tomcat/Catalina/localhost
-
-# Tomcat cache path
-%_tomcatcachedir %{_sharedstatedir}/tomcat/work/Catalina/localhost
-
-# Clear tomcat cache
-# Author: Paweł Zuzelski <pawelz at pld-linux.org>
-#
-# Usage:
-# %%tomcat_clear_cache appname
-#
-# Call this script in %postun scriptlet. It will remove compiled jsps related to
-# given app.
-#
-%tomcat_clear_cache() %{!?1:ERROR}%{?2:ERROR} %{__rm} -rf %{_tomcatcachedir}/%1
-
 # PEAR install macros
 # Author: Elan Ruusamäe <glen at pld-linux.org>
 #
diff --git a/rpm-java-requires b/rpm-java-requires
new file mode 100755
index 0000000..8bbac6f
--- /dev/null
+++ b/rpm-java-requires
@@ -0,0 +1,137 @@
+#!/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 <glen at pld-linux.org>
+
+export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
+
+# Set the prefix, unless it is overriden
+: ${RPM_LIBDIR=/usr/lib/rpm}
+
+# Enable debug: JAVADEPS_DEBUG=true
+: ${JAVADEPS_DEBUG=false}
+
+# xsltproc for eclipse feature.xml
+: ${xsltproc=/usr/bin/xsltproc}
+
+# "%define java_min_classdataversion 51.0" in spec to minimum version to be 51.0
+: ${MIN_CLASSDATAVERSION=}
+
+# save $- state, to enable in functions
+debug=$-
+
+javaclassversionfilter() {
+	if [ "$MIN_CLASSDATAVERSION" ]; then
+		set -- $* "$MIN_CLASSDATAVERSION"
+	fi
+
+	local v
+	for v in $*; do
+		echo "java(ClassDataVersion) >= $v"
+	done | sort -V | tail -n 1
+}
+
+javaclassversion() {
+	set -$debug
+	local mode=$1; shift
+	[ $# -gt 0 ] || return 1
+	$JAVADEPS_DEBUG && echo >&2 ">> javaclassversion($mode): $*"
+
+	# process only requires
+	[ "$mode" = requires ] || return $ret
+
+	local classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
+	if [ -z "$classver" ]; then
+		return 1
+	fi
+
+	javaclassversionfilter $classver
+	return 0
+}
+
+javajarversion() {
+	set -$debug
+	local mode=$1; shift
+	local jar=$1
+	local tmp ret=0
+	$JAVADEPS_DEBUG && echo >&2 ">> javajarversion($mode): $jar"
+
+	# check only files, symlinks could point outside buildroot
+	[ -f "$jar" -a ! -L "$jar" ] || return $ret
+
+	tmp=$(mktemp -d)
+	unzip -q -d $tmp $jar >&2
+	# workaround for .jar files with stupid permissions
+	chmod -R u+rwX $tmp
+
+	# find .jar and .class files
+	find_javadeps $mode $(find $tmp -type f -regextype posix-extended  -regex '^.+\.(class|jar)$') || ret=1
+	rm -rf $tmp
+	return $ret
+}
+
+eclipse_feature() {
+	set -$debug
+	local mode=$1; shift
+	local file=$1
+	local ret=0
+
+	$JAVADEPS_DEBUG && echo >&2 ">> eclipse_feature($mode): $file"
+
+	if [ ! -x $xsltproc ]; then
+		return 0
+	fi
+
+	$xsltproc --stringparam mode $mode ${RPM_LIBDIR}/eclipse-feature.xslt $file
+}
+
+find_javadeps() {
+	set -$debug
+	local mode=$1; shift
+	local ret=0
+
+	$JAVADEPS_DEBUG && echo >&2 ">> find_javadeps($mode): $*"
+	for file in $@; do
+		case $file in
+		*.jar)
+			javajarversion $mode "$file" || ret=1
+		;;
+		*.class)
+			javaclassversion $mode "$file" || {
+				echo >&2 "ERROR: Class version could not be extracted from $file"
+				ret=1
+			}
+		;;
+		*/feature.xml)
+			eclipse_feature $mode "$file" || ret=1
+		;;
+		*)
+			$JAVADEPS_DEBUG && echo >&2 ">> find_javadeps($mode): no handle: $file"
+		;;
+		esac
+	done
+	return $ret
+}
+
+ret=0
+# default mode to requires for backward compat
+mode=requires
+case $1 in
+-P|--provides)
+	mode=provides
+	shift
+	;;
+-R|--requires)
+	mode=requires
+	shift
+	;;
+esac
+
+t=$(mktemp)
+find_javadeps $mode $(cat -) > $t || ret=1
+sort -u $t
+rm -f $t
+
+exit $ret
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm-build-macros.git/commitdiff/34019f6aadce21f9aeb1986e2b65559912dd4eef



More information about the pld-cvs-commit mailing list