mirror of
https://github.com/xerial/snappy-java.git
synced 2025-07-26 15:34:08 +02:00
feat: adding alpine architecture
This commit is contained in:
parent
71b21bbfff
commit
b8f2bea00f
19
BUILD.md
19
BUILD.md
@ -116,20 +116,5 @@ If you are using Mac and openjdk7 (or higher), use the following option:
|
|||||||
|
|
||||||
$ make native LIBNAME=libsnappyjava.dylib
|
$ make native LIBNAME=libsnappyjava.dylib
|
||||||
|
|
||||||
## Building with musl libc
|
## Building with Alpine
|
||||||
This project now supports building with musl libc, which is commonly used in Alpine Linux. To build using musl:
|
This project now supports Alpine Image, which has the musl library.
|
||||||
|
|
||||||
1. Use the provided Alpine-based Dockerfile:
|
|
||||||
```bash
|
|
||||||
docker build -f docker/Dockerfile.alpine -t snappy-java-alpine .
|
|
||||||
docker run -it snappy-java-alpine sh
|
|
||||||
make
|
|
||||||
```
|
|
||||||
|
|
||||||
2. The build process will:
|
|
||||||
- Use musl libc instead of glibc
|
|
||||||
- Statically link required libraries
|
|
||||||
- Create a native library compatible with Alpine/musl systems
|
|
||||||
|
|
||||||
The resulting library will be placed in:
|
|
||||||
`src/main/resources/org/xerial/snappy/native/Linux-musl/x86_64/libsnappyjava.so`
|
|
||||||
|
8
Makefile
8
Makefile
@ -151,7 +151,7 @@ native: jni-header snappy-header $(NATIVE_DLL)
|
|||||||
native-nocmake: jni-header $(NATIVE_DLL)
|
native-nocmake: jni-header $(NATIVE_DLL)
|
||||||
snappy: native $(TARGET)/$(snappy-jar-version).jar
|
snappy: native $(TARGET)/$(snappy-jar-version).jar
|
||||||
|
|
||||||
native-all: native native-arm clean-docker mac64 win32 win64 linux32 linux64 linux-ppc64le linux-riscv64 linux-s390x
|
native-all: native native-arm clean-docker mac64 win32 win64 linux32 linux64 linux-ppc64le linux-riscv64 linux-s390x alpine-image alpine
|
||||||
|
|
||||||
ifdef CI
|
ifdef CI
|
||||||
# Clean docker images within CI to avoid no space left error
|
# Clean docker images within CI to avoid no space left error
|
||||||
@ -199,6 +199,12 @@ linux32: jni-header
|
|||||||
linux64: jni-header
|
linux64: jni-header
|
||||||
docker run $(DOCKER_RUN_OPTS) -i -v $$PWD:/work xerial/centos5-linux-x86_64-pic bash -c 'make clean-native native-nocmake OS_NAME=Linux OS_ARCH=x86_64'
|
docker run $(DOCKER_RUN_OPTS) -i -v $$PWD:/work xerial/centos5-linux-x86_64-pic bash -c 'make clean-native native-nocmake OS_NAME=Linux OS_ARCH=x86_64'
|
||||||
|
|
||||||
|
alpine-image:
|
||||||
|
docker build -f docker/Dockerfile.alpine -t snappy-java-alpine .
|
||||||
|
|
||||||
|
alpine: jni-header
|
||||||
|
docker run $(DOCKER_RUN_OPTS) -i -v $$PWD:/work snappy-java-alpine bash -c 'make clean-native native-nocmake OS_NAME=Alpine OS_ARCH=x86_64'
|
||||||
|
|
||||||
freebsd64:
|
freebsd64:
|
||||||
$(MAKE) native OS_NAME=FreeBSD OS_ARCH=x86_64
|
$(MAKE) native OS_NAME=FreeBSD OS_ARCH=x86_64
|
||||||
|
|
||||||
|
@ -108,16 +108,16 @@ Linux-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
|||||||
Linux-x86_64_LIBNAME := libsnappyjava.so
|
Linux-x86_64_LIBNAME := libsnappyjava.so
|
||||||
Linux-x86_64_SNAPPY_FLAGS :=
|
Linux-x86_64_SNAPPY_FLAGS :=
|
||||||
|
|
||||||
Linux-x86_64_musl_CXX := $(CROSS_PREFIX)g++
|
Alpine-x86_64_CXX := $(CROSS_PREFIX)g++
|
||||||
Linux-x86_64_musl_STRIP := $(CROSS_PREFIX)strip
|
Alpine-x86_64_STRIP := $(CROSS_PREFIX)strip
|
||||||
ifeq ($(IBM_JDK_7),)
|
ifeq ($(IBM_JDK_7),)
|
||||||
Linux-x86_64_musl_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11
|
Alpine-x86_64_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11
|
||||||
else
|
else
|
||||||
Linux-x86_64_musl_CXXFLAGS := -include $(IBM_JDK_LIB)/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11
|
Alpine-x86_64_CXXFLAGS := -include $(IBM_JDK_LIB)/jni_md.h -include $(IBM_JDK_LIB)/jniport.h -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11
|
||||||
endif
|
endif
|
||||||
Linux-x86_64_musl_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
Alpine-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++
|
||||||
Linux-x86_64_musl_LIBNAME := libsnappyjava.so
|
Alpine-x86_64_LIBNAME := libsnappyjava.so
|
||||||
Linux-x86_64_musl_SNAPPY_FLAGS :=
|
Alpine-x86_64_SNAPPY_FLAGS :=
|
||||||
|
|
||||||
Linux-ppc_CXX := g++
|
Linux-ppc_CXX := g++
|
||||||
Linux-ppc_STRIP := strip
|
Linux-ppc_STRIP := strip
|
||||||
|
@ -111,7 +111,7 @@ OsgiKeys.additionalHeaders := Map(
|
|||||||
"org/xerial/snappy/native/Linux/ppc64/libsnappyjava.so;osname=linux;processor=ppc64le",
|
"org/xerial/snappy/native/Linux/ppc64/libsnappyjava.so;osname=linux;processor=ppc64le",
|
||||||
"org/xerial/snappy/native/Linux/s390x/libsnappyjava.so;osname=linux;processor=s390x",
|
"org/xerial/snappy/native/Linux/s390x/libsnappyjava.so;osname=linux;processor=s390x",
|
||||||
"org/xerial/snappy/native/Linux/loongarch64/libsnappyjava.so;osname=linux;processor=loongarch64",
|
"org/xerial/snappy/native/Linux/loongarch64/libsnappyjava.so;osname=linux;processor=loongarch64",
|
||||||
"org/xerial/snappy/native/Linux/x86_64_musl/libsnappyjava.so;osname=linux;processor=x86-64",
|
"org/xerial/snappy/native/Alpine/x86_64/libsnappyjava.so;osname=alpine;processor=x86-64",
|
||||||
"org/xerial/snappy/native/AIX/ppc/libsnappyjava.a;osname=aix;processor=ppc",
|
"org/xerial/snappy/native/AIX/ppc/libsnappyjava.a;osname=aix;processor=ppc",
|
||||||
"org/xerial/snappy/native/AIX/ppc64/libsnappyjava.a;osname=aix;processor=ppc64",
|
"org/xerial/snappy/native/AIX/ppc64/libsnappyjava.a;osname=aix;processor=ppc64",
|
||||||
"org/xerial/snappy/native/SunOS/x86/libsnappyjava.so;osname=sunos;processor=x86",
|
"org/xerial/snappy/native/SunOS/x86/libsnappyjava.so;osname=sunos;processor=x86",
|
||||||
|
@ -31,6 +31,6 @@ RUN python3 -m ensurepip
|
|||||||
RUN pip3 install --no-cache --upgrade pip setuptools
|
RUN pip3 install --no-cache --upgrade pip setuptools
|
||||||
|
|
||||||
# Set Env Vars
|
# Set Env Vars
|
||||||
ENV CC=gcc CXX=g++ TARGET_OS=LinuxMUSL
|
ENV CC=gcc CXX=g++
|
||||||
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
|
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
|
||||||
ENV PATH="${JAVA_HOME}/bin:${PATH}"
|
ENV PATH="${JAVA_HOME}/bin:${PATH}"
|
@ -1,20 +0,0 @@
|
|||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 1)
|
|
||||||
|
|
||||||
# Specify the cross compilers
|
|
||||||
set(CMAKE_C_COMPILER gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER g++)
|
|
||||||
|
|
||||||
# Set target environment path
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr)
|
|
||||||
|
|
||||||
# Search for programs in the host environment
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
# Search for libraries and headers in the target environment
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
|
|
||||||
# Set compiler flags for musl
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static")
|
|
BIN
src/main/resources/org/xerial/snappy/native/Alpine/x86_64/libsnappyjava.so
Executable file
BIN
src/main/resources/org/xerial/snappy/native/Alpine/x86_64/libsnappyjava.so
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user