Skip to content

Conversation

@kadykov
Copy link

@kadykov kadykov commented Oct 27, 2025

Summary

This PR adds a complete VS Code Dev Container configuration for darktable development, making it easy for contributors to get started with a fully configured build environment.

What's Included

Dev Container Setup

  • Dockerfile with all required and optional build dependencies pre-installed
  • devcontainer.json with VS Code extensions and settings optimized for C/C++ development
  • Comprehensive README documenting the development workflow

Features

  • ✅ Complete build environment based on Ubuntu 24.04 LTS
  • ✅ All dependencies pre-installed (GTK3, GLib, libavif, libheif, libjxl, WebP, etc.)
  • ✅ Git submodules automatically initialized on container creation
  • ✅ Ready-to-use C/C++ tooling (CMake Tools, clang-format, debugging support)
  • ✅ AppImage build support for GUI testing on host
  • ✅ Optional unit test support (documented)

Developer Benefits

  • Zero setup time: Clone repo → Open in container → Start building
  • Consistent environment: All developers use the same toolchain and dependencies
  • No host pollution: All build tools and dependencies isolated in container
  • Cross-platform: Works on Windows, macOS, and Linux hosts

Usage

  1. Install Docker and VS Code with Dev Containers extension
  2. Open the repository in VS Code
  3. Click "Reopen in Container" when prompted
  4. Wait for container build (~5-10 minutes first time)
  5. Start building: ./build.sh --prefix /tmp/dt --build-type RelWithDebInfo

Scope

This devcontainer is focused on:

  • Building darktable from source
  • Creating AppImages for testing
  • Debugging with GDB

It does NOT include:

  • X11/GUI support inside container (use AppImage on host instead)
  • System installation workflows (not needed for development)

Testing

I have verified that this configuration successfully:

  • ✅ Builds darktable from source
  • ✅ Creates working AppImage files
  • ✅ Runs unit tests (with optional libcmocka-dev installation)
  • ✅ Works with all VS Code C/C++ development features

Documentation

Complete documentation is provided in .devcontainer/README.md covering:

  • Quick start guide
  • Build instructions
  • AppImage creation workflow
  • Troubleshooting common issues
  • Optional unit test setup

Files Changed

.devcontainer/
├── devcontainer.json    # Container configuration
├── Dockerfile           # Build environment with all dependencies
└── README.md            # Complete documentation

Notes

  • Container runs as user vscode (UID 1000) for proper file permissions
  • Git submodules are initialized automatically via postCreateCommand
  • Build artifacts are stored in build/ directory
  • AppImages can be run directly on host if workspace is mounted

This configuration should make it significantly easier for new contributors to start working on darktable without spending time on environment setup.

Add a complete devcontainer environment for building and testing darktable, including Dockerfile with all dependencies, configuration, and documentation. Also update .gitignore to exclude AppDir for AppImage builds.
Copilot AI review requested due to automatic review settings October 27, 2025 16:23
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces a complete VS Code Dev Container configuration for darktable development, enabling contributors to start building immediately without manual environment setup. The configuration provides a fully-equipped Ubuntu 24.04-based container with all build dependencies, optimized VS Code settings, and comprehensive documentation.

Key Changes:

  • Added containerized development environment with pre-installed build dependencies and tools
  • Configured VS Code with C/C++ development extensions and appropriate settings
  • Provided complete documentation covering build workflows, AppImage creation, and troubleshooting

Reviewed Changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.

File Description
.devcontainer/devcontainer.json Configures the dev container with build context, VS Code extensions, and automatic git submodule initialization
.devcontainer/Dockerfile Defines Ubuntu 24.04 base image with all required and optional darktable build dependencies
.devcontainer/README.md Provides comprehensive documentation for building, testing, and troubleshooting in the dev container

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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 this pull request may close these issues.

1 participant