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.

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