ocaml/dune

allow excluding certain files being copied to the build folder

Open

#4,865 opened on Aug 20, 2021

 (8 comments) (2 reactions) (0 assignees)OCaml (478 forks)github user discovery
help wanted

Repository metrics

Stars
 (1,882 stars)
PR merge metrics
 (Avg merge 1d 20h) (345 merged PRs in 30d)

Description

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/
  - ...

Contributor guide