dosubot[bot] commented on issue #7529:
URL: 
https://github.com/apache/incubator-devlake/issues/7529#issuecomment-2135201929

   <!-- Answer -->
   To resolve the error related to `libgit2` when building the backend Docker 
image, ensure that the `libgit2` library is correctly downloaded, built, and 
installed for the `x86_64` architecture. The provided `Dockerfile` already 
includes the necessary steps to achieve this. Here is the relevant section of 
the `Dockerfile` that handles the `libgit2` installation:
   
   ```dockerfile
   FROM --platform=linux/amd64 debian:bullseye as debian-amd64
   RUN apt-get -y update && apt -y upgrade &&\
       apt-get install -y libssh2-1-dev libssl-dev zlib1g-dev
   
   FROM golang:1.20.4-bullseye as builder
   
   # Base dependencies
   RUN apt-get -y update && apt -y upgrade &&\
       apt-get install -y gcc binutils libfindbin-libs-perl cmake libssh2-1-dev 
libssl-dev zlib1g-dev \
       gcc-x86-64-linux-gnu binutils-x86-64-linux-gnu
   
   COPY --from=debian-amd64 /usr/include /rootfs-amd64/usr/include
   COPY --from=debian-amd64 /usr/lib/x86_64-linux-gnu 
/rootfs-amd64/usr/lib/x86_64-linux-gnu
   COPY --from=debian-amd64 /lib/x86_64-linux-gnu 
/rootfs-amd64/lib/x86_64-linux-gnu
   
   ## Build libs/headers needed for gitextractor plugin
   RUN \
       mkdir -p /tmp/build/x86_64 && cd /tmp/build/x86_64 && \
       wget https://github.com/libgit2/libgit2/archive/refs/tags/v1.3.2.tar.gz 
-O - | tar -xz && \
       cd libgit2-1.3.2 && \
       mkdir build && cd build && \
       cmake .. -DCMAKE_C_COMPILER=x86_64-linux-gnu-gcc -DBUILD_SHARED_LIBS=ON 
-DCMAKE_SYSROOT=/rootfs-amd64 -DCMAKE_INSTALL_PREFIX=/usr/local/deps/x86_64 &&\
       make -j install &&\
       mkdir -p /tmp/deps &&\
       cp *libgit2* /tmp/deps/ &&\
       cp -r ../include /tmp/deps/include
   
   FROM python:3.9-slim-bullseye
   
   RUN apt -y update && apt -y upgrade && apt -y install tzdata make tar curl 
gcc g++ pkg-config git \
       libssh2-1 zlib1g libffi-dev  \
       default-libmysqlclient-dev \
       libpq-dev
   
   # Install Libs/Headers from previous stage
   COPY --from=builder /tmp/deps/*.so* /usr/lib/
   COPY --from=builder /tmp/deps/*.pc /usr/lib/x86_64-linux-gnu/pkgconfig/
   COPY --from=builder /tmp/deps/include/ /usr/include/
   ENV PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
   
   # Install Golang
   RUN curl -L https://git.io/vQhTU | bash -s -- --version 1.20.4
   RUN mv /root/go /go &&\
       mv /root/.go /usr/local/go &&\
       ln -sf /usr/local/go/bin/* /usr/bin
   
   # Install Golang Tools
   RUN export GOPATH=/go &&  \
       go install github.com/vektra/mockery/v2@v2.20.0 &&  \
       go install github.com/swaggo/swag/cmd/swag@v1.16.1
   
   # Golang Env
   ENV GOPATH=/go
   # Make sure GOROOT is unset
   ENV GOROOT=
   ENV PATH=${GOPATH}/bin:${PATH}
   
   # Python Poetry package manager
   RUN curl -sSL https://install.python-poetry.org | python3 -
   RUN ln -sf /root/.local/bin/poetry /usr/local/bin
   ```
   
   This script does the following:
   1. Creates a build directory for the `x86_64` architecture.
   2. Downloads the `libgit2` source code.
   3. Configures the build environment using `cmake` with the appropriate 
compiler and sysroot for the `x86_64` architecture.
   4. Builds and installs `libgit2` to the specified prefix.
   5. Copies the built libraries and headers to the final image.
   
   Ensure that this section is included in your `Dockerfile` and that the 
necessary dependencies (`gcc-x86-64-linux-gnu`, `binutils-x86-64-linux-gnu`, 
`cmake`, etc.) are installed as shown in the `Dockerfile`.
   
   If you still encounter issues, verify that the `wget` command successfully 
downloads the `libgit2` tarball and that the `cmake` and `make` commands 
complete without errors 
<sup>[[1]](https://github.com/apache/incubator-devlake/blob/main/backend/Dockerfile)</sup><sup>[[2]](https://github.com/apache/incubator-devlake/blob/main/devops/docker/lake-builder/Dockerfile)</sup>.
   
   
   <!-- Dosu Comment Footer -->
   <details>
   <summary>
   
   #### Details
   </summary>
   
   **About Dosu**
   This response is meant to be useful and save you time. It is **not meant to 
be a precise solution**, but rather a starting point for your own research.
   
   Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is 
irrelevant.
   </details>
   
   *To continue the conversation, mention @dosu.*
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@devlake.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to