blob: 9b430d2a9003d82b222a30055cf68cb2e78d8e62 [file]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
ARG HAS_MACOS_SDK="false"
FROM ubuntu:20.04 AS base
USER root
# For apt to be noninteractive
ENV DEBIAN_FRONTEND=noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN=true
ENV LC_ALL=C
# Install pr-requisites for rust
RUN export LC_ALL=C \
&& apt-get update \
&& apt-get install --no-install-recommends -y \
ca-certificates \
build-essential \
curl \
wget \
git \
llvm \
clang \
libssl-dev \
lzma-dev \
liblzma-dev \
openssh-client \
cmake \
cpio \
libxml2-dev \
patch \
bzip2 \
libbz2-dev \
zlib1g-dev
# Install rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"
RUN cargo install cargo2junit
# Stage to add OSXCross if MacOSSDK is provided
FROM base AS with-macos-sdk-true
ARG MACOS_SDK
COPY workdir/$MACOS_SDK /opt/xcode/
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
rustup target add aarch64-apple-darwin; \
elif [ "$TARGETPLATFORM" = "linux/amd64" ]; then \
rustup target add x86_64-apple-darwin; \
fi
# Build OSXCross
RUN cd /opt && git clone --depth 1 https://github.com/tpoechtrager/osxcross.git \
&& cd /opt/osxcross \
&& ./tools/gen_sdk_package_pbzx.sh /opt/xcode/${MACOS_SDK} \
&& cd .. \
&& cp /opt/osxcross/*.tar.xz tarballs \
&& UNATTENDED=1 ./build.sh
ENV PATH="/opt/osxcross/target/bin:${PATH}"
# Use osxcross toolchain for cargo
COPY workdir/cargo.config /root/.cargo/config
ENV HAS_OSXCROSS="true"
# Placeholder Stage if MacOSSDK is not provided
FROM base AS with-macos-sdk-false
RUN echo "Building without MacOS"
FROM with-macos-sdk-${HAS_MACOS_SDK} AS final
COPY build-comet-native-libs.sh /opt/comet-rm/build-comet-native-libs.sh
WORKDIR /opt/comet-rm
ENTRYPOINT [ "/opt/comet-rm/build-comet-native-libs.sh"]