Skip to content

Commit 379d4b5

Browse files
committed
Add opam master (opam-dev) to the base images
1 parent eeb43a6 commit 379d4b5

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

src-opam/dockerfile_opam.ml

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,39 +110,43 @@ let header ?win10_revision ?arch ?maintainer ?img ?tag d =
110110
@@ shell
111111

112112
(* Apk based Dockerfile *)
113-
let apk_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 distro () =
113+
let apk_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master distro () =
114114
let img, tag = D.base_distro_tag ?arch distro in
115115
header ?arch distro @@ label (("distro_style", "apk") :: labels)
116116
@@ Linux.Apk.install "build-base bzip2 git tar curl ca-certificates openssl"
117117
@@ Linux.Git.init ()
118118
@@ install_opam_from_source ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
119119
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
120+
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
120121
@@ run "strip /usr/local/bin/opam*"
121122
@@ from ~tag img
122123
@@ Linux.Apk.add_repository ~tag:"edge" "https://dl-cdn.alpinelinux.org/alpine/edge/main"
123124
@@ Linux.Apk.add_repository ~tag:"edgecommunity" "https://dl-cdn.alpinelinux.org/alpine/edge/community"
124125
@@ Linux.Apk.add_repository ~tag:"testing" "https://dl-cdn.alpinelinux.org/alpine/edge/testing"
125126
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
126127
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
128+
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
127129
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
128130
@@ Linux.Apk.dev_packages ()
129131
@@ Linux.Apk.add_user ~uid:1000 ~gid:1000 ~sudo:true "opam"
130132
@@ install_bubblewrap_wrappers @@ Linux.Git.init ()
131133

132134

133135
(* Debian based Dockerfile *)
134-
let apt_opam2 ?(labels=[]) ?arch distro ~hash_opam_2_0 ~hash_opam_2_1 () =
136+
let apt_opam2 ?(labels=[]) ?arch distro ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master () =
135137
let img, tag = D.base_distro_tag ?arch distro in
136138
header ?arch distro @@ label (("distro_style", "apt") :: labels)
137139
@@ Linux.Apt.install "build-essential curl git libcap-dev sudo"
138140
@@ Linux.Git.init ()
139141
@@ install_bubblewrap_from_source ()
140142
@@ install_opam_from_source ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
141143
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
144+
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
142145
@@ from ~tag img
143146
@@ copy ~from:"0" ~src:["/usr/local/bin/bwrap"] ~dst:"/usr/bin/bwrap" ()
144147
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
145148
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
149+
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
146150
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
147151
@@ run "ln -fs /usr/share/zoneinfo/Europe/London /etc/localtime"
148152
@@ Linux.Apt.dev_packages ()
@@ -158,7 +162,7 @@ let apt_opam2 ?(labels=[]) ?arch distro ~hash_opam_2_0 ~hash_opam_2_1 () =
158162
159163
[enable_powertools] enables the PowerTools repository on CentOS 8 and above.
160164
This is needed to get most of *-devel packages frequently used by opam packages. *)
161-
let yum_opam2 ?(labels= []) ?arch ~yum_workaround ~enable_powertools ~hash_opam_2_0 ~hash_opam_2_1 distro () =
165+
let yum_opam2 ?(labels= []) ?arch ~yum_workaround ~enable_powertools ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master distro () =
162166
let img, tag = D.base_distro_tag ?arch distro in
163167
let workaround =
164168
if yum_workaround then
@@ -175,6 +179,7 @@ let yum_opam2 ?(labels= []) ?arch ~yum_workaround ~enable_powertools ~hash_opam_
175179
@@ install_bubblewrap_from_source ()
176180
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
177181
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
182+
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
178183
@@ from ~tag img
179184
@@ run "yum --version || dnf install -y yum"
180185
@@ workaround
@@ -184,6 +189,7 @@ let yum_opam2 ?(labels= []) ?arch ~yum_workaround ~enable_powertools ~hash_opam_
184189
@@ copy ~from:"0" ~src:["/usr/local/bin/bwrap"] ~dst:"/usr/bin/bwrap" ()
185190
@@ copy ~from:"0" ~src:["/usr/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
186191
@@ copy ~from:"0" ~src:["/usr/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
192+
@@ copy ~from:"0" ~src:["/usr/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
187193
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
188194
@@ run
189195
"sed -i.bak '/LC_TIME LC_ALL LANGUAGE/aDefaults env_keep += \"OPAMYES OPAMJOBS OPAMVERBOSE\"' /etc/sudoers"
@@ -192,42 +198,46 @@ let yum_opam2 ?(labels= []) ?arch ~yum_workaround ~enable_powertools ~hash_opam_
192198

193199

194200
(* Zypper based Dockerfile *)
195-
let zypper_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 distro () =
201+
let zypper_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master distro () =
196202
let img, tag = D.base_distro_tag ?arch distro in
197203
header ?arch distro @@ label (("distro_style", "zypper") :: labels)
198204
@@ Linux.Zypper.dev_packages ()
199205
@@ Linux.Git.init ()
200206
@@ install_bubblewrap_from_source ()
201207
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
202208
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
209+
@@ install_opam_from_source ~prefix:"/usr" ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
203210
@@ from ~tag img
204211
@@ Linux.Zypper.dev_packages ()
205212
@@ copy ~from:"0" ~src:["/usr/local/bin/bwrap"] ~dst:"/usr/bin/bwrap" ()
206213
@@ copy ~from:"0" ~src:["/usr/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
207214
@@ copy ~from:"0" ~src:["/usr/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
215+
@@ copy ~from:"0" ~src:["/usr/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
208216
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
209217
@@ Linux.Zypper.add_user ~uid:1000 ~sudo:true "opam"
210218
@@ install_bubblewrap_wrappers @@ Linux.Git.init ()
211219

212220
(* Pacman based Dockerfile *)
213-
let pacman_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 distro () =
221+
let pacman_opam2 ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master distro () =
214222
let img, tag = D.base_distro_tag ?arch distro in
215223
header ?arch distro @@ label (("distro_style", "pacman") :: labels)
216224
@@ Linux.Pacman.dev_packages ()
217225
@@ Linux.Git.init ()
218226
@@ install_opam_from_source ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
219227
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
228+
@@ install_opam_from_source ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
220229
@@ run "strip /usr/local/bin/opam*"
221230
@@ from ~tag img
222231
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
223232
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
233+
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
224234
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
225235
@@ Linux.Pacman.dev_packages ()
226236
@@ Linux.Pacman.add_user ~uid:1000 ~sudo:true "opam"
227237
@@ install_bubblewrap_wrappers @@ Linux.Git.init ()
228238

229239
(* Cygwin based Dockerfile *)
230-
let cygwin_opam2 ?win10_revision ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 distro () =
240+
let cygwin_opam2 ?win10_revision ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master distro () =
231241
let img, tag = D.base_distro_tag ?arch distro in
232242
let cyg = Windows.Cygwin.{ default with args = "--allow-test-packages" :: default.args } in
233243
header ?win10_revision ?arch distro @@ label (("distro_style", "cygwin") :: labels)
@@ -236,10 +246,12 @@ let cygwin_opam2 ?win10_revision ?(labels=[]) ?arch ~hash_opam_2_0 ~hash_opam_2_
236246
@@ Windows.Cygwin.Git.init ()
237247
@@ install_opam_from_source_cygwin ~add_default_link:false ~branch:"2.0" ~hash:hash_opam_2_0 ()
238248
@@ install_opam_from_source_cygwin ~add_default_link:false ~enable_0install_solver:true ~branch:"2.1" ~hash:hash_opam_2_1 ()
249+
@@ install_opam_from_source_cygwin ~add_default_link:false ~enable_0install_solver:true ~branch:"master" ~hash:hash_opam_master ()
239250
@@ run "strip /usr/local/bin/opam*"
240251
@@ from ~tag img
241252
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.0"] ~dst:"/usr/bin/opam-2.0" ()
242253
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-2.1"] ~dst:"/usr/bin/opam-2.1" ()
254+
@@ copy ~from:"0" ~src:["/usr/local/bin/opam-master"] ~dst:"/usr/bin/opam-dev" ()
243255
@@ run "ln /usr/bin/opam-2.0 /usr/bin/opam"
244256
@@ Windows.Cygwin.(setup ~cyg ~extra:(cygwin_packages ()) ())
245257
@@ Windows.Cygwin.Git.init ()
@@ -278,17 +290,17 @@ let windows_opam2 ?win10_revision ?winget ?(labels=[]) ?arch distro () =
278290
@@ Windows.Cygwin.Git.init ()
279291
@@ Windows.cleanup ()
280292

281-
let gen_opam2_distro ?win10_revision ?winget ?(clone_opam_repo=true) ?arch ?labels ~hash_opam_2_0 ~hash_opam_2_1 d =
293+
let gen_opam2_distro ?win10_revision ?winget ?(clone_opam_repo=true) ?arch ?labels ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d =
282294
let fn = match D.package_manager d with
283-
| `Apk -> apk_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 d ()
284-
| `Apt -> apt_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 d ()
295+
| `Apk -> apk_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
296+
| `Apt -> apt_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
285297
| `Yum ->
286298
let yum_workaround = match d with `CentOS `V7 -> true | _ -> false in
287299
let enable_powertools = match d with `CentOS (`V6 | `V7) -> false | `CentOS _ -> true | _ -> false in
288-
yum_opam2 ?labels ?arch ~yum_workaround ~enable_powertools ~hash_opam_2_0 ~hash_opam_2_1 d ()
289-
| `Zypper -> zypper_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 d ()
290-
| `Pacman -> pacman_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 d ()
291-
| `Cygwin -> cygwin_opam2 ?win10_revision ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 d ()
300+
yum_opam2 ?labels ?arch ~yum_workaround ~enable_powertools ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
301+
| `Zypper -> zypper_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
302+
| `Pacman -> pacman_opam2 ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
303+
| `Cygwin -> cygwin_opam2 ?win10_revision ?labels ?arch ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d ()
292304
| `Windows -> windows_opam2 ?win10_revision ?winget ?labels ?arch d ()
293305
in
294306
let clone = if clone_opam_repo then

src-opam/dockerfile_opam.mli

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ val gen_opam2_distro :
4747
?labels:(string * string) list ->
4848
hash_opam_2_0:string ->
4949
hash_opam_2_1:string ->
50+
hash_opam_master:string ->
5051
Dockerfile_distro.t
5152
-> string * Dockerfile.t
52-
(** [gen_opam2_distro ~hash_opam_2_0 ~hash_opam_2_1 d] will generate a Dockerfile
53+
(** [gen_opam2_distro ~hash_opam_2_0 ~hash_opam_2_1 ~hash_opam_master d] will generate a Dockerfile
5354
for Linux distribution [d] with opam 2.0 and opam 2.1, per hash given in parameter.
5455
@return a tuple of the Docker tag and the Dockerfile.
5556
If [clone_opam_repo] is true (the default) then the Dockerfile will also git

0 commit comments

Comments
 (0)