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/[email protected] && \
go install github.com/swaggo/swag/cmd/[email protected]
# 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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]