Search code examples
dockerconan

dockerized conan shows FileExistsError: [Errno 17] File exists: './util-linux-2.33.1/tests/expected/libmount/context-X-mount.mkdir'


The full error is

ERROR: libmount/2.33.1: Error in source() method, line 26
        tools.get(**self.conan_data["sources"][self.version])
        FileExistsError: [Errno 17] File exists: './util-linux-2.33.1/tests/expected/libmount/context-X-mount.mkdir'

My setup is a dockerized conen where the container is built like this:

FROM gcc:10.2.0
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get install -y cmake
RUN apt-get install -y python3-pip
RUN pip3 install --upgrade pip
RUN pip3 install conan
RUN conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
CMD ["/bin/bash"]

My basepath contains the folders build/conan and there is a conanfile.txt in the basepath.

The conanfile.txt contains:

[requires]
sdl2/2.0.12@bincrafters/stable

The motivation to dockerize is so that I get to a stable buid environment over all my machines. build/conan is extracted to store all cached files between builds, or so I hope it will once this works.

I made this into a repository so you can check out this example

EDIT: I modified the repo as I went on investigating - the original is in the commit history.

https://github.com/Aypahyo/dockerized-conan-shows-fileexistserror-errno-17-file-exists-util-linux-2.git

What I want is to use conan install from within a container on a mounted docker container with caching on the host machine.

My obvious question is: What is happening here and how do I fix it?


Solution

  • The issue seems to be stemming from the volume mount on my system.

    I followed user uilianries advice and went for building a container based on an official conan-docker-tools container as well as moving the volume into a docker managed volume. This error message is gone now although it looks like this approach in general may not fit what I want to do.

    I modified the repository for this question with what I ended up with. https://github.com/Aypahyo/dockerized-conan-shows-fileexistserror-errno-17-file-exists-util-linux-2

    caching does not work as I want it to but that is not what this question was about.