mirror of
https://github.com/xerial/snappy-java.git
synced 2025-04-08 19:35:08 +02:00
Build native library for Snappy 1.1.9 (#380)
* Fix dependency * Add checkout step * Remove tty option * Fix compiler prefixes * Fix arm compiler names * Reorder for debug * Fix * Update dockcross-arm-android * Remove system include * Fix strip path * Update native libraries --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
This commit is contained in:
parent
a794389cf2
commit
cecbb0d1e2
3
.github/workflows/build-native.yml
vendored
3
.github/workflows/build-native.yml
vendored
@ -8,6 +8,7 @@ jobs:
|
||||
name: Build native libraries
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Build native libraries
|
||||
run: make clean-native native-all
|
||||
env:
|
||||
@ -20,7 +21,7 @@ jobs:
|
||||
push:
|
||||
name: Push new native libraries to branch
|
||||
runs-on: ubuntu-latest
|
||||
needs: [check, build]
|
||||
needs: [build]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Download native libraries
|
||||
|
18
Makefile
18
Makefile
@ -146,7 +146,7 @@ native: jni-header snappy-header $(NATIVE_DLL)
|
||||
native-nocmake: jni-header $(NATIVE_DLL)
|
||||
snappy: native $(TARGET)/$(snappy-jar-version).jar
|
||||
|
||||
native-all: native mac64 win32 win64 native-arm linux32 linux64 linux-ppc64le
|
||||
native-all: native native-arm mac64 win32 win64 linux32 linux64 linux-ppc64le
|
||||
|
||||
$(NATIVE_DLL): $(SNAPPY_OUT)/$(LIBNAME)
|
||||
@mkdir -p $(@D)
|
||||
@ -175,25 +175,25 @@ mac32: jni-header
|
||||
$(MAKE) native OS_NAME=Mac OS_ARCH=x86
|
||||
|
||||
mac64: jni-header
|
||||
docker run -it $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=x86_64-apple-darwin multiarch/crossbuild make clean-native native OS_NAME=Mac OS_ARCH=x86_64
|
||||
docker run -i $(DOCKER_RUN_OPTS) -v $$PWD:/workdir -e CROSS_TRIPLE=x86_64-apple-darwin multiarch/crossbuild make clean-native native OS_NAME=Mac OS_ARCH=x86_64
|
||||
|
||||
linux32: jni-header
|
||||
docker run $(DOCKER_RUN_OPTS) -ti -v $$PWD:/work xerial/centos5-linux-x86_64-pic bash -c 'make clean-native native-nocmake OS_NAME=Linux OS_ARCH=x86'
|
||||
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'
|
||||
|
||||
linux64: jni-header
|
||||
docker run $(DOCKER_RUN_OPTS) -ti -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'
|
||||
|
||||
freebsd64:
|
||||
$(MAKE) native OS_NAME=FreeBSD OS_ARCH=x86_64
|
||||
|
||||
# For ARM
|
||||
native-arm: linux-arm linux-armv6 linux-armv7 linux-android-arm linux-arm64
|
||||
native-arm: linux-arm64 linux-android-arm linux-arm linux-armv6 linux-armv7
|
||||
|
||||
linux-arm: jni-header
|
||||
./docker/dockcross-armv5 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=/usr/xcc/armv5-unknown-linux-gnueabi/bin//armv5-unknown-linux-gnueabi- OS_NAME=Linux OS_ARCH=arm'
|
||||
|
||||
linux-armv6: jni-header
|
||||
./docker/dockcross-armv6 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=arm-linux-gnueabihf- OS_NAME=Linux OS_ARCH=armv6'
|
||||
./docker/dockcross-armv6 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=armv6-unknown-linux-gnueabihf- OS_NAME=Linux OS_ARCH=armv6'
|
||||
|
||||
linux-armv7: jni-header
|
||||
./docker/dockcross-armv7 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=/usr/xcc/armv7-unknown-linux-gnueabi/bin/armv7-unknown-linux-gnueabi- OS_NAME=Linux OS_ARCH=armv7'
|
||||
@ -202,13 +202,13 @@ linux-android-arm: jni-header
|
||||
./docker/dockcross-android-arm -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=/usr/arm-linux-androideabi/bin/arm-linux-androideabi- OS_NAME=Linux OS_ARCH=android-arm'
|
||||
|
||||
linux-ppc64le: jni-header
|
||||
./docker/dockcross-ppc64le -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=powerpc64le-linux-gnu- OS_NAME=Linux OS_ARCH=ppc64le'
|
||||
./docker/dockcross-ppc64le -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=powerpc64le-unknown-linux-gnu- OS_NAME=Linux OS_ARCH=ppc64le'
|
||||
|
||||
linux-ppc64: jni-header
|
||||
./docker/dockcross-ppc64 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=powerpc64-linux-gnu- OS_NAME=Linux OS_ARCH=ppc64'
|
||||
./docker/dockcross-ppc64 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=powerpc64-unknown-linux-gnu- OS_NAME=Linux OS_ARCH=ppc64'
|
||||
|
||||
linux-arm64: jni-header
|
||||
./docker/dockcross-arm64 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=/usr/xcc/aarch64-unknown-linux-gnueabi/bin/aarch64-unknown-linux-gnueabi- OS_NAME=Linux OS_ARCH=aarch64'
|
||||
./docker/dockcross-arm64 -a $(DOCKER_RUN_OPTS) bash -c 'make clean-native native CROSS_PREFIX=aarch64-unknown-linux-gnu- OS_NAME=Linux OS_ARCH=aarch64'
|
||||
|
||||
javadoc:
|
||||
$(SBT) doc
|
||||
|
@ -228,8 +228,8 @@ Linux-armv7_LIBNAME := libsnappyjava.so
|
||||
Linux-armv7_SNAPPY_FLAGS:=
|
||||
|
||||
Linux-android-arm_CXX := $(CROSS_PREFIX)g++
|
||||
Linux-android-arm_STRIP := $(CROSS_PREFIX)strip
|
||||
Linux-android-arm_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -isystem /usr/arm-linux-androideabi/include/c++/4.9.x -std=c++11
|
||||
Linux-android-arm_STRIP := $(CROSS_ROOT)/bin/llvm-strip
|
||||
Linux-android-arm_CXXFLAGS := -Ilib/inc_linux -I$(JAVA_HOME)/include -O2 -fPIC -fvisibility=hidden -std=c++11
|
||||
Linux-android-arm_LINKFLAGS := -shared -static-libgcc
|
||||
Linux-android-arm_LIBNAME := libsnappyjava.so
|
||||
Linux-android-arm_SNAPPY_FLAGS:=
|
||||
|
@ -1,16 +1,16 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm
|
||||
DEFAULT_DOCKCROSS_IMAGE=dockcross/android-arm:20230116-670f7f7
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Helpers
|
||||
#
|
||||
err() {
|
||||
echo -e >&2 ERROR: $@\\n
|
||||
echo -e >&2 "ERROR: $*\n"
|
||||
}
|
||||
|
||||
die() {
|
||||
err $@
|
||||
err "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@ -22,28 +22,39 @@ has() {
|
||||
type -t $kind:$name | grep -q function
|
||||
}
|
||||
|
||||
# If OCI_EXE is not already set, search for a container executor (OCI stands for "Open Container Initiative")
|
||||
if [ -z "$OCI_EXE" ]; then
|
||||
if which podman >/dev/null 2>/dev/null; then
|
||||
OCI_EXE=podman
|
||||
elif which docker >/dev/null 2>/dev/null; then
|
||||
OCI_EXE=docker
|
||||
else
|
||||
die "Cannot find a container executor. Search for docker and podman."
|
||||
fi
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Command handlers
|
||||
#
|
||||
command:update-image() {
|
||||
docker pull $FINAL_IMAGE
|
||||
$OCI_EXE pull $FINAL_IMAGE
|
||||
}
|
||||
|
||||
help:update-image() {
|
||||
echo Pull the latest $FINAL_IMAGE .
|
||||
echo "Pull the latest $FINAL_IMAGE ."
|
||||
}
|
||||
|
||||
command:update-script() {
|
||||
if cmp -s <( docker run $FINAL_IMAGE ) $0; then
|
||||
echo $0 is up to date
|
||||
if cmp -s <( $OCI_EXE run --rm $FINAL_IMAGE ) $0; then
|
||||
echo "$0 is up to date"
|
||||
else
|
||||
echo -n Updating $0 '... '
|
||||
docker run $FINAL_IMAGE > $0 && echo ok
|
||||
echo -n "Updating $0 ... "
|
||||
$OCI_EXE run --rm $FINAL_IMAGE > $0 && echo ok
|
||||
fi
|
||||
}
|
||||
|
||||
help:update-image() {
|
||||
echo Update $0 from $FINAL_IMAGE .
|
||||
help:update-script() {
|
||||
echo "Update $0 from $FINAL_IMAGE ."
|
||||
}
|
||||
|
||||
command:update() {
|
||||
@ -52,7 +63,7 @@ command:update() {
|
||||
}
|
||||
|
||||
help:update() {
|
||||
echo Pull the latest $FINAL_IMAGE, and then update $0 from that.
|
||||
echo "Pull the latest $FINAL_IMAGE, and then update $0 from that."
|
||||
}
|
||||
|
||||
command:help() {
|
||||
@ -98,6 +109,7 @@ while [[ $# != 0 ]]; do
|
||||
case $1 in
|
||||
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
|
||||
@ -171,29 +183,96 @@ fi
|
||||
# Set the docker run extra args (if any)
|
||||
FINAL_ARGS=${ARG_ARGS-${DOCKCROSS_ARGS}}
|
||||
|
||||
# If we are not running via boot2docker
|
||||
if [ -z $DOCKER_HOST ]; then
|
||||
USER_IDS="-e BUILDER_UID=$( id -u ) -e BUILDER_GID=$( id -g ) -e BUILDER_USER=$( id -un ) -e BUILDER_GROUP=$( id -gn )"
|
||||
# Bash on Ubuntu on Windows
|
||||
UBUNTU_ON_WINDOWS=$([ -e /proc/version ] && grep -l Microsoft /proc/version || echo "")
|
||||
# MSYS, Git Bash, etc.
|
||||
MSYS=$([ -e /proc/version ] && grep -l MINGW /proc/version || echo "")
|
||||
# CYGWIN
|
||||
CYGWIN=$([ -e /proc/version ] && grep -l CYGWIN /proc/version || echo "")
|
||||
|
||||
if [ -z "$UBUNTU_ON_WINDOWS" -a -z "$MSYS" -a "$OCI_EXE" != "podman" ]; then
|
||||
USER_IDS=(-e BUILDER_UID="$( id -u )" -e BUILDER_GID="$( id -g )" -e BUILDER_USER="$( id -un )" -e BUILDER_GROUP="$( id -gn )")
|
||||
fi
|
||||
|
||||
# Change the PWD when working in Docker on Windows
|
||||
if [ -n "$UBUNTU_ON_WINDOWS" ]; then
|
||||
WSL_ROOT="/mnt/"
|
||||
CFG_FILE=/etc/wsl.conf
|
||||
if [ -f "$CFG_FILE" ]; then
|
||||
CFG_CONTENT=$(cat $CFG_FILE | sed -r '/[^=]+=[^=]+/!d' | sed -r 's/\s+=\s/=/g')
|
||||
eval "$CFG_CONTENT"
|
||||
if [ -n "$root" ]; then
|
||||
WSL_ROOT=$root
|
||||
fi
|
||||
fi
|
||||
HOST_PWD=`pwd -P`
|
||||
HOST_PWD=${HOST_PWD/$WSL_ROOT//}
|
||||
elif [ -n "$MSYS" ]; then
|
||||
HOST_PWD=$PWD
|
||||
HOST_PWD=${HOST_PWD/\//}
|
||||
HOST_PWD=${HOST_PWD/\//:\/}
|
||||
elif [ -n "$CYGWIN" ]; then
|
||||
for f in pwd readlink cygpath ; do
|
||||
test -n "$(type "${f}" )" || { echo >&2 "Missing functionality (${f}) (in cygwin)." ; exit 1 ; } ;
|
||||
done ;
|
||||
HOST_PWD="$( cygpath -w "$( readlink -f "$( pwd ;)" ; )" ; )" ;
|
||||
else
|
||||
HOST_PWD=$PWD
|
||||
[ -L $HOST_PWD ] && HOST_PWD=$(readlink $HOST_PWD)
|
||||
fi
|
||||
|
||||
# Mount Additional Volumes
|
||||
if [ -z "$SSH_DIR" ]; then
|
||||
SSH_DIR="$HOME/.ssh"
|
||||
fi
|
||||
|
||||
HOST_VOLUMES=
|
||||
if [ -e "$SSH_DIR" -a -z "$MSYS" ]; then
|
||||
if test -n "${CYGWIN}" ; then
|
||||
HOST_VOLUMES+="-v $(cygpath -w ${SSH_DIR} ; ):/home/$(id -un)/.ssh" ;
|
||||
else
|
||||
HOST_VOLUMES+="-v $SSH_DIR:/home/$(id -un)/.ssh" ;
|
||||
fi ;
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Now, finally, run the command in a container
|
||||
#
|
||||
docker run --rm \
|
||||
-v $PWD:/work \
|
||||
$USER_IDS \
|
||||
TTY_ARGS=
|
||||
tty -s && [ -z "$MSYS" ] && TTY_ARGS=-ti
|
||||
CONTAINER_NAME=dockcross_$RANDOM
|
||||
$OCI_EXE run $TTY_ARGS --name $CONTAINER_NAME \
|
||||
--platform linux/amd64 \
|
||||
-v "$HOST_PWD":/work \
|
||||
$HOST_VOLUMES \
|
||||
"${USER_IDS[@]}" \
|
||||
$FINAL_ARGS \
|
||||
$FINAL_IMAGE "$@"
|
||||
run_exit_code=$?
|
||||
|
||||
# Attempt to delete container
|
||||
rm_output=$($OCI_EXE rm -f $CONTAINER_NAME 2>&1)
|
||||
rm_exit_code=$?
|
||||
if [[ $rm_exit_code != 0 ]]; then
|
||||
if [[ "$CIRCLECI" == "true" ]] && [[ $rm_output == *"Driver btrfs failed to remove"* ]]; then
|
||||
: # Ignore error because of https://circleci.com/docs/docker-btrfs-error/
|
||||
else
|
||||
echo "$rm_output"
|
||||
exit $rm_exit_code
|
||||
fi
|
||||
fi
|
||||
|
||||
exit $run_exit_code
|
||||
|
||||
################################################################################
|
||||
#
|
||||
# This image is not intended to be run manually.
|
||||
#
|
||||
# To create a dockcross helper script for the
|
||||
# dockcross/linux-armv7 image, run:
|
||||
# dockcross/android-arm:20230116-670f7f7 image, run:
|
||||
#
|
||||
# docker run --rm dockcross/linux-armv7 > dockcross-linux-armv7
|
||||
# chmod +x dockcross-linux-armv7
|
||||
# docker run --rm dockcross/android-arm:20230116-670f7f7 > dockcross-android-arm-20230116-670f7f7
|
||||
# chmod +x dockcross-android-arm-20230116-670f7f7
|
||||
#
|
||||
# You may then wish to move the dockcross script to your PATH.
|
||||
#
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user