From 668e9be8a7b1a3bea14dfabbd240169223f7c0cfeba2d3f6ebaf9743e46d0ca0 Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 10 Oct 2019 18:42:10 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/Java:packages/jna?expand=0&rev=1 --- .gitattributes | 23 +++ .gitignore | 1 + 5.4.0.tar.gz | 3 + jna-build.patch | 238 ++++++++++++++++++++++++++++++ jna-callback.patch | 74 ++++++++++ jna-rpmlintrc | 2 + jna-system-libjnidispatch.patch | 91 ++++++++++++ jna.changes | 252 ++++++++++++++++++++++++++++++++ jna.spec | 138 +++++++++++++++++ 9 files changed, 822 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 5.4.0.tar.gz create mode 100644 jna-build.patch create mode 100644 jna-callback.patch create mode 100644 jna-rpmlintrc create mode 100644 jna-system-libjnidispatch.patch create mode 100644 jna.changes create mode 100644 jna.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/5.4.0.tar.gz b/5.4.0.tar.gz new file mode 100644 index 0000000..98a16d4 --- /dev/null +++ b/5.4.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d03d88b9050b3f186f2415e0efc0921d59568cc784a2a63881ca0909763467d9 +size 93324146 diff --git a/jna-build.patch b/jna-build.patch new file mode 100644 index 0000000..6a2d38d --- /dev/null +++ b/jna-build.patch @@ -0,0 +1,238 @@ +--- jna-5.4.0/build.xml 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/build.xml 2019-10-10 19:10:07.252492214 +0200 +@@ -357,7 +357,7 @@ + + + +- ++ + + + +@@ -403,7 +403,7 @@ + + + +- + +- + + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + + +@@ -1057,7 +912,7 @@ + + + +- + + + +- +- + + + +@@ -1311,7 +1164,6 @@ + JNA API Documentation +
${header}
+ ${footer} +- + + + +@@ -1329,13 +1181,14 @@ + + + ++ + + + + +
+ +- + + +Only in jna-5.4.0: build.xml.orig +--- jna-5.4.0/native/Makefile 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/native/Makefile 2019-10-10 19:08:35.831965950 +0200 +@@ -97,7 +97,7 @@ + PCFLAGS=-W -Wall -Wno-unused -Wno-parentheses + CFLAGS=$(PCFLAGS) $(CFLAGS_EXTRA) $(COPT) $(CDEBUG) $(CDEFINES) $(CINCLUDES) \ + -DJNA_JNI_VERSION='"$(JNA_JNI_VERSION)"' -DCHECKSUM='"$(CHECKSUM)"' +-LDFLAGS=-o $@ -shared ++LDFLAGS=$(RPM_LD_FLAGS) -o $@ -shared + ifeq ($(DYNAMIC_LIBFFI),true) + CFLAGS += $(shell pkg-config --cflags libffi 2>/dev/null || echo) + LIBS += $(shell pkg-config --libs libffi 2>/dev/null || echo -lffi) +@@ -457,7 +457,6 @@ + + $(LIBRARY): $(JNIDISPATCH_OBJS) $(FFI_LIB) + $(LD) $(LDFLAGS) $(JNIDISPATCH_OBJS) $(FFI_LIB) $(LIBS) +- $(STRIP) $@ + + $(TESTLIB): $(BUILD)/testlib.o + $(LD) $(LDFLAGS) $< $(LIBS) diff --git a/jna-callback.patch b/jna-callback.patch new file mode 100644 index 0000000..18fd73b --- /dev/null +++ b/jna-callback.patch @@ -0,0 +1,74 @@ +--- jna-5.4.0/native/testlib.c 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/native/testlib.c 2019-10-10 18:45:58.780052342 +0200 +@@ -804,8 +804,8 @@ + } + + EXPORT callback_t +-callCallbackWithCallback(cb_callback_t cb) { +- return (*cb)((callback_t)(void*)cb); ++callCallbackWithCallback(cb_callback_t cb, callback_t arg) { ++ return (*cb)(arg); + } + + static int32_t +--- jna-5.4.0/test/com/sun/jna/CallbacksTest.java 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/test/com/sun/jna/CallbacksTest.java 2019-10-10 18:43:51.679371223 +0200 +@@ -194,9 +194,9 @@ + int callCallbackWithByReferenceArgument(CopyArgToByReference cb, int arg, IntByReference result); + TestStructure.ByValue callCallbackWithStructByValue(TestStructure.TestCallback callback, TestStructure.ByValue cbstruct); + interface CbCallback extends Callback { +- CbCallback callback(CbCallback arg); ++ Callback callback(Callback arg); + } +- CbCallback callCallbackWithCallback(CbCallback cb); ++ Callback callCallbackWithCallback(CbCallback cb, Callback arg); + + interface Int32CallbackX extends Callback { + public int callback(int arg); +@@ -843,7 +843,7 @@ + return arg; + } + }; +- TestLibrary.CbCallback cb2 = lib.callCallbackWithCallback(cb); ++ TestLibrary.Callback cb2 = lib.callCallbackWithCallback(cb, cb); + assertEquals("Callback reference should be reused", cb, cb2); + } + +@@ -859,7 +859,7 @@ + throw ERROR; + } + }; +- TestLibrary.CbCallback cb2 = lib.callCallbackWithCallback(cb); ++ TestLibrary.Callback cb2 = lib.callCallbackWithCallback(cb, cb); + String output = s.toString(); + assertTrue("Default handler not called", output.length() > 0); + } +@@ -890,7 +890,7 @@ + throw ERROR; + } + }; +- TestLibrary.CbCallback cb2 = lib.callCallbackWithCallback(cb); ++ TestLibrary.Callback cb2 = lib.callCallbackWithCallback(cb, cb); + assertNotNull("Exception handler not called", CALLBACK[0]); + assertEquals("Wrong callback argument to handler", cb, CALLBACK[0]); + assertEquals("Wrong exception passed to handler", +@@ -935,7 +935,7 @@ + } + }; + TestLibrary.CbCallback cb = new TestProxy(); +- TestLibrary.CbCallback cb2 = lib.callCallbackWithCallback(cb); ++ TestLibrary.CbCallback cb2 = lib.callCallbackWithCallback(cb, cb); + assertNotNull("Exception handler not called", CALLBACK[0]); + assertEquals("Wrong callback argument to handler", cb, CALLBACK[0]); + assertEquals("Wrong exception passed to handler", +--- jna-5.4.0/test/com/sun/jna/DirectCallbacksTest.java 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/test/com/sun/jna/DirectCallbacksTest.java 2019-10-10 18:43:51.675371201 +0200 +@@ -65,7 +65,7 @@ + @Override + public native TestStructure.ByValue callCallbackWithStructByValue(TestStructure.TestCallback callback, TestStructure.ByValue cbstruct); + @Override +- public native CbCallback callCallbackWithCallback(CbCallback cb); ++ public native Callback callCallbackWithCallback(CbCallback cb, Callback arg); + @Override + public native Int32CallbackX returnCallback(); + @Override diff --git a/jna-rpmlintrc b/jna-rpmlintrc new file mode 100644 index 0000000..afcf7ea --- /dev/null +++ b/jna-rpmlintrc @@ -0,0 +1,2 @@ +# Rpm doesn't detect the library dependency on Java packages +addFilter("^jna.*: W: explicit-lib-dependency libjnidispatch") diff --git a/jna-system-libjnidispatch.patch b/jna-system-libjnidispatch.patch new file mode 100644 index 0000000..8540fd2 --- /dev/null +++ b/jna-system-libjnidispatch.patch @@ -0,0 +1,91 @@ +--- jna-5.4.0/src/com/sun/jna/Native.java 2019-07-19 21:22:03.000000000 +0200 ++++ jna-5.4.0/src/com/sun/jna/Native.java 2019-10-10 18:58:56.464572605 +0200 +@@ -912,84 +912,12 @@ + * Loads the JNA stub library. + * First tries jna.boot.library.path, then the system path, then from the + * jar file. ++ * MODIFIED FROM UPSTREAM - we rip out all sorts of gunk here that is ++ * unnecessary when JNA is properly installed with the OS. + */ + private static void loadNativeDispatchLibrary() { +- if (!Boolean.getBoolean("jna.nounpack")) { +- try { +- removeTemporaryFiles(); +- } +- catch(IOException e) { +- LOG.log(Level.WARNING, "JNA Warning: IOException removing temporary files", e); +- } +- } +- +- String libName = System.getProperty("jna.boot.library.name", "jnidispatch"); +- String bootPath = System.getProperty("jna.boot.library.path"); +- if (bootPath != null) { +- // String.split not available in 1.4 +- StringTokenizer dirs = new StringTokenizer(bootPath, File.pathSeparator); +- while (dirs.hasMoreTokens()) { +- String dir = dirs.nextToken(); +- File file = new File(new File(dir), System.mapLibraryName(libName).replace(".dylib", ".jnilib")); +- String path = file.getAbsolutePath(); +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Looking in {0}", path); +- if (file.exists()) { +- try { +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying {0}", path); +- System.setProperty("jnidispatch.path", path); +- System.load(path); +- jnidispatchPath = path; +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch at {0}", path); +- return; +- } catch (UnsatisfiedLinkError ex) { +- // Not a problem if already loaded in anoteher class loader +- // Unfortunately we can't distinguish the difference... +- //System.out.println("File found at " + file + " but not loadable: " + ex.getMessage()); +- } +- } +- if (Platform.isMac()) { +- String orig, ext; +- if (path.endsWith("dylib")) { +- orig = "dylib"; +- ext = "jnilib"; +- } else { +- orig = "jnilib"; +- ext = "dylib"; +- } +- path = path.substring(0, path.lastIndexOf(orig)) + ext; +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Looking in {0}", path); +- if (new File(path).exists()) { +- try { +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying {0}", path); +- System.setProperty("jnidispatch.path", path); +- System.load(path); +- jnidispatchPath = path; +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch at {0}", path); +- return; +- } catch (UnsatisfiedLinkError ex) { +- LOG.log(Level.WARNING, "File found at " + path + " but not loadable: " + ex.getMessage(), ex); +- } +- } +- } +- } +- } +- String jnaNosys = System.getProperty("jna.nosys", "true"); +- if ((!Boolean.parseBoolean(jnaNosys)) || Platform.isAndroid()) { +- try { +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Trying (via loadLibrary) {0}", libName); +- System.loadLibrary(libName); +- LOG.log(DEBUG_JNA_LOAD_LEVEL, "Found jnidispatch on system path"); +- return; +- } +- catch(UnsatisfiedLinkError e) { +- } +- } +- if (!Boolean.getBoolean("jna.noclasspath")) { +- loadNativeDispatchLibraryFromClasspath(); +- } +- else { +- throw new UnsatisfiedLinkError("Unable to locate JNA native support library"); +- } ++ jnidispatchPath = "@LIBDIR@/" + System.mapLibraryName("jnidispatch"); ++ System.load(jnidispatchPath); + } + + static final String JNA_TMPLIB_PREFIX = "jna"; diff --git a/jna.changes b/jna.changes new file mode 100644 index 0000000..94f402a --- /dev/null +++ b/jna.changes @@ -0,0 +1,252 @@ +------------------------------------------------------------------- +Thu Oct 10 18:33:20 UTC 2019 - Fridrich Strba + +- Rename package to jna, since the jna package must be anyway + archful +- Upgrade to 5.4.0 +- Split the package into: + * jna + + archful package + + provides and obsoletes the libjnidispatch package + + packages the libjnidispatch.so + * jna-contrib + + noarch package + + contains the jna-platform examples +- Removed patches: + * jna-4.5.1-nojavah.patch + * jna-getpeer.patch + * jna-msgsize.patch + + not needed anymore with this version +- Modified patches: + * jna-build.patch + * jna-callback.patch + + Adapted to changed context +- Added patch: + * jna-system-libjnidispatch.patch + + Load the libjnidispatch from system + +------------------------------------------------------------------- +Wed Mar 13 19:03:23 UTC 2019 - Fridrich Strba + +- Decide whether to apply the jna-4.5.0-nojavah.patch according + to what java-devel version is used for build + +------------------------------------------------------------------- +Wed Oct 24 14:23:37 UTC 2018 - Fridrich Strba + +- Install the provided pom*.xml files in order to make maven aware + about the jna-platform too + +------------------------------------------------------------------- +Thu Jul 26 11:50:51 UTC 2018 - msuchanek@suse.com + +- Fix dealing with different java environments +- Fix license warning + +------------------------------------------------------------------- +Wed Jun 13 12:01:21 UTC 2018 - msuchanek@suse.com + +- do not apply nojavah on Leap 42.3 - breaks build +- quiet warnings + + jna-msgsize.patch + + jna-callback.patch + + delete jna-no-werror.patch + +------------------------------------------------------------------- +Tue Jun 12 06:17:20 UTC 2018 - fstrba@suse.com + +- Upstrem version 4.5.1 +- Modified patch: + * jna-4.5.0-nojavah.patch -> jna-4.5.1-nojavah.patch + + Rediff to changed context, rework dependency chain and do not + try to load urls in the no-network build environment +- Added patch: + * jna-no-werror.patch + + Disable -Werror to enable build with two new warnings +- Build with compatibility 1.8 + +------------------------------------------------------------------- +Tue Jan 9 16:30:43 UTC 2018 - fstrba@suse.com + +- Added patch: + * jna-4.5.0-nojavah.patch + + Fix build with jdk10 + + Generate relevant header files during javac run + +------------------------------------------------------------------- +Tue Jan 2 17:57:53 UTC 2018 - fstrba@suse.com + +- Force build with jdk < 10 + +------------------------------------------------------------------- +Mon Oct 30 13:12:41 UTC 2017 - ecsos@opensuse.org + +- change version and name from jna-4.1.0.pom to jna-4.5.0.pom +- fix require libjnidispatch-version in jna-package + +------------------------------------------------------------------- +Tue Sep 19 14:53:38 UTC 2017 - fstrba@suse.com + +- Upstream version 4.5.0 +- Removed patch: + * reproducible.patch + + integrated upstream +- Added patch: + * jna-getpeer.patch + + upstream workaround to the inaccessibility of the getPeer + method + + Fix build with jdk9 +- Modified patch: + * jna-build.patch + + rediff to the new context + +------------------------------------------------------------------- +Tue Sep 19 12:19:45 UTC 2017 - fstrba@suse.com + +- Build with source and target levels 1.6 +- Force building with java-devel < 1.9, since the code uses APIs + removed in jdk9 + +------------------------------------------------------------------- +Fri May 19 11:48:29 UTC 2017 - dziolkowski@suse.com + +- New build dependency: javapackages-local +- drop conditionals for unsupported SUSE versions + +------------------------------------------------------------------- +Fri Feb 24 21:03:28 UTC 2017 - msuchanek@suse.com + +- Upstream version 4.2.2 + * adds some symbols needed by Arduino IDE. + +------------------------------------------------------------------- +Fri Mar 18 15:07:15 UTC 2016 - bwiedemann@suse.com + +- Add reproducible.patch to fix build-compare + +------------------------------------------------------------------- +Sun Nov 8 23:31:55 UTC 2015 - p.drouand@gmail.com + +- Update to version 4.2.1 + * Add support for linux-sparcv9. + * Added `GetCommState`, `GetCommTimeouts` `SetCommState` and `SetCommTimeouts` + to `com.sun.jna.platform.win32.Kernel32`. Added `DCB` structure to + `com.sun.jna.platform.win32.WinBase. + * Make loading debug flags mutable. + * Added `host_processor_info` to `com.sun.jna.platform.mac.SystemB`. + * Added JNA functional overview. + * Update linux-arm natives omitted in 4.2. +- Update jna-4.1.0-build.patch > jna-build.patch + +------------------------------------------------------------------- +Wed Mar 18 09:46:16 UTC 2015 - tchvatal@suse.com + +- Fix build with new javapackages-tools + +------------------------------------------------------------------- +Mon Nov 3 16:20:03 UTC 2014 - cbosdonnat@suse.com + +- Updated to 4.1.0. See the changelog on: + https://github.com/twall/jna/blob/master/CHANGES.md + +- Updated jna-3.4.0-build.patch into jna-4.1.0-build.patch + +- Added libjnidispatch.rpmlintrc to silence warning about explicit + library dependency between jna and libjnidistach: rpm doesn't + detect library dependencies on Java packages, we need to force it. + +- Removed libffi patches: now using the libffi package. + * libffi-aarch64.patch + * libffi-ppc64le.patch + +- Added rpmlint filters: + * libjnidispatch-rpmlintrc + +------------------------------------------------------------------- +Tue Jul 8 10:50:16 UTC 2014 - tchvatal@suse.com + +- Do not depend on ant-trax and run spec-cleaner. + +------------------------------------------------------------------- +Mon Dec 9 21:23:45 UTC 2013 - dvaleev@suse.com + +- enable ppc64le + +- added patches: + * libffi-ppc64le.patch +------------------------------------------------------------------- +Wed Sep 11 10:21:12 UTC 2013 - mvyskocil@suse.com + +- use add_maven_depmap from javapackages-tools + +------------------------------------------------------------------- +Mon Sep 9 11:06:11 UTC 2013 - tchvatal@suse.com + +- Move from jpackage-utils to javapackage-tools + +------------------------------------------------------------------- +Thu Apr 11 15:11:35 UTC 2013 - schwab@suse.de + +- libffi-aarch64.patch: import aarch64 support for libffi + +------------------------------------------------------------------- +Wed Dec 12 18:15:53 UTC 2012 - dvaleev@suse.com + +- enable ppc and ppc64 builds + +------------------------------------------------------------------- +Wed Nov 14 13:10:40 UTC 2012 - mvyskocil@suse.com + +- fix a build for non-suse distros + +------------------------------------------------------------------- +Tue Jun 19 09:19:04 UTC 2012 - mvyskocil@suse.cz + +- fix a build with jdk7 +- rename to libjnidispatch to follow packaging policy (provides jna-native) +- jna and jna-javadoc are now noarch subpackages of it +- don't strip a binary during a build + +------------------------------------------------------------------- +Thu Feb 9 13:53:29 UTC 2012 - mvyskocil@suse.cz + +- Update to 3.4.0 + * moved object creation out into pure Java code reduce JNI crossing + * add native peer value accessors for Pointer + * avoid loading any system-provided JNA via jna.nosys=true + * override default jnidispatch library name with jna.boot.library + * throw an error if JNA is not with a library + * linux/arm and linux/ppc 32-bit support + * preliminary linux/ppc64 support + * linux multi-arch support (kohsuke). + * add to `platform.unix.x11`: `XGrabKey`, `XUngrabKey`, `XSetErrorHandler`. + * and a lot of bugfixes (see /usr/share/packages/doc/jna/README.md) +- fix bnc#745571 enable build of jna-native as well + +------------------------------------------------------------------- +Thu Apr 8 06:44:52 UTC 2010 - mvyskocil@suse.cz + +- update to 3.1.0 (jna-3.1.0-2.jpp6.src.rpm) + * raw JNI mapping of static Java methods increased performance + * library option to allow passing/return of Java Objects. + * handling of uncaught callback exceptions (Issue 63). + * object oriented interface to X server (see contrib/x11) + * Memory class more accessible. + * allow implicit library access to current process on linux (issue 98). + * open all shared libraries with RTLD_GLOBAL, if applicable. This was the default behavior on OSX and changes the default behavior on linux. + * allow NIO Buffer as Structure field (with limitations) (Issue 57) + * add size_t size. + * Bug Fixes + +------------------------------------------------------------------- +Mon Jun 1 09:32:27 CEST 2009 - mvyskocil@suse.cz + +- fixed bnc#507734: jna declared LGPL but contains GPL files and binaries + * removed all jars from source archive + * added gpl to docdir + +------------------------------------------------------------------- +Tue May 19 12:22:46 CEST 2009 - mvyskocil@suse.cz + +- 'Initial SUSE packaging from jpackage.org 5.0' + diff --git a/jna.spec b/jna.spec new file mode 100644 index 0000000..89f70c2 --- /dev/null +++ b/jna.spec @@ -0,0 +1,138 @@ +# +# spec file for package jna +# +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2000-2009, JPackage Project +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: jna +Version: 5.4.0 +Release: 0 +Summary: Pure Java access to native libraries +License: LGPL-2.1-or-later OR Apache-2.0 +URL: https://github.com/twall/jna +Source0: https://github.com/twall/%{name}/archive/%{version}.tar.gz +Source1000: libjnidispatch-rpmlintrc +Patch0: jna-build.patch +Patch5: jna-callback.patch +Patch6: jna-system-libjnidispatch.patch +BuildRequires: ant +BuildRequires: ant-junit +BuildRequires: dos2unix +BuildRequires: fdupes +BuildRequires: java-devel >= 1.8 +BuildRequires: javapackages-local +BuildRequires: junit +BuildRequires: libffi-devel +BuildRequires: xorg-x11-libX11-devel +BuildRequires: xorg-x11-libXt-devel +Requires: java >= 1.8 +Provides: jna-native = %{version}-%{release} +Obsoletes: jna-native < %{version}-%{release} +Provides: libjnidispatch = %{version}-%{release} +Obsoletes: libjnidispatch < %{version}-%{release} + +%description +JNA provides Java programs easy access to native shared libraries +(DLLs on Windows) without writing anything but Java code. JNA's +design aims to provide native access in a natural way with a +minimum of effort. No boilerplate or generated code is required. +While some attention is paid to performance, correctness and ease +of use take priority. + +%package contrib +Summary: Contrib for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description contrib +This package contains the contributed examples for %{name}. + +%package javadoc +Summary: Javadocs for %{name} +BuildArch: noarch + +%description javadoc +This package contains the javadocs for %{name}. + +%prep +%setup -q +# Cleanup the dist tarball +find . -name '*jar' | xargs rm +rm -rf dist +dos2unix OTHERS +# Then apply patches +%patch0 -p1 -b .orig +%patch5 -p1 +%patch6 -p1 + +sed -i 's|@LIBDIR@|%{_libdir}/%{name}|' src/com/sun/jna/Native.java + +%build +build-jar-repository -s -p lib ant +ant \ + jar \ + native \ + platform-jar \ + -Dcflags_extra.native="%{optflags}" \ + -Dbuild-native=true -Drelease \ + -Dcompatibility=1.6 -Dplatform.compatibility=1.6 \ + -Ddynlink.native=true \ + jar \ + native \ + platform-jar \ + javadoc + +%install +# NOTE: JNA has highly custom code to look for native jars in this +# directory. Since this roughly matches the jpackage guidelines, +# we'll leave it unchanged. +install -d -m 755 %{buildroot}%{_libdir}/%{name} +install -m 755 build/native*/libjnidispatch*.so %{buildroot}%{_libdir}/%{name}/ + +install -d -m 755 %{buildroot}%{_jnidir}/%{name} +install -d -m 755 %{buildroot}%{_javadir}/%{name} +install -p -m 644 build%{suffix}/jna-min.jar %{buildroot}%{_jnidir}/%{name}.jar +ln -sf ../%{name}.jar %{buildroot}%{_jnidir}/%{name}/%{name}.jar +ln -sf %{_jnidir}/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar +install -p -m 644 ./contrib/platform/dist/jna-platform.jar %{buildroot}%{_javadir}/%{name}-platform.jar +ln -sf ../%{name}-platform.jar %{buildroot}%{_javadir}/%{name}/%{name}-platform.jar + +install -d -m 755 %{buildroot}%{_mavenpomdir} +install -p -m 644 pom-jna.xml %{buildroot}/%{_mavenpomdir}/%{name}.pom +install -p -m 644 pom-jna-platform.xml %{buildroot}/%{_mavenpomdir}/%{name}-platform.pom +%add_maven_depmap %{name}.pom %{name}.jar +%add_maven_depmap %{name}-platform.pom %{name}-platform.jar -a net.java.dev.jna:platform -f contrib + +install -d -m 755 %{buildroot}%{_javadocdir}/%{name} +cp -pr doc/javadoc/* %{buildroot}%{_javadocdir}/%{name} +%fdupes -s %{buildroot}%{_javadocdir} + +%files -f .mfiles +%dir %{_libdir}/%{name} +%{_libdir}/%{name}/libjnidispatch.so +%{_jnidir}/%{name} +%{_javadir}/%{name}.jar +%license LICENSE +%doc CHANGES.md OTHERS README.md TODO + +%files contrib -f .mfiles-contrib +%{_javadir}/%{name} + +%files javadoc +%{_javadocdir}/jna +%license LICENSE + +%changelog