Ocaml-ci-scripts are now using opam2 by default


#1

If you are using ocaml-ci-scripts to run your CI scripts using Travis CI, Circle CI or Appveyor, you should know that since a few minutes ago, the default images and scripts are using opam2-rc4.

Normally, the change should be completely transparent: everything should continue to work as before. If that’s not the case, you could revert to use opam 1.2.2 by setting OPAM_VERSION=1.2.2 in your .travis.yml script and please report the issue so that we can fix it before the release planned in September.


#2

Is there any way to use opam2 but disable the sandbox? My unit tests need to create a Unix-domain socket for gpg, and it looks like opam2 blocks that on macos:

https://travis-ci.org/0install/0install/jobs/417668278


#3

There is an opam-disable-sandbox script installed in all the containers. If you run that, the opamrc will disable sandboxing in the .opamrc and you are good to go. I think that’s the only option on macOS, since we aren’t running under Docker there.


#4

I am trying to use the docker-based CI with my own base remote and surprising for me, the compiler gets downgraded to a lower version:

language: c
sudo: required
service: docker
install: wget https://raw.githubusercontent.com/ocaml/ocaml-ci-scripts/master/.travis-docker.sh
script: bash -ex .travis-docker.sh
env:
  global:
    - PINS="xapi:."
    - BASE_REMOTE="https://github.com/lindig/xs-opam.git"
    - DISTRO="debian-9-ocaml-4.07"
    - OCAML_VERSION="4.07"
  matrix:
    - PACKAGE="xapi"
...
The following actions will be performed:
  - downgrade ocaml-base-compiler 4.07.0 to 4.04.2
  - downgrade ocaml               4.07.0 to 4.04.2 [uses ocaml-base-compiler]

My own base remote does not contain a definition for 4.04.2 and so I suspect it is coming from the Docker image. Any tips?


#5

Try adding ocaml-base-compiler.4.07.0 to the PACKAGE list and see if that helps. Might be an opam2 bug, or might be an actual constraint on that compiler revision, not sure which.


#6

Thanks. On further inspection, I can see that I need to access a branch other than master in the BASE_REMOTE. This needs further investigation on my side.

Addendum: it works now as expected. I added support for specifying a BASE_REMOTE_BRANCH. This has been merged into the official scripts.