Skip to content

Optimize C Foundation Setup Process #20

@imprvhub

Description

@imprvhub

Overview

The current setup process for TidesDB Python bindings unnecessarily clones the entire C foundation repository (cfoundation/). While the C foundation is crucial for the Python bindings, only specific files (primarily CMakeLists.txt and core implementation files) are required for building the bindings.

Current Status

  • Setup scripts (setup.sh and setup.ps1) clone the entire C foundation repository
  • All auxiliary files, documentation, and tests from the C foundation are downloaded
  • This results in:
    • Longer setup times
    • Unnecessary disk space usage
    • Potential confusion for contributors about which files are relevant

Missing Functionality

An optimized setup process that:

  • Selectively downloads only required C foundation files
  • Maintains proper integration with CMake build system
  • Preserves all necessary dependencies and build configurations

Proposed Solution

  1. Modify setup scripts to implement sparse checkout or targeted file download:

    • Download only CMakeLists.txt and essential source files
    • Exclude unnecessary documentation, tests, and auxiliary files
    • Maintain proper directory structure for CMake
  2. Create a manifest file listing required C foundation components:

    • CMakeLists.txt
    • Core implementation files
    • Required headers
    • Build configuration files
  3. Update documentation to reflect the optimized setup process:

    • Clear explanation of which C foundation components are used
    • Instructions for manual file inclusion if needed
    • Updated project structure documentation
  4. Add verification steps in setup scripts:

    • Validate presence of all required files
    • Ensure build system integrity
    • Check for proper integration with Python bindings

This optimization will significantly reduce setup time, disk usage, and improve the overall developer experience while maintaining all functionality of the Python bindings.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions