-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for compiling the provider on aarch64
Signed-off-by: Tomás González <[email protected]>
- Loading branch information
1 parent
3d988e9
commit b6e3a53
Showing
5 changed files
with
111 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Copyright 2024 Contributors to the Parsec project. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
set -xeuf -o pipefail | ||
|
||
# Allow the `pkg-config` crate to cross-compile | ||
export PKG_CONFIG_ALLOW_CROSS=1 | ||
# Make the `pkg-config` crate use our wrapper | ||
export PKG_CONFIG=/tmp/parsec-openssl-provider/tests/pkg-config | ||
|
||
export SYSROOT=/tmp/aarch64-linux-gnu | ||
export RUSTFLAGS="-lcrypto -L/tmp/aarch64-linux-gnu/lib" | ||
cd /tmp/parsec-openssl-provider | ||
cargo build --target aarch64-unknown-linux-gnu \ | ||
--config 'target.aarch64-unknown-linux-gnu.linker="aarch64-linux-gnu-gcc"' | ||
|
||
cd parsec-openssl-provider-shared | ||
cargo build --target aarch64-unknown-linux-gnu \ | ||
--config 'target.aarch64-unknown-linux-gnu.linker="aarch64-linux-gnu-gcc"' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Copyright 2024 Contributors to the Parsec project. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# Cross compile the OpenSSL library for a given target | ||
|
||
set -xeuf -o pipefail | ||
|
||
rustup target add aarch64-unknown-linux-gnu | ||
|
||
OPENSSL_VERSION="openssl-3.0.2" | ||
git clone https://github.com/openssl/openssl.git --branch $OPENSSL_VERSION | ||
|
||
# Prepare directory for cross-compiled OpenSSL files | ||
mkdir -p /tmp/$1 | ||
export INSTALL_DIR=/tmp/$1 | ||
|
||
pushd /tmp/openssl | ||
# Compile and copy files over | ||
./Configure $2 shared --prefix=$INSTALL_DIR --openssldir=$INSTALL_DIR/openssl --cross-compile-prefix=$1- | ||
make clean | ||
make depend | ||
make -j$(nproc) | ||
make install | ||
popd | ||
|
||
unset INSTALL_DIR | ||
|
||
pushd /usr/include/openssl | ||
ln -s /tmp/$1/include/openssl/opensslconf.h . | ||
ln -s /tmp/$1/include/openssl/configuration.h . | ||
popd |
45 changes: 45 additions & 0 deletions
45
tests/docker_image/parsec-service-test-cross-compile.Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# Copyright 2024 Contributors to the Parsec project. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
FROM ubuntu:22.04 | ||
|
||
RUN apt update && apt-get -y upgrade | ||
RUN apt install -y autoconf-archive libcmocka0 libcmocka-dev procps | ||
RUN apt install -y iproute2 build-essential git pkg-config gcc libtool automake libssl-dev uthash-dev doxygen libjson-c-dev | ||
RUN apt install -y --fix-missing wget python3 cmake clang | ||
RUN apt install -y libini-config-dev curl libgcc1 | ||
RUN apt install -y python3-distutils libclang-11-dev protobuf-compiler python3-pip | ||
RUN apt install -y libgcrypt20-dev uuid-dev | ||
RUN apt install -y git gcc | ||
|
||
|
||
# Setup git config | ||
RUN git config --global user.email "[email protected]" | ||
RUN git config --global user.name "Parsec Team" | ||
|
||
WORKDIR /tmp | ||
|
||
# Install Rust toolchain for all users | ||
# This way of installing allows all users to call the same binaries, but non-root | ||
# users cannot modify the toolchains or install new ones. | ||
# See: https://github.com/rust-lang/rustup/issues/1085 | ||
ENV RUSTUP_HOME /opt/rust | ||
ENV CARGO_HOME /opt/rust | ||
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path | ||
ENV PATH="/root/.cargo/bin:/opt/rust/bin:${PATH}" | ||
|
||
# Install aarch64-none-linux-gnu cross compilation toolchain | ||
RUN wget https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz?revision=61c3be5d-5175-4db6-9030-b565aae9f766 -O aarch64-gcc.tar.xz | ||
RUN tar --strip-components=1 -C /usr/ -xvf aarch64-gcc.tar.xz | ||
RUN rm aarch64-gcc.tar.xz | ||
|
||
# Install cross-compilers | ||
RUN apt install -y gcc-multilib | ||
RUN apt install -y gcc-arm-linux-gnueabihf | ||
RUN apt install -y gcc-aarch64-linux-gnu | ||
|
||
WORKDIR /tmp | ||
|
||
# Copy OpenSSL cross-compilation script | ||
COPY cross-compile-openssl.sh /tmp/ | ||
# Cross-compile OpenSSL for Linux on aarch64 | ||
RUN ./cross-compile-openssl.sh aarch64-linux-gnu linux-generic64 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/bin/sh | ||
|
||
unset PKG_CONFIG_PATH | ||
export PKG_CONFIG_LIBDIR=${SYSROOT}/lib/pkgconfig:${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig:${SYSROOT}/usr/local/lib/pkgconfig | ||
|
||
exec pkg-config "$@" |