mirror of
https://github.com/xerial/snappy-java.git
synced 2025-07-26 23:44:10 +02:00
fix: dockerfile building
This commit is contained in:
parent
0dc3e64353
commit
38a20ffc19
16
BUILD.md
16
BUILD.md
@ -116,4 +116,20 @@ 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
|
||||||
|
This project now supports building with musl libc, which is commonly used in Alpine Linux. To build using musl:
|
||||||
|
|
||||||
|
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`
|
||||||
|
@ -1,16 +1,36 @@
|
|||||||
FROM alpine:3.18
|
FROM alpine:3.18
|
||||||
|
|
||||||
|
# Set workspace directory
|
||||||
|
WORKDIR /work
|
||||||
|
|
||||||
|
# Copy the project to the container
|
||||||
|
COPY . .
|
||||||
|
|
||||||
# Install build dependencies
|
# Install build dependencies
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
|
openjdk8 \
|
||||||
cmake \
|
cmake \
|
||||||
make \
|
make \
|
||||||
gcc \
|
gcc \
|
||||||
g++ \
|
g++ \
|
||||||
musl-dev \
|
musl-dev \
|
||||||
linux-headers
|
linux-headers \
|
||||||
|
git \
|
||||||
|
util-linux \
|
||||||
|
bash \
|
||||||
|
curl
|
||||||
|
|
||||||
# Set workspace directory
|
# Install SBT
|
||||||
WORKDIR /work
|
RUN curl -L "https://github.com/sbt/sbt/releases/download/v1.9.7/sbt-1.9.7.tgz" | tar xz -C /usr/local
|
||||||
|
ENV PATH="/usr/local/sbt/bin:${PATH}"
|
||||||
|
|
||||||
# Build the project
|
# Install python/pip
|
||||||
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
|
||||||
|
RUN python3 -m ensurepip
|
||||||
|
RUN pip3 install --no-cache --upgrade pip setuptools
|
||||||
|
|
||||||
|
# Set Env Vars
|
||||||
ENV CC=gcc CXX=g++ TARGET_OS=Linux-musl
|
ENV CC=gcc CXX=g++ TARGET_OS=Linux-musl
|
||||||
|
ENV JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
|
||||||
|
ENV PATH="${JAVA_HOME}/bin:${PATH}"
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
# Building with musl libc
|
|
||||||
|
|
||||||
This project now supports building with musl libc, which is commonly used in Alpine Linux. To build using musl:
|
|
||||||
|
|
||||||
1. Use the provided Alpine-based Dockerfile:
|
|
||||||
```bash
|
|
||||||
docker build -f docker/Dockerfile.alpine -t snappy-java-alpine .
|
|
||||||
```
|
|
||||||
|
|
||||||
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`
|
|
||||||
|
|
||||||
## Testing
|
|
||||||
To test the musl build:
|
|
||||||
```bash
|
|
||||||
docker run --rm snappy-java-alpine -cp target/snappy-java-*.jar org.xerial.snappy.SnappyLoader
|
|
||||||
```
|
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user