Search code examples
conan

Why do my Conan packages appear to be getting corrupted?


Background

I have a project which was using boost/1.71.0@conan/stable, and was giving me a compile-time error. I decided to try boost/1.72.0 just on the off chance that it might fix it. When I did, I got this:

1> [CMake] ERROR: boost/1.72.0: Error in source() method, line 151
1> [CMake]  tools.get(**self.conan_data["sources"][self.version])
1> [CMake]  AttributeError: 'NoneType' object has no attribute 'token'
1> [CMake] CMake Error at out/build/x64-Debug/conan.cmake:402 (message):
1> [CMake]   Conan install failed='1'
1> [CMake] Call Stack (most recent call first):
1> [CMake]   out/build/x64-Debug/conan.cmake:497 (conan_cmake_install)
1> [CMake]   CMakeLists.txt:41 (conan_cmake_run)

which references the conan_cmake_run() call in my CMakeLists.txt:

if(CONAN_EXPORTED) # in conan local cache
    include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    conan_basic_setup()
else() # in user space
    include(${CMAKE_BINARY_DIR}/conan.cmake)

    conan_cmake_run(CONANFILE conanfile.txt
                    BASIC_SETUP
                    BUILD missing)
endif()

and line 151 in the boost conanfile.py:

        if tools.os_info.is_windows:
            sha256 = "85a94ac71c28e59cf97a96714e4c58a18550c227ac8b0388c260d6c717e47a69"
            extension = ".zip"
        else:
            sha256 = "d73a8da01e8bf8c7eda40b4c84915071a8c8a0df4a6734537ddde4a8580524ee"
            extension = ".tar.bz2"

        zip_name = "%s%s" % (self.folder_name, extension)
        url = "https://dl.bintray.com/boostorg/release/%s/source/%s" % (self.version, zip_name)
151:    tools.get(url, sha256=sha256)

        ...

My conanfile.txt:

[requires]
boost/1.72.0
...some of my own packages...

[generators]
cmake

[options]
boost:shared=True

What I've Tried

  • Upgrading Conan from 1.21 to 1.23. That gave me a different error ("Forbidden" something or other), so after trying to get rid of that for a while, I reverted. I also updated Pip somewhere in here.
  • Removing boost packages using conan remove boost/*
  • Other boost versions... I've tried boost/1.71.0, boost/1.72.0, and boost/1.71.0@conan/stable. The latter, which worked initially, no longer works after removing all boost packages. Related to that, when I generate the CMake cache for a second time (i.e. the boost package is already in the local cache), I get these warnings:
1> [CMake] boost/1.72.0: Configuring sources in C:\.conan\133b85\1
1> [CMake] boost/1.72.0: WARN: Package is corrupted, removing folder: C:\.conan\854baa\1
1> [CMake] boost/1.72.0: WARN: Build folder is dirty, removing it: C:\.conan\34c708\1
1> [CMake] boost/1.72.0: WARN: Trying to remove corrupted source folder
1> [CMake] boost/1.72.0: WARN: This can take a while for big packages
1> [CMake] ERROR: boost/1.72.0: Error in source() method, line 151]
... snip: the additional errors already copied at the beginning of the post ...

So, my suspicion is that even the formerly working boost/1.71.0@conan/stable is being corrupted upon a fresh pull.

Note: This happens when instructing Visual Studio to generate the CMake cache.


Solution

  • The URL used in the package recipe: https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.bz2, is not working. It seems the download URL has some issues, you can try downloading in your browser. So not Conan related, not an issue of the recipe.