1
0
mirror of https://github.com/facebook/proxygen.git synced 2026-10-24 01:33:54 +03:00
Files
proxygen/docker/base.Dockerfile
Alan Frindell 1c4675c3e3 Fix apt index refresh in base.Dockerfile before getdeps install-system-deps (#634)
Summary:
The prior layer clears /var/lib/apt/lists/*, and getdeps' install-system-deps runs `apt-get install` without an `apt-get update`, leaving apt with an empty package index. This caused every system dep to fail with 'Unable to locate package'. Refresh the index before the install step and re-clean it afterward.

Pull Request resolved: https://github.com/facebook/proxygen/pull/634

Reviewed By: jbeshay

Differential Revision: D113217580

Pulled By: afrind

fbshipit-source-id: 4501c59a3f3607e9c56d67ad64a16e9c1e166574
2026-07-22 15:55:29 -07:00

50 lines
2.1 KiB
Docker

# Reusable proxygen "base" builder image.
#
# Builds proxygen and its full dependency tree (folly, fizz, wangle, mvfst, ...)
# from the checked-out source with getdeps.py and installs everything under a
# single CMake prefix at /opt/proxygen. Downstream projects compile against it
# with no extra flags -- CMAKE_PREFIX_PATH and LD_LIBRARY_PATH are preset:
#
# FROM ghcr.io/facebook/proxygen/base:latest AS build
# COPY CMakeLists.txt /app/CMakeLists.txt
# COPY src /app/src
# RUN cmake -S /app -B /app/build -DCMAKE_BUILD_TYPE=Release && \
# cmake --build /app/build -j "$(nproc)"
# # find_package(proxygen CONFIG REQUIRED) just works.
#
# Published by .github/workflows/publish_base_image.yml.
# Build locally from the repo root:
# docker build -t proxygen-base -f docker/base.Dockerfile .
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
# getdeps installs Python build helpers system-wide inside the container.
ENV PIP_BREAK_SYSTEM_PACKAGES=1
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential cmake git g++ make libssl-dev m4 \
python3 python3-pip pkg-config sudo ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Build proxygen and all dependencies from the checked-out source.
COPY . /proxygen
WORKDIR /proxygen
# getdeps' install-system-deps runs `apt-get install` without an `apt-get
# update`, so refresh the package index (cleared in the layer above) first.
RUN apt-get update \
&& ./build/fbcode_builder/getdeps.py install-system-deps --recursive proxygen \
&& rm -rf /var/lib/apt/lists/*
RUN ./build/fbcode_builder/getdeps.py build --allow-system-packages proxygen
# Merge proxygen + every dependency install tree into one CMake prefix, so
# downstream `find_package(proxygen CONFIG)` resolves with zero extra flags.
RUN set -eux; \
SCRATCH="$(./build/fbcode_builder/getdeps.py show-scratch-dir)"; \
mkdir -p /opt/proxygen; \
for d in "$SCRATCH"/installed/*/; do cp -a "$d". /opt/proxygen/; done
# Consumers inherit these, so no -DCMAKE_PREFIX_PATH / LD_LIBRARY_PATH needed.
ENV CMAKE_PREFIX_PATH=/opt/proxygen
ENV LD_LIBRARY_PATH=/opt/proxygen/lib