mirror of
https://github.com/commaai/agnos-builder.git
synced 2026-08-23 17:23:54 +08:00
Move package compilation to separate dockerfile
This commit is contained in:
+4
-29
@@ -37,31 +37,6 @@ RUN apt-get -o Dpkg::Options::="--force-overwrite" install -yq \
|
||||
/tmp/agnos/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb \
|
||||
/tmp/agnos/libffi6_3.2.1-8_arm64.deb
|
||||
|
||||
# ################## #
|
||||
# #### Compiler #### #
|
||||
# ################## #
|
||||
FROM agnos-base AS agnos-compiler
|
||||
|
||||
RUN apt-fast update && apt-fast install --no-install-recommends -yq checkinstall
|
||||
|
||||
# Individual compiling images
|
||||
FROM agnos-compiler AS agnos-compiler-pyqt5
|
||||
COPY ./userspace/compile-pyqt5.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-pyqt5.sh
|
||||
|
||||
FROM agnos-compiler AS agnos-compiler-capnp
|
||||
COPY ./userspace/compile-capnp.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-capnp.sh
|
||||
|
||||
FROM agnos-compiler AS agnos-compiler-ffmpeg
|
||||
COPY ./userspace/compile-ffmpeg.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-ffmpeg.sh
|
||||
|
||||
FROM agnos-compiler AS agnos-compiler-qtwayland5
|
||||
COPY ./userspace/compile-qtwayland5.sh /tmp/agnos/
|
||||
COPY ./userspace/qtwayland/patch* /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-qtwayland5.sh
|
||||
|
||||
# ################### #
|
||||
# ###### AGNOS ###### #
|
||||
# ################### #
|
||||
@@ -79,18 +54,18 @@ COPY ./userspace/compile-modemmanager.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-modemmanager.sh
|
||||
|
||||
# Pre-compiled capnp (must be before python install)
|
||||
COPY --from=agnos-compiler-capnp /tmp/capnproto.deb /tmp/capnproto.deb
|
||||
COPY --from=agnos-compiler /tmp/capnproto.deb /tmp/capnproto.deb
|
||||
RUN cd /tmp && apt-get -o Dpkg::Options::="--force-overwrite" install -yq ./capnproto.deb
|
||||
|
||||
# Use other pre-compiled packages
|
||||
COPY --from=agnos-compiler-ffmpeg /tmp/ffmpeg.deb /tmp/ffmpeg.deb
|
||||
COPY --from=agnos-compiler /tmp/ffmpeg.deb /tmp/ffmpeg.deb
|
||||
RUN cd /tmp && apt-get -o Dpkg::Options::="--force-overwrite" install -yq ./ffmpeg.deb
|
||||
|
||||
ARG XDG_DATA_HOME="/usr/local"
|
||||
ARG PATH="$XDG_DATA_HOME/.cargo/bin:$PATH"
|
||||
|
||||
# Use pre-compiled PyQt5 wheel
|
||||
COPY --from=agnos-compiler-pyqt5 /tmp/PyQt5-5.15.9/PyQt5-5.15.9-cp38-abi3-manylinux_2_17_aarch64.whl /tmp/PyQt5-5.15.9-cp38-abi3-manylinux_2_17_aarch64.whl
|
||||
COPY --from=agnos-compiler /tmp/PyQt5-5.15.9-cp38-abi3-manylinux_2_17_aarch64.whl /tmp/PyQt5-5.15.9-cp38-abi3-manylinux_2_17_aarch64.whl
|
||||
|
||||
RUN export MAKEFLAGS="-j$(nproc)" && \
|
||||
source $XDG_DATA_HOME/venv/bin/activate && \
|
||||
@@ -115,7 +90,7 @@ RUN source $XDG_DATA_HOME/venv/bin/activate && \
|
||||
COPY ./userspace/install_extras.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/install_extras.sh
|
||||
|
||||
COPY --from=agnos-compiler-qtwayland5 /tmp/qtwayland5.deb /tmp/qtwayland5.deb
|
||||
COPY --from=agnos-compiler /tmp/qtwayland5.deb /tmp/qtwayland5.deb
|
||||
RUN cd /tmp && apt-get -o Dpkg::Options::="--force-overwrite" install -yq --allow-downgrades ./qtwayland5.deb
|
||||
|
||||
# Patched libeglSubDriverWayland with fixed nullptr deref in CommitBuffer
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
# check=error=true
|
||||
|
||||
FROM ubuntu:24.04 AS agnos-compiler
|
||||
|
||||
RUN rm /etc/apt/apt.conf.d/docker-clean
|
||||
|
||||
# Common packages
|
||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
clang \
|
||||
curl \
|
||||
checkinstall \
|
||||
wget
|
||||
|
||||
#capnproto
|
||||
FROM agnos-compiler AS agnos-compiler-capnp
|
||||
|
||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
||||
libc6-dev \
|
||||
libssl-dev \
|
||||
zlib1g-dev
|
||||
|
||||
COPY ./userspace/compile-capnp.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-capnp.sh
|
||||
|
||||
# ffmpeg
|
||||
FROM agnos-compiler AS agnos-compiler-ffmpeg
|
||||
|
||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
||||
libass-dev \
|
||||
libfreetype6-dev \
|
||||
libgnutls28-dev \
|
||||
libmp3lame-dev \
|
||||
libsdl2-dev \
|
||||
libtool \
|
||||
libva-dev \
|
||||
libvdpau-dev \
|
||||
libvorbis-dev \
|
||||
libxcb1-dev \
|
||||
libxcb-shm0-dev \
|
||||
libxcb-xfixes0-dev \
|
||||
liblzma-dev \
|
||||
rsync \
|
||||
texinfo \
|
||||
zlib1g-dev
|
||||
|
||||
COPY ./userspace/compile-ffmpeg.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-ffmpeg.sh
|
||||
|
||||
# PyQt5
|
||||
FROM agnos-compiler AS agnos-compiler-pyqt5
|
||||
|
||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
||||
libdbus-1-3 \
|
||||
libgles-dev \
|
||||
libglib2.0-dev \
|
||||
libharfbuzz-dev \
|
||||
libpcre2-dev \
|
||||
libpng-dev \
|
||||
libpulse-dev
|
||||
|
||||
COPY ./userspace/qtwayland/*.deb /tmp/agnos/
|
||||
RUN apt-get -o Dpkg::Options::="--force-overwrite" install -yq \
|
||||
/tmp/agnos/qt-5.12.8.deb \
|
||||
/tmp/agnos/libwayland-1.9.0-1.deb \
|
||||
/tmp/agnos/libicu66_66.1-2ubuntu2.1_arm64.deb \
|
||||
/tmp/agnos/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb \
|
||||
/tmp/agnos/libffi6_3.2.1-8_arm64.deb
|
||||
|
||||
COPY ./userspace/openpilot_python_dependencies.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/openpilot_python_dependencies.sh
|
||||
|
||||
COPY ./userspace/compile-pyqt5.sh /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-pyqt5.sh
|
||||
|
||||
# qtwayland5
|
||||
FROM agnos-compiler AS agnos-compiler-qtwayland5
|
||||
|
||||
RUN dpkg --add-architecture armhf
|
||||
|
||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
||||
git \
|
||||
pkg-config \
|
||||
libc6:armhf \
|
||||
libdbus-1-3 \
|
||||
libegl-dev \
|
||||
libexpat1:armhf \
|
||||
libfontconfig-dev \
|
||||
libfreetype6 \
|
||||
libgles-dev \
|
||||
libglib2.0-dev \
|
||||
libharfbuzz-dev \
|
||||
libpcre2-dev \
|
||||
libwayland-dev \
|
||||
libxcomposite-dev \
|
||||
libxkbcommon-dev \
|
||||
zlib1g-dev
|
||||
|
||||
COPY ./userspace/qtwayland/*.deb /tmp/agnos/
|
||||
RUN apt-get -o Dpkg::Options::="--force-overwrite" install -yq \
|
||||
/tmp/agnos/qt-5.12.8.deb \
|
||||
/tmp/agnos/libwayland-1.9.0-1.deb \
|
||||
/tmp/agnos/libicu66_66.1-2ubuntu2.1_arm64.deb \
|
||||
/tmp/agnos/libssl1.1_1.1.1f-1ubuntu2.22_arm64.deb \
|
||||
/tmp/agnos/libffi6_3.2.1-8_arm64.deb
|
||||
|
||||
COPY ./userspace/compile-qtwayland5.sh /tmp/agnos/
|
||||
COPY ./userspace/qtwayland/patch* /tmp/agnos/
|
||||
RUN /tmp/agnos/compile-qtwayland5.sh
|
||||
|
||||
# Gather packages
|
||||
FROM agnos-compiler
|
||||
COPY --from=agnos-compiler-capnp /tmp/capnproto.deb /tmp/
|
||||
COPY --from=agnos-compiler-ffmpeg /tmp/ffmpeg.deb /tmp/
|
||||
COPY --from=agnos-compiler-pyqt5 /tmp/PyQt5-5.15.9/PyQt5-5.15.9-cp38-abi3-manylinux_2_17_aarch64.whl /tmp/
|
||||
COPY --from=agnos-compiler-qtwayland5 /tmp/qtwayland5.deb /tmp/
|
||||
+11
-1
@@ -55,8 +55,18 @@ if [ "$ARCH" = "x86_64" ]; then
|
||||
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes > /dev/null
|
||||
fi
|
||||
|
||||
# Check agnos-builder Dockerfile
|
||||
export DOCKER_BUILDKIT=1
|
||||
|
||||
# Check agnos-compiler Dockerfile
|
||||
docker build -f Dockerfile.compiler --check $DIR
|
||||
|
||||
# Build agnos-compiler docker
|
||||
echo "Building agnos-compiler docker image"
|
||||
docker build -f Dockerfile.compiler -t agnos-compiler $DIR
|
||||
echo "Creating agnos-compiler container"
|
||||
COMPILER_CONTAINER_ID=$(docker container create --entrypoint /bin/bash agnos-compiler:latest)
|
||||
|
||||
# Check agnos-builder Dockerfile
|
||||
docker build -f Dockerfile.agnos --check $DIR
|
||||
|
||||
# Start agnos-builder docker build and create container
|
||||
|
||||
Reference in New Issue
Block a user