Skip to content

Commit 5e5f3f4

Browse files
committed
use safe mode to select log dir under opam root or keep default /tmp
1 parent f23e642 commit 5e5f3f4

File tree

4 files changed

+16
-32
lines changed

4 files changed

+16
-32
lines changed

src/client/opamClientConfig.ml

+6-3
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ let search_files = ["findlib"]
216216

217217
open OpamStd.Op
218218

219-
let opam_init ?root_dir ?strict ?solver =
219+
let opam_init ?root_dir ?safe_mode ?strict ?solver =
220220
let open OpamStd.Option.Op in
221221

222222
(* (i) get root dir *)
@@ -262,14 +262,17 @@ let opam_init ?root_dir ?strict ?solver =
262262
let log_dir =
263263
OpamStd.Option.map OpamFilename.Dir.to_string @@
264264
if log_dir = None && initialised
265-
&& OpamCoreConfig.E.logs () = None then
265+
&& OpamCoreConfig.E.logs () = None
266+
&& not ((OpamCoreConfig.E.safe () = Some true)
267+
|| (safe_mode = Some true))
268+
then
266269
(* fixme: in order to not revert [OPAMLOGS] value,
267270
we need to check it here *)
268271
Some (OpamPath.log root)
269272
else log_dir
270273
in
271274
(fun () -> ()) |>
272-
OpamCoreConfig.initk ?log_dir |>
275+
OpamCoreConfig.initk ?safe_mode ?log_dir |>
273276
OpamRepositoryConfig.initk |>
274277
OpamSolverConfig.initk ?solver |>
275278
OpamStateConfig.initk ~root_dir:root ~root_from |>

src/client/opamClientConfig.mli

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ val search_files: string list
9999
sub-libraries, overriding the given arguments *)
100100
val opam_init:
101101
?root_dir:OpamTypes.dirname ->
102+
?safe_mode:bool ->
102103
?strict:bool ->
103104
?solver:(module OpamCudfSolver.S) Lazy.t ->
104105
?skip_version_checks:bool ->
@@ -165,7 +166,6 @@ val opam_init:
165166
?disp_status_line:OpamStd.Config.when_ ->
166167
?confirm_level:OpamStd.Config.answer ->
167168
?yes:bool option ->
168-
?safe_mode:bool ->
169169
?keep_log_dir:bool ->
170170
?errlog_length:int ->
171171
?merged_output:bool ->

src/core/opamCoreConfig.mli

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ module E : sig
3333
val confirmlevel: unit -> OpamStd.Config.answer option
3434
val debug: unit -> int option
3535
val logs: unit -> string option
36+
val safe: unit -> bool option
3637
val yes: unit -> bool option
3738
end
3839

tests/reftests/safe.test

+8-28
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,12 @@ Processing 1/3: [varos.dev: rsync]
3636
-> retrieved varos.dev (file://${BASEDIR}/varos)
3737
Processing 2/3: [varos: make all]
3838
+ make "all" (CWD=${BASEDIR}/OPAM/varos/.opam-switch/build/varos.dev)
39-
- Fatal error:
40-
- ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-809688-c518ec.out: Read-only file system
41-
- echo
42-
-
39+
- echo n/a
40+
- n/a
4341
- ${OPAM} var os-version --safe
44-
- Fatal error:
45-
- ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-809690-7328ea.out: Read-only file system
46-
- make: *** [Makefile:3: all] Error 99
47-
[ERROR] The compilation of varos.dev failed at "make all".
48-
49-
##% output ###
50-
# Fatal error:
51-
# ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-809688-c518ec.out: Read-only file system
52-
# echo
53-
#
54-
# ${OPAM} var os-version --safe
55-
# Fatal error:
56-
# ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-809690-7328ea.out: Read-only file system
57-
# make: *** [Makefile:3: all] Error 99
58-
59-
60-
61-
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
62-
+- The following actions failed
63-
| - build varos dev
64-
+-
65-
- No changes have been performed
66-
'${OPAM} install varos -v' failed.
67-
# Return code 31 #
42+
- n/a
43+
- echo done
44+
- done
45+
-> compiled varos.dev
46+
-> installed varos.dev
47+
Done.

0 commit comments

Comments
 (0)