From 4b8cd86d43fc3cd5dcdd5479d88abddc6dce1867 Mon Sep 17 00:00:00 2001 From: Levente Farkas Date: Mon, 10 Nov 2008 15:39:52 +0000 Subject: [PATCH] initial import from the F-10 branch --- .cvsignore | 1 + import.log | 1 + jna-3.0.2-loadlibrary.patch | 11 ++ jna-3.0.4-nativemapped-array.patch | 73 +++++++++++++ jna-stringarray-return.patch | 26 +++++ jna-tests-headless.patch | 10 ++ jna.spec | 169 +++++++++++++++++++++++++++++ sources | 1 + 8 files changed, 292 insertions(+) create mode 100644 import.log create mode 100644 jna-3.0.2-loadlibrary.patch create mode 100644 jna-3.0.4-nativemapped-array.patch create mode 100644 jna-stringarray-return.patch create mode 100644 jna-tests-headless.patch create mode 100644 jna.spec diff --git a/.cvsignore b/.cvsignore index e69de29..2194324 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +jna-3.0.4.svn729.tar.bz2 diff --git a/import.log b/import.log new file mode 100644 index 0000000..658db96 --- /dev/null +++ b/import.log @@ -0,0 +1 @@ +jna-3_0_4-10_svn729_fc10:EL-5:jna-3.0.4-10.svn729.fc10.src.rpm:1226331400 diff --git a/jna-3.0.2-loadlibrary.patch b/jna-3.0.2-loadlibrary.patch new file mode 100644 index 0000000..d7db857 --- /dev/null +++ b/jna-3.0.2-loadlibrary.patch @@ -0,0 +1,11 @@ +--- jna-3.0.2.default/src/com/sun/jna/Native.java 2008-02-11 16:04:47.000000000 -0500 ++++ jna-3.0.2/src/com/sun/jna/Native.java 2008-04-03 23:30:03.000000000 -0400 +@@ -85,7 +85,7 @@ + public static final int WCHAR_SIZE; + static { + try { +- System.loadLibrary("jnidispatch"); ++ System.load("@JNIPATH@/" + System.mapLibraryName("jnidispatch")); + } + catch(UnsatisfiedLinkError e) { + loadNativeLibrary(); diff --git a/jna-3.0.4-nativemapped-array.patch b/jna-3.0.4-nativemapped-array.patch new file mode 100644 index 0000000..53d2e94 --- /dev/null +++ b/jna-3.0.4-nativemapped-array.patch @@ -0,0 +1,73 @@ +diff -ur jna-3.0.4-svn729/src/com/sun/jna/Function.java jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java +--- jna-3.0.4-svn729/src/com/sun/jna/Function.java 2008-09-12 10:05:07.000000000 -0400 ++++ jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java 2008-10-01 23:23:38.000000000 -0400 +@@ -12,6 +12,7 @@ + + import java.lang.reflect.InvocationTargetException; + import java.lang.reflect.Method; ++import java.lang.reflect.Array; + import java.util.Collections; + import java.util.HashMap; + import java.util.Map; +@@ -351,16 +352,41 @@ + } + return result; + } ++ ++ private Class primitiveFromBoxed(Class boxedClass) { ++ if (boxedClass.isPrimitive()) ++ return boxedClass; ++ if (boxedClass == Boolean.class) ++ return Boolean.TYPE; ++ if (boxedClass == Byte.class) ++ return Byte.TYPE; ++ if (boxedClass == Character.class) ++ return Character.TYPE; ++ if (boxedClass == Short.class) ++ return Short.TYPE; ++ if (boxedClass == Integer.class) ++ return Integer.TYPE; ++ if (boxedClass == Long.class) ++ return Long.TYPE; ++ if (boxedClass == Float.class) ++ return Float.TYPE; ++ if (boxedClass == Double.class) ++ return Double.TYPE; ++ return boxedClass; ++ } + + private Object convertArgument(Object[] args, int index, Method invokingMethod, TypeMapper mapper) { + Object arg = args[index]; + if (arg != null) { + Class type = arg.getClass(); + ToNativeConverter converter = null; ++ boolean isArray = false; + if (NativeMapped.class.isAssignableFrom(type)) { + converter = NativeMappedConverter.getInstance(type); +- } +- else if (mapper != null) { ++ } else if (NativeMapped[].class.isAssignableFrom(type)) { ++ isArray = true; ++ converter = NativeMappedConverter.getInstance(type.getComponentType()); ++ } else if (mapper != null) { + converter = mapper.getToNativeConverter(type); + } + if (converter != null) { +@@ -371,7 +397,15 @@ + else { + context = new FunctionParameterContext(this, args, index); + } +- arg = converter.toNative(arg, context); ++ if (isArray) { ++ NativeMapped[] nativeArg = (NativeMapped[]) arg; ++ /* Reassign arg here to a new array */ ++ arg = Array.newInstance(primitiveFromBoxed(converter.nativeType()), nativeArg.length); ++ for (int i = 0; i < nativeArg.length; i++) ++ Array.set(arg, i, converter.toNative(nativeArg[i], context)); ++ } else { ++ arg = converter.toNative(arg, context); ++ } + } + } + if (arg == null || isPrimitiveArray(arg.getClass())) { +Only in jna-3.0.4-svn729.orig/src/com/sun/jna: Function.java~ diff --git a/jna-stringarray-return.patch b/jna-stringarray-return.patch new file mode 100644 index 0000000..c806e79 --- /dev/null +++ b/jna-stringarray-return.patch @@ -0,0 +1,26 @@ +diff -ur jna-3.0.4-svn729/src/com/sun/jna/Function.java jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java +--- jna-3.0.4-svn729/src/com/sun/jna/Function.java 2008-10-14 19:47:44.000000000 -0400 ++++ jna-3.0.4-svn729.orig/src/com/sun/jna/Function.java 2008-10-14 19:48:00.000000000 -0400 +@@ -314,6 +314,20 @@ + String s = invokeString(callingConvention, args, true); + result = s != null ? new WString(s) : null; + } ++ else if (returnType == String[].class) { ++ Pointer tmp = invokePointer(callingConvention, args); ++ if (tmp != null) ++ result = tmp.getStringArray(0); ++ else ++ result = null; ++ } ++ else if (returnType == WString[].class) { ++ Pointer tmp = invokePointer(callingConvention, args); ++ if (tmp != null) ++ result = tmp.getStringArray(0, true); ++ else ++ result = null; ++ } + else if (Pointer.class.isAssignableFrom(returnType)) { + result = invokePointer(callingConvention, args); + } +Only in jna-3.0.4-svn729.orig/src/com/sun/jna: Function.java~ +Only in jna-3.0.4-svn729/src/com/sun/jna: Function.java.nativemapped-array diff --git a/jna-tests-headless.patch b/jna-tests-headless.patch new file mode 100644 index 0000000..994170b --- /dev/null +++ b/jna-tests-headless.patch @@ -0,0 +1,10 @@ +--- jna-3.0.4-svn700/build.xml 2008-10-01 12:57:20.000000000 -0400 ++++ jna-3.0.4-svn700.orig/build.xml 2008-10-01 12:57:16.000000000 -0400 +@@ -427,6 +427,7 @@ + + + ++ + + + diff --git a/jna.spec b/jna.spec new file mode 100644 index 0000000..38ed5d8 --- /dev/null +++ b/jna.spec @@ -0,0 +1,169 @@ +Name: jna +Version: 3.0.4 +Release: 10.svn729%{?dist} +Summary: Pure Java access to native libraries + +Group: Development/Libraries +License: LGPLv2+ +URL: https://jna.dev.java.net/ +# The source for this package was pulled from upstream's vcs. Use the +# following commands to generate the tarball: +# svn export https://jna.dev.java.net/svn/jna/tags/%{version}/jnalib/ --username guest jna-%{version} +# tar -cjf jna-%{version}.tar.bz2 jna-%{version} +Source0: %{name}-%{version}.svn729.tar.bz2 +# This patch is Fedora-specific for now until we get the huge +# JNI library location mess sorted upstream +Patch1: jna-3.0.2-loadlibrary.patch +# The X11 tests currently segfault; overall I think the X11 JNA stuff is just a +# Really Bad Idea, for relying on AWT internals, using the X11 API at all, +# and using a complex API like X11 through JNA just increases the potential +# for problems. +Patch2: jna-tests-headless.patch +# https://jna.dev.java.net/issues/show_bug.cgi?id=90 +Patch3: jna-3.0.4-nativemapped-array.patch +# https://jna.dev.java.net/issues/show_bug.cgi?id=XXX +Patch4: jna-stringarray-return.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +BuildRequires: java-devel >= 1.6 ant jpackage-utils ant-nodeps +BuildRequires: libX11-devel libXt-devel libffi-devel +# We manually require libffi because find-requires doesn't work +# inside jars. +Requires: java >= 1:1.6.0 jpackage-utils + +%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 javadoc +Summary: Javadocs for %{name} +Group: Documentation +Requires: %{name} = %{version}-%{release} + + +%description javadoc +This package contains the javadocs for %{name}. + + +%prep +%setup -q -n %{name}-%{version}-svn729 +sed -e 's|@JNIPATH@|%{_libdir}/%{name}|' %{PATCH1} | patch -p1 +%patch2 -p1 -b .tests-headless +%patch3 -p1 -b .nativemapped-array +%patch4 -p1 -b .stringarray-return + +# all java binaries must be removed from the sources +find . -name '*.jar' -exec rm -f '{}' \; +find . -name '*.class' -exec rm -f '{}' \; + +# remove internal copy of libffi +rm -rf native/libffi + +# remove random unused zips +rm dist/{src,doc}.zip + +# clean LICENSE.txt +sed -i 's/\r//' LICENSE.txt +chmod 0644 LICENSE.txt + + +%build +# We pass -Ddynlink.native which comes from our patch because +# upstream doesn't want to default to dynamic linking. +ant jar -Dcflags_extra.native="%{optflags}" -Ddynlink.native=true -Dnomixedjar.native=true +ant javadoc + + +%install +rm -rf %{buildroot} + +# jars +install -D -m 644 build*/%{name}.jar %{buildroot}%{_javadir}/%{name}-%{version}.jar +(cd %{buildroot}%{_javadir}/; for jar in `ls *-%{version}.jar`; do ln -s $jar `echo $jar | sed -e 's/-%{version}//'`; done) +# 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}/ + +# javadocs +install -p -d -m 755 %{buildroot}%{_javadocdir}/%{name}-%{version} +cp -a doc/javadoc/* %{buildroot}%{_javadocdir}/%{name}-%{version} + + +%clean +rm -rf %{buildroot} + + +%files +%defattr(-,root,root,-) +%doc LICENSE.txt +%{_libdir}/%{name} +%{_javadir}/*.jar + +%files javadoc +%defattr(-,root,root,-) +%{_javadocdir}/%{name}-%{version} + + +%changelog +* Tue Oct 14 2008 Colin Walters - 3.0.4-10.svn729 +- Add patch to support String[] returns + +* Wed Oct 01 2008 Colin Walters - 3.0.4-9.svn729 +- Add new patch to support NativeMapped[] which I want + +* Wed Oct 01 2008 Colin Walters - 3.0.4-8.svn729 +- Update to svn r729 +- drop upstreamed typemapper patch + +* Tue Sep 18 2008 Colin Walters - 3.0.4-7.svn700 +- Add patch to make typemapper always accessible +- Add patch to skip cracktastic X11 test bits which currently fail + +* Tue Sep 09 2008 Colin Walters - 3.0.4-5.svn700 +- Update to upstream SVN r700; drop all now upstreamed patches + +* Sat Sep 06 2008 Colin Walters - 3.0.4-3.svn630 +- A few more patches for JGIR + +* Thu Sep 04 2008 Colin Walters - 3.0.4-2.svn630 +- Add two (sent upstream) patches that I need for JGIR + +* Thu Jul 31 2008 Colin Walters - 3.0.4-1.svn630 +- New upstream version, drop upstreamed patch parts +- New patch jna-3.0.4-nomixedjar.patch which ensures that we don't + include the .so in the .jar + +* Fri Apr 04 2008 Colin Walters - 3.0.2-7 +- Add patch to use JPackage-compatible JNI library path +- Do build debuginfo package +- Refactor build patch greatly so it's hopefully upstreamable +- Install .so directly to JNI directory, rather than inside jar +- Clean up Requires/BuildRequires (thanks Mamoru Tasaka) + +* Sun Mar 30 2008 Conrad Meyer - 3.0.2-6 +- -javadocs should be -javadoc. +- %%files section cleaned a bit. + +* Mon Mar 17 2008 Conrad Meyer - 3.0.2-5 +- -javadocs package should be in group "Documentation". + +* Mon Mar 17 2008 Conrad Meyer - 3.0.2-4 +- License should be LGPLv2+, not GPLv2+. +- Several minor fixes. +- Fix Requires in javadoc package. + +* Sun Mar 16 2008 Conrad Meyer - 3.0.2-3 +- Don't use internal libffi. + +* Thu Mar 6 2008 Conrad Meyer - 3.0.2-2 +- Don't pull in jars from the web. + +* Mon Mar 3 2008 Conrad Meyer - 3.0.2-1 +- Initial package. diff --git a/sources b/sources index e69de29..5bf10cd 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +789cf82e63d0cbc11198d3b2015d3490 jna-3.0.4.svn729.tar.bz2