[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