Skip to content

Commit

Permalink
use safe mode to select log dir under opam root or keep default /tmp
Browse files Browse the repository at this point in the history
  • Loading branch information
rjbou committed Feb 27, 2025
1 parent 357088b commit 3e7b31d
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 28 deletions.
9 changes: 6 additions & 3 deletions src/client/opamClientConfig.ml
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ let search_files = ["findlib"]

open OpamStd.Op

let opam_init ?root_dir ?strict ?solver =
let opam_init ?root_dir ?safe_mode ?strict ?solver =
let open OpamStd.Option.Op in

(* (i) get root dir *)
Expand Down Expand Up @@ -262,14 +262,17 @@ let opam_init ?root_dir ?strict ?solver =
let log_dir =
OpamStd.Option.map OpamFilename.Dir.to_string @@
if log_dir = None && initialised
&& OpamCoreConfig.E.logs () = None then
&& OpamCoreConfig.E.logs () = None
&& not ((OpamCoreConfig.E.safe () = Some true)
|| (safe_mode = Some true))
then
(* fixme: in order to not revert [OPAMLOGS] value,
we need to check it here *)
Some (OpamPath.log root)
else log_dir
in
(fun () -> ()) |>
OpamCoreConfig.initk ?log_dir |>
OpamCoreConfig.initk ?safe_mode ?log_dir |>
OpamRepositoryConfig.initk |>
OpamSolverConfig.initk ?solver |>
OpamStateConfig.initk ~root_dir:root ~root_from |>
Expand Down
2 changes: 1 addition & 1 deletion src/client/opamClientConfig.mli
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ val search_files: string list
sub-libraries, overriding the given arguments *)
val opam_init:
?root_dir:OpamTypes.dirname ->
?safe_mode:bool ->
?strict:bool ->
?solver:(module OpamCudfSolver.S) Lazy.t ->
?skip_version_checks:bool ->
Expand Down Expand Up @@ -165,7 +166,6 @@ val opam_init:
?disp_status_line:OpamStd.Config.when_ ->
?confirm_level:OpamStd.Config.answer ->
?yes:bool option ->
?safe_mode:bool ->
?keep_log_dir:bool ->
?errlog_length:int ->
?merged_output:bool ->
Expand Down
1 change: 1 addition & 0 deletions src/core/opamCoreConfig.mli
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ module E : sig
val confirmlevel: unit -> OpamStd.Config.answer option
val debug: unit -> int option
val logs: unit -> string option
val safe: unit -> bool option
val yes: unit -> bool option
end

Expand Down
30 changes: 6 additions & 24 deletions tests/reftests/safe.test
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,13 @@ Processing 1/3: [varos.dev: rsync]
-> retrieved varos.dev (file://${BASEDIR}/varos)
Processing 2/3: [varos: make all]
+ ${BASEDIR}/OPAM/opam-init/hooks/sandbox.sh "build" "make" "all" (CWD=${BASEDIR}/OPAM/varos/.opam-switch/build/varos.dev)
- Fatal error:
- ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-530478-8d1a57.out: Read-only file system
- echo
-
- echo n/a
- n/a
- /bin/true
Processing 2/3: [varos: make test]
+ ${BASEDIR}/OPAM/opam-init/hooks/sandbox.sh "build" "make" "test" (CWD=${BASEDIR}/OPAM/varos/.opam-switch/build/varos.dev)
- ${OPAM} var os-version --safe
- Fatal error:
- ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-530498-01ecae.out: Read-only file system
- make: *** [Makefile:6: test] Error 99
[ERROR] The compilation of varos.dev failed at "make test".

##% output ###
# ${OPAM} var os-version --safe
# Fatal error:
# ${OPAM}: "open" failed on ${BASEDIR}/OPAM/log/log-530498-01ecae.out: Read-only file system
# make: *** [Makefile:6: test] Error 99



<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
+- The following actions failed
| - build varos dev
+-
- No changes have been performed
'${OPAM} install varos -v --with-test' failed.
# Return code 31 #
- n/a
-> compiled varos.dev
-> installed varos.dev
Done.

0 comments on commit 3e7b31d

Please sign in to comment.