From 68223796c5853ee7d90bcad1edf8463128ddcbfb Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Mon, 23 Jun 2025 11:18:46 +0200 Subject: [PATCH 01/18] reftest: add track info to dot install --- tests/reftests/dot-install.test | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/reftests/dot-install.test b/tests/reftests/dot-install.test index ac0310cc329..bce1841ea22 100644 --- a/tests/reftests/dot-install.test +++ b/tests/reftests/dot-install.test @@ -66,7 +66,7 @@ bonjour saluton ### OPAMYES=1 ### opam switch create inst --empty -### OPAMPRECISETRACKING=1 OPAMDEBUGSECTIONS="TRACK ACTION" OPAMDEBUG=-1 +### OPAMPRECISETRACKING=1 OPAMDEBUGSECTIONS="TRACK ACTION" OPAMDEBUG=-2 ### opam install nodot The following actions will be performed: === install 1 package @@ -75,6 +75,7 @@ The following actions will be performed: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ACTION download_package: nodot.~dev ACTION prepare_package_source: nodot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/nodot.~dev +TRACK before install: 16 elements scanned in 0.000s ACTION Installing nodot.~dev. ACTION creating ${BASEDIR}/OPAM/inst/share/nodot @@ -100,6 +101,7 @@ The following actions will be performed: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ACTION download_package: dot.~dev ACTION prepare_package_source: dot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/dot.~dev +TRACK before install: 1 elements scanned in 0.000s ACTION Installing dot.~dev. ACTION creating ${BASEDIR}/OPAM/inst/share/dot @@ -127,6 +129,7 @@ ACTION download_package: dot.~dev ACTION prepare_package_source: dot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/dot.~dev ACTION Removing dot.~dev -> removed dot.~dev +TRACK before install: 0 elements scanned in 0.000s Installing dot.~dev. TRACK after install: 0 elements, 0 added, scanned in 0.000s -> installed dot.~dev @@ -195,6 +198,7 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ACTION download_package: dot.~dev ACTION prepare_package_source: dot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/dot.~dev +TRACK before install: 0 elements scanned in 0.000s Installing dot.~dev. TRACK after install: 0 elements, 0 added, scanned in 0.000s -> installed dot.~dev From a43d7a2a038f90b3cc5db3ef3aa67e633d4c00c1 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 17 Apr 2024 16:58:44 +0200 Subject: [PATCH 02/18] reftest: add dryrun test --- tests/reftests/dryrun.test | 1982 ++++++++++++++++++++++++++++++++++++ tests/reftests/dune.inc | 21 + 2 files changed, 2003 insertions(+) create mode 100644 tests/reftests/dryrun.test diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test new file mode 100644 index 00000000000..7ab0934533c --- /dev/null +++ b/tests/reftests/dryrun.test @@ -0,0 +1,1982 @@ +N0REP0 +### ::: Setup +### OPAMYES=1 +### OPAMDEBUGSECTIONS="SYSTEM FILE(config) FILE(repos-config) FILE(repo) FILE(switch-config) FILE(switch-state) FILE(opam) FILE(environment) FILE(package-ve" +### rm -rf OPAM +### +default-invariant: ["foo"] +default-compiler: ["foo"] +### opam init --config opamrc --bypass-check -na --bare ./REPO +Configuring from ${BASEDIR}/opamrc and then from built-in defaults. + +<><> Fetching repository information ><><><><><><><><><><><><><><><><><><><><><> +[default] Initialised +### +opam-version: "2.0" +build: [ "touch" name ] +install: [ "cp" name "%{lib}%/" ] +remove: [ "rm" name "%{lib}%/" ] +### +opam-version: "2.0" +build: [ "touch" "bar" ] +install: [ "cp" "bar" "%{lib}%/" ] +remove: [ "true" ] +### +n=$1 +v=$2 +arch=$3 +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/$n/$n.$v/opam +url { + src:"file://$basedir/$arch" + checksum: "md5=$(openssl md5 $arch | cut -f2 -d' ')" + } +EOF +### +case "$1" in + init) + cp -R OPAM initial + ;; + unpack) + rm -rf OPAM + cp -R initial OPAM + rm -rf nip + rm -rf REPO/packages/nip + ;; + *) + echo "init or unpack" + exit 2 + ;; +esac +### +rm -rf previous +cp -R OPAM previous +rm -rf previous-local +opamd="$1"/_opam +if test -d $opamd; then + cp -R $opamd previous-local +fi +### +.git +log +### +set -u +previous=$1 +current=$2 +drcode=0 +diff --exclude-from="x-diff" -r $previous $current || drcode=$? +find $previous -name .git | cut -f 2- -d '/' > gitprevious +find $current -name .git | cut -f 2- -d '/' > gitcurrent +gitDiff=$(diff gitprevious gitcurrent) +gdrcode=$? +if [ "$gdrcode" -ne 0 ]; then + echo "diff gitPrevious gitCurrent" + echo "$gitDiff" +fi +test "$(( $drcode + $gdrcode ))" -eq 0 +### +sh post-check.sh previous OPAM +### +set -u +opamd="$1"/_opam +if test -d previous-local; then + if test -d $opamd; then + sh post-check.sh previous-local $opamd + else + echo "Local switch disappeared *woosh*" + find previous-local | sort + exit 3 + fi +else + if test -d $opamd; then + echo "No previous local switch, current contains:" + find $opamd | sort + exit 2 + fi +fi +### sh initial.sh init +### ::: Tests +### :I: Switch +### :I:1: Switch creation +### :I:1:a: Global switch creation +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch create dr --dry-run foo | sed-cmd touch cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1 +Processing 2/3: [foo: touch foo] ++ touch "foo" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) +-> compiled foo.1 +Processing 3/3: [foo: cp foo] ++ cp "foo" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) +Installing foo.1. +-> installed foo.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/packages +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +SYSTEM LOCK (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM: dr +# Return code 1 # +### :I:1:b: Local switch creation +### sh initial.sh unpack +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch create ./nip --dry-run | sed-cmd touch cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1 +SYSTEM mkdir ${BASEDIR}/nip +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1 +Processing 2/3: [foo: touch foo] ++ touch "foo" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) +-> compiled foo.1 +Processing 3/3: [foo: cp foo] ++ cp "foo" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) +Installing foo.1. +-> installed foo.1 +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +SYSTEM LOCK (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +### sh post-local.sh nip +No previous local switch, current contains: +nip/_opam +nip/_opam/.opam-switch +nip/_opam/.opam-switch/build +nip/_opam/.opam-switch/build/foo.1 +nip/_opam/.opam-switch/packages +nip/_opam/.opam-switch/packages/cache +# Return code 2 # +### :I:1:c: Local switch creation with package +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch create ./nip --dry-run +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] +The following actions will be simulated: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev +Installing nip.dev. +-> installed nip.dev +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +SYSTEM LOCK (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +### sh post-local.sh nip +No previous local switch, current contains: +nip/_opam +nip/_opam/.opam-switch +nip/_opam/.opam-switch/build +nip/_opam/.opam-switch/build/nip.dev +nip/_opam/.opam-switch/packages +nip/_opam/.opam-switch/packages/cache +# Return code 2 # +### :I:1:d: Local switch creation with deps only +### sh initial.sh unpack +### +opam-version: "2.0" +depends: "bar" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch create ./nip --deps-only --dry-run | sed-cmd touch cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] +The following actions will be simulated: +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/bar.1 +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/bar.1 +Processing 2/3: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) +-> compiled bar.1 +Processing 3/3: [bar: cp bar] ++ cp "bar" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +SYSTEM LOCK (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +### sh post-local.sh nip +No previous local switch, current contains: +nip/_opam +nip/_opam/.opam-switch +nip/_opam/.opam-switch/build +nip/_opam/.opam-switch/build/bar.1 +nip/_opam/.opam-switch/packages +nip/_opam/.opam-switch/packages/cache +# Return code 2 # +### :I:2: Switch removal +### :I:2:a: Global switch removal +### sh initial.sh unpack +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch remove dr --dry-run +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +Switch dr and all its packages will be wiped. Are you sure? [Y/n] y +FILE(config) Wrote ${BASEDIR}/OPAM/config atomically in 0.000s +SYSTEM rmdir ${BASEDIR}/OPAM/dr +SYSTEM rm ${BASEDIR}/OPAM/dr/lib/foo +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1/foo +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/install/foo.changes +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/lock +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/foo.1/opam +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/switch-config +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/switch-state +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/environment +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +### sh post.sh +diff '--exclude-from=x-diff' -r previous/config OPAM/config +4,5d3 +< installed-switches: "dr" +< switch: "dr" +Only in previous: dr +# Return code 1 # +### :I:2:b: Local switch removal +### sh initial.sh unpack +### +tauto +### opam switch create ./nip + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh nip +### OPAMVERBOSE=2 OPAMDEBUG=-5 OPAMDEBUGSECTIONS="" opam switch remove ./nip --dry-run +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +CLI Parsing CLI version 2.6 +GSTATE LOAD-GLOBAL-STATE @ ${BASEDIR}/OPAM +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SWITCH remove switch=${BASEDIR}/nip +FILE(switch-config) Read ${BASEDIR}/nip/_opam/.opam-switch/switch-config in 0.000s +Switch ${BASEDIR}/nip and all its packages will be wiped. Are you sure? [Y/n] y +FILE(config) Wrote ${BASEDIR}/OPAM/config atomically in 0.000s +SYSTEM rmdir ${BASEDIR}/nip/_opam +SYSTEM rm ${BASEDIR}/nip/_opam/lib/foo +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1/foo +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/install/foo.changes +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/lock +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/packages/foo.1/opam +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/packages/cache +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/switch-config +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/switch-state +SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/environment +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) +### sh post.sh +diff '--exclude-from=x-diff' -r previous/config OPAM/config +4d3 +< installed-switches: "${BASEDIR}/nip" +# Return code 1 # +### sh post-local.sh nip +Local switch disappeared *woosh* +previous-local +previous-local/.opam-switch +previous-local/.opam-switch/build +previous-local/.opam-switch/build/foo.1 +previous-local/.opam-switch/build/foo.1/foo +previous-local/.opam-switch/config +previous-local/.opam-switch/environment +previous-local/.opam-switch/install +previous-local/.opam-switch/install/foo.changes +previous-local/.opam-switch/lock +previous-local/.opam-switch/packages +previous-local/.opam-switch/packages/cache +previous-local/.opam-switch/packages/foo.1 +previous-local/.opam-switch/packages/foo.1/opam +previous-local/.opam-switch/switch-config +previous-local/.opam-switch/switch-state +previous-local/bin +previous-local/doc +previous-local/lib +previous-local/lib/foo +previous-local/lib/stublibs +previous-local/lib/toplevel +previous-local/man +previous-local/man/man1 +previous-local/man/man1M +previous-local/man/man2 +previous-local/man/man3 +previous-local/man/man4 +previous-local/man/man5 +previous-local/man/man6 +previous-local/man/man7 +previous-local/man/man9 +previous-local/sbin +# Return code 3 # +### :II: Package installation +### sh initial.sh unpack +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install bar --dry-run | sed-cmd touch cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +The following actions will be simulated: +=== install 1 package + - install bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +Processing 2/3: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +-> compiled bar.1 +Processing 3/3: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: bar.1 +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +# Return code 1 # +### :III: Package removal +### sh initial.sh unpack +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam install bar +The following actions will be performed: +=== install 1 package + - install bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed bar.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam remove bar --dry-run | sed-cmd true +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +The following actions will be simulated: +=== remove 1 package + - remove bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +Processing 2/2: [bar: true] ++ true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) +-> removed bar.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in previous/dr/.opam-switch/packages: bar.1 +Only in previous/dr/.opam-switch/packages: cache +Only in OPAM/dr/.opam-switch: remove +# Return code 1 # +### :III:a: Package removal --force +### sh initial.sh unpack +### opam switch create dr --empty +### opam install foo +The following actions will be performed: +=== install 1 package + - install foo 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam remove bar --force --dry-run | sed-cmd true +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-config) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/switch-config atomically in 0.000s +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +[NOTE] Forcing removal of (uninstalled) bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +[bar: true] ++ true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) +-> removed bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in previous/dr/.opam-switch/packages: cache +Only in OPAM/dr/.opam-switch: remove +# Return code 1 # +### :IV: Package reinstall +### sh initial.sh unpack +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam install bar +The following actions will be performed: +=== install 1 package + - install bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed bar.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam reinstall bar --dry-run | sed-cmd touch true cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +The following actions will be simulated: +=== recompile 1 package + - recompile bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1/bar +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +Processing 2/4: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +-> compiled bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +Processing 3/4: [bar: true] ++ true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) +-> removed bar.1 +Processing 4/4: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in previous/dr/.opam-switch/build/bar.1: bar +Only in OPAM/dr/.opam-switch: remove +# Return code 1 # +### :V: Update +### sh initial.sh unpack +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam update --dry-run +opam: unknown option '--dry-run'. +Usage: opam update [OPTION]… [NAMES]… +Try 'opam update --help' or 'opam --help' for more information. +# Return code 2 # +### sh post.sh +### :VI: Upgrade +### sh initial.sh unpack +### +opam-version: "2.0" +build: [ "touch" "bar" ] +install: [ "cp" "bar" "%{lib}%/" ] +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam install bar.1 +The following actions will be performed: +=== install 1 package + - install bar 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed bar.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam upgrade --dry-run | sed-cmd touch true cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +The following actions will be simulated: +=== upgrade 1 package + - upgrade bar 1 to 2 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2 +Processing 3/5: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) +-> compiled bar.2 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +Processing 4/5: [bar: true] ++ true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) +-> removed bar.1 +Processing 5/5: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) +Installing bar.2. +-> installed bar.2 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch/build: bar.2 +Only in previous/dr/.opam-switch/packages: bar.1 +Only in previous/dr/.opam-switch/packages: cache +Only in OPAM/dr/.opam-switch: remove +# Return code 1 # +### :VII: Pinning +### :VII:1: Pinning with no action +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin ./nip --no-action --dry-run | sed-cmd rsync | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +Processing 1/1: [nip: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- a-file +- nip.opam +- +SYSTEM rmdir ${OPAMTMP} +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM read ${BASEDIR}/nip/nip.opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +nip is now pinned to file://${BASEDIR}/nip (version dev) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch: overlay +Only in OPAM/dr/.opam-switch: sources +# Return code 1 # +### :VII:2: Pinning directory with opam file +### :VII:2:a: Pinning directory with opam file, no vcs +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin ./nip --dry-run | sed-cmd rsync | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +Processing 1/1: [nip: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- a-file +- nip.opam +- +SYSTEM rmdir ${OPAMTMP} +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM read ${BASEDIR}/nip/nip.opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +nip is now pinned to file://${BASEDIR}/nip (version dev) + +The following actions will be simulated: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip.dev +Only in OPAM/dr/.opam-switch: overlay +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: sources +# Return code 1 # +### :VII:2:b: Pinning directory with opam file, vcs +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### git -C nip init -q --initial-branch=master +### git -C nip config core.autocrlf false +### git -C nip add -A +### git -C nip commit -qm init' +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin ./nip --dry-run | sed-cmd git | grep -v "HEAD is now" | grep -v "(mkdir|copy|copydir|rm) .*\\.git." ++ git "symbolic-ref" "--quiet" "--short" "HEAD" (CWD=${BASEDIR}/nip) +- master +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +Processing 1/1: [nip: git] ++ git "init" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) +- Initialized empty Git repository in ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/.git/ ++ git "config" "--local" "fetch.prune" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "config" "--local" "diff.noprefix" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "config" "--local" "core.autocrlf" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "config" "--local" "core.eol" "lf" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "config" "--local" "color.ui" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) +SYSTEM rmdir ${OPAMTMP} +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM read ${BASEDIR}/nip/nip.opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +nip is now pinned to git+file://${BASEDIR}/nip#master (version dev) + +The following actions will be simulated: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip.dev +Only in OPAM/dr/.opam-switch: overlay +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: sources +diff gitPrevious gitCurrent +0a1,2 +> dr/.opam-switch/sources/nip/.git +> dr/.opam-switch/build/nip.dev/.git +# Return code 1 # +### :VII:3: Pinning directory with no opam file, no vcs +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin nip ./nip --dry-run | sed-cmd rsync | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +[nip.1: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- a-file +- +SYSTEM rmdir ${OPAMTMP} +[nip.1] synchronised (file://${BASEDIR}/nip) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM read ${BASEDIR}/OPAM/repo/default/packages/nip/nip.1/opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +nip is now pinned to file://${BASEDIR}/nip (version 1) + +The following actions will be simulated: +=== install 1 package + - install nip 1 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1/a-file +Installing nip.1. +-> installed nip.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip.1 +Only in OPAM/dr/.opam-switch: overlay +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: sources +# Return code 1 # +### :VII:4: Version pinning +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### tar czf nip.tgz -C nip nip.opam a-file +### +opam-version: "2.0" +### sh add-url.sh nip 1 nip.tgz +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Now run 'opam upgrade' to apply any package updates. +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin nip 1 --dry-run | sed-cmd rsync +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +nip is now pinned to version 1 + +The following actions will be simulated: +=== install 1 package + - install nip 1 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 +Installing nip.1. +-> installed nip.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip.1 +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +# Return code 1 # +### :VII:5: Pinning with pin-depends +### sh initial.sh unpack +### +opam-version: "2.0" +### +opam-version: "2.0" +depends: "nip-d" +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> nip/nip.opam +pin-depends: [ "nip-d.1" "file://${basedir}/nip-d" ] +EOF +### sh add-pin-depend.sh +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin ./nip --dry-run | sed-cmd rsync | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +Processing 1/1: [nip: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- a-file +- nip.opam +- +SYSTEM rmdir ${OPAMTMP} +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +The following additional pinnings are required by nip.dev: + - nip-d.1 at file://${BASEDIR}/nip-d +Pin and install them? [Y/n] y +SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d +Processing 1/1: [nip-d: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d" +- nip-d.opam +- +SYSTEM rmdir ${OPAMTMP} +[NOTE] Package nip-d does not exist in opam repositories registered in the current switch. +SYSTEM mkdir ${OPAMTMP} +[nip-d.1: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d" +- +SYSTEM rmdir ${OPAMTMP} +[nip-d.1] synchronised (no changes) +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam in 0.000s +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d +SYSTEM read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d/opam +nip-d is now pinned to file://${BASEDIR}/nip-d (version 1) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM read ${BASEDIR}/nip/nip.opam +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +nip is now pinned to file://${BASEDIR}/nip (version dev) + +The following actions will be simulated: +=== install 2 packages + - install nip dev (pinned) + - install nip-d 1 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1/nip-d.opam +Installing nip-d.1. +-> installed nip-d.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip-d.1 +Only in OPAM/dr/.opam-switch/build: nip.dev +Only in OPAM/dr/.opam-switch: overlay +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: sources +# Return code 1 # +### :VII:6: Install a pinned package with working-dir that have changes +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### git -C nip init -q --initial-branch=master +### git -C nip config core.autocrlf false +### git -C nip add -A +### git -C nip commit -qm init' +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to git+file://${BASEDIR}/nip#master (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (no changes) +-> installed nip.dev +Done. +### +otuat +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --working-dir --dry-run | sed-cmd git rsync | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | 'rsync-files[^ "]*' -> 'rsync-files-xxx' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s +SYSTEM mkdir ${OPAMTMP} +Processing 1/1: [nip.dev: git] ++ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "submodule" "status" "--recursive" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ rsync "-rLptgoDvc" "--files-from" "${BASEDIR}/OPAM/log/rsync-files-xxx" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- another-file +- +SYSTEM rm ${BASEDIR}/OPAM/log/rsync-files-xxx +SYSTEM rmdir ${OPAMTMP} +[nip.dev] synchronised (git+file://${BASEDIR}/nip#master) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files +FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s + +The following actions will be simulated: +=== recompile 1 package + - recompile nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/another-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/another-file +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +-> removed nip.dev +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch/build/nip.dev: another-file +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam +1a2,3 +> name: "nip" +> version: "dev" +4,5d5 +< authors: "the testing team" +< homepage: "egapemoh" +6a7 +> authors: "the testing team" +8c9 +< dev-repo: "hg+https://pkg@op.am" +--- +> homepage: "egapemoh" +10,11c11 +< name: "nip" +< version: "dev" +--- +> dev-repo: "hg+https://pkg@op.am" +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: reinstall +Only in OPAM/dr/.opam-switch: remove +Only in OPAM/dr/.opam-switch/sources/nip: another-file +# Return code 1 # +### :VII:7: Pin removal +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to file://${BASEDIR}/nip (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (file://${BASEDIR}/nip) +-> installed nip.dev +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin remove ./nip --dry-run +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +Ok, nip is no longer pinned to file://${BASEDIR}/nip (version dev) +The following actions will be simulated: +=== remove 1 package + - remove nip dev + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +-> removed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/nip.dev +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/nip.dev/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip.dev +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in previous/dr/.opam-switch/overlay: nip +Only in previous/dr/.opam-switch/packages: cache +Only in previous/dr/.opam-switch/packages: nip.dev +Only in OPAM/dr/.opam-switch: remove +Only in previous/dr/.opam-switch/sources: nip +# Return code 1 # +### :VII:8: Pin triggered by install +### sh initial.sh unpack +### +opam-version: "2.0" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install ./nip --dry-run +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +The following actions will be simulated: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: nip.dev +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +# Return code 1 # +### :VII:9: Install local package with deps-only +### sh initial.sh unpack +### +opam-version: "2.0" +depends: "bar" +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install ./nip --deps-only --dry-run | sed-cmd touch cp +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s +FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s +The following actions will be simulated: +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +Processing 2/3: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +-> compiled bar.1 +Processing 3/3: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch: backup +Only in OPAM/dr/.opam-switch/build: bar.1 +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +# Return code 1 # +### :VII:10: Update of pin source triggered by install command +### :VII:10:a: Update of pin source triggered by install command, with changes +### :VII:10:a:1: Update of path-pin source triggered by install command, with changes +### sh initial.sh unpack +### +opam-version: "2.0" +build: [ "touch" "a-file" ] +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to file://${BASEDIR}/nip (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (file://${BASEDIR}/nip) +-> installed nip.dev +Done. +### +opam-version: "2.0" +build: [ "touch" "a-file-snd" ] +depends: "bar" +### +tautond +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd rsync touch cp | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s +SYSTEM mkdir ${OPAMTMP} +Processing 1/1: [nip.dev: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- a-file-snd +- nip.opam +- +SYSTEM rmdir ${OPAMTMP} +[nip.dev] synchronised (file://${BASEDIR}/nip) +[nip] Installing new package description from upstream file://${BASEDIR}/nip +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files +FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s + +The following actions will be simulated: +=== recompile 1 package + - recompile nip dev (pinned) +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +Processing 3/7: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +-> compiled bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +-> removed nip.dev +Processing 5/7: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file-snd -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file-snd +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +Processing 6/7: [nip: touch a-file-snd] ++ touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) +-> compiled nip.dev +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch/build: bar.1 +Only in OPAM/dr/.opam-switch/build/nip.dev: a-file-snd +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/build/nip.dev/nip.opam OPAM/dr/.opam-switch/build/nip.dev/nip.opam +10c10,11 +< build: ["touch" "a-file"] +--- +> build: ["touch" "a-file-snd"] +> depends: "bar" +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam +1a2,3 +> name: "nip" +> version: "dev" +4,5d5 +< authors: "the testing team" +< homepage: "egapemoh" +6a7 +> authors: "the testing team" +8c9 +< dev-repo: "hg+https://pkg@op.am" +--- +> homepage: "egapemoh" +10,12c11,13 +< build: ["touch" "a-file"] +< name: "nip" +< version: "dev" +--- +> depends: ["bar"] +> build: ["touch" "a-file-snd"] +> dev-repo: "hg+https://pkg@op.am" +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: reinstall +Only in OPAM/dr/.opam-switch: remove +Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam +10c10,11 +< build: ["touch" "a-file"] +--- +> build: ["touch" "a-file-snd"] +> depends: "bar" +# Return code 1 # +### opam upgrade | unordered +The following actions will be performed: +=== recompile 1 package + - recompile nip dev (pinned) [upstream or system changes] +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed bar.1 +-> retrieved nip.dev (no changes) +-> removed nip.dev +-> installed nip.dev +Done. +### :VII:10:a:2: Update of git-pin source triggered by install command, with changes +### sh initial.sh unpack +### +opam-version: "2.0" +build: [ "touch" "a-file" ] +### +tauto +### git -C nip init -q --initial-branch=master +### git -C nip config core.autocrlf false +### git -C nip add -A +### git -C nip commit -qm init' +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to git+file://${BASEDIR}/nip#master (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (no changes) +-> installed nip.dev +Done. +### +opam-version: "2.0" +build: [ "touch" "a-file-snd" ] +depends: "bar" +### +tautond +### git -C nip add -A +### git -C nip commit -qm 'update' +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd git touch cp | grep -v '- ./' | grep -v "HEAD is now" | grep -v "(mkdir|copy|copydir|rm) .*\\.git." +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s +Processing 1/1: ++ git "symbolic-ref" "--quiet" "--short" "HEAD" (CWD=${BASEDIR}/nip) +- master ++ git "diff" "--no-ext-diff" "--quiet" "HEAD" (CWD=${BASEDIR}/nip) ++ git "ls-files" "--others" "--exclude-standard" (CWD=${BASEDIR}/nip) +SYSTEM mkdir ${OPAMTMP} +Processing 1/1: [nip.dev: git] ++ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) +SYSTEM rmdir ${OPAMTMP} +[nip.dev] synchronised (git+file://${BASEDIR}/nip#master) +[nip] Installing new package description from upstream git+file://${BASEDIR}/nip#master +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files +FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s + +The following actions will be simulated: +=== recompile 1 package + - recompile nip dev (pinned) +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 +Processing 3/7: [bar: touch bar] ++ touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +-> compiled bar.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +-> removed nip.dev +Processing 5/7: [bar: cp bar] ++ cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) +Installing bar.1. +-> installed bar.1 +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file-snd -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file-snd +SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam +Processing 6/7: [nip: touch a-file-snd] ++ touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) +-> compiled nip.dev +Installing nip.dev. +-> installed nip.dev +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) +SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev +Done. +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +Only in OPAM/dr/.opam-switch/build: bar.1 +Only in OPAM/dr/.opam-switch/build/nip.dev: a-file-snd +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/build/nip.dev/nip.opam OPAM/dr/.opam-switch/build/nip.dev/nip.opam +10c10,11 +< build: ["touch" "a-file"] +--- +> build: ["touch" "a-file-snd"] +> depends: "bar" +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam +1a2,3 +> name: "nip" +> version: "dev" +4,5d5 +< authors: "the testing team" +< homepage: "egapemoh" +6a7 +> authors: "the testing team" +8c9 +< dev-repo: "hg+https://pkg@op.am" +--- +> homepage: "egapemoh" +10,12c11,13 +< build: ["touch" "a-file"] +< name: "nip" +< version: "dev" +--- +> depends: ["bar"] +> build: ["touch" "a-file-snd"] +> dev-repo: "hg+https://pkg@op.am" +Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ +Only in OPAM/dr/.opam-switch: reinstall +Only in OPAM/dr/.opam-switch: remove +Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd +diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam +10c10,11 +< build: ["touch" "a-file"] +--- +> build: ["touch" "a-file-snd"] +> depends: "bar" +# Return code 1 # +### opam upgrade | unordered +The following actions will be performed: +=== recompile 1 package + - recompile nip dev (pinned) [upstream or system changes] +=== install 1 package + - install bar 1 [required by nip] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (no changes) +-> removed nip.dev +-> installed bar.1 +-> installed nip.dev +Done. +### :VII:10:b: Update of pin source triggered by install command, with no changes +### :VII:10:b:1: Update of path-pin source triggered by install command, with no changes +### sh initial.sh unpack +### +opam-version: "2.0" +build: [ "touch" "a-file" ] +### +tauto +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to file://${BASEDIR}/nip (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (file://${BASEDIR}/nip) +-> installed nip.dev +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd rsync | grep -v '- ./' +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s +SYSTEM mkdir ${OPAMTMP} +Processing 1/1: [nip.dev: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" +- +SYSTEM rmdir ${OPAMTMP} +[nip.dev] synchronised (no changes) + +[NOTE] Package nip is already installed (current version is dev). +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +### opam upgrade | unordered +Already up-to-date. +Nothing to do. +### :VII:10:b:2: Update of git-pin source triggered by install command, with no changes +### sh initial.sh unpack +### +opam-version: "2.0" +build: [ "touch" "a-file" ] +### +tauto +### git -C nip init -q --initial-branch=master +### git -C nip config core.autocrlf false +### git -C nip add -A +### git -C nip commit -qm init' +### opam switch create dr foo + +<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><> +Switch invariant: ["foo"] + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed foo.1 +Done. +### opam pin ./nip +[NOTE] Package nip does not exist in opam repositories registered in the current switch. +nip is now pinned to git+file://${BASEDIR}/nip#master (version dev) + +The following actions will be performed: +=== install 1 package + - install nip dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved nip.dev (no changes) +-> installed nip.dev +Done. +### sh pre.sh +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd git | grep -v '- ./' | grep -v "HEAD is now" +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) +FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s +FILE(repos-config) Read ${BASEDIR}/OPAM/repo/repos-config in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (read => none) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => write) +FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-config in 0.000s +FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) +FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s +FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s +Processing 1/1: ++ git "symbolic-ref" "--quiet" "--short" "HEAD" (CWD=${BASEDIR}/nip) +- master ++ git "diff" "--no-ext-diff" "--quiet" "HEAD" (CWD=${BASEDIR}/nip) ++ git "ls-files" "--others" "--exclude-standard" (CWD=${BASEDIR}/nip) +SYSTEM mkdir ${OPAMTMP} +Processing 1/1: [nip.dev: git] ++ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "submodule" "status" "--recursive" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) +SYSTEM rmdir ${OPAMTMP} +[nip.dev] synchronised (no changes) + +[NOTE] Package nip is already installed (current version is dev). +SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) +SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export +SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) +SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) +### sh post.sh +### opam upgrade | unordered +Already up-to-date. +Nothing to do. diff --git a/tests/reftests/dune.inc b/tests/reftests/dune.inc index c7e2640d96d..f7841ea2573 100644 --- a/tests/reftests/dune.inc +++ b/tests/reftests/dune.inc @@ -566,6 +566,27 @@ %{targets} (run ./run.exe %{exe:../../src/client/opamMain.exe.exe} %{dep:download.test} %{read-lines:testing-env})))) +(rule + (alias reftest-dryrun) + (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (action + (diff dryrun.test dryrun.out))) + +(alias + (name reftest) + (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (deps (alias reftest-dryrun))) + +(rule + (targets dryrun.out) + (deps root-N0REP0) + (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (package opam) + (action + (with-stdout-to + %{targets} + (run ./run.exe %{exe:../../src/client/opamMain.exe.exe} %{dep:dryrun.test} %{read-lines:testing-env})))) + (rule (alias reftest-effectively-equal) (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) From 50ef927290a5876b3853886e07a74f48d0b17f00 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Sun, 9 Nov 2025 01:58:53 +0100 Subject: [PATCH 03/18] fx --- tests/reftests/dryrun.test | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 7ab0934533c..84ae1d54eae 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -65,8 +65,8 @@ previous=$1 current=$2 drcode=0 diff --exclude-from="x-diff" -r $previous $current || drcode=$? -find $previous -name .git | cut -f 2- -d '/' > gitprevious -find $current -name .git | cut -f 2- -d '/' > gitcurrent +find $previous -name .git | cut -f 2- -d '/' | sort > gitprevious +find $current -name .git | cut -f 2- -d '/' | sort > gitcurrent gitDiff=$(diff gitprevious gitcurrent) gdrcode=$? if [ "$gdrcode" -ne 0 ]; then @@ -325,7 +325,7 @@ Switch invariant: ["foo"] -> installed foo.1 Done. ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch remove dr --dry-run +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch remove dr --dry-run | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) @@ -363,7 +363,7 @@ Switch invariant: ["foo"] -> installed foo.1 Done. ### sh pre.sh nip -### OPAMVERBOSE=2 OPAMDEBUG=-5 OPAMDEBUGSECTIONS="" opam switch remove ./nip --dry-run +### OPAMVERBOSE=2 OPAMDEBUG=-5 OPAMDEBUGSECTIONS="" opam switch remove ./nip --dry-run | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s CLI Parsing CLI version 2.6 GSTATE LOAD-GLOBAL-STATE @ ${BASEDIR}/OPAM @@ -956,8 +956,8 @@ Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/pa Only in OPAM/dr/.opam-switch: sources diff gitPrevious gitCurrent 0a1,2 -> dr/.opam-switch/sources/nip/.git > dr/.opam-switch/build/nip.dev/.git +> dr/.opam-switch/sources/nip/.git # Return code 1 # ### :VII:3: Pinning directory with no opam file, no vcs ### sh initial.sh unpack @@ -1239,7 +1239,7 @@ Done. ### otuat ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --working-dir --dry-run | sed-cmd git rsync | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | 'rsync-files[^ "]*' -> 'rsync-files-xxx' +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --working-dir --dry-run | sed-cmd git rsync | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | 'rsync-files[^ "]*' -> 'rsync-files-xxx' | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s @@ -1353,7 +1353,7 @@ The following actions will be performed: -> installed nip.dev Done. ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin remove ./nip --dry-run +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam pin remove ./nip --dry-run | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s @@ -1545,7 +1545,7 @@ depends: "bar" ### tautond ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd rsync touch cp | grep -v '- ./' +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd rsync touch cp | grep -v '- ./' | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s @@ -1710,7 +1710,7 @@ tautond ### git -C nip add -A ### git -C nip commit -qm 'update' ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd git touch cp | grep -v '- ./' | grep -v "HEAD is now" | grep -v "(mkdir|copy|copydir|rm) .*\\.git." +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --dry-run | sed-cmd git touch cp | grep -v '- ./' | grep -v "HEAD is now" | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s From a587e0e7c99605013373ec27ea5e3aa0f0e2c358 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Sun, 9 Nov 2025 02:15:52 +0100 Subject: [PATCH 04/18] test --- tests/reftests/dryrun.test | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 84ae1d54eae..ef2c56691b4 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -64,6 +64,13 @@ set -u previous=$1 current=$2 drcode=0 +# If pathes are long, there is a diff between OSes +for d in $previous $current; do + if test -f $d/config; then + sed -i.bak 's/: /:\n /' $d/config + rm -f $d/config.bak + fi +done diff --exclude-from="x-diff" -r $previous $current || drcode=$? find $previous -name .git | cut -f 2- -d '/' | sort > gitprevious find $current -name .git | cut -f 2- -d '/' | sort > gitcurrent @@ -345,9 +352,11 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/environment SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) ### sh post.sh diff '--exclude-from=x-diff' -r previous/config OPAM/config -4,5d3 -< installed-switches: "dr" -< switch: "dr" +7,10d6 +< installed-switches: +< "dr" +< switch: +< "dr" Only in previous: dr # Return code 1 # ### :I:2:b: Local switch removal @@ -387,8 +396,9 @@ SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/environment SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) ### sh post.sh diff '--exclude-from=x-diff' -r previous/config OPAM/config -4d3 -< installed-switches: "${BASEDIR}/nip" +7,8d6 +< installed-switches: +< "${BASEDIR}/nip" # Return code 1 # ### sh post-local.sh nip Local switch disappeared *woosh* From 125a15331ce243d1c172466be789df28f8e3f417 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 12:17:12 +0200 Subject: [PATCH 05/18] With dry-run, don't create build dir --- src/client/opamSolution.ml | 6 +- tests/reftests/dryrun.test | 117 +++++++------------------------------ 2 files changed, 24 insertions(+), 99 deletions(-) diff --git a/src/client/opamSolution.ml b/src/client/opamSolution.ml index f616bac3848..74301fe667e 100644 --- a/src/client/opamSolution.ml +++ b/src/client/opamSolution.ml @@ -659,10 +659,12 @@ let parallel_apply t OpamStateConfig.(!r.dev_setup) && found in let source_dir = source_dir nv in - (if OpamFilename.exists_dir source_dir + (if OpamStateConfig.(!r.dryrun) then () else + if OpamFilename.exists_dir source_dir then (if not is_inplace then OpamFilename.copy_dir ~src:source_dir ~dst:build_dir) - else OpamFilename.mkdir build_dir; + else + OpamFilename.mkdir build_dir; OpamAction.prepare_package_source t nv build_dir @@+ function | Some exn -> store_time (); Done (`Exception exn) | None -> diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index ef2c56691b4..0dc882e88c3 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -121,10 +121,6 @@ Switch invariant: ["foo"] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1 Processing 2/3: [foo: touch foo] + touch "foo" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) -> compiled foo.1 @@ -132,6 +128,8 @@ Processing 3/3: [foo: cp foo] + cp "foo" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) Installing foo.1. -> installed foo.1 +SYSTEM mkdir ${BASEDIR}/OPAM/dr +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/packages SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) @@ -168,11 +166,6 @@ Switch invariant: ["foo"] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1 -SYSTEM mkdir ${BASEDIR}/nip -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1 Processing 2/3: [foo: touch foo] + touch "foo" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) -> compiled foo.1 @@ -180,6 +173,9 @@ Processing 3/3: [foo: cp foo] + cp "foo" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) Installing foo.1. -> installed foo.1 +SYSTEM mkdir ${BASEDIR}/nip +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) @@ -193,8 +189,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) No previous local switch, current contains: nip/_opam nip/_opam/.opam-switch -nip/_opam/.opam-switch/build -nip/_opam/.opam-switch/build/foo.1 nip/_opam/.opam-switch/packages nip/_opam/.opam-switch/packages/cache # Return code 2 # @@ -231,12 +225,10 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) @@ -250,8 +242,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) No previous local switch, current contains: nip/_opam nip/_opam/.opam-switch -nip/_opam/.opam-switch/build -nip/_opam/.opam-switch/build/nip.dev nip/_opam/.opam-switch/packages nip/_opam/.opam-switch/packages/cache # Return code 2 # @@ -289,10 +279,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/bar.1 -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) -> compiled bar.1 @@ -300,6 +286,8 @@ Processing 3/3: [bar: cp bar] + cp "bar" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 +SYSTEM mkdir ${BASEDIR}/nip/_opam +SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) @@ -313,8 +301,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) No previous local switch, current contains: nip/_opam nip/_opam/.opam-switch -nip/_opam/.opam-switch/build -nip/_opam/.opam-switch/build/bar.1 nip/_opam/.opam-switch/packages nip/_opam/.opam-switch/packages/cache # Return code 2 # @@ -467,7 +453,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -484,7 +469,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: bar.1 Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :III: Package removal @@ -633,7 +617,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1/bar -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 2/4: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -657,7 +640,7 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state- SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/build/bar.1: bar +Only in previous/dr/.opam-switch/build: bar.1 Only in OPAM/dr/.opam-switch: remove # Return code 1 # ### :V: Update @@ -711,7 +694,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2 Processing 3/5: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) -> compiled bar.2 @@ -739,7 +721,6 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state- SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/build: bar.2 Only in previous/dr/.opam-switch/packages: bar.1 Only in previous/dr/.opam-switch/packages: cache Only in OPAM/dr/.opam-switch: remove @@ -855,10 +836,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Installing nip.dev. -> installed nip.dev SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -871,7 +848,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip.dev Only in OPAM/dr/.opam-switch: overlay Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources @@ -943,11 +919,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Installing nip.dev. -> installed nip.dev SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -960,13 +931,11 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip.dev Only in OPAM/dr/.opam-switch: overlay Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources diff gitPrevious gitCurrent -0a1,2 -> dr/.opam-switch/build/nip.dev/.git +0a1 > dr/.opam-switch/sources/nip/.git # Return code 1 # ### :VII:3: Pinning directory with no opam file, no vcs @@ -1020,9 +989,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1/a-file Installing nip.1. -> installed nip.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -1035,7 +1001,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip.1 Only in OPAM/dr/.opam-switch: overlay Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources @@ -1086,7 +1051,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 Installing nip.1. -> installed nip.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -1099,7 +1063,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip.1 Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:5: Pinning with pin-depends @@ -1188,16 +1151,9 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1/nip-d.opam Installing nip-d.1. -> installed nip-d.1 SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Installing nip.dev. -> installed nip.dev SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -1210,8 +1166,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip-d.1 -Only in OPAM/dr/.opam-switch/build: nip.dev Only in OPAM/dr/.opam-switch: overlay Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources @@ -1292,12 +1246,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/another-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/another-file SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev @@ -1312,7 +1260,7 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state- SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/build/nip.dev: another-file +Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1335,6 +1283,9 @@ Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/pa Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: another-file +diff gitPrevious gitCurrent +1d0 +< dr/.opam-switch/build/nip.dev/.git # Return code 1 # ### :VII:7: Pin removal ### sh initial.sh unpack @@ -1447,7 +1398,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) @@ -1459,7 +1409,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: nip.dev Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:9: Install local package with deps-only @@ -1499,7 +1448,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1516,7 +1464,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Only in OPAM/dr/.opam-switch/build: bar.1 Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:10: Update of pin source triggered by install command @@ -1594,7 +1541,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1608,11 +1554,6 @@ Installing bar.1. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file-snd -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file-snd -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Processing 6/7: [nip: touch a-file-snd] + touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) -> compiled nip.dev @@ -1627,14 +1568,7 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state- SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/build: bar.1 -Only in OPAM/dr/.opam-switch/build/nip.dev: a-file-snd -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/build/nip.dev/nip.opam OPAM/dr/.opam-switch/build/nip.dev/nip.opam -10c10,11 -< build: ["touch" "a-file"] ---- -> build: ["touch" "a-file-snd"] -> depends: "bar" +Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1766,7 +1700,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1780,12 +1713,6 @@ Installing bar.1. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam -SYSTEM copydir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/.git -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file-snd -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file-snd -SYSTEM copy ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -> ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Processing 6/7: [nip: touch a-file-snd] + touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) -> compiled nip.dev @@ -1800,14 +1727,7 @@ SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state- SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/build: bar.1 -Only in OPAM/dr/.opam-switch/build/nip.dev: a-file-snd -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/build/nip.dev/nip.opam OPAM/dr/.opam-switch/build/nip.dev/nip.opam -10c10,11 -< build: ["touch" "a-file"] ---- -> build: ["touch" "a-file-snd"] -> depends: "bar" +Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1839,6 +1759,9 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP --- > build: ["touch" "a-file-snd"] > depends: "bar" +diff gitPrevious gitCurrent +1d0 +< dr/.opam-switch/build/nip.dev/.git # Return code 1 # ### opam upgrade | unordered The following actions will be performed: From 32e178f52f40f7615ac3d6bea77383d504e16538 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 17 Apr 2024 17:02:53 +0200 Subject: [PATCH 06/18] With dry-run, don't save cache --- src/client/opamSolution.ml | 51 ++++++++++++------------ tests/reftests/dryrun.test | 82 -------------------------------------- 2 files changed, 26 insertions(+), 107 deletions(-) diff --git a/src/client/opamSolution.ml b/src/client/opamSolution.ml index 74301fe667e..c53e53415d6 100644 --- a/src/client/opamSolution.ml +++ b/src/client/opamSolution.ml @@ -825,31 +825,32 @@ let parallel_apply t (* 2/ Display errors and finalize *) let save_installed_cache failed = - OpamSwitchState.Installed_cache.save - (OpamPath.Switch.installed_opams_cache t.switch_global.root t.switch) - (OpamPackage.Set.fold (fun nv opams -> - (* NOTE: We need to know whether an action was successful - or not to know which version of the opam file to store - in the case: the previous one if it failed, or the new - one if it succeeded. *) - let pkg_failed = - List.exists (function - | `Fetch ps -> List.for_all (OpamPackage.equal nv) ps - | `Build p | `Change (_, _, p) | `Install p - | `Reinstall p | `Remove p -> OpamPackage.equal nv p) - failed - in - let add_to_opams opam = - let opam = OpamFile.OPAM.with_metadata_dir None opam in - OpamPackage.Map.add nv opam opams - in - if pkg_failed then - match OpamPackage.Map.find_opt nv t.installed_opams with - | None -> opams - | Some opam -> add_to_opams opam - else - add_to_opams (OpamSwitchState.opam t nv)) - t.installed OpamPackage.Map.empty); + if not OpamStateConfig.(!r.dryrun) then + OpamSwitchState.Installed_cache.save + (OpamPath.Switch.installed_opams_cache t.switch_global.root t.switch) + (OpamPackage.Set.fold (fun nv opams -> + (* NOTE: We need to know whether an action was successful + or not to know which version of the opam file to store + in the case: the previous one if it failed, or the new + one if it succeeded. *) + let pkg_failed = + List.exists (function + | `Fetch ps -> List.for_all (OpamPackage.equal nv) ps + | `Build p | `Change (_, _, p) | `Install p + | `Reinstall p | `Remove p -> OpamPackage.equal nv p) + failed + in + let add_to_opams opam = + let opam = OpamFile.OPAM.with_metadata_dir None opam in + OpamPackage.Map.add nv opam opams + in + if pkg_failed then + match OpamPackage.Map.find_opt nv t.installed_opams with + | None -> opams + | Some opam -> add_to_opams opam + else + add_to_opams (OpamSwitchState.opam t nv)) + t.installed OpamPackage.Map.empty); in begin match action_results with | `Exception _ | `Error Aborted -> () diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 0dc882e88c3..36ecaeb4ac2 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -128,19 +128,12 @@ Processing 3/3: [foo: cp foo] + cp "foo" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) Installing foo.1. -> installed foo.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/packages -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) SYSTEM LOCK (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM: dr -# Return code 1 # ### :I:1:b: Local switch creation ### sh initial.sh unpack ### opam switch create dr foo @@ -173,12 +166,6 @@ Processing 3/3: [foo: cp foo] + cp "foo" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) Installing foo.1. -> installed foo.1 -SYSTEM mkdir ${BASEDIR}/nip -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) SYSTEM LOCK (none => none) @@ -186,12 +173,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh ### sh post-local.sh nip -No previous local switch, current contains: -nip/_opam -nip/_opam/.opam-switch -nip/_opam/.opam-switch/packages -nip/_opam/.opam-switch/packages/cache -# Return code 2 # ### :I:1:c: Local switch creation with package ### sh initial.sh unpack ### @@ -227,11 +208,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) SYSTEM LOCK (none => none) @@ -239,12 +215,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh ### sh post-local.sh nip -No previous local switch, current contains: -nip/_opam -nip/_opam/.opam-switch -nip/_opam/.opam-switch/packages -nip/_opam/.opam-switch/packages/cache -# Return code 2 # ### :I:1:d: Local switch creation with deps only ### sh initial.sh unpack ### @@ -286,11 +256,6 @@ Processing 3/3: [bar: cp bar] + cp "bar" "${BASEDIR}/nip/_opam/lib/" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM mkdir ${BASEDIR}/nip/_opam -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch -SYSTEM mkdir ${BASEDIR}/nip/_opam/.opam-switch/packages -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/nip/_opam/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) SYSTEM LOCK (none => none) @@ -298,12 +263,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh ### sh post-local.sh nip -No previous local switch, current contains: -nip/_opam -nip/_opam/.opam-switch -nip/_opam/.opam-switch/packages -nip/_opam/.opam-switch/packages/cache -# Return code 2 # ### :I:2: Switch removal ### :I:2:a: Global switch removal ### sh initial.sh unpack @@ -460,8 +419,6 @@ Processing 3/3: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export @@ -469,7 +426,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :III: Package removal ### sh initial.sh unpack @@ -514,8 +470,6 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar Processing 2/2: [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 @@ -630,8 +584,6 @@ Processing 4/4: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -707,8 +659,6 @@ Processing 5/5: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) Installing bar.2. -> installed bar.2 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 @@ -838,8 +788,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -849,7 +797,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:2:b: Pinning directory with opam file, vcs @@ -921,8 +868,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -932,7 +877,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources diff gitPrevious gitCurrent 0a1 @@ -991,8 +935,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 Installing nip.1. -> installed nip.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -1002,7 +944,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:4: Version pinning @@ -1053,8 +994,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 Installing nip.1. -> installed nip.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -1063,7 +1002,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:5: Pinning with pin-depends ### sh initial.sh unpack @@ -1156,8 +1094,6 @@ Installing nip-d.1. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -1167,7 +1103,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:6: Install a pinned package with working-dir that have changes @@ -1251,8 +1186,6 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip -> removed nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -1279,7 +1212,6 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/d < version: "dev" --- > dev-repo: "hg+https://pkg@op.am" -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: another-file @@ -1342,8 +1274,6 @@ The following actions will be simulated: SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/nip.dev @@ -1400,8 +1330,6 @@ The following actions will be simulated: SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export @@ -1409,7 +1337,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:9: Install local package with deps-only ### sh initial.sh unpack @@ -1455,8 +1382,6 @@ Processing 3/3: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export @@ -1464,7 +1389,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: backup -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ # Return code 1 # ### :VII:10: Update of pin source triggered by install command ### :VII:10:a: Update of pin source triggered by install command, with changes @@ -1559,8 +1483,6 @@ Processing 6/7: [nip: touch a-file-snd] -> compiled nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -1590,7 +1512,6 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/d > depends: ["bar"] > build: ["touch" "a-file-snd"] > dev-repo: "hg+https://pkg@op.am" -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd @@ -1718,8 +1639,6 @@ Processing 6/7: [nip: touch a-file-snd] -> compiled nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => write) -SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (write => none) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -1749,7 +1668,6 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/d > depends: ["bar"] > build: ["touch" "a-file-snd"] > dev-repo: "hg+https://pkg@op.am" -Binary files previous/dr/.opam-switch/packages/cache and OPAM/dr/.opam-switch/packages/cache differ Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd From 67ee2023d30a633e16ab816ca63aeb2861b05bae Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Thu, 4 Sep 2025 12:40:20 +0200 Subject: [PATCH 07/18] With dry-run, don't backup switch --- src/state/opamSwitchState.ml | 2 +- tests/reftests/dryrun.test | 60 ------------------------------------ 2 files changed, 1 insertion(+), 61 deletions(-) diff --git a/src/state/opamSwitchState.ml b/src/state/opamSwitchState.ml index f17a76eec77..18e5b85688b 100644 --- a/src/state/opamSwitchState.ml +++ b/src/state/opamSwitchState.ml @@ -1285,7 +1285,7 @@ let update_pin nv opam st = { st with sys_packages; available_packages } let do_backup lock st = match lock with - | `Lock_write -> + | `Lock_write when not OpamStateConfig.(!r.dryrun) -> let file = OpamPath.Switch.backup st.switch_global.root st.switch in let previous_selections = selections st in OpamFile.SwitchSelections.write file previous_selections; diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 36ecaeb4ac2..cd9a6967140 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -404,8 +404,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s The following actions will be simulated: === install 1 package - install bar 1 @@ -421,12 +419,9 @@ Installing bar.1. -> installed bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup -# Return code 1 # ### :III: Package removal ### sh initial.sh unpack ### opam switch create dr foo @@ -458,7 +453,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s The following actions will be simulated: === remove 1 package - remove bar 1 @@ -478,7 +472,6 @@ SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/ba Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -511,7 +504,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) FILE(switch-config) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/switch-config atomically in 0.000s -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s [NOTE] Forcing removal of (uninstalled) bar.1 SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove @@ -525,7 +517,6 @@ SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/b SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -563,7 +554,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s The following actions will be simulated: === recompile 1 package - recompile bar 1 @@ -588,7 +578,6 @@ SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -639,7 +628,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s The following actions will be simulated: === upgrade 1 package - upgrade bar 1 to 2 @@ -667,7 +655,6 @@ SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/ba Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -704,8 +691,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM mkdir ${OPAMTMP} SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip @@ -724,11 +709,9 @@ SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/ni nip is now pinned to file://${BASEDIR}/nip (version dev) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # @@ -761,8 +744,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM mkdir ${OPAMTMP} SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip @@ -791,11 +772,9 @@ Installing nip.dev. Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # @@ -833,8 +812,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM mkdir ${OPAMTMP} SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip @@ -871,11 +848,9 @@ Installing nip.dev. Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources diff gitPrevious gitCurrent @@ -909,8 +884,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM mkdir ${OPAMTMP} SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip @@ -938,11 +911,9 @@ Installing nip.1. Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # @@ -982,8 +953,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s nip is now pinned to version 1 The following actions will be simulated: @@ -997,12 +966,9 @@ Installing nip.1. Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup -# Return code 1 # ### :VII:5: Pinning with pin-depends ### sh initial.sh unpack ### @@ -1040,8 +1006,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM mkdir ${OPAMTMP} SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip @@ -1097,11 +1061,9 @@ Installing nip.dev. Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # @@ -1151,7 +1113,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s @@ -1189,7 +1150,6 @@ Installing nip.dev. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -1259,7 +1219,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam @@ -1282,7 +1241,6 @@ SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/ni Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -1319,8 +1277,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s The following actions will be simulated: === install 1 package @@ -1332,12 +1288,9 @@ Installing nip.dev. -> installed nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup -# Return code 1 # ### :VII:9: Install local package with deps-only ### sh initial.sh unpack ### @@ -1366,8 +1319,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/backup -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s FILE(opam) Read ${BASEDIR}/nip/nip.opam in 0.000s The following actions will be simulated: === install 1 package @@ -1384,12 +1335,9 @@ Installing bar.1. -> installed bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: backup -# Return code 1 # ### :VII:10: Update of pin source triggered by install command ### :VII:10:a: Update of pin source triggered by install command, with changes ### :VII:10:a:1: Update of path-pin source triggered by install command, with changes @@ -1439,7 +1387,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s @@ -1486,7 +1433,6 @@ Installing nip.dev. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -1588,7 +1534,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s @@ -1642,7 +1587,6 @@ Installing nip.dev. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -1736,7 +1680,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s @@ -1750,7 +1693,6 @@ SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip is already installed (current version is dev). SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh @@ -1802,7 +1744,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-state) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export atomically in 0.000s <><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s @@ -1824,7 +1765,6 @@ SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip is already installed (current version is dev). SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/backup/state-today.export SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh From 174ff5db3df21cbe641e30f2418fb1759faf4125 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 13:09:26 +0200 Subject: [PATCH 08/18] With dry-run, don't cleanup artefacts --- src/client/opamAction.ml | 23 ++++++++++++----------- tests/reftests/dot-install.test | 3 --- tests/reftests/dryrun.test | 30 ------------------------------ 3 files changed, 12 insertions(+), 44 deletions(-) diff --git a/src/client/opamAction.ml b/src/client/opamAction.ml index 59629b98307..2907d97e6be 100644 --- a/src/client/opamAction.ml +++ b/src/client/opamAction.ml @@ -907,18 +907,19 @@ let remove_package_aux (* Removes build dir and source cache of package if unneeded *) let cleanup_package_artefacts t nv = - log "Cleaning up artefacts of %a" (slog OpamPackage.to_string) nv; + if OpamStateConfig.(!r.dryrun) then () else + (log "Cleaning up artefacts of %a" (slog OpamPackage.to_string) nv; - let build_dir = OpamPath.Switch.build t.switch_global.root t.switch nv in - if not OpamClientConfig.(!r.keep_build_dir) then OpamFilename.rmdir build_dir; - let remove_dir = OpamPath.Switch.remove t.switch_global.root t.switch nv in - if OpamFilename.exists_dir remove_dir then OpamFilename.rmdir remove_dir; - let dev_dir = OpamSwitchState.source_dir t nv in - if not (OpamPackage.Set.mem nv t.installed) then - (log "Removing the local metadata"; - OpamSwitchAction.remove_metadata t (OpamPackage.Set.singleton nv); - if not (OpamPackage.Set.mem nv t.pinned) then - OpamFilename.rmdir dev_dir) + let build_dir = OpamPath.Switch.build t.switch_global.root t.switch nv in + if not OpamClientConfig.(!r.keep_build_dir) then OpamFilename.rmdir build_dir; + let remove_dir = OpamPath.Switch.remove t.switch_global.root t.switch nv in + if OpamFilename.exists_dir remove_dir then OpamFilename.rmdir remove_dir; + let dev_dir = OpamSwitchState.source_dir t nv in + if not (OpamPackage.Set.mem nv t.installed) then + (log "Removing the local metadata"; + OpamSwitchAction.remove_metadata t (OpamPackage.Set.singleton nv); + if not (OpamPackage.Set.mem nv t.pinned) then + OpamFilename.rmdir dev_dir)) let sources_needed st g = PackageActionGraph.fold_vertex (fun act acc -> diff --git a/tests/reftests/dot-install.test b/tests/reftests/dot-install.test index bce1841ea22..933366ec705 100644 --- a/tests/reftests/dot-install.test +++ b/tests/reftests/dot-install.test @@ -133,7 +133,6 @@ TRACK before install: 0 elements scanned in 0.000s Installing dot.~dev. TRACK after install: 0 elements, 0 added, scanned in 0.000s -> installed dot.~dev -ACTION Cleaning up artefacts of dot.~dev Done. ### ocaml cat.ml inst dot ==> dot installed file @@ -170,8 +169,6 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ACTION Removing dot.~dev -> removed dot.~dev -ACTION Cleaning up artefacts of dot.~dev -ACTION Removing the local metadata Done. ### ocaml cat.ml inst dot ==> dot installed file diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index cd9a6967140..d076cccf9e6 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -464,19 +464,12 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar Processing 2/2: [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/packages: bar.1 -Only in previous/dr/.opam-switch/packages: cache Only in OPAM/dr/.opam-switch: remove # Return code 1 # ### :III:a: Package removal --force @@ -511,16 +504,11 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/packages: cache Only in OPAM/dr/.opam-switch: remove # Return code 1 # ### :IV: Package reinstall @@ -574,7 +562,6 @@ Processing 4/4: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -647,19 +634,12 @@ Processing 5/5: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) Installing bar.2. -> installed bar.2 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/bar.1/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/bar.1 Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/packages: bar.1 -Only in previous/dr/.opam-switch/packages: cache Only in OPAM/dr/.opam-switch: remove # Return code 1 # ### :VII: Pinning @@ -1147,7 +1127,6 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip -> removed nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) @@ -1233,11 +1212,6 @@ The following actions will be simulated: SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/packages/nip.dev -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/nip.dev/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) @@ -1245,8 +1219,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in previous/dr/.opam-switch/overlay: nip -Only in previous/dr/.opam-switch/packages: cache -Only in previous/dr/.opam-switch/packages: nip.dev Only in OPAM/dr/.opam-switch: remove Only in previous/dr/.opam-switch/sources: nip # Return code 1 # @@ -1430,7 +1402,6 @@ Processing 6/7: [nip: touch a-file-snd] -> compiled nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) @@ -1584,7 +1555,6 @@ Processing 6/7: [nip: touch a-file-snd] -> compiled nip.dev Installing nip.dev. -> installed nip.dev -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) From d635b47897eb1cd3a0650cf54f43b1dd93c34737 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Fri, 20 Jun 2025 19:11:03 +0200 Subject: [PATCH 09/18] With dry-run, don't remove switch (no-op) --- src/client/opamCommands.ml | 31 +++++++------- tests/reftests/dryrun.test | 85 +------------------------------------- 2 files changed, 17 insertions(+), 99 deletions(-) diff --git a/src/client/opamCommands.ml b/src/client/opamCommands.ml index 703e5ab6237..45191efef7b 100644 --- a/src/client/opamCommands.ml +++ b/src/client/opamCommands.ml @@ -3084,21 +3084,22 @@ let switch cli = end; `Ok () | Some `remove, switches -> - OpamGlobalState.with_ `Lock_write @@ fun gt -> - let _gt = - List.fold_left - (fun gt switch -> - let opam_dir = OpamFilename.Op.( - OpamFilename.Dir.of_string switch / OpamSwitch.external_dirname - ) in - if OpamFilename.is_symlink_dir opam_dir then - (OpamFilename.rmdir opam_dir; - gt) - else OpamSwitchCommand.remove gt (OpamSwitch.of_string switch)) - gt - switches - in - `Ok () + if OpamStateConfig.(!r.dryrun) then `Ok () else + OpamGlobalState.with_ `Lock_write @@ fun gt -> + let _gt = + List.fold_left + (fun gt switch -> + let opam_dir = OpamFilename.Op.( + OpamFilename.Dir.of_string switch / OpamSwitch.external_dirname + ) in + if OpamFilename.is_symlink_dir opam_dir then + (OpamFilename.rmdir opam_dir; + gt) + else OpamSwitchCommand.remove gt (OpamSwitch.of_string switch)) + gt + switches + in + `Ok () | Some `reinstall, switch -> let switch = match switch with | [sw] -> OpamSwitch.of_string sw diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index d076cccf9e6..fb6ca5b916e 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -278,32 +278,8 @@ Switch invariant: ["foo"] Done. ### sh pre.sh ### OPAMVERBOSE=2 OPAMDEBUG=-5 opam switch remove dr --dry-run | unordered -FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s -SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) -SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) -FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s -Switch dr and all its packages will be wiped. Are you sure? [Y/n] y -FILE(config) Wrote ${BASEDIR}/OPAM/config atomically in 0.000s -SYSTEM rmdir ${BASEDIR}/OPAM/dr -SYSTEM rm ${BASEDIR}/OPAM/dr/lib/foo -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1/foo -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/install/foo.changes -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/lock -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/foo.1/opam -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/switch-config -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/switch-state -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/environment -SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) + ### sh post.sh -diff '--exclude-from=x-diff' -r previous/config OPAM/config -7,10d6 -< installed-switches: -< "dr" -< switch: -< "dr" -Only in previous: dr -# Return code 1 # ### :I:2:b: Local switch removal ### sh initial.sh unpack ### @@ -320,67 +296,8 @@ Done. ### OPAMVERBOSE=2 OPAMDEBUG=-5 OPAMDEBUGSECTIONS="" opam switch remove ./nip --dry-run | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s CLI Parsing CLI version 2.6 -GSTATE LOAD-GLOBAL-STATE @ ${BASEDIR}/OPAM -SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) -SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => write) -FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s -SWITCH remove switch=${BASEDIR}/nip -FILE(switch-config) Read ${BASEDIR}/nip/_opam/.opam-switch/switch-config in 0.000s -Switch ${BASEDIR}/nip and all its packages will be wiped. Are you sure? [Y/n] y -FILE(config) Wrote ${BASEDIR}/OPAM/config atomically in 0.000s -SYSTEM rmdir ${BASEDIR}/nip/_opam -SYSTEM rm ${BASEDIR}/nip/_opam/lib/foo -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1/foo -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/install/foo.changes -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/lock -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/packages/foo.1/opam -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/packages/cache -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/switch-config -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/switch-state -SYSTEM rm ${BASEDIR}/nip/_opam/.opam-switch/environment -SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (write => none) ### sh post.sh -diff '--exclude-from=x-diff' -r previous/config OPAM/config -7,8d6 -< installed-switches: -< "${BASEDIR}/nip" -# Return code 1 # ### sh post-local.sh nip -Local switch disappeared *woosh* -previous-local -previous-local/.opam-switch -previous-local/.opam-switch/build -previous-local/.opam-switch/build/foo.1 -previous-local/.opam-switch/build/foo.1/foo -previous-local/.opam-switch/config -previous-local/.opam-switch/environment -previous-local/.opam-switch/install -previous-local/.opam-switch/install/foo.changes -previous-local/.opam-switch/lock -previous-local/.opam-switch/packages -previous-local/.opam-switch/packages/cache -previous-local/.opam-switch/packages/foo.1 -previous-local/.opam-switch/packages/foo.1/opam -previous-local/.opam-switch/switch-config -previous-local/.opam-switch/switch-state -previous-local/bin -previous-local/doc -previous-local/lib -previous-local/lib/foo -previous-local/lib/stublibs -previous-local/lib/toplevel -previous-local/man -previous-local/man/man1 -previous-local/man/man1M -previous-local/man/man2 -previous-local/man/man3 -previous-local/man/man4 -previous-local/man/man5 -previous-local/man/man6 -previous-local/man/man7 -previous-local/man/man9 -previous-local/sbin -# Return code 3 # ### :II: Package installation ### sh initial.sh unpack ### opam switch create dr foo From 6728f2a2cbb796f190d1804a076e8d63d0e2bcf9 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 17:17:09 +0200 Subject: [PATCH 10/18] With dry-run, don't remove build directory for building --- src/client/opamSolution.ml | 3 ++- tests/reftests/dot-install.test | 8 +++---- tests/reftests/dryrun.test | 37 --------------------------------- 3 files changed, 6 insertions(+), 42 deletions(-) diff --git a/src/client/opamSolution.ml b/src/client/opamSolution.ml index c53e53415d6..e13210621b7 100644 --- a/src/client/opamSolution.ml +++ b/src/client/opamSolution.ml @@ -648,7 +648,8 @@ let parallel_apply t try true, OpamPackage.Map.find nv inplace with Not_found -> let dir = OpamPath.Switch.build t.switch_global.root t.switch nv in - if not OpamClientConfig.(!r.reuse_build_dir) then + if not OpamClientConfig.(!r.reuse_build_dir) + && not OpamStateConfig.(!r.dryrun) then OpamFilename.rmdir dir; false, dir in diff --git a/tests/reftests/dot-install.test b/tests/reftests/dot-install.test index 933366ec705..0141ead53c8 100644 --- a/tests/reftests/dot-install.test +++ b/tests/reftests/dot-install.test @@ -129,9 +129,9 @@ ACTION download_package: dot.~dev ACTION prepare_package_source: dot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/dot.~dev ACTION Removing dot.~dev -> removed dot.~dev -TRACK before install: 0 elements scanned in 0.000s +TRACK before install: 3 elements scanned in 0.000s Installing dot.~dev. -TRACK after install: 0 elements, 0 added, scanned in 0.000s +TRACK after install: 3 elements, 0 added, scanned in 0.000s -> installed dot.~dev Done. ### ocaml cat.ml inst dot @@ -195,9 +195,9 @@ The following actions will be simulated: <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ACTION download_package: dot.~dev ACTION prepare_package_source: dot.~dev at ${BASEDIR}/OPAM/inst/.opam-switch/build/dot.~dev -TRACK before install: 0 elements scanned in 0.000s +TRACK before install: 1 elements scanned in 0.000s Installing dot.~dev. -TRACK after install: 0 elements, 0 added, scanned in 0.000s +TRACK after install: 1 elements, 0 added, scanned in 0.000s -> installed dot.~dev Done. ### ocaml cat.ml inst dot diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index fb6ca5b916e..d2ecf0fd4ac 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -120,7 +120,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (re Switch invariant: ["foo"] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1 Processing 2/3: [foo: touch foo] + touch "foo" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/foo.1) -> compiled foo.1 @@ -158,7 +157,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/state-magicv.cache (re Switch invariant: ["foo"] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/foo.1 Processing 2/3: [foo: touch foo] + touch "foo" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/foo.1) -> compiled foo.1 @@ -205,7 +203,6 @@ The following actions will be simulated: - install nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev Done. @@ -248,7 +245,6 @@ The following actions will be simulated: - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/nip/_opam/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/nip/_opam/.opam-switch/build/bar.1) -> compiled bar.1 @@ -326,7 +322,6 @@ The following actions will be simulated: - install bar 1 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -464,8 +459,6 @@ The following actions will be simulated: - recompile bar 1 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1/bar Processing 2/4: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -485,7 +478,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/build: bar.1 Only in OPAM/dr/.opam-switch: remove # Return code 1 # ### :V: Update @@ -537,7 +529,6 @@ The following actions will be simulated: - upgrade bar 1 to 2 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2 Processing 3/5: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) -> compiled bar.2 @@ -663,7 +654,6 @@ The following actions will be simulated: - install nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev Done. @@ -739,7 +729,6 @@ The following actions will be simulated: - install nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev Done. @@ -802,7 +791,6 @@ The following actions will be simulated: - install nip 1 (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 Installing nip.1. -> installed nip.1 Done. @@ -857,7 +845,6 @@ The following actions will be simulated: - install nip 1 (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.1 Installing nip.1. -> installed nip.1 Done. @@ -949,10 +936,8 @@ The following actions will be simulated: - install nip-d 1 (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip-d.1 Installing nip-d.1. -> installed nip-d.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev Done. @@ -1036,9 +1021,6 @@ The following actions will be simulated: - recompile nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev @@ -1049,7 +1031,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1071,9 +1052,6 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/d Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: another-file -diff gitPrevious gitCurrent -1d0 -< dr/.opam-switch/build/nip.dev/.git # Return code 1 # ### :VII:7: Pin removal ### sh initial.sh unpack @@ -1172,7 +1150,6 @@ The following actions will be simulated: - install nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev Installing nip.dev. -> installed nip.dev Done. @@ -1214,7 +1191,6 @@ The following actions will be simulated: - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 2/3: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1300,7 +1276,6 @@ The following actions will be simulated: - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1311,9 +1286,6 @@ Processing 5/7: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Processing 6/7: [nip: touch a-file-snd] + touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) -> compiled nip.dev @@ -1324,7 +1296,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1453,7 +1424,6 @@ The following actions will be simulated: - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1 Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 @@ -1464,9 +1434,6 @@ Processing 5/7: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) Installing bar.1. -> installed bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/a-file -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev/nip.opam Processing 6/7: [nip: touch a-file-snd] + touch "a-file-snd" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/nip.dev) -> compiled nip.dev @@ -1477,7 +1444,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/build: nip.dev diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam 1a2,3 > name: "nip" @@ -1508,9 +1474,6 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP --- > build: ["touch" "a-file-snd"] > depends: "bar" -diff gitPrevious gitCurrent -1d0 -< dr/.opam-switch/build/nip.dev/.git # Return code 1 # ### opam upgrade | unordered The following actions will be performed: From c99c4b02ed1a2d232bfe521ac0b8af603e8e896d Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Fri, 20 Jun 2025 19:24:05 +0200 Subject: [PATCH 11/18] With dry-run, don't store overlay on pinning --- src/client/opamPinCommand.ml | 1 + src/state/opamUpdate.ml | 47 ++++++++-------- tests/reftests/dryrun.test | 103 ----------------------------------- 3 files changed, 25 insertions(+), 126 deletions(-) diff --git a/src/client/opamPinCommand.ml b/src/client/opamPinCommand.ml index 4b43a9a6a3d..f884bb40ec7 100644 --- a/src/client/opamPinCommand.ml +++ b/src/client/opamPinCommand.ml @@ -620,6 +620,7 @@ and source_pin let opam = copy_files st opam in + if not OpamStateConfig.(!r.dryrun) then OpamFile.OPAM.write_with_preserved_format ?format_from:(OpamPinned.orig_opam_file st name opam) (OpamPath.Switch.Overlay.opam st.switch_global.root st.switch nv.name) diff --git a/src/state/opamUpdate.ml b/src/state/opamUpdate.ml index 43efdd590e1..0967f4e9915 100644 --- a/src/state/opamUpdate.ml +++ b/src/state/opamUpdate.ml @@ -332,16 +332,6 @@ let pinned_package st ?version ?(autolock=false) ?(working_dir=false) name = | Some a, Some b -> not (equal_opam a b) in let save_overlay opam = - OpamFilename.mkdir overlay_dir; - let opam_file = OpamPath.Switch.Overlay.opam root st.switch name in - List.iter OpamFilename.remove - OpamPath.Switch.Overlay.([ - OpamFile.filename opam_file; - OpamFile.filename (url root st.switch name); - OpamFile.filename (descr root st.switch name); - ]); - let files_dir = OpamPath.Switch.Overlay.files root st.switch name in - OpamFilename.rmdir files_dir; let opam = OpamFile.OPAM.with_url urlf @@ OpamFile.OPAM.with_name name opam @@ -351,19 +341,30 @@ let pinned_package st ?version ?(autolock=false) ?(working_dir=false) name = then OpamFile.OPAM.with_version version opam else opam in - List.iter (fun (rel_file, content, hash) -> - match content with - | Some (lazy content) when OpamHash.check_string content hash -> - OpamFilename.write (OpamFilename.create files_dir rel_file) content - | None | Some _ -> - OpamConsole.warning "Ignoring file %s with invalid hash" - (OpamFilename.Base.to_string rel_file)) - (OpamFile.OPAM.get_extra_files - ~get_repo_files:(OpamRepositoryState.get_repo_files st.switch_repos) - opam); - OpamFile.OPAM.write opam_file - (OpamFile.OPAM.with_extra_files_opt None opam); - opam + if OpamStateConfig.(!r.dryrun) then opam else + (OpamFilename.mkdir overlay_dir; + let opam_file = OpamPath.Switch.Overlay.opam root st.switch name in + List.iter OpamFilename.remove + OpamPath.Switch.Overlay.([ + OpamFile.filename opam_file; + OpamFile.filename (url root st.switch name); + OpamFile.filename (descr root st.switch name); + ]); + let files_dir = OpamPath.Switch.Overlay.files root st.switch name in + OpamFilename.rmdir files_dir; + List.iter (fun (rel_file, content, hash) -> + match content with + | Some (lazy content) when OpamHash.check_string content hash -> + OpamFilename.write (OpamFilename.create files_dir rel_file) content + | None | Some _ -> + OpamConsole.warning "Ignoring file %s with invalid hash" + (OpamFilename.Base.to_string rel_file)) + (OpamFile.OPAM.get_extra_files + ~get_repo_files:(OpamRepositoryState.get_repo_files st.switch_repos) + opam); + OpamFile.OPAM.write opam_file + (OpamFile.OPAM.with_extra_files_opt None opam); + opam) in match result, new_source_opam with | Result _, Some new_opam diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index d2ecf0fd4ac..06cd23fad57 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -590,17 +590,12 @@ Processing 1/1: [nip: rsync] SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip does not exist in opam repositories registered in the current switch. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM read ${BASEDIR}/nip/nip.opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam nip is now pinned to file://${BASEDIR}/nip (version dev) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:2: Pinning directory with opam file @@ -643,10 +638,6 @@ Processing 1/1: [nip: rsync] SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip does not exist in opam repositories registered in the current switch. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM read ${BASEDIR}/nip/nip.opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam nip is now pinned to file://${BASEDIR}/nip (version dev) The following actions will be simulated: @@ -662,7 +653,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:2:b: Pinning directory with opam file, vcs @@ -718,10 +708,6 @@ Processing 1/1: [nip: git] SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip does not exist in opam repositories registered in the current switch. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM read ${BASEDIR}/nip/nip.opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam nip is now pinned to git+file://${BASEDIR}/nip#master (version dev) The following actions will be simulated: @@ -737,7 +723,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources diff gitPrevious gitCurrent 0a1 @@ -780,10 +765,6 @@ SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/ni SYSTEM rmdir ${OPAMTMP} [nip.1] synchronised (file://${BASEDIR}/nip) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM read ${BASEDIR}/OPAM/repo/default/packages/nip/nip.1/opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam nip is now pinned to file://${BASEDIR}/nip (version 1) The following actions will be simulated: @@ -799,7 +780,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:4: Version pinning @@ -919,15 +899,8 @@ SYSTEM rmdir ${OPAMTMP} [nip-d.1] synchronised (no changes) FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam in 0.000s SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d -SYSTEM read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d/opam nip-d is now pinned to file://${BASEDIR}/nip-d (version 1) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM read ${BASEDIR}/nip/nip.opam -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM write ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam nip is now pinned to file://${BASEDIR}/nip (version dev) The following actions will be simulated: @@ -946,7 +919,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: overlay Only in OPAM/dr/.opam-switch: sources # Return code 1 # ### :VII:6: Install a pinned package with working-dir that have changes @@ -1012,9 +984,6 @@ Processing 1/1: [nip.dev: git] SYSTEM rm ${BASEDIR}/OPAM/log/rsync-files-xxx SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (git+file://${BASEDIR}/nip#master) -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files -FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s The following actions will be simulated: === recompile 1 package @@ -1031,24 +1000,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam -1a2,3 -> name: "nip" -> version: "dev" -4,5d5 -< authors: "the testing team" -< homepage: "egapemoh" -6a7 -> authors: "the testing team" -8c9 -< dev-repo: "hg+https://pkg@op.am" ---- -> homepage: "egapemoh" -10,11c11 -< name: "nip" -< version: "dev" ---- -> dev-repo: "hg+https://pkg@op.am" Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: another-file @@ -1265,9 +1216,6 @@ Processing 1/1: [nip.dev: rsync] SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (file://${BASEDIR}/nip) [nip] Installing new package description from upstream file://${BASEDIR}/nip -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files -FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s The following actions will be simulated: === recompile 1 package @@ -1296,27 +1244,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam -1a2,3 -> name: "nip" -> version: "dev" -4,5d5 -< authors: "the testing team" -< homepage: "egapemoh" -6a7 -> authors: "the testing team" -8c9 -< dev-repo: "hg+https://pkg@op.am" ---- -> homepage: "egapemoh" -10,12c11,13 -< build: ["touch" "a-file"] -< name: "nip" -< version: "dev" ---- -> depends: ["bar"] -> build: ["touch" "a-file-snd"] -> dev-repo: "hg+https://pkg@op.am" Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd @@ -1331,11 +1258,8 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP The following actions will be performed: === recompile 1 package - recompile nip dev (pinned) [upstream or system changes] -=== install 1 package - - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> --> installed bar.1 -> retrieved nip.dev (no changes) -> removed nip.dev -> installed nip.dev @@ -1413,9 +1337,6 @@ Processing 1/1: [nip.dev: git] SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (git+file://${BASEDIR}/nip#master) [nip] Installing new package description from upstream git+file://${BASEDIR}/nip#master -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/files -FILE(opam) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam atomically in 0.000s The following actions will be simulated: === recompile 1 package @@ -1444,27 +1365,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/overlay/nip/opam OPAM/dr/.opam-switch/overlay/nip/opam -1a2,3 -> name: "nip" -> version: "dev" -4,5d5 -< authors: "the testing team" -< homepage: "egapemoh" -6a7 -> authors: "the testing team" -8c9 -< dev-repo: "hg+https://pkg@op.am" ---- -> homepage: "egapemoh" -10,12c11,13 -< build: ["touch" "a-file"] -< name: "nip" -< version: "dev" ---- -> depends: ["bar"] -> build: ["touch" "a-file-snd"] -> dev-repo: "hg+https://pkg@op.am" Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd @@ -1479,13 +1379,10 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP The following actions will be performed: === recompile 1 package - recompile nip dev (pinned) [upstream or system changes] -=== install 1 package - - install bar 1 [required by nip] <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> retrieved nip.dev (no changes) -> removed nip.dev --> installed bar.1 -> installed nip.dev Done. ### :VII:10:b: Update of pin source triggered by install command, with no changes From 9c77cbad3613f922e0f3e9231e223a4c2c8bde96 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Fri, 20 Jun 2025 19:26:19 +0200 Subject: [PATCH 12/18] With dry-run, don't remove overlay and pinning source dir on unpinning --- src/client/opamPinCommand.ml | 11 ++++++----- tests/reftests/dryrun.test | 7 ------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/client/opamPinCommand.ml b/src/client/opamPinCommand.ml index f884bb40ec7..c47c38a563c 100644 --- a/src/client/opamPinCommand.ml +++ b/src/client/opamPinCommand.ml @@ -700,11 +700,12 @@ let unpin st names = log "unpin %a" (slog @@ OpamStd.List.concat_map " " OpamPackage.Name.to_string) names; List.fold_left (fun st name -> - OpamFilename.rmdir - (OpamPath.Switch.pinned_package st.switch_global.root st.switch name); - OpamFilename.rmdir - (OpamPath.Switch.Overlay.package - st.switch_global.root st.switch name); + if not OpamStateConfig.(!r.dryrun) then + (OpamFilename.rmdir + (OpamPath.Switch.pinned_package st.switch_global.root st.switch name); + OpamFilename.rmdir + (OpamPath.Switch.Overlay.package + st.switch_global.root st.switch name)); match OpamPinned.package_opt st name with | Some nv -> let pin_str = diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 06cd23fad57..dec8e6828ee 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -1044,11 +1044,6 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip -SYSTEM rm ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam Ok, nip is no longer pinned to file://${BASEDIR}/nip (version dev) The following actions will be simulated: === remove 1 package @@ -1064,9 +1059,7 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in previous/dr/.opam-switch/overlay: nip Only in OPAM/dr/.opam-switch: remove -Only in previous/dr/.opam-switch/sources: nip # Return code 1 # ### :VII:8: Pin triggered by install ### sh initial.sh unpack From 834a113f0bb06be827897fa2effc5a22a8a09bd8 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 12:06:33 +0200 Subject: [PATCH 13/18] With dry-run, don't create remove dir --- src/client/opamAction.ml | 3 ++- src/client/opamClient.ml | 11 +++++++---- src/client/opamSolution.ml | 3 ++- tests/reftests/dryrun.test | 35 ----------------------------------- 4 files changed, 11 insertions(+), 41 deletions(-) diff --git a/src/client/opamAction.ml b/src/client/opamAction.ml index 2907d97e6be..77e7b6cd626 100644 --- a/src/client/opamAction.ml +++ b/src/client/opamAction.ml @@ -846,7 +846,8 @@ let remove_package_aux | Some build_dir -> build_dir | None -> let dir = OpamPath.Switch.remove root t.switch nv in - if not (OpamFilename.exists_dir dir) then + if not OpamStateConfig.(!r.dryrun) + && not (OpamFilename.exists_dir dir) then OpamFilename.mkdir dir; dir in diff --git a/src/client/opamClient.ml b/src/client/opamClient.ml index 539759db326..f8126d2397a 100644 --- a/src/client/opamClient.ml +++ b/src/client/opamClient.ml @@ -2427,10 +2427,13 @@ let remove_t ?ask ~autoremove ~force ?(formula=OpamFormula.Empty) atoms t = let nv = OpamPackage.max_version candidates (fst atom) in OpamConsole.note "Forcing removal of (uninstalled) %s" (OpamPackage.to_string nv); - let d = OpamPath.Switch.remove t.switch_global.root t.switch nv in - OpamFilename.rmdir d; - OpamFilename.mkdir d; - OpamProcess.Job.run (OpamAction.remove_package t nv); + if OpamStateConfig.(!r.dryrun) then + OpamProcess.Job.dry_run (OpamAction.remove_package t nv) + else + (let d = OpamPath.Switch.remove t.switch_global.root t.switch nv in + OpamFilename.rmdir d; + OpamFilename.mkdir d; + OpamProcess.Job.run (OpamAction.remove_package t nv)); OpamAction.cleanup_package_artefacts t nv; false with Not_found -> diff --git a/src/client/opamSolution.ml b/src/client/opamSolution.ml index e13210621b7..b3d78db96f7 100644 --- a/src/client/opamSolution.ml +++ b/src/client/opamSolution.ml @@ -691,7 +691,8 @@ let parallel_apply t store_time (); Done (`Exception exn)) | `Remove nv -> - (if OpamAction.removal_needs_download t nv then + (if not OpamStateConfig.(!r.dryrun) + && OpamAction.removal_needs_download t nv then let d = OpamPath.Switch.remove t.switch_global.root t.switch nv in OpamFilename.rmdir d; let source_dir = source_dir nv in diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index dec8e6828ee..d1c5dc55923 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -370,9 +370,6 @@ The following actions will be simulated: - remove bar 1 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 Processing 2/2: [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 @@ -382,8 +379,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: remove -# Return code 1 # ### :III:a: Package removal --force ### sh initial.sh unpack ### opam switch create dr --empty @@ -410,19 +405,12 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/ca SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) FILE(switch-config) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/switch-config atomically in 0.000s [NOTE] Forcing removal of (uninstalled) bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -[bar: true] -+ true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: remove -# Return code 1 # ### :IV: Package reinstall ### sh initial.sh unpack ### opam switch create dr foo @@ -462,9 +450,6 @@ The following actions will be simulated: Processing 2/4: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 Processing 3/4: [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 @@ -478,8 +463,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: remove -# Return code 1 # ### :V: Update ### sh initial.sh unpack ### sh pre.sh @@ -532,9 +515,6 @@ The following actions will be simulated: Processing 3/5: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.2) -> compiled bar.2 -SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1 Processing 4/5: [bar: true] + true (CWD=${BASEDIR}/OPAM/dr/.opam-switch/remove/bar.1) -> removed bar.1 @@ -548,8 +528,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: remove -# Return code 1 # ### :VII: Pinning ### :VII:1: Pinning with no action ### sh initial.sh unpack @@ -990,8 +968,6 @@ The following actions will be simulated: - recompile nip dev (pinned) <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev Installing nip.dev. -> installed nip.dev @@ -1001,7 +977,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: reinstall -Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: another-file # Return code 1 # ### :VII:7: Pin removal @@ -1050,8 +1025,6 @@ The following actions will be simulated: - remove nip dev <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev Done. SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -1059,8 +1032,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: remove -# Return code 1 # ### :VII:8: Pin triggered by install ### sh initial.sh unpack ### @@ -1220,8 +1191,6 @@ The following actions will be simulated: Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev Processing 5/7: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) @@ -1238,7 +1207,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: reinstall -Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam 10c10,11 @@ -1341,8 +1309,6 @@ The following actions will be simulated: Processing 3/7: [bar: touch bar] + touch "bar" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) -> compiled bar.1 -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/remove/nip.dev -> removed nip.dev Processing 5/7: [bar: cp bar] + cp "bar" "${BASEDIR}/OPAM/dr/lib/" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/build/bar.1) @@ -1359,7 +1325,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh Only in OPAM/dr/.opam-switch: reinstall -Only in OPAM/dr/.opam-switch: remove Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam 10c10,11 From 70a8c5aa60681d91f753bf7e347525ca0a567f34 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 12:30:01 +0200 Subject: [PATCH 14/18] With dry-run, don't write reinstall file --- src/state/opamSwitchAction.ml | 3 ++- tests/reftests/dryrun.test | 25 ++++--------------------- 2 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/state/opamSwitchAction.ml b/src/state/opamSwitchAction.ml index 4de422f6eab..3a690010aed 100644 --- a/src/state/opamSwitchAction.ml +++ b/src/state/opamSwitchAction.ml @@ -117,7 +117,8 @@ let add_to_reinstall st ~unpinned_only packages = let reinstall = current_reinstall ++ add_reinst_packages in - if OpamPackage.Set.equal current_reinstall reinstall then () + if OpamStateConfig.(!r.dryrun) + || OpamPackage.Set.equal current_reinstall reinstall then () else if OpamPackage.Set.is_empty reinstall then OpamFilename.remove (OpamFile.filename reinstall_file) else diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index d1c5dc55923..b92e9792f4c 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -976,7 +976,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch/sources/nip: another-file # Return code 1 # ### :VII:7: Pin removal @@ -1206,7 +1205,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam 10c10,11 @@ -1216,15 +1214,8 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP > depends: "bar" # Return code 1 # ### opam upgrade | unordered -The following actions will be performed: -=== recompile 1 package - - recompile nip dev (pinned) [upstream or system changes] - -<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> --> retrieved nip.dev (no changes) --> removed nip.dev --> installed nip.dev -Done. +Already up-to-date. +Nothing to do. ### :VII:10:a:2: Update of git-pin source triggered by install command, with changes ### sh initial.sh unpack ### @@ -1324,7 +1315,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: reinstall Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam 10c10,11 @@ -1334,15 +1324,8 @@ diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OP > depends: "bar" # Return code 1 # ### opam upgrade | unordered -The following actions will be performed: -=== recompile 1 package - - recompile nip dev (pinned) [upstream or system changes] - -<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> --> retrieved nip.dev (no changes) --> removed nip.dev --> installed nip.dev -Done. +Already up-to-date. +Nothing to do. ### :VII:10:b: Update of pin source triggered by install command, with no changes ### :VII:10:b:1: Update of path-pin source triggered by install command, with no changes ### sh initial.sh unpack From c71232e7610cae6e91be8a98b73f3b52ae1000c8 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Wed, 3 Sep 2025 18:28:19 +0200 Subject: [PATCH 15/18] With dry-run, don't write inferred switch invariant --- src/state/opamSwitchState.ml | 2 +- tests/reftests/dryrun.test | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/state/opamSwitchState.ml b/src/state/opamSwitchState.ml index 18e5b85688b..8bb8cb59e46 100644 --- a/src/state/opamSwitchState.ml +++ b/src/state/opamSwitchState.ml @@ -419,7 +419,7 @@ let load lock_kind gt rt switch = let switch_config = {switch_config with invariant = Some invariant; opam_version} in - if lock_kind = `Lock_write then + if lock_kind = `Lock_write && not OpamStateConfig.(!r.dryrun) then OpamFile.Switch_config.write (OpamPath.Switch.switch_config gt.root switch) switch_config; diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index b92e9792f4c..487c4516a10 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -403,7 +403,6 @@ FILE(switch-config) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-conf FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-state in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) -FILE(switch-config) Wrote ${BASEDIR}/OPAM/dr/.opam-switch/switch-config atomically in 0.000s [NOTE] Forcing removal of (uninstalled) bar.1 -> removed bar.1 SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) From e1f4d13ee1fb26dafe66efee6cd122177a2dec36 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Thu, 4 Sep 2025 11:18:30 +0200 Subject: [PATCH 16/18] With dry-run, don't copy pin sources --- src/state/opamUpdate.ml | 17 ++++++ tests/reftests/dryrun.test | 116 ++++++++++++++++++++++++------------- 2 files changed, 93 insertions(+), 40 deletions(-) diff --git a/src/state/opamUpdate.ml b/src/state/opamUpdate.ml index 0967f4e9915..a3293d14900 100644 --- a/src/state/opamUpdate.ml +++ b/src/state/opamUpdate.ml @@ -283,7 +283,24 @@ let pinned_package st ?version ?(autolock=false) ?(working_dir=false) name = Filename.dir_sep ^ OpamFilename.SubPath.to_string sp) subpath)) @@+ fun () -> (* Do the update *) + let srcdir0 = srcdir in + let srcdir, srcdir_find = + if OpamStateConfig.(!r.dryrun) then + let tmpdir = OpamFilename.mk_tmp_dir () in + tmpdir, OpamFilename.SubPath.(tmpdir /? subpath) + else + srcdir, srcdir_find + in fetch_dev_package urlf srcdir ~working_dir ?subpath nv @@+ fun result -> + let result = + match OpamStateConfig.(!r.dryrun), result with + | true, Result () -> + let base f = OpamFilename.Base.of_string (OpamFilename.Dir.to_string f) in + (match OpamRepositoryBackend.get_diff (OpamFilename.Dir.of_string "/") (base srcdir) (base srcdir0) with + | Some _ -> Result () + | None -> Up_to_date ()) + | _, (Result () | Up_to_date () | Not_available _) -> result + in let new_source_opam = OpamPinned.find_opam_file_in_source ?locked name srcdir_find >>= fun (f, lock) -> diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 487c4516a10..6f1b79af76d 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -931,7 +931,7 @@ Done. ### otuat ### sh pre.sh -### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --working-dir --dry-run | sed-cmd git rsync | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | 'rsync-files[^ "]*' -> 'rsync-files-xxx' | unordered +### OPAMVERBOSE=2 OPAMDEBUG=-5 opam install nip --working-dir --dry-run | sed-cmd git rsync | grep -v "(mkdir|copy|copydir|rm) .*\\.git." | 'rsync-files[^ "]*' -> 'rsync-files-xxx' | grep -v "HEAD is now" | unordered FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s SYSTEM LOCK ${BASEDIR}/OPAM/lock (none => read) FILE(config) Read ${BASEDIR}/OPAM/config in 0.000s @@ -949,18 +949,32 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/ca FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip.dev: git] -+ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "submodule" "status" "--recursive" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ rsync "-rLptgoDvc" "--files-from" "${BASEDIR}/OPAM/log/rsync-files-xxx" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ git "init" (CWD=${OPAMTMP}) +- Initialized empty Git repository in ${OPAMTMP}/.git/ ++ git "config" "--local" "fetch.prune" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "diff.noprefix" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.autocrlf" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.eol" "lf" (CWD=${OPAMTMP}) ++ git "config" "--local" "color.ui" "false" (CWD=${OPAMTMP}) ++ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${OPAMTMP}) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${OPAMTMP}) ++ git "clean" "-fdx" (CWD=${OPAMTMP}) ++ rsync "-rLptgoDvc" "--files-from" "${BASEDIR}/OPAM/log/rsync-files-xxx" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" - another-file - SYSTEM rm ${BASEDIR}/OPAM/log/rsync-files-xxx SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (git+file://${BASEDIR}/nip#master) +SYSTEM read /${OPAMTMP}/nip.opam +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM read /${OPAMTMP}/another-file +SYSTEM read /${OPAMTMP}/a-file +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file +SYSTEM write ${BASEDIR}/OPAM/log/patch-xxx The following actions will be simulated: === recompile 1 package @@ -975,8 +989,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/sources/nip: another-file -# Return code 1 # ### :VII:7: Pin removal ### sh initial.sh unpack ### @@ -1170,13 +1182,21 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/ca FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip.dev: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" +- a-file - a-file-snd - nip.opam - SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (file://${BASEDIR}/nip) +SYSTEM read /${OPAMTMP}/nip.opam +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM read /${OPAMTMP}/a-file-snd +SYSTEM read /${OPAMTMP}/a-file +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file +SYSTEM write ${BASEDIR}/OPAM/log/patch-xxx [nip] Installing new package description from upstream file://${BASEDIR}/nip The following actions will be simulated: @@ -1204,14 +1224,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam -10c10,11 -< build: ["touch" "a-file"] ---- -> build: ["touch" "a-file-snd"] -> depends: "bar" -# Return code 1 # ### opam upgrade | unordered Already up-to-date. Nothing to do. @@ -1278,15 +1290,28 @@ Processing 1/1: + git "diff" "--no-ext-diff" "--quiet" "HEAD" (CWD=${BASEDIR}/nip) + git "ls-files" "--others" "--exclude-standard" (CWD=${BASEDIR}/nip) SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip.dev: git] -+ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "init" (CWD=${OPAMTMP}) +- Initialized empty Git repository in ${OPAMTMP}/.git/ ++ git "config" "--local" "fetch.prune" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "diff.noprefix" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.autocrlf" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.eol" "lf" (CWD=${OPAMTMP}) ++ git "config" "--local" "color.ui" "false" (CWD=${OPAMTMP}) ++ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${OPAMTMP}) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${OPAMTMP}) ++ git "clean" "-fdx" (CWD=${OPAMTMP}) SYSTEM rmdir ${OPAMTMP} [nip.dev] synchronised (git+file://${BASEDIR}/nip#master) +SYSTEM read /${OPAMTMP}/nip.opam +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM read /${OPAMTMP}/a-file-snd +SYSTEM read /${OPAMTMP}/a-file +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file +SYSTEM write ${BASEDIR}/OPAM/log/patch-xxx [nip] Installing new package description from upstream git+file://${BASEDIR}/nip#master The following actions will be simulated: @@ -1314,14 +1339,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch/sources/nip: a-file-snd -diff '--exclude-from=x-diff' -r previous/dr/.opam-switch/sources/nip/nip.opam OPAM/dr/.opam-switch/sources/nip/nip.opam -10c10,11 -< build: ["touch" "a-file"] ---- -> build: ["touch" "a-file-snd"] -> depends: "bar" -# Return code 1 # ### opam upgrade | unordered Already up-to-date. Nothing to do. @@ -1372,11 +1389,18 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/ca FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip/opam in 0.000s FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam in 0.000s SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip.dev: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" +- a-file +- nip.opam - SYSTEM rmdir ${OPAMTMP} -[nip.dev] synchronised (no changes) +[nip.dev] synchronised (file://${BASEDIR}/nip) +SYSTEM read /${OPAMTMP}/nip.opam +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM read /${OPAMTMP}/a-file +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file [NOTE] Package nip is already installed (current version is dev). SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) @@ -1441,14 +1465,26 @@ Processing 1/1: + git "diff" "--no-ext-diff" "--quiet" "HEAD" (CWD=${BASEDIR}/nip) + git "ls-files" "--others" "--exclude-standard" (CWD=${BASEDIR}/nip) SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip.dev: git] -+ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "diff" "--no-ext-diff" "--quiet" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "submodule" "status" "--recursive" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "init" (CWD=${OPAMTMP}) +- Initialized empty Git repository in ${OPAMTMP}/.git/ ++ git "config" "--local" "fetch.prune" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "diff.noprefix" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.autocrlf" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.eol" "lf" (CWD=${OPAMTMP}) ++ git "config" "--local" "color.ui" "false" (CWD=${OPAMTMP}) ++ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${OPAMTMP}) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${OPAMTMP}) ++ git "clean" "-fdx" (CWD=${OPAMTMP}) SYSTEM rmdir ${OPAMTMP} -[nip.dev] synchronised (no changes) +[nip.dev] synchronised (git+file://${BASEDIR}/nip#master) +SYSTEM read /${OPAMTMP}/nip.opam +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/nip.opam +SYSTEM read /${OPAMTMP}/a-file +SYSTEM read /${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/a-file [NOTE] Package nip is already installed (current version is dev). SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (write => none) From 7c8ff63c205ea6e23007dd537c2c40123e384733 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Thu, 4 Sep 2025 15:51:09 +0200 Subject: [PATCH 17/18] With dry-run, don't sync sources on pinning, when fetching pin sources --- src/client/opamPinCommand.ml | 7 ++++- tests/reftests/dryrun.test | 60 +++++++++++++++--------------------- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/client/opamPinCommand.ml b/src/client/opamPinCommand.ml index c47c38a563c..7e29c9f36f4 100644 --- a/src/client/opamPinCommand.ml +++ b/src/client/opamPinCommand.ml @@ -374,7 +374,12 @@ let fetch_all_pins st ?working_dir pins = let command pinned = let { pinned_name = name; pinned_url = url; pinned_subpath = subpath; _ } = pinned in - let srcdir = OpamPath.Switch.pinned_package root st.switch name in + let srcdir = + if OpamStateConfig.(!r.dryrun) then + OpamFilename.mk_tmp_dir () + else + OpamPath.Switch.pinned_package root st.switch name + in let name = OpamPackage.Name.to_string name in OpamProcess.Job.Op.( OpamRepository.pull_tree ~cache_dir ?subpath ?working_dir diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index 6f1b79af76d..a9b123f4c0e 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -557,10 +557,9 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" - a-file - nip.opam - @@ -573,8 +572,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: sources -# Return code 1 # ### :VII:2: Pinning directory with opam file ### :VII:2:a: Pinning directory with opam file, no vcs ### sh initial.sh unpack @@ -605,10 +602,9 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" - a-file - nip.opam - @@ -630,8 +626,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: sources -# Return code 1 # ### :VII:2:b: Pinning directory with opam file, vcs ### sh initial.sh unpack ### @@ -667,21 +661,20 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip: git] -+ git "init" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -- Initialized empty Git repository in ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip/.git/ -+ git "config" "--local" "fetch.prune" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "config" "--local" "diff.noprefix" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "config" "--local" "core.autocrlf" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "config" "--local" "core.eol" "lf" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "config" "--local" "color.ui" "false" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) -+ git "clean" "-fdx" (CWD=${BASEDIR}/OPAM/dr/.opam-switch/sources/nip) ++ git "init" (CWD=${OPAMTMP}) +- Initialized empty Git repository in ${OPAMTMP}/.git/ ++ git "config" "--local" "fetch.prune" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "diff.noprefix" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.autocrlf" "false" (CWD=${OPAMTMP}) ++ git "config" "--local" "core.eol" "lf" (CWD=${OPAMTMP}) ++ git "config" "--local" "color.ui" "false" (CWD=${OPAMTMP}) ++ git "remote" "add" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "remote" "set-url" "origin" "file://${BASEDIR}/nip" (CWD=${OPAMTMP}) ++ git "fetch" "-q" "file://${BASEDIR}/nip" "--update-shallow" "+master:refs/remotes/opam-ref-master" (CWD=${OPAMTMP}) ++ git "reset" "--hard" "refs/remotes/opam-ref-master" "--" (CWD=${OPAMTMP}) ++ git "clean" "-fdx" (CWD=${OPAMTMP}) SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip does not exist in opam repositories registered in the current switch. SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip @@ -700,11 +693,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: sources -diff gitPrevious gitCurrent -0a1 -> dr/.opam-switch/sources/nip/.git -# Return code 1 # ### :VII:3: Pinning directory with no opam file, no vcs ### sh initial.sh unpack ### @@ -848,10 +836,9 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" - a-file - nip.opam - @@ -861,19 +848,22 @@ The following additional pinnings are required by nip.dev: - nip-d.1 at file://${BASEDIR}/nip-d Pin and install them? [Y/n] y SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d +SYSTEM mkdir ${OPAMTMP} Processing 1/1: [nip-d: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${OPAMTMP}" - nip-d.opam - SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip-d does not exist in opam repositories registered in the current switch. SYSTEM mkdir ${OPAMTMP} +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources +SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d [nip-d.1: rsync] + rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d" +- nip-d.opam - SYSTEM rmdir ${OPAMTMP} -[nip-d.1] synchronised (no changes) +[nip-d.1] synchronised (file://${BASEDIR}/nip-d) FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam in 0.000s SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d nip-d is now pinned to file://${BASEDIR}/nip-d (version 1) From e098697c3e5d9b108ccbdc74888dbcc8284419e5 Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Thu, 4 Sep 2025 16:11:50 +0200 Subject: [PATCH 18/18] With dry-run, don't sync sources on pinning --- src/client/opamPinCommand.ml | 7 ++++++- tests/reftests/dryrun.test | 16 +++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/client/opamPinCommand.ml b/src/client/opamPinCommand.ml index 7e29c9f36f4..d0b983243a2 100644 --- a/src/client/opamPinCommand.ml +++ b/src/client/opamPinCommand.ml @@ -66,7 +66,12 @@ exception Fetch_Fail of string let get_source_definition ?version ?subpath ?locked st nv url = let root = st.switch_global.root in - let srcdir = OpamPath.Switch.pinned_package root st.switch nv.name in + let srcdir = + if OpamStateConfig.(!r.dryrun) then + OpamFilename.mk_tmp_dir () + else + OpamPath.Switch.pinned_package root st.switch nv.name + in let fix opam = OpamFile.OPAM.with_url url @@ (match version with diff --git a/tests/reftests/dryrun.test b/tests/reftests/dryrun.test index a9b123f4c0e..34156c24bc9 100644 --- a/tests/reftests/dryrun.test +++ b/tests/reftests/dryrun.test @@ -721,10 +721,9 @@ FILE(switch-state) Read ${BASEDIR}/OPAM/dr/.opam-switch/switch-stat SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (none => read) SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/packages/cache (read => none) SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip +SYSTEM mkdir ${OPAMTMP} [nip.1: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip/" "${OPAMTMP}" - a-file - SYSTEM rmdir ${OPAMTMP} @@ -745,8 +744,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: sources -# Return code 1 # ### :VII:4: Version pinning ### sh initial.sh unpack ### @@ -856,15 +853,14 @@ Processing 1/1: [nip-d: rsync] SYSTEM rmdir ${OPAMTMP} [NOTE] Package nip-d does not exist in opam repositories registered in the current switch. SYSTEM mkdir ${OPAMTMP} -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources -SYSTEM mkdir ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d +SYSTEM mkdir ${OPAMTMP} [nip-d.1: rsync] -+ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d" ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/nip-d/" "${OPAMTMP}" - nip-d.opam - SYSTEM rmdir ${OPAMTMP} [nip-d.1] synchronised (file://${BASEDIR}/nip-d) -FILE(opam) Read ${BASEDIR}/OPAM/dr/.opam-switch/sources/nip-d/nip-d.opam in 0.000s +FILE(opam) Read ${OPAMTMP}/nip-d.opam in 0.000s SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip-d nip-d is now pinned to file://${BASEDIR}/nip-d (version 1) SYSTEM rmdir ${BASEDIR}/OPAM/dr/.opam-switch/overlay/nip @@ -886,8 +882,6 @@ SYSTEM LOCK ${BASEDIR}/OPAM/dr/.opam-switch/lock (none SYSTEM LOCK ${BASEDIR}/OPAM/repo/lock (none => none) SYSTEM LOCK ${BASEDIR}/OPAM/config.lock (none => none) ### sh post.sh -Only in OPAM/dr/.opam-switch: sources -# Return code 1 # ### :VII:6: Install a pinned package with working-dir that have changes ### sh initial.sh unpack ###