Package init
This commit is contained in:
parent
7b5b976e28
commit
a353b6ca0d
36
0001-Load-lib-from-system.patch
Normal file
36
0001-Load-lib-from-system.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From eaa1c5968d3953ea59b01cc2620da0a9eabb17d4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Simacek <msimacek@redhat.com>
|
||||||
|
Date: Wed, 20 Sep 2017 16:12:27 +0300
|
||||||
|
Subject: [PATCH 1/2] Load lib from system
|
||||||
|
|
||||||
|
Try to load native library from /usr/lib*/native-platform
|
||||||
|
instead of extractDir or classpath.
|
||||||
|
---
|
||||||
|
.../platform/internal/NativeLibraryLocator.java | 11 +++++++++++
|
||||||
|
1 file changed, 11 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/rubygrapefruit/platform/internal/NativeLibraryLocator.java b/src/main/java/net/rubygrapefruit/platform/internal/NativeLibraryLocator.java
|
||||||
|
index d08a40d..332187a 100755
|
||||||
|
--- a/src/main/java/net/rubygrapefruit/platform/internal/NativeLibraryLocator.java
|
||||||
|
+++ b/src/main/java/net/rubygrapefruit/platform/internal/NativeLibraryLocator.java
|
||||||
|
@@ -32,6 +32,17 @@ public class NativeLibraryLocator {
|
||||||
|
|
||||||
|
public File find(LibraryDef libraryDef) throws IOException {
|
||||||
|
String resourceName = String.format("net/rubygrapefruit/platform/%s/%s", libraryDef.platform, libraryDef.name);
|
||||||
|
+ String bits = "";
|
||||||
|
+
|
||||||
|
+ if (System.getProperty("os.arch").contains("64")) {
|
||||||
|
+ bits = "64";
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ File usrLibFile = new File("/usr/lib" + bits + "/native-platform/" + libraryDef.name);
|
||||||
|
+ if (usrLibFile.isFile()) {
|
||||||
|
+ return usrLibFile;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (extractDir != null) {
|
||||||
|
File libFile = new File(extractDir, String.format("%s/%s/%s", NativeLibraryFunctions.VERSION, libraryDef.platform, libraryDef.name));
|
||||||
|
File lockFile = new File(libFile.getParentFile(), libFile.getName() + ".lock");
|
||||||
|
--
|
||||||
|
2.13.5
|
||||||
|
|
||||||
50
0002-Use-library-name-without-arch.patch
Normal file
50
0002-Use-library-name-without-arch.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From c022c0a3318dd2d0471440ca73ff35ee75f69169 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Simacek <msimacek@redhat.com>
|
||||||
|
Date: Wed, 20 Sep 2017 17:51:37 +0300
|
||||||
|
Subject: [PATCH 2/2] Use library name without arch
|
||||||
|
|
||||||
|
---
|
||||||
|
.../java/net/rubygrapefruit/platform/internal/Platform.java | 13 +++++++------
|
||||||
|
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/rubygrapefruit/platform/internal/Platform.java b/src/main/java/net/rubygrapefruit/platform/internal/Platform.java
|
||||||
|
index 3cb3f63..7120a9f 100755
|
||||||
|
--- a/src/main/java/net/rubygrapefruit/platform/internal/Platform.java
|
||||||
|
+++ b/src/main/java/net/rubygrapefruit/platform/internal/Platform.java
|
||||||
|
@@ -40,11 +40,7 @@ public abstract class Platform {
|
||||||
|
platform = new Window64Bit();
|
||||||
|
}
|
||||||
|
} else if (osName.contains("linux")) {
|
||||||
|
- if (arch.equals("amd64") || arch.equals("x86_64")) {
|
||||||
|
- platform = new Linux64Bit();
|
||||||
|
- } else if (arch.equals("i386") || arch.equals("x86")) {
|
||||||
|
- platform = new Linux32Bit();
|
||||||
|
- }
|
||||||
|
+ platform = new Linux();
|
||||||
|
} else if (osName.contains("os x") || osName.contains("darwin")) {
|
||||||
|
if (arch.equals("i386")) {
|
||||||
|
platform = new MacOs32Bit();
|
||||||
|
@@ -240,7 +236,7 @@ public abstract class Platform {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- private abstract static class Linux extends Unix {
|
||||||
|
+ private static class Linux extends Unix {
|
||||||
|
@Override
|
||||||
|
public <T extends NativeIntegration> T get(Class<T> type, NativeLibraryLoader nativeLibraryLoader) {
|
||||||
|
return super.get(type, nativeLibraryLoader);
|
||||||
|
@@ -255,6 +251,11 @@ public abstract class Platform {
|
||||||
|
public boolean isLinux() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getId() {
|
||||||
|
+ return "linux";
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class Linux32Bit extends Linux {
|
||||||
|
--
|
||||||
|
2.13.5
|
||||||
|
|
||||||
36
README.en.md
36
README.en.md
@ -1,36 +0,0 @@
|
|||||||
# native-platform
|
|
||||||
|
|
||||||
#### Description
|
|
||||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
|
||||||
|
|
||||||
#### Software Architecture
|
|
||||||
Software architecture description
|
|
||||||
|
|
||||||
#### Installation
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Instructions
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### Contribution
|
|
||||||
|
|
||||||
1. Fork the repository
|
|
||||||
2. Create Feat_xxx branch
|
|
||||||
3. Commit your code
|
|
||||||
4. Create Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### Gitee Feature
|
|
||||||
|
|
||||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
|
||||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
|
||||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
|
||||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
39
README.md
39
README.md
@ -1,39 +0,0 @@
|
|||||||
# native-platform
|
|
||||||
|
|
||||||
#### 介绍
|
|
||||||
{**以下是码云平台说明,您可以替换此简介**
|
|
||||||
码云是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
|
|
||||||
无论是个人、团队、或是企业,都能够用码云实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
|
|
||||||
|
|
||||||
#### 软件架构
|
|
||||||
软件架构说明
|
|
||||||
|
|
||||||
|
|
||||||
#### 安装教程
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 使用说明
|
|
||||||
|
|
||||||
1. xxxx
|
|
||||||
2. xxxx
|
|
||||||
3. xxxx
|
|
||||||
|
|
||||||
#### 参与贡献
|
|
||||||
|
|
||||||
1. Fork 本仓库
|
|
||||||
2. 新建 Feat_xxx 分支
|
|
||||||
3. 提交代码
|
|
||||||
4. 新建 Pull Request
|
|
||||||
|
|
||||||
|
|
||||||
#### 码云特技
|
|
||||||
|
|
||||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
|
||||||
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
|
|
||||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
|
|
||||||
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
|
|
||||||
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
|
||||||
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
|
||||||
BIN
native-platform-0.14.tar.gz
Normal file
BIN
native-platform-0.14.tar.gz
Normal file
Binary file not shown.
87
native-platform-0.7-Makefile
Normal file
87
native-platform-0.7-Makefile
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
# Description: Use make as buildsystem instead of Gradle to
|
||||||
|
# avoid a circular dependencies between gradle and native-platform.
|
||||||
|
# This is very minimalistic Makefile so it will only work for
|
||||||
|
# Debian use case for now.
|
||||||
|
# Author: Damien Raude-Morvan <drazzib@debian.org>
|
||||||
|
# Adapted for Fedora by: gil cattaneo <puntogil@libero.it>
|
||||||
|
CXX=g++
|
||||||
|
STRIP=strip
|
||||||
|
# which is the best solution?
|
||||||
|
JOPT_JAR=$(shell build-classpath jopt-simple)
|
||||||
|
#JOPT_JAR=$(shell locate jopt-simple.jar)
|
||||||
|
IDIR=src/shared/headers
|
||||||
|
SRCDIR=src/main/cpp
|
||||||
|
#SRCSHAREDIR=src/shared/cpp
|
||||||
|
#SRCCURSESDIR=src/curses/cpp
|
||||||
|
JSRCDIR=src/main/java
|
||||||
|
BUILD=build
|
||||||
|
IGEN=$(BUILD)/headers
|
||||||
|
JCLASSESDIR=$(BUILD)/classes
|
||||||
|
JDOCDIR=$(BUILD)/docs/javadoc
|
||||||
|
ODIR=$(BUILD)/binaries
|
||||||
|
JAR=$(BUILD)/native-platform.jar
|
||||||
|
known_os_archs :=
|
||||||
|
JAR_ARCH=$(BUILD)/native-platform-linux.jar
|
||||||
|
|
||||||
|
JTARGET=1.5
|
||||||
|
JSOURCE=1.5
|
||||||
|
|
||||||
|
INCLUDE=-I$(IDIR) -I$(IGEN) -I/usr/include -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
|
||||||
|
#LDLIBS=-lncurses
|
||||||
|
|
||||||
|
_OBJ_STD = generic.o generic_posix.o linux.o osx.o posix.o win.o unix_strings.o
|
||||||
|
_OBJ_CURSES = generic.o generic_posix.o curses.o unix_strings.o
|
||||||
|
OBJ_STD = $(patsubst %,$(ODIR)/%,$(_OBJ_STD))
|
||||||
|
OBJ_CURSES = $(patsubst %,$(ODIR)/%,$(_OBJ_CURSES))
|
||||||
|
_JAVA = $(shell find $(JSRCDIR) -name "*.java" -print)
|
||||||
|
|
||||||
|
.PHONY: clean jar javadoc
|
||||||
|
|
||||||
|
build: $(ODIR)/libnative-platform.so $(ODIR)/libnative-platform-curses.so jar javadoc arch-jar
|
||||||
|
|
||||||
|
$(ODIR)/libnative-platform.so: $(OBJ_STD)
|
||||||
|
$(CXX) -shared -fPIC $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $^
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
|
$(ODIR)/libnative-platform-curses.so: $(OBJ_CURSES)
|
||||||
|
$(CXX) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -lcurses -shared -fPIC -o $@ $^
|
||||||
|
$(STRIP) $@
|
||||||
|
|
||||||
|
$(JCLASSESDIR)/%.class: javafiles-list
|
||||||
|
mkdir -p $(JCLASSESDIR)
|
||||||
|
$(JAVA_HOME)/bin/javac -source $(JTARGET) -target $(JSOURCE) -d $(JCLASSESDIR) -classpath $(JOPT_JAR) @javafiles-list
|
||||||
|
|
||||||
|
javafiles-list: $(_JAVA)
|
||||||
|
echo $^ > javafiles-list
|
||||||
|
|
||||||
|
javadoc: javafiles-list
|
||||||
|
mkdir -p $(JDOCDIR)
|
||||||
|
$(JAVA_HOME)/bin/javadoc -d $(JDOCDIR) -classpath $(JOPT_JAR) @javafiles-list
|
||||||
|
|
||||||
|
jar: $(JCLASSESDIR)/%.class
|
||||||
|
mkdir -p $(JDOCDIR)
|
||||||
|
(cd $(JCLASSESDIR) ; $(JAVA_HOME)/bin/jar cf ../../$(JAR) .)
|
||||||
|
|
||||||
|
arch-jar: $(ODIR)/libnative-platform.so $(ODIR)/libnative-platform-curses.so
|
||||||
|
(cd $(ODIR) ; $(JAVA_HOME)/bin/jar cf ../../$(JAR_ARCH) *.so)
|
||||||
|
|
||||||
|
$(ODIR)/%.o: $(SRCDIR)/%.cpp $(IGEN)/native.h
|
||||||
|
mkdir -p $(ODIR)
|
||||||
|
$(CXX) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(INCLUDE) -fPIC -c -o $@ $<
|
||||||
|
|
||||||
|
$(IGEN)/native.h: $(JCLASSESDIR)/%.class
|
||||||
|
mkdir -p $(IGEN)
|
||||||
|
$(JAVA_HOME)/bin/javah -o $(IGEN)/native.h -classpath $(JCLASSESDIR) \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.NativeLibraryFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.PosixFileFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.PosixFileSystemFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.PosixTerminalFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.TerminfoFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.WindowsConsoleFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.WindowsHandleFunctions \
|
||||||
|
net.rubygrapefruit.platform.internal.jni.WindowsRegistryFunctions
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm javafiles-list
|
||||||
|
-rm -Rf $(BUILD)
|
||||||
54
native-platform.spec
Normal file
54
native-platform.spec
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
%global debug_package %{nil}
|
||||||
|
|
||||||
|
Name: native-platform
|
||||||
|
Version: 0.14
|
||||||
|
Release: 15
|
||||||
|
Summary: Java bindings for various native APIs
|
||||||
|
License: ASL 2.0
|
||||||
|
URL: https://github.com/adammurdoch/native-platform
|
||||||
|
Source0: native-platform-%{version}.tar.gz
|
||||||
|
Source1: native-platform-0.7-Makefile
|
||||||
|
Patch0: 0001-Load-lib-from-system.patch
|
||||||
|
Patch1: 0002-Use-library-name-without-arch.patch
|
||||||
|
BuildRequires: gcc-c++ java-devel javapackages-local ncurses-devel jopt-simple
|
||||||
|
Obsoletes: native-platform-javadoc < %{version}-%{release}
|
||||||
|
Provides: native-platform-javadoc = %{version}-%{release}
|
||||||
|
|
||||||
|
%description
|
||||||
|
A collection of cross-platform Java APIs for various native APIs.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n native-platform-%{version} -p1
|
||||||
|
find . -name "*.jar" -delete
|
||||||
|
find . -name "*.class" -delete
|
||||||
|
cp -p %{SOURCE1} Makefile
|
||||||
|
chmod 644 readme.md
|
||||||
|
mv src/curses/cpp/*.cpp src/main/cpp
|
||||||
|
mv src/shared/cpp/* src/main/cpp
|
||||||
|
|
||||||
|
%build
|
||||||
|
CFLAGS="${CFLAGS:-%optflags}" ; export CFLAGS ;
|
||||||
|
CPPFLAGS="${CPPFLAGS:-%optflags}" ; export CPPFLAGS ;
|
||||||
|
CXXFLAGS="${CXXFLAGS:-%optflags}" ; export CXXFLAGS ;
|
||||||
|
LDFLAGS="${LDFLAGS:-%__global_ldflags}"; export LDFLAGS;
|
||||||
|
%{make_build} JAVA_HOME=%{_jvmdir}/java
|
||||||
|
%mvn_artifact net.rubygrapefruit:native-platform:%{version} build/native-platform.jar
|
||||||
|
%mvn_file : native-platform
|
||||||
|
|
||||||
|
%install
|
||||||
|
%mvn_install -J build/docs/javadoc
|
||||||
|
mkdir -p %{buildroot}%{_libdir}/native-platform
|
||||||
|
install -pm 0755 build/binaries/libnative-platform-curses.so %{buildroot}%{_libdir}/native-platform/
|
||||||
|
install -pm 0755 build/binaries/libnative-platform.so %{buildroot}%{_libdir}/native-platform/
|
||||||
|
|
||||||
|
%files
|
||||||
|
%attr(0644,root,root) %{_datadir}/maven-metadata/native-platform.xml
|
||||||
|
%attr(0644,root,root) /usr/lib/java/native-platform.jar
|
||||||
|
%{_libdir}/native-platform
|
||||||
|
%doc readme.md
|
||||||
|
%license LICENSE
|
||||||
|
%{_javadocdir}/%{name}
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Thu Dec 7 2019 openEuler Buildteam <buildteam@openeuler.org> - 0.14-15
|
||||||
|
- Package init
|
||||||
Loading…
x
Reference in New Issue
Block a user