diff --git a/doc/pages/Manual.md b/doc/pages/Manual.md index 60f4f985c32..43d0a0a81f8 100644 --- a/doc/pages/Manual.md +++ b/doc/pages/Manual.md @@ -561,8 +561,10 @@ the package being defined. a hash identifying the precise package version and metadata, and that of all its dependencies - `opamfile`: - if the package is installed, path of its opam file, from opam internals, - otherwise not defined + if the package is installed or pinned it is the path to the internally + stored opam file, otherwise, if the package exists, it is the path to + a newly created opam file in a directory under the system temporary + directory (see `Stdlib.Filename.get_temp_dir_name`) Extra variables can be defined by any package at installation time, using a [`.config`](#lt-pkgname-gt-config) file with a diff --git a/master_changes.md b/master_changes.md index 49525a33569..da895bbdbbd 100644 --- a/master_changes.md +++ b/master_changes.md @@ -48,6 +48,7 @@ users) ## Show ## Var/Option + * Make the computation of `pkg:opamfile` match its specification [#6659 @kit-ty-kate - fix #5346] ## Update / Upgrade @@ -131,6 +132,8 @@ users) * Add a test showing that `opam upgrade` allows downgrades when necessary [#6690 @kit-ty-kate] * Add a test showing the behaviour of `opam tree` on local packages that happen to be already pinned [#6688 @kit-ty-kate] * Add a test showing the behaviour of version pins when one of the dependencies isn't up-to-date [#6691 @kit-ty-kate] + * Add a test showing the behaviour of pre-defined variables in command hooks [#6659 @rjbou] + * Add a test showing the behaviour of `opam var :opamfile` [#6659 @kit-ty-kate] ### Engine * Fix gcc < 14.3 bug on mingw i686 [#6624 @kit-ty-kate] diff --git a/src/state/opamPackageVar.ml b/src/state/opamPackageVar.ml index 107c75d92d3..01a0f10e4f3 100644 --- a/src/state/opamPackageVar.ml +++ b/src/state/opamPackageVar.ml @@ -309,20 +309,20 @@ let resolve st ?opam:opam_arg ?(local=OpamVariable.Map.empty) v = | "dev", Some opam -> Some (bool (is_dev_package st opam)) | "build-id", Some opam -> Option.map string (build_id st opam) | "opamfile", Some opam -> - (* Opamfile path is retrieved from overlay directory for pinned packages, - or from temporary repository in /tmp *) - let repos_roots reponame = - match Hashtbl.find st.switch_repos.repos_tmp reponame with - | lazy repo_root -> repo_root - | exception Not_found -> - OpamRepositoryPath.root st.switch_global.root reponame - in - OpamFile.OPAM.get_metadata_dir ~repos_roots opam - |> Option.map (fun d -> - OpamFilename.Op.(d//"opam") - |> OpamFilename.to_string - |> string - ) + let nv = get_nv opam in + let ret file = Some (string (OpamFile.to_string file)) in + if OpamPackage.Set.mem nv st.installed then + ret (OpamPath.Switch.installed_opam st.switch_global.root st.switch nv) + else if OpamPackage.Set.mem nv st.pinned then + ret (OpamPath.Switch.Overlay.opam st.switch_global.root st.switch (OpamPackage.name nv)) + else if OpamPackage.Set.mem nv st.packages then + let opam = OpamPackage.Map.find nv st.opams in + let temp_dir = OpamFilename.mk_tmp_dir () in + let dest = OpamFile.make OpamFilename.Op.(temp_dir // "opam") in + OpamFile.OPAM.write dest opam; + ret dest + else + None | _, _ -> None in let make_package_local v = diff --git a/tests/reftests/dune.inc b/tests/reftests/dune.inc index 774e0488c5b..c148a436532 100644 --- a/tests/reftests/dune.inc +++ b/tests/reftests/dune.inc @@ -902,6 +902,69 @@ %{targets} (run ./run.exe %{exe:../../src/client/opamMain.exe.exe} %{dep:git.test} %{read-lines:testing-env})))) +(rule + (alias reftest-hooks-variables) + (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (action + (diff hooks-variables.test hooks-variables.out))) + +(alias + (name reftest) + (enabled_if (and (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (deps (alias reftest-hooks-variables))) + +(rule + (targets hooks-variables.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:hooks-variables.test} %{read-lines:testing-env})))) + +(rule + (alias reftest-hooks-variables.unix) + (enabled_if (and (= %{os_type} "Unix") (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (action + (diff hooks-variables.unix.test hooks-variables.unix.out))) + +(alias + (name reftest) + (enabled_if (and (= %{os_type} "Unix") (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (deps (alias reftest-hooks-variables.unix))) + +(rule + (targets hooks-variables.unix.out) + (deps root-N0REP0) + (enabled_if (and (= %{os_type} "Unix") (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:hooks-variables.unix.test} %{read-lines:testing-env})))) + +(rule + (alias reftest-hooks-variables.win32) + (enabled_if (and (= %{os_type} "Win32") (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (action + (diff hooks-variables.win32.test hooks-variables.win32.out))) + +(alias + (name reftest) + (enabled_if (and (= %{os_type} "Win32") (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) + (deps (alias reftest-hooks-variables.win32))) + +(rule + (targets hooks-variables.win32.out) + (deps root-N0REP0) + (enabled_if (and (= %{os_type} "Win32") (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:hooks-variables.win32.test} %{read-lines:testing-env})))) + (rule (alias reftest-init-ocaml-eval-variables.unix) (enabled_if (and (= %{os_type} "Unix") (or (<> %{env:TESTALL=1} 0) (= %{env:TESTN0REP0=0} 1)))) diff --git a/tests/reftests/hooks-variables.test b/tests/reftests/hooks-variables.test new file mode 100644 index 00000000000..5a3a9f0df04 --- /dev/null +++ b/tests/reftests/hooks-variables.test @@ -0,0 +1,1012 @@ +N0REP0 +### ## global_variable_names +### # opam-version The currently running opam version +### # switch The identifier of the current switch +### # jobs The number of parallel jobs set up in opam configuration +### # root The current opam root directory +### # make The 'make' command to use +### # +### ## package_variable_names +### # name Name of the package +### # version Version of the package +### # depends Resolved direct dependencies of the package +### # installed Whether the package is installed +### # enable Takes the value enable or disable depending on whether the package is installed +### # pinned Whether the package is pinned +### # bin Binary directory for this package +### # sbin System binary directory for this package +### # lib Library directory for this package +### # man Man directory for this package +### # doc Doc directory for this package +### # share Share directory for this package +### # etc Etc directory for this package +### # build Directory where the package was built +### # hash Hash of the package archive +### # dev True if this is a development package +### # build-id A hash identifying the precise package version with all its dependencies +### # opamfile Path of the current opam file +### # +### ## post-messages +### # success +### # failure +### # with-dev-setup +### # +### ## post-install wrapper +### # installed-files +### :::::::: +### :: Setup +### :::::::: +### OPAMYES=1 +### opam --version >$ OPAMVERSION +### opam option --global jobs=2 +Set to '2' the field jobs in global configuration +### +for i in "$@"; do + echo "$i" +done +### +opam-version: "2.0" +### +opam-version: "2.0" +depends: "dep" +build: [ "a-build-command" ] +install: [ "a-install-command" ] +remove: [ "a-remove-command" ] +### +opam-version: "2.0" +etc: [ + "printer.sh" {"printer"} +] +### tar czf archive.tgz printer.sh i-am-a-repo-pkg.install +### openssl md5 archive.tgz | '.*= ' -> '' >$ MD5 +### sh -c "echo '$MD5' | cut -c 1-2" >$ PRE_MD5 +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$MD5" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Now run 'opam upgrade' to apply any package updates. +### :::::::::::::::::: +### :: Global wrappers +### :::::::::::::::::: +### mkdir -p OPAM/opam-init/hooks +### cp printer.sh OPAM/opam-init/hooks/printer.sh +### cp OPAM/config OPAM/config.bak +### opam option --global 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-build-commands in global configuration +### opam option --global 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-install-commands in global configuration +### opam option --global 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-remove-commands in global configuration +### opam option --global 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-build-commands in global configuration +### opam option --global 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-install-commands in global configuration +### opam option --global 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-remove-commands in global configuration +### opam option --global 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field post-build-commands in global configuration +### opam option --global 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field post-install-commands in global configuration +### opam option --global 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field post-remove-commands in global configuration +### opam switch create global-wrappers --empty +### opam install dep +The following actions will be performed: +=== install 1 package + - install dep 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed dep.1 +Done. +### opam install i-am-a-repo-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | $MD5 -> +archive-hash+ | sed-cmd bash tar rsync | etc -> etc +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/archive.tgz" "${OPAMTMP}" +- archive.tgz +- +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${OPAMTMP}/archive.tgz" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (file://${BASEDIR}/archive.tgz) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" "a-build-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" "a-install-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | $MD5 -> +archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" "a-remove-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "opam-version:++current++" "switch:global-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/global-wrappers/bin" "sbin:${BASEDIR}/OPAM/global-wrappers/sbin" "lib:${BASEDIR}/OPAM/global-wrappers/lib" "man:${BASEDIR}/OPAM/global-wrappers/man" "doc:${BASEDIR}/OPAM/global-wrappers/doc" "share:${BASEDIR}/OPAM/global-wrappers/share" "etc:${BASEDIR}/OPAM/global-wrappers/etc" "build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- opam-version:++current++ +- switch:global-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/global-wrappers/bin +- sbin:${BASEDIR}/OPAM/global-wrappers/sbin +- lib:${BASEDIR}/OPAM/global-wrappers/lib +- man:${BASEDIR}/OPAM/global-wrappers/man +- doc:${BASEDIR}/OPAM/global-wrappers/doc +- share:${BASEDIR}/OPAM/global-wrappers/share +- etc:${BASEDIR}/OPAM/global-wrappers/etc +- build:${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/global-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +-> removed i-am-a-repo-pkg.1 +Done. +### cp OPAM/config.bak OPAM/config +### :::::::::::::::::: +### :: Switch wrappers +### :::::::::::::::::: +### opam switch create switch-wrappers --empty +### opam option --switch switch-wrappers 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field pre-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field wrap-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field post-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" "installed-files:%{installed-files}%" ]' the field post-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ]' the field post-remove-commands in switch switch-wrappers +### opam install dep +The following actions will be performed: +=== install 1 package + - install dep 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed dep.1 +Done. +### opam install i-am-a-repo-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | $MD5 -> +archive-hash+ | sed-cmd bash tar | etc -> etc +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" "a-build-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:" "a-install-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files: +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:false" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${OPAMTMP}/opam" "installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer" "installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:false +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${OPAMTMP}/opam +- installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer +- installed-files:etc etc/i-am-a-repo-pkg etc/i-am-a-repo-pkg/printer +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | $MD5 -> +archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" "a-remove-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "opam-version:++current++" "switch:switch-wrappers" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/switch-wrappers/bin" "sbin:${BASEDIR}/OPAM/switch-wrappers/sbin" "lib:${BASEDIR}/OPAM/switch-wrappers/lib" "man:${BASEDIR}/OPAM/switch-wrappers/man" "doc:${BASEDIR}/OPAM/switch-wrappers/doc" "share:${BASEDIR}/OPAM/switch-wrappers/share" "etc:${BASEDIR}/OPAM/switch-wrappers/etc" "build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- opam-version:++current++ +- switch:switch-wrappers +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/switch-wrappers/bin +- sbin:${BASEDIR}/OPAM/switch-wrappers/sbin +- lib:${BASEDIR}/OPAM/switch-wrappers/lib +- man:${BASEDIR}/OPAM/switch-wrappers/man +- doc:${BASEDIR}/OPAM/switch-wrappers/doc +- share:${BASEDIR}/OPAM/switch-wrappers/share +- etc:${BASEDIR}/OPAM/switch-wrappers/etc +- build:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/switch-wrappers/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::: +### :: Package from repo +### :::::::::::::::::::: +### # "build:%{build}%" "post:%{post}%" "with-test:%{with-test}%" "with-doc:%{with-doc}%" "with-dev-setup:%{with-dev-setup}%" "dev:%{dev}%" +### +opam-version: "2.0" +depends: "dep" +build: [ "bash" "printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +install: [ "bash" "printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +remove: [ "bash" "printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +post-messages: +"""...A last message... +opam-version:%{opam-version}% +switch:%{switch}% +jobs:%{jobs}% +root:%{root}% +make:%{make}% +name:%{name}% +version:%{version}% +depends:%{depends}% +installed:%{installed}% +enable:%{enable}% +pinned:%{pinned}% +bin:%{bin}% +sbin:%{sbin}% +lib:%{lib}% +man:%{man}% +doc:%{doc}% +share:%{share}% +etc:%{etc}% +build:%{build}% +hash:%{hash}% +dev:%{dev}% +build-id:%{build-id}% +opamfile:%{opamfile}% +with-dev-setup:%{with-dev-setup}% +success:%{success}% +failure:%{failure}% +installed-files:%{installed-files}% +""" +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$(openssl md5 archive.tgz | cut -f2 -d' ')" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Now run 'opam upgrade' to apply any package updates. +### opam switch create pkg-from-repo --empty +### opam install dep +The following actions will be performed: +=== install 1 package + - install dep 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed dep.1 +Done. +### opam install i-am-a-repo-pkg | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | $MD5 -> +archive-hash+ | sed-cmd bash tar | etc -> etc +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved i-am-a-repo-pkg.1 (cached) +-> installed i-am-a-repo-pkg.1 +Done. + +<><> i-am-a-repo-pkg.1 installed successfully <><><><><><><><><><><><><><><><><> +=> ...A last message... + opam-version:++current++ + switch:pkg-from-repo + jobs:2 + root:${BASEDIR}/OPAM + make:make + name:i-am-a-repo-pkg + version:1 + depends:dep.1 + installed:true + enable: + pinned:false + bin:${BASEDIR}/OPAM/pkg-from-repo/bin + sbin:${BASEDIR}/OPAM/pkg-from-repo/sbin + lib:${BASEDIR}/OPAM/pkg-from-repo/lib + man:${BASEDIR}/OPAM/pkg-from-repo/man + doc:${BASEDIR}/OPAM/pkg-from-repo/doc + share:${BASEDIR}/OPAM/pkg-from-repo/share + etc:${BASEDIR}/OPAM/pkg-from-repo/etc + build:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1 + hash:md5=+archive-hash+ + dev:false + build-id:+hash+ + opamfile:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/packages/i-am-a-repo-pkg.1/opam + with-dev-setup:false + success:true + failure:false + installed-files: +### opam remove i-am-a-repo-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | $MD5 -> +archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "opam-version:++current++" "switch:pkg-from-repo" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-repo-pkg" "version:1" "depends:dep.1" "installed:true" "enable:" "pinned:false" "bin:${BASEDIR}/OPAM/pkg-from-repo/bin" "sbin:${BASEDIR}/OPAM/pkg-from-repo/sbin" "lib:${BASEDIR}/OPAM/pkg-from-repo/lib" "man:${BASEDIR}/OPAM/pkg-from-repo/man" "doc:${BASEDIR}/OPAM/pkg-from-repo/doc" "share:${BASEDIR}/OPAM/pkg-from-repo/share" "etc:${BASEDIR}/OPAM/pkg-from-repo/etc" "build:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1" "hash:md5=+archive-hash+" "dev:false" "build-id:+hash+" "opamfile:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/packages/i-am-a-repo-pkg.1/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- opam-version:++current++ +- switch:pkg-from-repo +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-repo-pkg +- version:1 +- depends:dep.1 +- installed:true +- enable: +- pinned:false +- bin:${BASEDIR}/OPAM/pkg-from-repo/bin +- sbin:${BASEDIR}/OPAM/pkg-from-repo/sbin +- lib:${BASEDIR}/OPAM/pkg-from-repo/lib +- man:${BASEDIR}/OPAM/pkg-from-repo/man +- doc:${BASEDIR}/OPAM/pkg-from-repo/doc +- share:${BASEDIR}/OPAM/pkg-from-repo/share +- etc:${BASEDIR}/OPAM/pkg-from-repo/etc +- build:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1 +- hash:md5=+archive-hash+ +- dev:false +- build-id:+hash+ +- opamfile:${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/packages/i-am-a-repo-pkg.1/opam +- installed-files: +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::::: +### :: Package from pinned +### :::::::::::::::::::::: +### +opam-version: "2.0" +version: "6.28" +depends: "dep" +build: [ "bash" "printer.sh" "...building..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +install: [ "bash" "printer.sh" "...installing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +remove: [ "bash" "printer.sh" "...removing..." "opam-version:%{opam-version}%" "switch:%{switch}%" "jobs:%{jobs}%" "root:%{root}%" "make:%{make}%" "name:%{name}%" "version:%{version}%" "depends:%{depends}%" "installed:%{installed}%" "enable:%{enable}%" "pinned:%{pinned}%" "bin:%{bin}%" "sbin:%{sbin}%" "lib:%{lib}%" "man:%{man}%" "doc:%{doc}%" "share:%{share}%" "etc:%{etc}%" "build:%{build}%" "hash:%{hash}%" "dev:%{dev}%" "build-id:%{build-id}%" "opamfile:%{opamfile}%" "installed-files:%{installed-files}%" ] +post-messages: +"""...A last message... +opam-version:%{opam-version}% +switch:%{switch}% +jobs:%{jobs}% +root:%{root}% +make:%{make}% +name:%{name}% +version:%{version}% +depends:%{depends}% +installed:%{installed}% +enable:%{enable}% +pinned:%{pinned}% +bin:%{bin}% +sbin:%{sbin}% +lib:%{lib}% +man:%{man}% +doc:%{doc}% +share:%{share}% +etc:%{etc}% +build:%{build}% +hash:%{hash}% +dev:%{dev}% +build-id:%{build-id}% +opamfile:%{opamfile}% +with-dev-setup:%{with-dev-setup}% +success:%{success}% +failure:%{failure}% +installed-files:%{installed-files}% +""" +### cp printer.sh dir/printer.sh +### cp i-am-a-repo-pkg.install dir/i-a-am-a-pin-pkg.install +### opam switch create pkg-from-pin --empty +### OPAMVERBOSE=0 opam pin ./dir -yn +[NOTE] Package i-am-a-pin-pkg does not exist in opam repositories registered in the current switch. +i-am-a-pin-pkg is now pinned to file://${BASEDIR}/dir (version 6.28) +### opam install dep +The following actions will be performed: +=== install 1 package + - install dep 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> installed dep.1 +Done. +### opam install i-am-a-pin-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | grep -v "total size" | sed-cmd bash rsync | etc -> etc + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [i-am-a-pin-pkg.6.28: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/dir/" "${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/sources/i-am-a-pin-pkg" +- +[i-am-a-pin-pkg.6.28] synchronised (no changes) + +The following actions will be performed: +=== install 1 package + - install i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...building..." "opam-version:++current++" "switch:pkg-from-pin" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-pin-pkg" "version:6.28" "depends:dep.1" "installed:false" "enable:" "pinned:true" "bin:${BASEDIR}/OPAM/pkg-from-pin/bin" "sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin" "lib:${BASEDIR}/OPAM/pkg-from-pin/lib" "man:${BASEDIR}/OPAM/pkg-from-pin/man" "doc:${BASEDIR}/OPAM/pkg-from-pin/doc" "share:${BASEDIR}/OPAM/pkg-from-pin/share" "etc:${BASEDIR}/OPAM/pkg-from-pin/etc" "build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28" "hash:" "dev:true" "build-id:" "opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/overlay/i-am-a-pin-pkg/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...building... +- opam-version:++current++ +- switch:pkg-from-pin +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-pin-pkg +- version:6.28 +- depends:dep.1 +- installed:false +- enable: +- pinned:true +- bin:${BASEDIR}/OPAM/pkg-from-pin/bin +- sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin +- lib:${BASEDIR}/OPAM/pkg-from-pin/lib +- man:${BASEDIR}/OPAM/pkg-from-pin/man +- doc:${BASEDIR}/OPAM/pkg-from-pin/doc +- share:${BASEDIR}/OPAM/pkg-from-pin/share +- etc:${BASEDIR}/OPAM/pkg-from-pin/etc +- build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28 +- hash: +- dev:true +- build-id: +- opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/overlay/i-am-a-pin-pkg/opam +- installed-files: +-> compiled i-am-a-pin-pkg.6.28 +Processing 3/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...installing..." "opam-version:++current++" "switch:pkg-from-pin" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-pin-pkg" "version:6.28" "depends:dep.1" "installed:false" "enable:" "pinned:true" "bin:${BASEDIR}/OPAM/pkg-from-pin/bin" "sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin" "lib:${BASEDIR}/OPAM/pkg-from-pin/lib" "man:${BASEDIR}/OPAM/pkg-from-pin/man" "doc:${BASEDIR}/OPAM/pkg-from-pin/doc" "share:${BASEDIR}/OPAM/pkg-from-pin/share" "etc:${BASEDIR}/OPAM/pkg-from-pin/etc" "build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28" "hash:" "dev:true" "build-id:" "opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/overlay/i-am-a-pin-pkg/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...installing... +- opam-version:++current++ +- switch:pkg-from-pin +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-pin-pkg +- version:6.28 +- depends:dep.1 +- installed:false +- enable: +- pinned:true +- bin:${BASEDIR}/OPAM/pkg-from-pin/bin +- sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin +- lib:${BASEDIR}/OPAM/pkg-from-pin/lib +- man:${BASEDIR}/OPAM/pkg-from-pin/man +- doc:${BASEDIR}/OPAM/pkg-from-pin/doc +- share:${BASEDIR}/OPAM/pkg-from-pin/share +- etc:${BASEDIR}/OPAM/pkg-from-pin/etc +- build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28 +- hash: +- dev:true +- build-id: +- opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/overlay/i-am-a-pin-pkg/opam +- installed-files: +-> installed i-am-a-pin-pkg.6.28 +Done. + +<><> i-am-a-pin-pkg.6.28 installed successfully <><><><><><><><><><><><><><><><> +=> ...A last message... + opam-version:++current++ + switch:pkg-from-pin + jobs:2 + root:${BASEDIR}/OPAM + make:make + name:i-am-a-pin-pkg + version:6.28 + depends:dep.1 + installed:true + enable: + pinned:true + bin:${BASEDIR}/OPAM/pkg-from-pin/bin + sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin + lib:${BASEDIR}/OPAM/pkg-from-pin/lib + man:${BASEDIR}/OPAM/pkg-from-pin/man + doc:${BASEDIR}/OPAM/pkg-from-pin/doc + share:${BASEDIR}/OPAM/pkg-from-pin/share + etc:${BASEDIR}/OPAM/pkg-from-pin/etc + build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28 + hash: + dev:true + build-id: + opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/packages/i-am-a-pin-pkg.6.28/opam + with-dev-setup:false + success:true + failure:false + installed-files: +### opam remove i-am-a-pin-pkg -vv | "${OPAMVERSION}" -> "++current++" | '[0-9a-z]{64}' -> '+hash+' | sed-cmd bash +The following actions will be performed: +=== remove 1 package + - remove i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/2: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "opam-version:++current++" "switch:pkg-from-pin" "jobs:2" "root:${BASEDIR}/OPAM" "make:make" "name:i-am-a-pin-pkg" "version:6.28" "depends:dep.1" "installed:true" "enable:" "pinned:true" "bin:${BASEDIR}/OPAM/pkg-from-pin/bin" "sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin" "lib:${BASEDIR}/OPAM/pkg-from-pin/lib" "man:${BASEDIR}/OPAM/pkg-from-pin/man" "doc:${BASEDIR}/OPAM/pkg-from-pin/doc" "share:${BASEDIR}/OPAM/pkg-from-pin/share" "etc:${BASEDIR}/OPAM/pkg-from-pin/etc" "build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28" "hash:" "dev:true" "build-id:" "opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/packages/i-am-a-pin-pkg.6.28/opam" "installed-files:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/remove/i-am-a-pin-pkg.6.28) +- ...removing... +- opam-version:++current++ +- switch:pkg-from-pin +- jobs:2 +- root:${BASEDIR}/OPAM +- make:make +- name:i-am-a-pin-pkg +- version:6.28 +- depends:dep.1 +- installed:true +- enable: +- pinned:true +- bin:${BASEDIR}/OPAM/pkg-from-pin/bin +- sbin:${BASEDIR}/OPAM/pkg-from-pin/sbin +- lib:${BASEDIR}/OPAM/pkg-from-pin/lib +- man:${BASEDIR}/OPAM/pkg-from-pin/man +- doc:${BASEDIR}/OPAM/pkg-from-pin/doc +- share:${BASEDIR}/OPAM/pkg-from-pin/share +- etc:${BASEDIR}/OPAM/pkg-from-pin/etc +- build:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28 +- hash: +- dev:true +- build-id: +- opamfile:${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/packages/i-am-a-pin-pkg.6.28/opam +- installed-files: +-> removed i-am-a-pin-pkg.6.28 +Done. diff --git a/tests/reftests/hooks-variables.unix.test b/tests/reftests/hooks-variables.unix.test new file mode 100644 index 00000000000..9eaf633f06d --- /dev/null +++ b/tests/reftests/hooks-variables.unix.test @@ -0,0 +1,336 @@ +N0REP0 +### ## global_variable_names +### # exe Suffix needed for executable filenames (Windows) +### :::::::: +### :: Setup +### :::::::: +### OPAMVERBOSE=2 OPAMYES=1 +### +for i in "$@"; do + echo "$i" +done +### +opam-version: "2.0" +build: [ "a-build-command" ] +install: [ "a-install-command" ] +remove: [ "a-remove-command" ] +### tar czf archive.tgz printer.sh +### openssl md5 archive.tgz | '.*= ' -> '' >$ MD5 +### sh -c "echo '$MD5' | cut -c 1-2" >$ PRE_MD5 +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$MD5" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Processing: [default: loading data] +Now run 'opam upgrade' to apply any package updates. +### :::::::::::::::::: +### :: Global wrappers +### :::::::::::::::::: +### mkdir -p OPAM/opam-init/hooks +### cp printer.sh OPAM/opam-init/hooks/printer.sh +### cp OPAM/config OPAM/config.bak +### opam option --global 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' the field pre-build-commands in global configuration +### opam option --global 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' the field pre-install-commands in global configuration +### opam option --global 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' the field pre-remove-commands in global configuration +### opam option --global 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' the field wrap-build-commands in global configuration +### opam option --global 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' the field wrap-install-commands in global configuration +### opam option --global 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' the field wrap-remove-commands in global configuration +### opam option --global 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' the field post-build-commands in global configuration +### opam option --global 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' the field post-install-commands in global configuration +### opam option --global 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' the field post-remove-commands in global configuration +### opam switch create global-wrappers --empty +### opam install i-am-a-repo-pkg | $MD5 -> +archive-hash+ | sed-cmd bash tar rsync +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/archive.tgz" "${OPAMTMP}" +- archive.tgz +- +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${OPAMTMP}/archive.tgz" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (file://${BASEDIR}/archive.tgz) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- exe: +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "exe:" "a-build-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe: +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- exe: +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- exe: +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "exe:" "a-install-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe: +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- exe: +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg | $MD5 -> +archive-hash+ | '/md5/$PRE_MD5/' -> '/md5/pre/' | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- exe: +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "exe:" "a-remove-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe: +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "exe:" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- exe: +-> removed i-am-a-repo-pkg.1 +Done. +### cp OPAM/config.bak OPAM/config +### :::::::::::::::::: +### :: Switch wrappers +### :::::::::::::::::: +### opam switch create switch-wrappers --empty +### opam option --switch switch-wrappers 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' the field pre-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' the field pre-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' the field pre-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' the field wrap-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' the field wrap-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' the field wrap-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' the field post-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' the field post-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' the field post-remove-commands in switch switch-wrappers +### opam install i-am-a-repo-pkg | $MD5 -> +archive-hash+ | '/md5/$PRE_MD5/' -> '/md5/pre/' | sed-cmd bash tar +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- exe: +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "exe:" "a-build-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe: +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- exe: +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- exe: +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "exe:" "a-install-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe: +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- exe: +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg | $MD5 -> +archive-hash+ | '/md5/$PRE_MD5/' -> '/md5/pre/' | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- exe: +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "exe:" "a-remove-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe: +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "exe:" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- exe: +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::: +### :: Package from repo +### :::::::::::::::::::: +### # "build:%{build}%" "post:%{post}%" "with-test:%{with-test}%" "with-doc:%{with-doc}%" "with-dev-setup:%{with-dev-setup}%" "dev:%{dev}%" +### +opam-version: "2.0" +build: [ "bash" "printer.sh" "...building..." "exe:%{exe}%" ] +install: [ "bash" "printer.sh" "...installing..." "exe:%{exe}%" ] +remove: [ "bash" "printer.sh" "...removing..." "exe:%{exe}%" ] +post-messages: +"""...A last message... +exe:%{exe}% +""" +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$(openssl md5 archive.tgz | cut -f2 -d' ')" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Processing: [default: loading data] +Now run 'opam upgrade' to apply any package updates. +### opam switch create pkg-from-repo --empty +### opam install i-am-a-repo-pkg | $MD5 -> +archive-hash+ | '/md5/$PRE_MD5/' -> '/md5/pre/' | sed-cmd bash tar +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/3: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...building..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe: +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...installing..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe: +-> installed i-am-a-repo-pkg.1 +Done. + +<><> i-am-a-repo-pkg.1 installed successfully <><><><><><><><><><><><><><><><><> +=> ...A last message... + exe: +### opam remove i-am-a-repo-pkg | $MD5 -> +archive-hash+ | '/md5/$PRE_MD5/' -> '/md5/pre/' | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe: +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::::: +### :: Package from pinned +### :::::::::::::::::::::: +### +opam-version: "2.0" +version: "6.28" +build: [ "bash" "printer.sh" "...building..." "exe:%{exe}%" ] +install: [ "bash" "printer.sh" "...installing..." "exe:%{exe}%" ] +remove: [ "bash" "printer.sh" "...removing..." "exe:%{exe}%" ] +post-messages: +"""...A last message... +exe:%{exe}% +""" +### cp printer.sh dir/printer.sh +### opam switch create pkg-from-pin --empty +### OPAMVERBOSE=0 opam pin ./dir -yn +[NOTE] Package i-am-a-pin-pkg does not exist in opam repositories registered in the current switch. +i-am-a-pin-pkg is now pinned to file://${BASEDIR}/dir (version 6.28) +### opam install i-am-a-pin-pkg | grep -v "total size" | sed-cmd bash rsync + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [i-am-a-pin-pkg.6.28: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/dir/" "${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/sources/i-am-a-pin-pkg" +- +[i-am-a-pin-pkg.6.28] synchronised (no changes) + +The following actions will be performed: +=== install 1 package + - install i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...building..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...building... +- exe: +-> compiled i-am-a-pin-pkg.6.28 +Processing 3/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...installing..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...installing... +- exe: +-> installed i-am-a-pin-pkg.6.28 +Done. + +<><> i-am-a-pin-pkg.6.28 installed successfully <><><><><><><><><><><><><><><><> +=> ...A last message... + exe: +### opam remove i-am-a-pin-pkg | sed-cmd bash +The following actions will be performed: +=== remove 1 package + - remove i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/2: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "exe:" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/remove/i-am-a-pin-pkg.6.28) +- ...removing... +- exe: +-> removed i-am-a-pin-pkg.6.28 +Done. diff --git a/tests/reftests/hooks-variables.win32.test b/tests/reftests/hooks-variables.win32.test new file mode 100644 index 00000000000..3d3fc2065cc --- /dev/null +++ b/tests/reftests/hooks-variables.win32.test @@ -0,0 +1,336 @@ +N0REP0 +### ## global_variable_names +### # exe Suffix needed for executable filenames (Windows) +### :::::::: +### :: Setup +### :::::::: +### OPAMVERBOSE=2 OPAMYES=1 +### +for i in "$@"; do + echo "$i" +done +### +opam-version: "2.0" +build: [ "a-build-command" ] +install: [ "a-install-command" ] +remove: [ "a-remove-command" ] +### tar czf archive.tgz printer.sh +### openssl md5 archive.tgz | '.*= ' -> '' >$ MD5 +### sh -c "echo '$MD5' | cut -c 1-2" >$ PRE_MD5 +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$MD5" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Processing: [default: loading data] +Now run 'opam upgrade' to apply any package updates. +### :::::::::::::::::: +### :: Global wrappers +### :::::::::::::::::: +### mkdir -p OPAM/opam-init/hooks +### cp printer.sh OPAM/opam-init/hooks/printer.sh +### cp OPAM/config OPAM/config.bak +### opam option --global 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' the field pre-build-commands in global configuration +### opam option --global 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' the field pre-install-commands in global configuration +### opam option --global 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' the field pre-remove-commands in global configuration +### opam option --global 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' the field wrap-build-commands in global configuration +### opam option --global 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' the field wrap-install-commands in global configuration +### opam option --global 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' the field wrap-remove-commands in global configuration +### opam option --global 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' the field post-build-commands in global configuration +### opam option --global 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' the field post-install-commands in global configuration +### opam option --global 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' the field post-remove-commands in global configuration +### opam switch create global-wrappers --empty +### opam install i-am-a-repo-pkg | sed-cmd bash tar rsync +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/archive.tgz" "${OPAMTMP}" +- archive.tgz +- +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${OPAMTMP}/archive.tgz" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (file://${BASEDIR}/archive.tgz) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- exe:.exe +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "exe:.exe" "a-build-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe:.exe +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- exe:.exe +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- exe:.exe +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "exe:.exe" "a-install-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe:.exe +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- exe:.exe +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- exe:.exe +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "exe:.exe" "a-remove-command" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe:.exe +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/global-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- exe:.exe +-> removed i-am-a-repo-pkg.1 +Done. +### cp OPAM/config.bak OPAM/config +### :::::::::::::::::: +### :: Switch wrappers +### :::::::::::::::::: +### opam switch create switch-wrappers --empty +### opam option --switch switch-wrappers 'pre-build-commands=[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre building..." "exe:%{exe}%" ]' the field pre-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-install-commands=[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre installing..." "exe:%{exe}%" ]' the field pre-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'pre-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...pre removing..." "exe:%{exe}%" ]' the field pre-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-build-commands=[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...building..." "exe:%{exe}%" ]' the field wrap-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-install-commands=[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...installing..." "exe:%{exe}%" ]' the field wrap-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'wrap-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...removing..." "exe:%{exe}%" ]' the field wrap-remove-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-build-commands=[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-building..." "exe:%{exe}%" ]' the field post-build-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-install-commands=[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-installing..." "exe:%{exe}%" ]' the field post-install-commands in switch switch-wrappers +### opam option --switch switch-wrappers 'post-remove-commands=[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' +Set to '[ "bash" "%{hooks}%/printer.sh" "...post-removing..." "exe:%{exe}%" ]' the field post-remove-commands in switch switch-wrappers +### opam install i-am-a-repo-pkg | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/3: [i-am-a-repo-pkg: bash ...pre building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre building... +- exe:.exe +Processing 2/3: [i-am-a-repo-pkg: a-build-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...building..." "exe:.exe" "a-build-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe:.exe +- a-build-command +Processing 2/3: [i-am-a-repo-pkg: bash ...post-building...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-building... +- exe:.exe +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash ...pre installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...pre installing... +- exe:.exe +Processing 3/3: [i-am-a-repo-pkg: a-install-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...installing..." "exe:.exe" "a-install-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe:.exe +- a-install-command +Processing 3/3: [i-am-a-repo-pkg: bash ...post-installing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/build/i-am-a-repo-pkg.1) +- ...post-installing... +- exe:.exe +-> installed i-am-a-repo-pkg.1 +Done. +### opam remove i-am-a-repo-pkg | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash ...pre removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...pre removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...pre removing... +- exe:.exe +Processing 2/2: [i-am-a-repo-pkg: a-remove-command] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...removing..." "exe:.exe" "a-remove-command" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe:.exe +- a-remove-command +Processing 2/2: [i-am-a-repo-pkg: bash ...post-removing...] ++ bash "${BASEDIR}/OPAM/opam-init/hooks/printer.sh" "...post-removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/switch-wrappers/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...post-removing... +- exe:.exe +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::: +### :: Package from repo +### :::::::::::::::::::: +### # "build:%{build}%" "post:%{post}%" "with-test:%{with-test}%" "with-doc:%{with-doc}%" "with-dev-setup:%{with-dev-setup}%" "dev:%{dev}%" +### +opam-version: "2.0" +build: [ "bash" "printer.sh" "...building..." "exe:%{exe}%" ] +install: [ "bash" "printer.sh" "...installing..." "exe:%{exe}%" ] +remove: [ "bash" "printer.sh" "...removing..." "exe:%{exe}%" ] +post-messages: +"""...A last message... +exe:%{exe}% +""" +### +basedir=$(printf '%s' "$BASEDIR" | sed 's/\\/\\\\/g') +cat << EOF >> REPO/packages/i-am-a-repo-pkg/i-am-a-repo-pkg.1/opam +url { + src:"file://$basedir/archive.tgz" + checksum: "md5=$(openssl md5 archive.tgz | cut -f2 -d' ')" +} +EOF +### sh add-url.sh +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Processing: [default: loading data] +Now run 'opam upgrade' to apply any package updates. +### opam switch create pkg-from-repo --empty +### opam install i-am-a-repo-pkg | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== install 1 package + - install i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/3: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/3: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1) +- ...building... +- exe:.exe +-> compiled i-am-a-repo-pkg.1 +Processing 3/3: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/build/i-am-a-repo-pkg.1) +- ...installing... +- exe:.exe +-> installed i-am-a-repo-pkg.1 +Done. + +<><> i-am-a-repo-pkg.1 installed successfully <><><><><><><><><><><><><><><><><> +=> ...A last message... + exe:.exe +### opam remove i-am-a-repo-pkg | '${PRE_MD5}..?${MD5}' -> pre/+archive-hash+ | sed-cmd bash tar +The following actions will be performed: +=== remove 1 package + - remove i-am-a-repo-pkg 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/2: [i-am-a-repo-pkg.1: extract] ++ tar "xfz" "${BASEDIR}/OPAM/download-cache/md5/pre/+archive-hash+" "-C" "${OPAMTMP}" +-> retrieved i-am-a-repo-pkg.1 (cached) +Processing 2/2: [i-am-a-repo-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-repo/.opam-switch/remove/i-am-a-repo-pkg.1) +- ...removing... +- exe:.exe +-> removed i-am-a-repo-pkg.1 +Done. +### :::::::::::::::::::::: +### :: Package from pinned +### :::::::::::::::::::::: +### +opam-version: "2.0" +version: "6.28" +build: [ "bash" "printer.sh" "...building..." "exe:%{exe}%" ] +install: [ "bash" "printer.sh" "...installing..." "exe:%{exe}%" ] +remove: [ "bash" "printer.sh" "...removing..." "exe:%{exe}%" ] +post-messages: +"""...A last message... +exe:%{exe}% +""" +### cp printer.sh dir/printer.sh +### opam switch create pkg-from-pin --empty +### OPAMVERBOSE=0 opam pin ./dir -yn +[NOTE] Package i-am-a-pin-pkg does not exist in opam repositories registered in the current switch. +i-am-a-pin-pkg is now pinned to file://${BASEDIR}/dir (version 6.28) +### opam install i-am-a-pin-pkg | grep -v "total size" | sed-cmd bash rsync + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +Processing 1/1: [i-am-a-pin-pkg.6.28: rsync] ++ rsync "-rLptgoDvc" "--exclude" ".git" "--exclude" "_darcs" "--exclude" ".hg" "--exclude" ".#*" "--exclude" "_opam*" "--exclude" "_build" "--delete" "--delete-excluded" "${BASEDIR}/dir/" "${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/sources/i-am-a-pin-pkg" +- +[i-am-a-pin-pkg.6.28] synchronised (no changes) + +The following actions will be performed: +=== install 1 package + - install i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...building..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...building... +- exe:.exe +-> compiled i-am-a-pin-pkg.6.28 +Processing 3/3: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...installing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/build/i-am-a-pin-pkg.6.28) +- ...installing... +- exe:.exe +-> installed i-am-a-pin-pkg.6.28 +Done. + +<><> i-am-a-pin-pkg.6.28 installed successfully <><><><><><><><><><><><><><><><> +=> ...A last message... + exe:.exe +### opam remove i-am-a-pin-pkg | sed-cmd bash +The following actions will be performed: +=== remove 1 package + - remove i-am-a-pin-pkg 6.28 (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +Processing 2/2: [i-am-a-pin-pkg: bash printer.sh] ++ bash "printer.sh" "...removing..." "exe:.exe" (CWD=${BASEDIR}/OPAM/pkg-from-pin/.opam-switch/remove/i-am-a-pin-pkg.6.28) +- ...removing... +- exe:.exe +-> removed i-am-a-pin-pkg.6.28 +Done. diff --git a/tests/reftests/var-option.test b/tests/reftests/var-option.test index 780353b8995..8a8c9af8662 100644 --- a/tests/reftests/var-option.test +++ b/tests/reftests/var-option.test @@ -759,3 +759,90 @@ Set to '["otherpkg"]' the field depext-bypass in global configuration ### opam option depext-bypass=["yetanotherpkg"] --switch phantom [ERROR] The selected switch phantom is not installed # Return code 2 # +### ::: What is the path for PKG:opamfile +### opam switch create --empty var-opamfile +### :a: present in the repo but not installed +### +opam-version: "2.0" +### opam option --switch=var-opamfile 'pre-build-commands=["cat" opamfile]' +Set to '["cat" opamfile]' the field pre-build-commands in switch var-opamfile +### opam var test:opamfile +[ERROR] Variable test:opamfile not found in switch var-opamfile; package test is not installed in this switch +# Return code 5 # +### :b: present in the repo and installed +### opam install -v test | grep -v '^Processing ' | sed-cmd cat +The following actions will be performed: +=== install 1 package + - install test 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> ++ cat "${OPAMTMP}/opam" (CWD=${BASEDIR}/OPAM/var-opamfile/.opam-switch/build/test.1) +- opam-version: "2.0" +- name: "test" +- version: "1" +-> installed test.1 +Done. +### opam var test:opamfile +${BASEDIR}/OPAM/var-opamfile/.opam-switch/packages/test.1/opam +### :c: not present in the repo but installed +### rm REPO/packages/test/test.1/opam +### opam update + +<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><> +[default] synchronised from file://${BASEDIR}/REPO +Now run 'opam upgrade' to apply any package updates. +### opam var test:opamfile +${BASEDIR}/OPAM/var-opamfile/.opam-switch/packages/test.1/opam +### :d: not present in the repo and not installed +### opam remove test +The following actions will be performed: +=== remove 1 package + - remove test 1 + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> removed test.1 +Done. +### opam var test:opamfile +[ERROR] Variable test:opamfile not found in switch var-opamfile; package test is not installed in this switch +# Return code 5 # +### :e: pinned but not installed +### +opam-version: "2.0" +### opam pin add -n ./pinned-opamfile-test +[NOTE] Package pinned-opamfile-test does not exist in opam repositories registered in the current switch. +pinned-opamfile-test is now pinned to file://${BASEDIR}/pinned-opamfile-test (version dev) +### opam var pinned-opamfile-test:opamfile +[ERROR] Variable pinned-opamfile-test:opamfile not found in switch var-opamfile; package pinned-opamfile-test is not installed in this switch +# Return code 5 # +### :f: pinned and installed +### opam install -v pinned-opamfile-test | grep -v '^Processing ' | sed-cmd cat + +<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><> +[pinned-opamfile-test.dev] synchronised (no changes) + +The following actions will be performed: +=== install 1 package + - install pinned-opamfile-test dev (pinned) + +<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> +-> retrieved pinned-opamfile-test.dev (file://${BASEDIR}/pinned-opamfile-test) ++ cat "${BASEDIR}/OPAM/var-opamfile/.opam-switch/overlay/pinned-opamfile-test/opam" (CWD=${BASEDIR}/OPAM/var-opamfile/.opam-switch/build/pinned-opamfile-test.dev) +- opam-version: "2.0" +- synopsis: "A word" +- description: "Two words." +- authors: "the testing team" +- homepage: "egapemoh" +- maintainer: "maint@tain.er" +- license: "MIT" +- dev-repo: "hg+https://pkg@op.am" +- bug-reports: "https://nobug" +- name: "pinned-opamfile-test" +- version: "dev" +- url { +- src: +- "file://${BASEDIR}/pinned-opamfile-test" +- } +-> installed pinned-opamfile-test.dev +Done. +### opam var pinned-opamfile-test:opamfile +${BASEDIR}/OPAM/var-opamfile/.opam-switch/packages/pinned-opamfile-test.dev/opam