allow excluding certain files being copied to the build folder

Open
#4,865 8 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
ocaml
Domain
build-system

Research direction

Start with Dune's Stanza Reference and the existing directory-exclusion behavior, then trace how files are copied into _build/default from the example dune files. Decide how an explicit file exclusion or file-selection stanza should behave, including the proposed .git case. Done means the named files are omitted while other project files and directories continue to be copied.

Written by the indexing model from the issue text.

Description

help wanted

Desired Behavior

Currently there are ways to exclude certain directories from being copied to the build folder, but there is no way (or at least I could not find one reading the Stanza Reference page) to stop copying certain files.

I would like to suggest adding a stanza like (ignored_files ...) or a stanza like (files ...) to allow explicit exclusion of files to be copied to the build folder.

I believe it is in general nice to have this possible, and it comes especially handy when the build needs to execute external commands whose behavior may depends on specific files in the current directory. For example, in my case I would like to exclude the .git file under a git submodule, whose presence in the build folder messes up invocations to git, and I am using a workaround to delete the copied .git file before invoking any git commands.

Example

project structure
<project_root>/
- .some-file-to-be-excluded
- dune
- dune-project
- module1/
  - ...
_build directory with an empty dune file
_build/default
- .some-file-to-be-excluded
- dune
- dune-project
- module1/
  - ...
contents of dune, (ignore_files ...) variant
(ignored_files .some-file-to-be-excluded)
contents of dune, (files ...) variant
(files :standard \ .some-file-to-be-excluded)
_build directory with a dune file of either variant listed above
_build/default
- dune
- dune-project
- module1/
  - ...
Dominant language
OCaml
Stars
1.9k
Forks
500
Avg merge
15h 17m
Merged PRs (30d)
287

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ocaml/dune

All issues in ocaml/dune

Similar issues

More Build System issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.