[packages/java-jna] - new URLs, updated to 4.0 - added nonative patch, package libjnidispatch.so as normal library inste

qboosh qboosh at pld-linux.org
Sun Sep 22 15:25:35 CEST 2013


commit 3a80405ee4c5ee808c66c0364aa4863f9534fe1f
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sun Sep 22 15:26:01 2013 +0200

    - new URLs, updated to 4.0
    - added nonative patch, package libjnidispatch.so as normal library instead of pushing
      many variants of it into jna.jar
    - added soname patch (fixes libjnidispatch.so soname)
    - use system libffi if possible

 java-jna.spec      | 85 ++++++++++++++++++++++++++++++++++++------------------
 jna-nonative.patch | 69 ++++++++++++++++++++++++++++++++++++++++++++
 jna-soname.patch   | 19 ++++++++++++
 3 files changed, 145 insertions(+), 28 deletions(-)
---
diff --git a/java-jna.spec b/java-jna.spec
index 88f0e8b..b5eb2bf 100644
--- a/java-jna.spec
+++ b/java-jna.spec
@@ -1,41 +1,46 @@
-# TODO
-# - pass CC and CFLAGS to "native" target
-# - Fix tests bcond
 #
 # Conditional build:
 %bcond_without	tests		# don't build and run tests
-
-%define		srcname		jna
-%define		snap		rev1177
+%bcond_without	system_libffi	# use system libffi (upstream 3.0.12 or gcc >= 4.8)
+#
 %include	/usr/lib/rpm/macros.java
 Summary:	Easy access to native shared libraries from Java
 Summary(pl.UTF-8):	Prosty dostęp do natywnych bibliotek współdzielonych z poziomu Javy
-Name:		java-%{srcname}
-Version:	3.2.7.0
-Release:	0.%{snap}.2
-License:	LGPL
+Name:		java-jna
+Version:	4.0
+Release:	1
+License:	LGPL v2.1 or Apache v2.0
 Group:		Libraries/Java
-# Source0:	https://jna.dev.java.net/source/browse/*checkout*/jna/tags/%{version}/jnalib/dist/src.zip
-# svn export https://jna.dev.java.net/svn/jna/tags/3.2.7/jnalib/ --username guest jna-3.2.7.0
-# mv  jna-3.2.7.0   jna-3.2.7.0.rev1177
-# tar cjf ~/rpm/packages/jna/jna-3.2.7.0.rev1177.tar.bz2 jna-3.2.7.0.rev1177/
-Source0:	%{srcname}-%{version}.%{snap}.tar.bz2
-# Source0-md5:	ebfd892683335a3fd6da931938322f77
-URL:		https://jna.dev.java.net/
+Source0:	https://github.com/twall/jna/archive/%{version}.tar.gz?/jna-%{version}.tar.gz
+# Source0-md5:	be0320402c93d33426e51aeb0ff34eec
+# Note: by default jna.jar contains versions of native libjnidispatch
+# for many systems/architectures; this patch disables such packaging;
+# we package libjnidispatch.so as normal native library instead
+Patch0:		jna-nonative.patch
+Patch1:		jna-soname.patch
+URL:		https://jna.java.net/
 BuildRequires:	ant-nodeps
+%if %(locale -a | grep -q '^en_US$'; echo $?)%(locale -a | grep -q '^en_US\.UTF-8$'; echo $?)
+BuildRequires:	glibc-localedb-all
+%endif
 BuildRequires:	jpackage-utils
-BuildRequires:	libffi-devel >= 6:4.5.2
 BuildRequires:	rpm-javaprov
 BuildRequires:	rpmbuild(macros) >= 1.300
 BuildRequires:	sed >= 4.0
 BuildRequires:	unzip
+%if %{with system_libffi}
+# upstream version
+BuildRequires:	libffi-devel >= 3.0.12
+# gcc version (gcc 4.7.3 is not sufficient - missing ffi_prep_cif_var added in libffi 3.0.12)
+BuildRequires:	libffi-devel >= 6:4.8
+BuildRequires:	pkgconfig
+%endif
 %if %{with tests}
 BuildRequires:	java-junit
 BuildRequires:	ant-junit
 BuildRequires:	ant-trax
 %endif
 Requires:	jpackage-utils
-BuildArch:	noarch
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -49,26 +54,50 @@ pisania czegokolwiek co nie jest kodem Javy - nie jest potrzebne JNI
 ani kod natywny.
 
 %prep
-%setup -q -n %{srcname}-%{version}.%{snap}
+%setup -q -n jna-%{version}
+%patch0 -p1
+%patch1 -p1
 
-# Segfaults for us and for fedora
-%{__rm} test/com/sun/jna/DirectTest.java
+%{__rm} -r dist/* lib/native/*.jar
+
+%if %{with system_libffi}
+# use system libffi
+%{__sed} -i -e '/property name="dynlink\.native"/s/value="false"/value="true"/' build.xml
+%endif
+# optflags
+%{__sed} -i -e '/property name="cflags_extra\.native"/s at value=""@value="%{rpmcflags}"@' build.xml
 
 %build
-%ant jar contrib-jars %{?with_tests:test}
+# build seems to need iso-8859-1 locale (there are some 8bit-encoded characters in win32 sources)
+export LC_ALL=en_US
+%ant -DCC="%{__cc}" -Drelease=1 -Ddynlink.native=true dist
+
+%if %{with tests}
+# but tests require UTF-8
+export LC_ALL=en_US.UTF-8
+%ant -Drelease=1 test
+%endif
 
 %install
 rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_javadir}
+install -d $RPM_BUILD_ROOT{%{_javadir},%{_libdir}}
 
 # jars
-cp -a dist/%{srcname}.jar $RPM_BUILD_ROOT%{_javadir}/%{srcname}-%{version}.jar
-ln -s %{srcname}-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/%{srcname}.jar
+cp -p dist/jna.jar $RPM_BUILD_ROOT%{_javadir}/jna-%{version}.jar
+ln -s jna-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/jna.jar
+cp -p dist/jna-platform.jar $RPM_BUILD_ROOT%{_javadir}/jna-platform-%{version}.jar
+ln -s jna-platform-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/jna-platform.jar
+# native stub library
+install build/native-linux-*/libjnidispatch.so $RPM_BUILD_ROOT%{_libdir}
 
 %clean
 rm -rf $RPM_BUILD_ROOT
 
 %files
 %defattr(644,root,root,755)
-%{_javadir}/%{srcname}.jar
-%{_javadir}/%{srcname}-%{version}.jar
+%doc CHANGES.md LICENSE OTHERS README.md TODO
+%attr(755,root,root) %{_libdir}/libjnidispatch.so
+%{_javadir}/jna-%{version}.jar
+%{_javadir}/jna.jar
+%{_javadir}/jna-platform-%{version}.jar
+%{_javadir}/jna-platform.jar
diff --git a/jna-nonative.patch b/jna-nonative.patch
new file mode 100644
index 0000000..61a7640
--- /dev/null
+++ b/jna-nonative.patch
@@ -0,0 +1,69 @@
+--- jna-4.0/build.xml.orig	2013-07-04 20:42:30.000000000 +0200
++++ jna-4.0/build.xml	2013-09-22 14:30:40.805468201 +0200
+@@ -416,66 +416,6 @@
+       <fileset dir="${classes}" excludes="${jar.omitted}">
+         <patternset refid="jar-compiled"/>
+       </fileset>
+-      <zipfileset src="${lib.native}/win32-x86.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/win32-x86"/>
+-      <zipfileset src="${lib.native}/aix-ppc.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/aix-ppc"/>
+-      <zipfileset src="${lib.native}/aix-ppc64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/aix-ppc64"/>
+-      <zipfileset src="${lib.native}/darwin.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/darwin"/>
+-      <zipfileset src="${lib.native}/linux-x86.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-x86"/>
+-      <zipfileset src="${lib.native}/linux-x86-64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-x86-64"/>
+-      <zipfileset src="${lib.native}/linux-arm.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-arm"/>
+-      <zipfileset src="${lib.native}/linux-ia64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-ia64"/>
+-      <zipfileset src="${lib.native}/linux-ppc.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-ppc"/>
+-      <zipfileset src="${lib.native}/linux-ppc64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/linux-ppc64"/>
+-      <zipfileset src="${lib.native}/sunos-x86.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/sunos-x86"/>
+-      <zipfileset src="${lib.native}/sunos-x86-64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/sunos-x86-64"/>
+-      <zipfileset src="${lib.native}/sunos-sparc.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/sunos-sparc"/>
+-      <zipfileset src="${lib.native}/sunos-sparcv9.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/sunos-sparcv9"/>
+-      <zipfileset src="${lib.native}/freebsd-x86.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/freebsd-x86"/>
+-      <zipfileset src="${lib.native}/freebsd-x86-64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/freebsd-x86-64"/>
+-      <zipfileset src="${lib.native}/openbsd-x86.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/openbsd-x86"/>
+-      <zipfileset src="${lib.native}/openbsd-x86-64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/openbsd-x86-64"/>
+-      <zipfileset src="${lib.native}/win32-x86-64.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/win32-x86-64"/>
+-      <zipfileset src="${lib.native}/w32ce-arm.jar"
+-                  includes="*jnidispatch*"
+-                  prefix="com/sun/jna/w32ce-arm"/>
+     </jar>
+     <zip zipfile="${build}/${minjar}">
+       <zipfileset src="${build}/${jar}" excludes="**/*jnidispatch*"/>
diff --git a/jna-soname.patch b/jna-soname.patch
new file mode 100644
index 0000000..0426b73
--- /dev/null
+++ b/jna-soname.patch
@@ -0,0 +1,19 @@
+--- jna-4.0/native/Makefile.orig	2013-07-04 20:42:30.000000000 +0200
++++ jna-4.0/native/Makefile	2013-09-22 14:54:44.712074273 +0200
+@@ -66,6 +66,7 @@
+ FFI_ENV=CC="$(CC)" CFLAGS="$(COPT) $(CDEBUG)" CPPFLAGS="$(CDEFINES)"
+ FFI_CONFIG=--enable-static --disable-shared --with-pic=yes
+ endif
++LIBBASE=$(LIBPFX)jnidispatch$(JNISFX)
+ LIBRARY=$(BUILD)/$(LIBPFX)jnidispatch$(JNISFX)
+ TESTLIB=$(BUILD)/$(LIBPFX)testlib$(LIBSFX)
+ TESTLIB_JAR=$(BUILD)/$(LIBPFX)testlib-jar$(LIBSFX)
+@@ -243,7 +244,7 @@
+ ARCH=$(shell uname -m | sed 's/i.86/i386/g')
+ PCFLAGS+=-fPIC
+ CDEFINES+=-DHAVE_PROTECTION
+-LDFLAGS+=-Wl,-soname,$@
++LDFLAGS+=-Wl,-soname,$(LIBBASE)
+ endif
+ 
+ ifneq (,$(findstring bsd,$(OS)))
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/java-jna.git/commitdiff/3a80405ee4c5ee808c66c0364aa4863f9534fe1f



More information about the pld-cvs-commit mailing list