From 4978320f5cddc6293c6f178ecb491e0f8b341746 Mon Sep 17 00:00:00 2001 From: Illia Vysochyn Date: Mon, 8 Jul 2024 18:19:30 +0200 Subject: [PATCH] [#62157] docker: Dockerfile.builder: Optimize Dockerfile Separates the image into additional stages to leverage the cache. The `tools/yosys/.gitcommit` file overwriting bypasses the submodule check in its Makefile. This is done to avoid the git-submodule files copying into the image, invalidating the build cache. Signed-off-by: Illia Vysochyn --- docker/Dockerfile.builder | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/docker/Dockerfile.builder b/docker/Dockerfile.builder index ee21b22356..9912861574 100644 --- a/docker/Dockerfile.builder +++ b/docker/Dockerfile.builder @@ -1,27 +1,29 @@ +# syntax=docker/dockerfile:1.7-labs + # Target with dependencies to build all flow tools from their sources. # i.e., "./build_openroad.sh --local" from inside a docker container # NOTE: don't use this file directly unless you know what you are doing, # instead use etc/DockerHelper.sh -ARG fromImage=openroad/flow-ubuntu22.04-dev:latest -FROM $fromImage AS openroad-builder-base +ARG fromImage=openroad/flow-ubuntu22.04-dev:latest -ARG numThreads=$(nproc) +FROM $fromImage AS orfs-base -COPY . /OpenROAD-flow-scripts WORKDIR /OpenROAD-flow-scripts +COPY --link dev_env.sh dev_env.sh +COPY --link build_openroad.sh build_openroad.sh -RUN ./build_openroad.sh --no_init --local --threads ${numThreads} +FROM orfs-base AS orfs-builder-base -FROM $fromImage AS openroad-flow-scripts-base - -COPY . /OpenROAD-flow-scripts - -RUN rm -rf /OpenROAD-flow-scripts/tools /OpenROAD-flow-scripts/.git +COPY --link tools tools +ARG numThreads=$(nproc) -COPY --from=openroad-builder-base /OpenROAD-flow-scripts/tools/install /OpenROAD-flow-scripts/tools/install +RUN echo "" > tools/yosys/abc/.gitcommit && \ + ./build_openroad.sh --no_init --local --threads ${numThreads} -FROM $fromImage +FROM orfs-base -COPY --from=openroad-flow-scripts-base /OpenROAD-flow-scripts /OpenROAD-flow-scripts -WORKDIR /OpenROAD-flow-scripts +COPY --link flow /OpenROAD-flow-scripts/flow +COPY --link docs /OpenROAD-flow-scripts/docs +COPY --link --from=orfs-builder-base /OpenROAD-flow-scripts/tools/install /OpenROAD-flow-scripts/tools/install/ +COPY --link --exclude=.git* --exclude=tools/ --exclude=docs/ --exclude=flow/ . /OpenROAD-flow-scripts/