Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Installed Tessil/robin-map is not found and downloaded version is outdated #4050

Closed
bebuch opened this issue Nov 8, 2023 · 4 comments · Fixed by #4287
Closed

[BUG] Installed Tessil/robin-map is not found and downloaded version is outdated #4050

bebuch opened this issue Nov 8, 2023 · 4 comments · Fixed by #4287

Comments

@bebuch
Copy link
Contributor

bebuch commented Nov 8, 2023

Describe the bug

I need to build without internet connection. So I build and install dependencies manuelly.

You download Robinmap here:

set (ROBINMAP_GIT_REPOSITORY "https://github.com/Tessil/robin-map")

You use a very outdated version of it: (just a side note)

set (BUILD_ROBINMAP_VERSION "v0.6.2" CACHE STRING "Preferred Tessil/robin-map version, of downloading/building our own")

I build and install the current version 1.2.1 from https://github.com/Tessil/robin-map. This gives me CMake Config files.

    Directory: C:\tt\develop\usr\lib\cmake\tsl-robin-map

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           11/7/2023  9:46 PM           1311 tsl-robin-mapConfig.cmake
-a---           11/7/2023  9:46 PM           2824 tsl-robin-mapConfigVersion.cmake
-a---           11/7/2023  9:46 PM           4221 tsl-robin-mapTargets.cmake

The Bug is, that these are not considered by your find_package (Robinmap QUIET) call:

find_package (Robinmap QUIET)

The library name is tsl-robin-map, not Robinmap.

Evidence

-- Configuring OpenImageIO 2.5.4.0
-- CMake 3.27.7
-- CMake system           = Windows-10.0.22631
-- CMake system name      = Windows
-- Project source dir     = C:/tt/develop/libsrc/open_image_io
-- Project build dir      = C:/temp/tt/wd/build/open_image_io
-- Project install prefix = C:/tt/develop/usr
-- Configuration types    = Release;Debug;RelWithDebInfo
-- Build type             = Release
-- Supported release      = ON
-- CMAKE_UNITY_BUILD_MODE =
-- CMAKE_UNITY_BUILD_BATCH_SIZE =
-- Setting Namespace to: OpenImageIO_v2_5
-- CMAKE_CXX_COMPILER     = C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe
-- CMAKE_CXX_COMPILER_ID  = MSVC
-- Building with C++20, downstream minimum C++14
-- Compiler supports std::filesystem
-- clang-format not found.
--
-- * Checking for dependencies...
-- *   - Missing a dependency 'Package'?
-- *     Try cmake -DPackage_ROOT=path or set environment var Package_ROOT=path
-- *     For many dependencies, we supply src/build-scripts/build_Package.bash
-- *   - To exclude an optional dependency (even if found),
-- *     -DUSE_Package=OFF or set environment var USE_Package=OFF
--
-- Boost_COMPONENTS = thread
-- Found Boost 1.83.0
-- Found ZLIB 1.3.0
-- Found TIFF 4.6.0
-- Found OpenEXR 3.2.1
-- Found libjpeg-turbo 3.0.1
-- Using internal PugiXML
-- Not using Python -- disabled
-- Found PNG
-- Not using BZip2 -- disabled
-- Not using Freetype -- disabled
-- Not using OpenColorIO -- disabled
-- Not using OpenCV -- disabled
-- Not using TBB -- disabled
-- Not using DCMTK -- disabled
-- Not using FFmpeg -- disabled
-- Not using GIF -- disabled
-- Not using Libheif -- disabled
-- Not using LibRaw -- disabled
-- Not using OpenJPEG -- disabled
-- Not using OpenVDB -- disabled
-- Not using Ptex -- disabled
-- Not using Ptex -- disabled
-- Not using WebP -- disabled
-- Not using R3DSDK -- disabled
-- Not using Nuke -- disabled
-- Found OpenGL
-- Found Qt6 6.6.0
-- Found fmt 10.1.0
-- Robinmap library not found
CMake Error at src/cmake/checked_find_package.cmake:177 (message):
--     Robinmap_ROOT was: C:/tt/develop/usr/lib/cmake/tsl-robin-map
  Robinmap is required, aborting.

Platform information:

  • OIIO branch/version: 2.5.4.0
  • OS: Windows 11
  • C++ compiler: VS 2019
  • Any non-default build flags when you build OIIO:
"-DCMAKE_VERBOSE_MAKEFILE=ON"
"-DCMAKE_INSTALL_PREFIX=${INSTALL_PATH}"
"-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON"
"-DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}"
"-DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_LIST_DIR}/../toolchain/windows_msvc.cmake"
"-DCMAKE_CONFIGURATION_TYPES=Release;Debug;RelWithDebInfo"
"-DCMAKE_DEBUG_POSTFIX=d"
"-DCMAKE_RELWITHDEBINFO_POSTFIX=rd"
"-DCMAKE_INSTALL_INCLUDEDIR=include/${PACKAGE_NAME}"
"-DBUILD_SHARED_LIBS=ON"
"-DOIIO_BUILD_TESTS=OFF"
"-DOIIO_BUILD_TOOLS=ON"
"-DBUILD_DOCS=OFF"
"-DREQUIRED_DEPS=FMT;ZLIB;ROBINMAP;BOOST;TIFF;OPENEXR;JPEG;PNG"
"-DUSE_PYTHON=OFF"
"-DUSE_QT=ON"
"-DUSE_PUGIXML=OFF"
"-DUSE_BZIP2=OFF"
"-DUSE_FREETYPE=OFF"
"-DUSE_OPENCOLORIO=OFF"
"-DUSE_OPENCV=OFF"
"-DUSE_TBB=OFF"
"-DUSE_DCMTK=OFF"
"-DUSE_FFMPEG=OFF"
"-DUSE_GIF=OFF"
"-DUSE_JPEGTURBO=ON"
"-DUSE_LIBHEIF=OFF"
"-DUSE_LIBRAW=OFF"
"-DUSE_OPENJPEG=OFF"
"-DUSE_OPENVDB=OFF"
"-DUSE_PTEX=OFF"
"-DUSE_R3DSDK=OFF"
"-DUSE_NUKE=OFF"
"-DUSE_WEBP=OFF"
"-DBUILD_MISSING_ROBINMAP=OFF"
"-DBUILD_MISSING_FMT=OFF"
"-DINTERNALIZE_FMT=OFF"
"-DLINKSTATIC=OFF"
@bebuch
Copy link
Contributor Author

bebuch commented Apr 17, 2024

@lgritz Do you think it makes sense to update the default version of Tessil/robin-map from v0.6.2 to the latest version v1.2.2 or is there a good technical reason to stay on the old version?

If I see it correctly, both the CMake code and the API of the latest Tessil/robin-map implementation are no longer compatible with the version v0.6.2 used by default. This makes it very difficult to use OpenImageIO with the current version of this dependency. This is particularly critical because Tessil/robin-map is a basic dependency that is always required.

@lgritz
Copy link
Collaborator

lgritz commented Apr 18, 2024

Yes, we should definitely bump the version. In master, I think we can move to the very latest. In 2.5 releases, we still need to be C++14 compatible, so somebody will need to figure out what the highest version of robin-map is that we can use while satisfying that constraint.

@bebuch
Copy link
Contributor Author

bebuch commented Apr 18, 2024

As far as the C++ standard is concerned, the documentation says:

The code should work with any C++11 standard-compliant compiler and has been tested with GCC 4.8.4, Clang 3.5.0 and Visual Studio 2015.

As far as I can see, the CI pipelines use the respective default of the compiler. This should be C++11 and C++14 for GCC/clang/msvc.

So I don't think that should cause any problems in the 2.5 branch either.

It would be nice if the integration could be done with the standard CMake find_package and Target workflow in the future. I think the current situation is that only the header is extracted somehow, but this fails if you have installed Tessil/robin-map yourself externally and do not download it during the build of OIIO.

@lgritz
Copy link
Collaborator

lgritz commented Apr 18, 2024

Yes, coincidentally, I'm working on a total overhaul of how we pull in and self-build some dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants