0
0
mirror of https://github.com/signalapp/libsignal.git synced 2024-09-19 19:42:19 +02:00

build multiarch server jar from make targets by default

This commit is contained in:
Jonathan Klabunde Tomer 2024-07-31 10:07:54 -07:00 committed by GitHub
parent 08913fa09f
commit 3d1c45f15d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 26 additions and 12 deletions

View File

@ -70,7 +70,7 @@ ADD --chown=libsignal --chmod=755 --checksum=sha256:${RUSTUP_SHA} \
RUN /tmp/rustup-init -y --profile minimal --default-toolchain "$(cat rust-toolchain)" \
&& rm -rf /tmp/rustup-init
RUN rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
RUN rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android aarch64-unknown-linux-gnu
# Install the full set of tools now that the long setup steps are done.
# Note that we temporarily hop back to root to do this.
@ -80,6 +80,7 @@ USER root
RUN apt-get install -y \
clang \
cmake \
crossbuild-essential-arm64 \
git \
gpg-agent \
libclang-dev \

View File

@ -11,6 +11,7 @@ default: java_build
DOCKER_IMAGE := libsignal-builder
DOCKER_TTY_FLAG := $$(test -t 0 && echo -it)
CROSS_COMPILE_SERVER ?= -PcrossCompileServer
docker_image:
cd .. && $(DOCKER) build --build-arg UID=$$(id -u) --build-arg GID=$$(id -g) -t $(DOCKER_IMAGE) -f java/Dockerfile .
@ -20,7 +21,7 @@ java_build: docker_image
$(DOCKER) run $(DOCKER_TTY_FLAG) --init --rm --user $$(id -u):$$(id -g) \
--env LIBSIGNAL_TESTING_ENCLAVE_SECRET \
-v `cd .. && pwd`/:/home/libsignal/src $(DOCKER_EXTRA) $(DOCKER_IMAGE) \
sh -c "cd src/java; ./gradlew build"
sh -c "cd src/java; ./gradlew build $(CROSS_COMPILE_SERVER)"
publish_java: DOCKER_EXTRA = $(shell [ -L build ] && P=$$(readlink build) && echo -v $$P/:$$P )
publish_java: docker_image
@ -32,7 +33,7 @@ publish_java: docker_image
-e ORG_GRADLE_PROJECT_signingPassword \
-e ORG_GRADLE_PROJECT_signingKey \
$(DOCKER_IMAGE) \
sh -c "cd src/java; ./gradlew publish closeAndReleaseSonatypeStagingRepository"
sh -c "cd src/java; ./gradlew publish closeAndReleaseSonatypeStagingRepository $(CROSS_COMPILE_SERVER)"
# We could run these through Docker, but they would have the same result anyway.

View File

@ -60,7 +60,7 @@ task makeJniLibrariesServer(type:Exec) {
description 'Build the JNI libraries'
def debugLevelLogsFlag = hasProperty('debugLevelLogs') ? ['--debug-level-logs'] : []
def target = hasProperty('crossCompileServer') ? 'server-all' : 'server'
def target = project.hasProperty('crossCompileServer') ? 'server-all' : 'server'
commandLine 'bash', './build_jni.sh', *debugLevelLogsFlag, target
}
@ -75,7 +75,12 @@ task cleanJni(type: Delete) {
delete fileTree('./android/src/main/jniLibs') {
include '**/*.so'
}
delete fileTree('./shared/resources') {
delete fileTree('./client/src/main/resources') {
include '**/*.so'
include '**/*.dylib'
include '**/*.dll'
}
delete fileTree('./server/src/main/resources') {
include '**/*.so'
include '**/*.dylib'
include '**/*.dll'

View File

@ -13,7 +13,8 @@ cd "${SCRIPT_DIR}"/..
# These paths are relative to the root directory
ANDROID_LIB_DIR=java/android/src/main/jniLibs
DESKTOP_LIB_DIR=java/shared/resources
DESKTOP_LIB_DIR=java/client/src/main/resources
SERVER_LIB_DIR=java/server/src/main/resources
export CARGO_PROFILE_RELEASE_DEBUG=1 # enable line tables
export RUSTFLAGS="--cfg aes_armv8 --cfg polyval_armv8 ${RUSTFLAGS:-}" # Enable ARMv8 cryptography acceleration when available
@ -52,6 +53,7 @@ build_desktop_for_arch () {
local CXX
local CPATH
local lib_dir="${3}/"
local cpuarch="${1%%-*}"
case "$cpuarch" in
x86_64)
@ -80,13 +82,19 @@ build_desktop_for_arch () {
fi
echo_then_run cargo build -p libsignal-jni -p libsignal-jni-testing --release ${FEATURES:+--features "${FEATURES[*]}"} --target "$1"
if [[ -z "${CARGO_BUILD_TARGET:-}" ]]; then
copy_built_library "target/${1}/release" signal_jni "${DESKTOP_LIB_DIR}/" "signal_jni_${suffix}"
copy_built_library "target/${1}/release" signal_jni_testing "${DESKTOP_LIB_DIR}/" "signal_jni_testing_${suffix}"
copy_built_library "target/${1}/release" signal_jni "$lib_dir" "signal_jni_${suffix}"
copy_built_library "target/${1}/release" signal_jni_testing "$lib_dir" "signal_jni_testing_${suffix}"
fi
}
while [ "${1:-}" != "" ]; do
case "${1:-}" in
desktop )
lib_dir=$DESKTOP_LIB_DIR
;;&
server | server-all )
lib_dir=$SERVER_LIB_DIR
;;&
desktop | server | server-all )
# On Linux, cdylibs don't include public symbols from their dependencies,
# even if those symbols have been re-exported in the Rust source.
@ -96,10 +104,10 @@ while [ "${1:-}" != "" ]; do
FEATURES+=("testing-fns")
host_triple=$(rustc -vV | sed -n 's|host: ||p')
if [[ "$1" == "server-all" ]]; then
build_desktop_for_arch x86_64-unknown-linux-gnu "$host_triple"
build_desktop_for_arch aarch64-unknown-linux-gnu "$host_triple"
build_desktop_for_arch x86_64-unknown-linux-gnu "$host_triple" $lib_dir
build_desktop_for_arch aarch64-unknown-linux-gnu "$host_triple" $lib_dir
else
build_desktop_for_arch "$host_triple" "$host_triple"
build_desktop_for_arch "$host_triple" "$host_triple" $lib_dir
fi
exit
;;

View File

@ -66,7 +66,6 @@ tasks.named('jar') {
}
processResources {
// TODO: Build a different variant of the JNI library for server.
dependsOn ':makeJniLibrariesDesktop'
}