diff --git a/Makefile b/Makefile index a213c07..8cdc9e5 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,7 @@ native: jni-header snappy-header $(NATIVE_DLL) native-nocmake: jni-header $(NATIVE_DLL) 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 alpine-image alpine +native-all: native native-arm clean-docker mac64 win32 win64 linux32 linux64 linux-ppc64le linux-riscv64 linux-s390x musl-image musl ifdef CI # Clean docker images within CI to avoid no space left error @@ -199,11 +199,11 @@ linux32: 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' -alpine-image: - docker build -f docker/Dockerfile.linux-x86_64-alpine -t snappy-java-alpine . +musl-image: + docker build -f docker/Dockerfile.linux-x86_64-musl -t snappy-java-musl . -alpine: jni-header - docker run $(DOCKER_RUN_OPTS) -i -v $$PWD:/work snappy-java-alpine bash -c 'make clean-native native-nocmake OS_NAME=Linux OS_ARCH=x86_64-alpine' +musl: jni-header + docker run $(DOCKER_RUN_OPTS) -i -v $$PWD:/work snappy-java-musl bash -c 'make clean-native native-nocmake OS_NAME=Linux OS_ARCH=x86_64-musl' freebsd64: $(MAKE) native OS_NAME=FreeBSD OS_ARCH=x86_64 diff --git a/Makefile.common b/Makefile.common index b95d445..6c2ac3c 100755 --- a/Makefile.common +++ b/Makefile.common @@ -50,7 +50,7 @@ endif # os=Default is meant to be generic unix/linux # To support new CPU architecture, add a new target name here -known_os_archs := Linux-x86_64-alpine Linux-x86 Linux-x86_64 Linux-arm Linux-armv6 Linux-armv7 Linux-android-arm Linux-android-aarch64 Linux-aarch64 Linux-ppc Linux-ppc64 Linux-ppc64le Linux-s390 Linux-s390x Mac-x86 Mac-x86_64 Mac-aarch64 FreeBSD-x86_64 Windows-x86 Windows-x86_64 Windows-aarch64 SunOS-x86 SunOS-sparc SunOS-x86_64 AIX-ppc AIX-ppc64 Linux-riscv Linux-riscv64 Linux-loongarch Linux-loongarch64 +known_os_archs := Linux-x86_64-musl Linux-x86 Linux-x86_64 Linux-arm Linux-armv6 Linux-armv7 Linux-android-arm Linux-android-aarch64 Linux-aarch64 Linux-ppc Linux-ppc64 Linux-ppc64le Linux-s390 Linux-s390x Mac-x86 Mac-x86_64 Mac-aarch64 FreeBSD-x86_64 Windows-x86 Windows-x86_64 Windows-aarch64 SunOS-x86 SunOS-sparc SunOS-x86_64 AIX-ppc AIX-ppc64 Linux-riscv Linux-riscv64 Linux-loongarch Linux-loongarch64 os_arch := $(OS_NAME)-$(OS_ARCH) IBM_JDK_7 := $(findstring IBM, $(shell $(JAVA) -version 2>&1 | grep IBM | grep "JRE 1.7")) @@ -102,16 +102,16 @@ Linux-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++ Linux-x86_64_LIBNAME := libsnappyjava.so Linux-x86_64_SNAPPY_FLAGS := -Linux-x86_64-alpine_CXX := $(CROSS_PREFIX)g++ -Linux-x86_64-alpine_STRIP := $(CROSS_PREFIX)strip +Linux-x86_64-musl_CXX := $(CROSS_PREFIX)g++ +Linux-x86_64-musl_STRIP := $(CROSS_PREFIX)strip ifeq ($(IBM_JDK_7),) - Linux-x86_64-alpine_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11 + Linux-x86_64-musl_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -m64 -std=c++11 else - Linux-x86_64-alpine_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 + 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 endif -Linux-x86_64-alpine_LINKFLAGS := -shared -static-libgcc -static-libstdc++ -Linux-x86_64-alpine_LIBNAME := libsnappyjava.so -Linux-x86_64-alpine_SNAPPY_FLAGS := +Linux-x86_64-musl_LINKFLAGS := -shared -static-libgcc -static-libstdc++ +Linux-x86_64-musl_LIBNAME := libsnappyjava.so +Linux-x86_64-musl_SNAPPY_FLAGS := Linux-ppc_CXX := g++ Linux-ppc_STRIP := strip diff --git a/build.sbt b/build.sbt index 6721357..76549d3 100644 --- a/build.sbt +++ b/build.sbt @@ -111,7 +111,7 @@ OsgiKeys.additionalHeaders := Map( "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/loongarch64/libsnappyjava.so;osname=linux;processor=loongarch64", - "org/xerial/snappy/native/Linux/x86_64-alpine/libsnappyjava.so;osname=Linux;processor=x86-64-alpine", + "org/xerial/snappy/native/Linux/x86_64-musl/libsnappyjava.so;osname=Linux;processor=x86-64-musl", "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/SunOS/x86/libsnappyjava.so;osname=sunos;processor=x86", diff --git a/docker/Dockerfile.linux-x86_64-alpine b/docker/Dockerfile.linux-x86_64-musl similarity index 100% rename from docker/Dockerfile.linux-x86_64-alpine rename to docker/Dockerfile.linux-x86_64-musl diff --git a/src/main/java/org/xerial/snappy/OSInfo.java b/src/main/java/org/xerial/snappy/OSInfo.java index be4a747..863a496 100755 --- a/src/main/java/org/xerial/snappy/OSInfo.java +++ b/src/main/java/org/xerial/snappy/OSInfo.java @@ -25,6 +25,7 @@ package org.xerial.snappy; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; @@ -215,6 +216,10 @@ public class OSInfo { return "android-arm"; } + if (isMusl()) { + return "x86_64-musl"; + } + if(osArch.startsWith("arm")) { osArch = resolveArmArchType(); } @@ -226,6 +231,10 @@ public class OSInfo { return translateArchNameToFolderName(osArch); } + private static boolean isMusl() { + return new File("/lib/ld-musl-x86_64.so.1").exists(); + } + static String translateOSNameToFolderName(String osName) { if(osName.contains("Windows")) { return "Windows"; diff --git a/src/main/resources/org/xerial/snappy/native/Linux/x86_64-alpine/libsnappyjava.so b/src/main/resources/org/xerial/snappy/native/Linux/x86_64-musl/libsnappyjava.so similarity index 100% rename from src/main/resources/org/xerial/snappy/native/Linux/x86_64-alpine/libsnappyjava.so rename to src/main/resources/org/xerial/snappy/native/Linux/x86_64-musl/libsnappyjava.so