Skip to content

Commit ad06a13

Browse files
authored
Fix #11045 (#11801)
* test: reproduce #11045 Signed-off-by: Benjamin Jorge <benjamin.jorge@cea.fr> * fix: dune subst should not fail when adding the version field in opam files Signed-off-by: Benjamin Jorge <benjamin.jorge@cea.fr> * feature: dune subst use version from dune-project when there is no vcs Signed-off-by: Benjamin Jorge <benjamin.jorge@cea.fr> --------- Signed-off-by: Benjamin Jorge <benjamin.jorge@cea.fr>
2 parents aa1a3e2 + ab891ff commit ad06a13

6 files changed

Lines changed: 91 additions & 2 deletions

File tree

bin/subst.ml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,7 @@ let subst_file path ~map opam_package_files =
141141
try
142142
subst_string ("version: \"%%" ^ "VERSION_NUM" ^ "%%\"") ~map (Path.source path)
143143
with
144-
| User_error.E e ->
145-
raise (User_error.E { e with loc = Some (Loc.in_file (Path.source path)) }))
144+
| User_error.E _ -> None)
146145
else None
147146
in
148147
let path = Path.source path in
@@ -264,6 +263,11 @@ end
264263

265264
let make_watermark_map ~commit ~version ~dune_project ~info =
266265
let dune_project = Dune_project.project dune_project in
266+
let version =
267+
match version with
268+
| Some _ -> version
269+
| None -> Option.map ~f:Package_version.to_string (Dune_project.version dune_project)
270+
in
267271
let version_num =
268272
let open Option.O in
269273
let+ version = version in

doc/changes/11801.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- fix: `$ dune subst` should not fail when adding the version field in opam
2+
files (#11801, fixes #11045, @btjorge)
3+
4+
- feature: `$ dune subst` use version from `dune-project` when no version control repository
5+
has been detected

src/source/dune_project.ml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ let equal : t -> t -> bool = phys_equal
4949
let hash = Poly.hash
5050
let packages t = t.packages
5151
let name t = t.name
52+
let version t = t.version
5253
let root t = t.root
5354
let stanza_parser t = Dune_lang.Decoder.set key t t.stanza_parser
5455
let file t = t.project_file

src/source/dune_project.mli

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ type t
88
val to_dyn : t -> Dyn.t
99
val packages : t -> Package.t Package.Name.Map.t
1010
val name : t -> Dune_project_name.t
11+
val version : t -> Package_version.t option
1112
val root : t -> Path.Source.t
1213
val stanza_parser : t -> Dune_lang.Stanza.t list Dune_lang.Decoder.t
1314
val generate_opam_files : t -> bool
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
dune subst should not fail when adding the version field in opam files
2+
3+
$ cat > dune-project << EOF
4+
> (lang dune 3.19)
5+
> (name test)
6+
> (version 0.1)
7+
> (generate_opam_files)
8+
> (package (name test) (allow_empty))
9+
> EOF
10+
11+
$ dune build
12+
13+
$ cat test.opam
14+
# This file is generated by dune, edit dune-project instead
15+
opam-version: "2.0"
16+
version: "0.1"
17+
depends: [
18+
"dune" {>= "3.19"}
19+
"odoc" {with-doc}
20+
]
21+
build: [
22+
["dune" "subst"] {dev}
23+
[
24+
"dune"
25+
"build"
26+
"-p"
27+
name
28+
"-j"
29+
jobs
30+
"@install"
31+
"@runtest" {with-test}
32+
"@doc" {with-doc}
33+
]
34+
]
35+
x-maintenance-intent: ["(latest)"]
36+
37+
$ dune subst
38+
39+
$ cat test.opam
40+
version: "0.1"
41+
# This file is generated by dune, edit dune-project instead
42+
opam-version: "2.0"
43+
version: "0.1"
44+
depends: [
45+
"dune" {>= "3.19"}
46+
"odoc" {with-doc}
47+
]
48+
build: [
49+
["dune" "subst"] {dev}
50+
[
51+
"dune"
52+
"build"
53+
"-p"
54+
name
55+
"-j"
56+
jobs
57+
"@install"
58+
"@runtest" {with-test}
59+
"@doc" {with-doc}
60+
]
61+
]
62+
x-maintenance-intent: ["(latest)"]

test/blackbox-tests/test-cases/subst/without-repo.t

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,19 @@ Demonstrate $ dune subst without a git repository
1111

1212
$ cat README.md
1313
test
14+
15+
dune subst should take the project version from the dune-project file when
16+
there is no vcs
17+
18+
$ cat > dune-project << EOF
19+
> (lang dune 3.19)
20+
> (name test)
21+
> (version 0.1)
22+
> EOF
23+
24+
$ echo "%%VERSION%%" > README.md
25+
26+
$ dune subst
27+
28+
$ cat README.md
29+
0.1

0 commit comments

Comments
 (0)