The -n prevents immediate reinstallation of the package (and all its reverse dependencies).
I do not understand why the pin commands failed in your case. This failure is the reason for the subsequent errors you encountered.
That won’t be necessary as the packages in question have now been updated on the opam repository and should be installable out of the box. Therefore it won’t be necessary anymore to pin them. You can unpin them by running $ opam unpin <package-name>.
The perfect place to publish information on package compatibilities is the opam file of package releases. Once a pull request has been created on opam-repository, releases are generally published reasonable quickly, more often than within the day. In this case multiple packages that hadn’t been maintained for months had to be updated consequtively, which is why whole matter took a bit longer than usual.
I sincerely hope that the packages in question will not fall again into the state of disrepair that you had to witness. In any case, I will henceforth do my best to publish releases frequently and will ask the rest of the ocsigen team to do so as well.
What do you mean with “check …that something broken”?
As I said above, we need at least (from any package author) a proof that it compiles well (such set of packages with other related files and build setup). To be able to reproduce it.
If the package manager adds its own issues, we should be able to tweak it to get the result expected,
Or at last even do the build by hand if necessary (thats’ only about 20 packages + depext).
A few days ago, I’ve done a test with building ocsigen-start 1.0.0 “as-is” on opam repository with opam 2.0.2 but I could not compile it entirely (just one package, js_of_ocaml, I don’t remember it’s name)
I wanted to say that for project like this not only compilation should be checked by CI but also functional testing is required (to be sure that HelloWorld behaves like HelloWorld).
This proof comes in a the form of package dependency version bounds. No additional proof is required.
The rigour used in determining and maximising valid version bounds however is a different question. I’m repeating myself in saying that in my opinion the solution consists of:
a common package versioning policy (such as https://pvp.haskell.org/) adopted by all package maintainers
automated testing that determines whether upper version bounds of existing packages can be raised to new releases of package dependencies
Which version of eliom are you installing?
It should be eliom.6.5.0.
If not, do opam update && opam install eliom and tell us.
As a tweak for ocsigen.1.0.0 (that uses eliom.6.2.0), I had to explicitely install ocaml-compiler-libs.v0.11.0 before capml4 to be able to install camlp4-related stuff. That may explain your trouble with lwt_campl4.
eliom.6.5.0 is a dependency of ocsigen-start.1.3.0 which has been (ocsigen) recently released with additional small installation script bug fixed 2-3 days ago. I could eventually successfully install ocsigen.1.3.0 .
EDIT: can you show us what gives opam list in the related opam switch?
The following actions will be performed:
∗ install pcre 7.3.5 [required by ocsigenserver]
∗ install lwt_camlp4 1.0.0 [required by eliom]
∗ install deriving 0.8.1 [required by eliom]
∗ install ocamlnet 4.1.6 [required by ocsigenserver]
∗ install ocsigenserver 2.11.0 [required by eliom]
∗ install eliom 6.5.0
===== ∗ 6 =====
Do you want to continue? [Y/n] y
I already have ocaml-compiler-libs.v0.11.0 installed, so I uninstalled camlp4 and installed again. It didn’t work.
My opam list:
# Name # Installed # Synopsis
async v0.11.0 Monadic concurrency library
async_extra v0.11.1 Monadic concurrency library
async_kernel v0.11.1 Monadic concurrency library
async_rpc_kernel v0.11.0 Platform-independent core of Async RPC library
async_unix v0.11.0 Monadic concurrency library
base v0.11.1 Full standard library replacement for OCaml
base-bigarray base
base-bytes base Bytes library distributed with the OCaml compiler
base-threads base
base-unix base
base64 2.3.0 Base64 encoding for OCaml
bin_prot v0.11.0 A binary protocol generator
biniou 1.2.0 Binary data format designed for speed, safety, ease of use and backward compatibility as pro
calendar 2.04 Library for handling dates and times in your program
camlp4 4.07+system Camlp4 is a system for writing extensible parsers for programming languages
camomile 1.0.1 A Unicode library
cmdliner 1.0.3 Declarative definition of command line interfaces for OCaml
cohttp 1.2.0 An OCaml library for HTTP clients and servers
conf-dbm 1.0.0 Virtual package relying on gdbm
conf-emacs 1 Virtual package to install the Emacs editor
conf-gmp 1 Virtual package relying on a GMP lib system installation
conf-gmp-powm-sec 1 Virtual package relying on a GMP lib with constant-time modular exponentiation
conf-libpcre 1 Virtual package relying on a libpcre system installation
conf-m4 1 Virtual package relying on m4
conf-openssl 1 Virtual package relying on an OpenSSL system installation
conf-perl 1 Virtual package relying on perl
conf-pkg-config 1.1 Virtual package relying on pkg-config installation
conf-which 1 Virtual package relying on which
conf-zlib 1 Virtual package relying on zlib
configurator v0.11.0 Helper library for gathering system configuration
core v0.11.3 Industrial strength alternative to OCaml's standard library
core_bench v0.11.0 Benchmarking library
core_extended v0.11.0 Extra components that are not as closely vetted or as stable as Core
core_kernel v0.11.1 Industrial strength alternative to OCaml's standard library
cppo 1.6.5 Equivalent of the C preprocessor for OCaml programs
cppo_ocamlbuild 1.6.0 ocamlbuild support for cppo, OCaml-friendly source preprocessor
cryptokit 1.13 A library of cryptographic primitives.
csv 2.2 A pure OCaml library to read and write CSV files
dbm 1.2 Binding to the NDBM/GDBM Unix "databases"
dune 1.6.3 Fast, portable and opinionated build system
easy-format 1.3.1 High-level and functional interface to the Format module of the OCaml standard library
fieldslib v0.11.0 Syntax extension to define first class values representing record fields, to get and set rec
ipaddr 3.0.0 A library for manipulation of IP (and MAC) address representations
jane-street-headers v0.11.0 Jane Street C header files
jbuilder transition This is a transition package, jbuilder is now named dune. Use the dune
js_of_ocaml 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-compiler 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-lwt 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ocamlbuild 3.1.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ppx 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ppx_deriving_json 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-tyxml 3.3.0 Compiler from OCaml bytecode to Javascript
jsonm 1.0.1 Non-blocking streaming JSON codec for OCaml
lambda-term 1.13 Terminal manipulation library for OCaml
lwt 4.1.0 Promises, concurrency, and parallelized I/O
lwt_log 1.1.0 Lwt logging library (deprecated)
lwt_ppx 1.2.1 PPX syntax for Lwt, providing something similar to async/await from JavaScript
lwt_react 1.1.1 Helpers for using React with Lwt
lwt_ssl 1.1.2 OpenSSL binding with concurrent I/O
macaddr 3.0.0 A library for manipulation of MAC address representations
menhir 20181113 An LR(1) parser generator
merlin 3.2.2 Installation with Opam
merlin-extend 0.3 A protocol to provide custom frontend to Merlin
num 1.1 The legacy Num library for arbitrary-precision integer and rational arithmetic
oasis 0.4.11 Tooling for building OCaml libraries and applications
ocaml 4.07.1 The OCaml compiler (virtual package)
ocaml-compiler-libs v0.11.0 OCaml compiler libraries repackaged
ocaml-config 1 OCaml Switch Configuration
ocaml-migrate-parsetree 1.1.0
ocaml-system 4.07.1 The OCaml compiler (system version, from outside of opam)
ocamlbuild 0.12.0 OCamlbuild is a build system with builtin rules to easily build most OCaml projects.
ocamlfind 1.8.0 A library manager for OCaml
ocamlify 0.0.1 Include files in OCaml code
ocamlmod 0.0.9 Generate OCaml modules from source files
ocp-indent 1.7.0 A simple tool to indent OCaml programs
ocsigen-i18n 3.3.0 I18n made easy for web sites written with eliom.
octavius 1.2.0 Ocamldoc comment syntax parser
parsexp v0.11.0 S-expression parsing library
ppx_assert v0.11.0 Assert-like extension nodes that raise useful errors on failure
ppx_ast v0.11.0 Deprecated: use ppxlib instead
ppx_base v0.11.0 Base set of ppx rewriters
ppx_bench v0.11.0 Syntax extension for writing in-line benchmarks in ocaml code
ppx_bin_prot v0.11.0 Generation of bin_prot readers and writers from types
ppx_compare v0.11.0 Generation of comparison functions from types
ppx_core v0.11.0 Deprecated: use ppxlib instead
ppx_custom_printf v0.11.0 Printf-style format-strings for user-defined string conversion
ppx_derivers 1.0 Shared [@@deriving] plugin registry
ppx_deriving 4.2.1 Type-driven code generation for OCaml >=4.02
ppx_driver v0.11.0 Deprecated: use ppxlib instead
ppx_enumerate v0.11.0 Generate a list containing all values of a finite type
ppx_expect v0.11.1 Cram like framework for OCaml
ppx_fail v0.11.0 Add location to calls to failwiths
ppx_fields_conv v0.11.0 Generation of accessor and iteration functions for ocaml records
ppx_hash v0.11.0 A ppx rewriter that generates hash functions from type expressions and definitions
ppx_here v0.11.0 Expands [%here] into its location
ppx_inline_test v0.11.0 Syntax extension for writing in-line tests in ocaml code
ppx_jane v0.11.0 Standard Jane Street ppx rewriters
ppx_js_style v0.11.0 Code style checker for Jane Street Packages
ppx_let v0.11.0 Monadic let-bindings
ppx_metaquot v0.11.0 Deprecated: use ppxlib instead
ppx_optcomp v0.11.0 Optional compilation for OCaml
ppx_optional v0.11.0 Pattern matching on flat options
ppx_pipebang v0.11.0 A ppx rewriter that inlines reverse application operators `|>` and `|!`
ppx_sexp_conv v0.11.1 Generation of S-expression conversion functions from type definitions
ppx_sexp_message v0.11.0 A ppx rewriter for easy construction of s-expressions
ppx_sexp_value v0.11.0 A ppx rewriter that simplifies building s-expressions from ocaml values
ppx_tools 5.1+4.06.0 Tools for authors of ppx rewriters and other syntactic tools
ppx_tools_versioned 5.2.1 A variant of ppx_tools based on ocaml-migrate-parsetree
ppx_traverse v0.11.0 Deprecated: use ppxlib instead
ppx_traverse_builtins v0.11.0 Deprecated: use ppxlib instead
ppx_type_conv v0.11.0 Deprecated: use ppxlib instead
ppx_typerep_conv v0.11.0 Generation of runtime types from type declarations
ppx_variants_conv v0.11.0 Generation of accessor and iteration functions for ocaml variant types
ppxlib 0.2.2 A comprehensive toolbox for ppx development. It features:
protocol_version_header v0.11.0 Protocol versioning
re 1.8.0 RE is a regular expression library for OCaml
re2 v0.11.0 OCaml bindings for RE2, Google's regular expression library
react 1.2.1 Declarative events and signals for OCaml
reactiveData 0.2.2 Declarative events and signals for OCaml
reason 3.3.7 Reason: Syntax & Toolchain for OCaml
resource-pooling 0.5.2 Library for pooling resources like connections, threads, or similar
result 1.3 Compatibility Result module
safepass 3.0 Facilities for the safe storage of user passwords
seq base Compatibility package for OCaml's standard iterator type starting from 4.07.
sexplib v0.11.0 Library for serializing OCaml values to and from S-expressions
sexplib0 v0.11.0 Library containing the definition of S-expressions and some base converters
spawn v0.12.0 Spawning sub-processes
splittable_random v0.11.0 PRNG that can be split into independent streams
ssl 0.5.7 Bindings for OpenSSL
stdio v0.11.0 Standard IO library for OCaml
stringext 1.5.0 Extra string functions for OCaml
textutils v0.11.0 Text output utilities
textutils_kernel v0.11.0 Text output utilities
topkg 1.0.0 The transitory OCaml software packager
tuareg 2.2.0 OCaml mode for GNU Emacs and XEmacs.
typerep v0.11.0 typerep is a library for runtime types.
tyxml 4.3.0 TyXML is a library for building correct HTML and SVG documents
uchar 0.0.2 Compatibility library for OCaml's Uchar module
uri 2.1.0 An RFC3986 URI/URL parsing library
user-setup 0.7 Helper for the configuration of editors for the use of OCaml tools
utop 2.2.0 Universal toplevel for OCaml
uutf 1.0.1 Non-blocking streaming Unicode codec for OCaml
variantslib v0.11.0 Part of Jane Street's Core library
xml-light 2.4 Xml-Light is a minimal XML parser & printer for OCaml
yojson 1.5.0 Yojson is an optimized parsing and printing library for the JSON format
zarith 1.7 Implements arithmetic and logical operations over arbitrary-precision integers
zed 1.6 Abstract engine for text edition in OCaml
I you are still into trouble, can you try with a fresh switch as described above?
I don’t know what to say about the suffix system in your camlp4 setup camlp4 4.07+system. I always use fresh switches and not the system one. But I see no reason why it should be causing you a problem.
All this is discussed assuming that no other libs interfere (async, core, etc.)
EDIT:
I could also install ocsigen-start in one command:
Side note:
Discussion with Opam and Ocaml experts (at least @Vincent_Balat for eliom and @AltGr for opam) about this “ocaml-compiler-libs v0.11.0 story”:
If I observed that behavior and found that workaround, this OCaml&Opam behavior is still weird for me.
Why must we manually install ocaml-compiler-libs v0.11.0, then campl4 to be eventually able to install lwt_camlp4?
Is there another way to do that?
And how can we get Opam to do this for us?
Thanks.
$ opam remove conf-libpcre
$ opam update # yes, I know...
# opam should inform us that some of the packages we are installing
# have been updated upstream and ask us to confirm that YES we can!
$ opam install pcre
$ opam install eliom # if pcre has been installed. Or do directly eliom as you wish.
So I did as instructed but I’m anyway getting an error installing pcre
<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
┌─ The following actions failed
│ λ build **pcre** 7.3.5
└─
┌─ The following changes have been performed
│ ∗ install **conf-libpcre** 1
└─
I checked the switch, it is on the fresh ocaml-base-compiler (btw, what’s the difference between system and base compilers?)
Including my opam list just in case:
# Packages matching: installed
# Name # Installed # Synopsis
base v0.11.1 Full standard library replacement for OCaml
base-bigarray base
base-bytes base Bytes library distributed with the OCaml compiler
base-threads base
base-unix base
biniou 1.2.0 Binary data format designed for speed, safety, ease of use and backward compatibility as pro
calendar 2.04 Library for handling dates and times in your program
camlp4 4.07+1 Camlp4 is a system for writing extensible parsers for programming languages
cmdliner 1.0.3 Declarative definition of command line interfaces for OCaml
conf-dbm 1.0.0 Virtual package relying on gdbm
conf-gmp 1 Virtual package relying on a GMP lib system installation
conf-gmp-powm-sec 1 Virtual package relying on a GMP lib with constant-time modular exponentiation
conf-libpcre 1 Virtual package relying on a libpcre system installation
conf-m4 1 Virtual package relying on m4
conf-openssl 1 Virtual package relying on an OpenSSL system installation
conf-perl 1 Virtual package relying on perl
conf-pkg-config 1.1 Virtual package relying on pkg-config installation
conf-which 1 Virtual package relying on which
conf-zlib 1 Virtual package relying on zlib
cppo 1.6.5 Equivalent of the C preprocessor for OCaml programs
cppo_ocamlbuild 1.6.0 ocamlbuild support for cppo, OCaml-friendly source preprocessor
cryptokit 1.13 A library of cryptographic primitives.
csv 2.2 A pure OCaml library to read and write CSV files
dbm 1.2 Binding to the NDBM/GDBM Unix "databases"
deriving 0.8.1 Extension to OCaml for deriving functions from type declarations
dune 1.6.3 Fast, portable and opinionated build system
easy-format 1.3.1 High-level and functional interface to the Format module of the OCaml standard library
ipaddr 3.0.0 A library for manipulation of IP (and MAC) address representations
jbuilder transition This is a transition package, jbuilder is now named dune. Use the dune
js_of_ocaml 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-camlp4 3.1.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-compiler 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-lwt 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ocamlbuild 3.1.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ppx 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-ppx_deriving_json 3.3.0 Compiler from OCaml bytecode to Javascript
js_of_ocaml-tyxml 3.3.0 Compiler from OCaml bytecode to Javascript
lwt 4.1.0 Promises, concurrency, and parallelized I/O
lwt_camlp4 1.0.0 Camlp4 syntax extension for Lwt (deprecated)
lwt_log 1.1.0 Lwt logging library (deprecated)
lwt_ppx 1.2.1 PPX syntax for Lwt, providing something similar to async/await from JavaScript
lwt_react 1.1.1 Helpers for using React with Lwt
lwt_ssl 1.1.2 OpenSSL binding with concurrent I/O
macaddr 3.0.0 A library for manipulation of MAC address representations
macaque 0.7.4 Macaque (Macros for Caml Queries) is a DSL for OCaml, which produces
num 1.1 The legacy Num library for arbitrary-precision integer and rational arithmetic
oasis 0.4.11 Tooling for building OCaml libraries and applications
ocaml 4.07.1 The OCaml compiler (virtual package)
ocaml-base-compiler 4.07.1 Official release 4.07.1
ocaml-config 1 OCaml Switch Configuration
ocaml-migrate-parsetree 1.2.0 Convert OCaml parsetrees between different versions
ocamlbuild 0.12.0 OCamlbuild is a build system with builtin rules to easily build most OCaml projects.
ocamlfind 1.8.0 A library manager for OCaml
ocamlify 0.0.1 Include files in OCaml code
ocamlmod 0.0.9 Generate OCaml modules from source files
ocsigen-i18n 3.3.0 I18n made easy for web sites written with eliom.
pgocaml 2.3 Interface to PostgreSQL databases
ppx_derivers 1.0 Shared [@@deriving] plugin registry
ppx_deriving 4.2.1 Type-driven code generation for OCaml >=4.02
ppx_tools 5.1+4.06.0 Tools for authors of ppx rewriters and other syntactic tools
ppx_tools_versioned 5.2.1 A variant of ppx_tools based on ocaml-migrate-parsetree
re 1.8.0 RE is a regular expression library for OCaml
react 1.2.1 Declarative events and signals for OCaml
reactiveData 0.2.2 Declarative events and signals for OCaml
resource-pooling 0.5.2 Library for pooling resources like connections, threads, or similar
result 1.3 Compatibility Result module
safepass 3.0 Facilities for the safe storage of user passwords
seq base Compatibility package for OCaml's standard iterator type starting from 4.07.
sexplib0 v0.11.0 Library containing the definition of S-expressions and some base converters
ssl 0.5.7 Bindings for OpenSSL
topkg 1.0.0 The transitory OCaml software packager
tyxml 4.3.0 TyXML is a library for building correct HTML and SVG documents
uchar 0.0.2 Compatibility library for OCaml's Uchar module
uutf 1.0.1 Non-blocking streaming Unicode codec for OCaml
xml-light 2.4 Xml-Light is a minimal XML parser & printer for OCaml
yojson 1.5.0 Yojson is an optimized parsing and printing library for the JSON format
zarith 1.7 Implements arithmetic and logical operations over arbitrary-precision integers
1/ you’re only stuck because of pcre, but it could/should also be useful to add eliom depext (for ocsigen it’s mandatory). So try:
$ opam install depext # to manage dependecies external to opam
$ opam depext eliom
Just a check:
$ opam depext eliom
debianutils
libgdbm-dev
libgmp-dev
libpcre3-dev
libssl-dev
m4
perl
pkg-config
zlib1g-de
Hey! there is a libpcre3-dev depext.
I don’t have your pcre build log but it could be your solution.
2/ I don’t see ocaml-compiler-libs in your opam list/ I still don’t know why this workaround did the job for me, but it did.
Do 1/. If it still fails, pls. remove then install again camlp4 and ocaml-compiler-libs.v0.11.0 .
It worked! Yeay thank you so much! I wouldn’t be able to make it without you. Also, mentioning depext in ocsigen docs would be very nice; it seems to be a very nice tool.
Camlp4 was part of the official OCaml distribution until its version 4.01.0. Since then it has been replaced by a simpler system which is easier to maintain and to learn: ppx rewriters and extension points.
opam installed 4.07+system on you machine.
I don’t know if it caused trouble or not.
4.07+1 is also available.
I don’t know much more.
Unfortunately it’s not in the landing page http://ocsigen.org/ocsigen-start/1.1.0/manual/intro . But this page (Installation section) references the README.md page which gives the depext command.
Now you can go ahead.
The scripts have been improved a few days ago to fix the problems we had in december. So it should avoid you headaches.
Follow strictly the DB sequence (init/create/schema).
Pls. let me/us know if you have problem when executing the make test.byte. Because in the fresh ocsigen-start installation I’ve just encountered the same problem in Makefile.options I had before it was fixed.
Locally, I still have lwt_log in CLIENT_PACKAGES whereas it’s no longer in Makefile.options (master is ocsigen 1.3.0 as of today).
I don’t understand why opam update&& opam upgrade didn’t pull the file more recent Makefile.options file.
I’m currently looking for the reason why this happened.
I don’t know if it’s because the ocsigen team did not put a “correct” opam file or if opam failed in downloading the available packages because it already installed them the same day within an hour.
@Jean_Dutier and @AltGr: How can you explain that behavior?
Wich rules does opam use to decide to download a package? (date? version?)
Anyway, how can we be 100% sure that opam downloads the packages that are available at the moment of the installation?
EDIT2 @Jean_Dutier
I’ve removed and installed eliom and ocsigen-startdone twice, with checked removal of files (in ./lib/eliom/templates/os.pgocaml/ etc.)
Can you consider changing the left menu? (on all the website…)
Its height is too small to see the items and moreover it’s resetted to its top position each time you select a new page, which is not at all usable.
Being simply on the left in fixed position is enough and necessary.
Thanks.
There is someone (leovalais) reworking the ocsigen documentation right now. We also came to the conclusion that the installation instructions too scattered and need to be centralised, so this issue will be addressed. If I’m not mistaken the reworked documentation will be released soon. Concerning the other issues I will forward your post to him.