Skip to content

SnapshotUtil header not installed — filename contains 'internal' #8

Description

@smaheshwar-pltr

Problem

SnapshotUtil provides essential snapshot operations (ancestry traversal, time-travel queries, schema lookup) that consumers using iceberg-cpp via find_package(iceberg) need. The class is marked ICEBERG_EXPORT (public ABI), but the header file is named snapshot_util_internal.h. The iceberg_install_all_headers CMake function skips filenames containing "internal", so the header is never installed.

Consumers using iceberg-cpp as an installed package (rather than via add_subdirectory) cannot include SnapshotUtil without vendoring a copy of the header.

Error

fatal error: 'iceberg/util/snapshot_util_internal.h' file not found
   32 | #include "iceberg/util/snapshot_util_internal.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

The include path points to the installed headers directory, which does not contain the file because the install function filtered it out:

-isystem build/debug/_iceberg_install/include

Root cause

In cmake_modules/IcebergBuildUtils.cmake, iceberg_install_all_headers globs *.h and excludes filenames matching *internal*. The header snapshot_util_internal.h is excluded despite the class being explicitly ICEBERG_EXPORT.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions