ocsigen / graffiti

A tiny collaborative drawing application in eliom.
http://ocsigen.org/tuto/manual/application
Other
10 stars 13 forks source link

Compilation failure: _server/graffiti.type_mli: No such file or directory #13

Closed Kakadu closed 2 years ago

Kakadu commented 2 years ago

Any advice how to fix this? @balat

✗ make -C simple 
make: Entering directory '/media/work/asp/eliom-test/graffiti/simple'
js_of_eliom -ppx -c -package ocsigen-toolkit.client -package react -package js_of_ocaml-ppx -package lwt_ppx -package js_of_ocaml-lwt -package js_of_ocaml-ppx_deriving_json  graffiti.eliom
File "_server/graffiti.type_mli", line 1:
Error: Eliom: Error while loading types: _server/graffiti.type_mli: No such
       file or directory
make: *** [Makefile:206: _client/graffiti.cmo] Error 2

Installed packages:

Installed packages: (Spoiler warning) ```` ✗ opam list # Packages matching: installed # Name # Installed # Synopsis alcotest 1.5.0 Alcotest is a lightweight and colourful test framework angstrom 0.15.0 Parser combinators built for speed and memory-efficiency arp 3.0.0 Address Resolution Protocol purely in OCaml art 0.1.1 Adaptive Radix Tree asn1-combinators 0.2.6 Embed typed ASN.1 grammars in OCaml astring 0.8.5 Alternative String module for OCaml awa 0.0.5 SSH implementation in OCaml awa-mirage 0.0.5 SSH implementation in OCaml base v0.14.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 3.5.0 Base64 encoding for OCaml base_quickcheck v0.14.1 Randomized testing framework, designed for compatibility with Base batteries 3.3.0 A community-maintained standard library extension benchmark 1.6 Benchmark running times of code bheap 2.0.0 Priority queues bigarray-compat 1.0.0 Compatibility library to use Stdlib.Bigarray when possible bigstringaf 0.8.0 Bigstring intrinsics and fast blits based on memcpy/memmove bin_prot v0.14.0 A binary protocol generator biniou 1.2.1 Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve bos 0.2.1 Basic OS interaction for OCaml ca-certs 0.2.2 Detect root CA certificates from the operating system ca-certs-nss 3.71.0.1 X.509 trust anchors extracted from Mozilla's NSS calendar 2.04 Library for handling dates and times in your program camlp5 8.00.02 Preprocessor-pretty-printer of OCaml camlzip 1.11 Accessing compressed files in ZIP, GZIP and JAR format camomile 1.0.2 A Unicode library carton 0.4.3 Implementation of PACKv2 file in OCaml carton-git 0.4.3 Implementation of PACK file in OCaml carton-lwt 0.4.3 Implementation of PACK file in OCaml charInfo_width 1.1.0 Determine column width for a character checkseum 0.3.2 Adler-32, CRC32 and CRC32-C implementation in C and OCaml cmdliner 1.0.4 Declarative definition of command line interfaces for OCaml cohttp 4.0.0 An OCaml library for HTTP clients and servers cohttp-lwt 4.0.0 CoHTTP implementation using the Lwt concurrency library cohttp-lwt-unix 4.0.0 CoHTTP implementation for Unix and Windows using Lwt conduit 4.0.2 A network connection establishment library conduit-lwt 4.0.2 A portable network connection establishment library using Lwt conduit-lwt-unix 4.0.2 A network connection establishment library for Lwt_unix conf-dbm 1.0.0 Virtual package relying on gdbm conf-gmp 3 Virtual package relying on a GMP lib system installation conf-gmp-powm-sec 3 Virtual package relying on a GMP lib with constant-time modular exponentiation conf-libpcre 1 Virtual package relying on a libpcre system installation conf-libseccomp 1 Virtual package relying on a libseccomp system installation conf-libssl 3 Virtual package relying on an OpenSSL library system installation conf-m4 1 Virtual package relying on m4 conf-perl 1 Virtual package relying on perl conf-perl-ipc-system-simple 1 Virtual package relying on perl's IPC::System::Simple conf-perl-string-shellquote 1 Virtual package relying on perl's String::ShellQuote conf-pkg-config 2 Check if pkg-config is installed and create an opam switch local pkgconfig folder conf-python-2-7 1.2 Virtual package relying on Python-2.7 installation conf-sqlite3 1 Virtual package relying on an SQLite3 system installation conf-which 1 Virtual package relying on which conf-zlib 1 Virtual package relying on zlib cppo 1.6.8 Code preprocessor like cpp for OCaml cryptokit 1.16.1 A library of cryptographic primitives csexp 1.5.1 Parsing and printing of S-expressions in Canonical form cstruct 6.0.1 Access C-like structures directly from OCaml cstruct-lwt 6.0.1 Access C-like structures directly from OCaml cstruct-sexp 6.0.1 S-expression serialisers for C-like structures cstruct-unix 6.0.1 Access C-like structures directly from OCaml dbm 1.3 Binding to the NDBM/GDBM Unix "databases" decompress 1.4.2 Implementation of Zlib and GZip in OCaml digestif 1.1.0 Hashes implementations (SHA*, RIPEMD160, BLAKE2* and MD5) domain-name 0.3.1 RFC 1035 Internet domain names duff 0.4 Rabin's fingerprint and diff algorithm in OCaml dune 2.9.1 Fast, portable, and opinionated build system dune-action-plugin 2.9.1 [experimental] API for writing dynamic Dune actions dune-build-info 2.9.1 Embed build informations inside executable dune-configurator 2.9.1 Helper library for gathering system configuration dune-glob 2.9.1 Glob string matching language supported by dune dune-private-libs 2.9.1 Private libraries of Dune duration 0.2.0 Conversions to various time units easy-format 1.3.2 High-level and functional interface to the Format module of the OCaml standard library either 1.0.0 Compatibility Either module eliom 9.3.0 Client/server Web framework emile 1.1 Parser of email address according RFC822 encore 0.8 Library to generate encoder/decoder which ensure isomorphism eqaf 0.8 Constant-time equal function on string ethernet 3.0.0 OCaml Ethernet (IEEE 802.3) layer, used in MirageOS fieldslib v0.14.0 Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a fix 20201120 Facilities for memoization and fixed points fmt 0.9.0 OCaml Format pretty-printer combinators fpath 0.7.3 File system paths for OCaml functoria-runtime 3.0.3 Runtime support library for functoria-generated code GT 0.4.2 Generic programming with extensible transformations gen 0.5.3 Iterators for OCaml, both restartable and consumable git 3.6.0 Git format and protocol in pure OCaml git-cohttp 3.6.0 A package to use HTTP-based ocaml-git with Unix backend git-cohttp-unix 3.6.0 A package to use HTTP-based ocaml-git with Unix backend git-unix 3.6.0 Virtual package to install and configure ocaml-git's Unix backend gmap 0.3.0 Heterogenous maps over a GADT hkdf 1.0.4 HMAC-based Extract-and-Expand Key Derivation Function (RFC 5869) hmap 0.8.1 Heterogeneous value maps for OCaml hxd 0.3.1 Hexdump in OCaml io-page 2.4.0 Support for efficient handling of I/O memory pages ipaddr 5.2.0 A library for manipulation of IP (and MAC) address representations ipaddr-sexp 5.2.0 A library for manipulation of IP address representations using sexp jane-street-headers v0.14.0 Jane Street C header files js_of_ocaml 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-compiler 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-lwt 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ocamlbuild 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ppx 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ppx_deriving_json 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-tyxml 3.11.0 Compiler from OCaml bytecode to JavaScript jsonm 1.0.1 Non-blocking streaming JSON codec for OCaml jst-config v0.14.1 Compile-time configuration for Jane Street libraries ke 0.4 Queue implementation lambda-term 3.1.0 Terminal manipulation library for OCaml lazy-trie 1.2.0 Implementation of lazy prefix trees logger-p5 0.4.5 Camlp5 syntax extension for logging logs 0.7.0 Logging infrastructure for OCaml lru 0.3.0 Scalable LRU caches lwt 5.5.0 Promises and event-driven I/O lwt-dllist 1.0.1 Mutable doubly-linked list with Lwt iterators lwt_log 1.1.1 Lwt logging library (deprecated) lwt_ppx 2.0.3 PPX syntax for Lwt, providing something similar to async/await from JavaScript lwt_react 1.1.5 Helpers for using React with Lwt lwt_ssl 1.1.3 OpenSSL binding with concurrent I/O macaddr 5.2.0 A library for manipulation of MAC address representations macaddr-cstruct 5.2.0 A library for manipulation of MAC address representations using Cstructs magic-mime 1.2.0 Map filenames to common MIME types melange ~dev pinned to version ~dev at git+file:///media/work/asp/melange#fork melange-compiler-libs dev pinned to version dev at git+https://github.com/melange-re/melange-compiler-libs.git menhir 20211012 An LR(1) parser generator menhirLib 20211012 Runtime support library for parsers generated by Menhir menhirSdk 20211012 Compile-time library for auxiliary tools related to Menhir merlin-extend 0.6 A protocol to provide custom frontend to Merlin metrics 0.3.0 Metrics infrastructure for OCaml mew 0.1.0 Modal editing witch mew_vi 0.5.0 Modal editing witch, VI interpreter mimic 0.0.4 A simple protocol dispatcher mirage-clock 4.0.0 Libraries and module types for portable clocks mirage-clock-unix 4.0.0 Unix-based implementation for the MirageOS Clock interface mirage-crypto 0.10.5 Simple symmetric cryptography for the modern age mirage-crypto-ec 0.10.5 Elliptic Curve Cryptography with primitives taken from Fiat mirage-crypto-pk 0.10.5 Simple public-key cryptography for the modern age mirage-crypto-rng 0.10.5 A cryptographically secure PRNG mirage-flow 3.0.0 Flow implementations and combinators for MirageOS mirage-kv 4.0.0 MirageOS signatures for key/value devices mirage-net 4.0.0 Network signatures for MirageOS mirage-no-solo5 1 Virtual package conflicting with mirage-solo5 mirage-no-xen 1 Virtual package conflicting with mirage-xen mirage-profile 0.9.1 Collect runtime profiling information in CTF format mirage-random 3.0.0 Random-related devices for MirageOS mirage-runtime 3.10.8 The base MirageOS runtime library, part of every MirageOS unikernel mirage-time 3.0.0 Time operations for MirageOS mirage-unix 4.0.1 Unix core platform libraries for MirageOS mmap 1.1.0 File mapping functionality mtime 1.3.0 Monotonic wall-clock time for OCaml num 1.4 The legacy Num library for arbitrary-precision integer and rational arithmetic OCanren 0.2.0 Implementation of miniKanren relational (logic) EDSL OCanren-ppx 0.2.0 Implementation of miniKanren relational (logic) EDSL: PPX extensions oasis 0.4.11 Tooling for building OCaml libraries and applications ocaml 4.12.1 The OCaml compiler (virtual package) ocaml-compiler-libs v0.12.4 OCaml compiler libraries repackaged ocaml-config 2 OCaml Switch Configuration ocaml-lsp-server 1.9.0~4.13preview pinned to version 1.9.0~4.13preview at git+file:///media/work/asp/ocaml-lsp-server#HEAD ocaml-migrate-parsetree 2.2.0 Convert OCaml parsetrees between different versions ocaml-option-flambda 1 Set OCaml to be compiled with flambda activated ocaml-src 4.12.1 Compiler sources ocaml-syntax-shims 1.0.0 Backport new syntax to older OCaml versions ocaml-variants 4.12.1+options Official release of OCaml 4.12.1 ocaml-version 3.4.0 Manipulate, parse and generate OCaml compiler version strings ocamlbuild 0.14.0 OCamlbuild is a build system with builtin rules to easily build most OCaml projects. ocamlfind 1.9.1 A library manager for OCaml ocamlformat 0.19.0 Auto-formatter for OCaml code ocamlformat-rpc 0.19.0 Auto-formatter for OCaml code (RPC mode) ocamlformat-rpc-lib 0.19.0 Auto-formatter for OCaml code (RPC mode) ocamlgraph 2.0.0 A generic graph library for OCaml ocamlify 0.0.1 Include files in OCaml code ocamlmod 0.0.9 Generate OCaml modules from source files ocp-indent 1.8.1 A simple tool to indent OCaml programs ocplib-endian 1.2 Optimised functions to read and write int16/32/64 from strings and bigarrays ocsigen-toolkit 3.0.1 Reusable UI components for Eliom applications (client only, or client-server) ocsigenserver 5.0.0 A full-featured and extensible Web server ocsipersist 1.0.1 Persistent key/value storage (for Ocsigen) using multiple backends ocsipersist-lib 1.0.3 Persistent key/value storage (for Ocsigen) - support library octavius 1.2.2 Ocamldoc comment syntax parser odoc 2.0.0 OCaml documentation generator odoc-parser 0.9.0 Parser for ocaml documentation comments optint 0.1.0 Efficient integer types on 64-bit architectures ounit2 2.2.4 OUnit testing framework parsexp v0.14.1 S-expression parsing library pbkdf 1.2.0 Password based key derivation functions (PBKDF) from PKCS#5 pcre 7.5.0 Bindings to the Perl Compatibility Regular Expressions library pecu 0.6 Encoder/Decoder of Quoted-Printable (RFC2045 & RFC2047) pp 1.1.2 Pretty-printing library ppx_assert v0.14.0 Assert-like extension nodes that raise useful errors on failure ppx_base v0.14.0 Base set of ppx rewriters ppx_bench v0.14.1 Syntax extension for writing in-line benchmarks in ocaml code ppx_bin_prot v0.14.0 Generation of bin_prot readers and writers from types ppx_blob 0.7.2 Include a file as a string at compile time ppx_cold v0.14.0 Expands [@cold] into [@inline never][@specialise never][@local never] ppx_compare v0.14.0 Generation of comparison functions from types ppx_cstruct 6.0.1 Access C-like structures directly from OCaml ppx_custom_printf v0.14.1 Printf-style format-strings for user-defined string conversion ppx_derivers 1.2.1 Shared [@@deriving] plugin registry ppx_deriving 5.2.1 Type-driven code generation for OCaml ppx_enumerate v0.14.0 Generate a list containing all values of a finite type ppx_expect v0.14.2 Cram like framework for OCaml ppx_fail v0.14.0 Add location to calls to failwiths ppx_fields_conv v0.14.2 Generation of accessor and iteration functions for ocaml records ppx_fixed_literal v0.14.0 Simpler notation for fixed point literals ppx_hash v0.14.0 A ppx rewriter that generates hash functions from type expressions and definitions ppx_here v0.14.0 Expands [%here] into its location ppx_inline_test v0.14.1 Syntax extension for writing in-line tests in ocaml code ppx_jane v0.14.0 Standard Jane Street ppx rewriters ppx_js_style v0.14.1 Code style checker for Jane Street Packages ppx_let v0.14.0 Monadic let-bindings ppx_module_timer v0.14.0 Ppx rewriter that records top-level module startup times ppx_optcomp v0.14.3 Optional compilation for OCaml ppx_optional v0.14.0 Pattern matching on flat options ppx_pipebang v0.14.0 A ppx rewriter that inlines reverse application operators `|>` and `|!` ppx_sexp_conv v0.14.3 [@@deriving] plugin to generate S-expression conversion functions ppx_sexp_message v0.14.1 A ppx rewriter for easy construction of s-expressions ppx_sexp_value v0.14.0 A ppx rewriter that simplifies building s-expressions from ocaml values ppx_show 0.2.1 OCaml PPX deriver for deriving show based on ppxlib ppx_stable v0.14.1 Stable types conversions generator ppx_string v0.14.1 Ppx extension for string interpolation ppx_string_interpolation 1.0.1 String interpolation PPX preprocessor ppx_typerep_conv v0.14.2 Generation of runtime types from type declarations ppx_variants_conv v0.14.1 Generation of accessor and iteration functions for ocaml variant types ppx_yojson_conv_lib v0.14.0 Runtime lib for ppx_yojson_conv ppxlib 0.22.2 Standard library for ppx rewriters psq 0.2.0 Functional Priority Search Queues ptime 0.8.6 POSIX time for OCaml qcheck 0.18 Compatibility package for qcheck qcheck-core 0.18 Core qcheck library qcheck-ounit 0.18 OUnit backend for qcheck randomconv 0.1.3 Convert from random byte vectors (Cstruct.t) to random native numbers re 1.10.3 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 reason 3.7.0 Reason: Syntax & Toolchain for OCaml result 1.5 Compatibility Result module rresult 0.7.0 Result value combinators for OCaml sedlex 2.4 An OCaml lexer generator for Unicode seq base Compatibility package for OCaml's standard iterator type starting from 4.07. sexplib v0.14.0 Library for serializing OCaml values to and from S-expressions sexplib0 v0.14.0 Library containing the definition of S-expressions and some base converters shared-memory-ring 3.1.0 Shared memory rings for RPC and bytestream communications solo5-bindings-spt 0.6.9 Solo5 sandboxed execution environment (spt target) spawn v0.14.0 Spawning sub-processes splittable_random v0.14.0 PRNG that can be split into independent streams ssl 0.5.10 Bindings for OpenSSL stdcompat 17 Compatibility module for OCaml standard library stdio v0.14.0 Standard IO library for OCaml stdlib-shims 0.3.0 Backport some of the new stdlib features to older compiler stringext 1.6.0 Extra string functions for OCaml tcpip 7.0.1 OCaml TCP/IP networking stack, used in MirageOS time_now v0.14.0 Reports the current time tls 0.15.2 Transport Layer Security purely in OCaml tls-mirage 0.15.2 Transport Layer Security purely in OCaml, MirageOS layer topkg 1.0.4 The transitory OCaml software packager trie 1.0.0 Strict impure trie tree typerep v0.14.0 Typerep is a library for runtime types tyxml 4.5.0 A library for building correct HTML and SVG documents uchar 0.0.2 Compatibility library for OCaml's Uchar module uri 4.2.0 An RFC3986 URI/URL parsing library uri-sexp 4.2.0 An RFC3986 URI/URL parsing library utop 2.8.0 Universal toplevel for OCaml uucp 14.0.0 Unicode character properties for OCaml uuseg 14.0.0 Unicode text segmentation for OCaml uutf 1.0.2 Non-blocking streaming Unicode codec for OCaml variantslib v0.14.0 Part of Jane Street's Core library x509 0.15.2 Public Key Infrastructure (RFC 5280, PKCS) purely in OCaml xml-light 2.4 Xml-Light is a minimal XML parser & printer for OCaml yojson 1.7.0 Yojson is an optimized parsing and printing library for the JSON format z3 4.8.11 Z3 solver zarith 1.12 Implements arithmetic and logical operations over arbitrary-precision integers zed 3.1.0 Abstract engine for text edition in OCaml ````

If any CI was present, I would have a chance to get right package versions from there...

clembu commented 2 years ago

Hello, it looks like some make rules fail to detect updated or missing dependencies ; have you tried doing a make -C simple clean to remove all build files, before retrying the building process?

the project compiles fine when i test it.

Kakadu commented 2 years ago

I tested again on another machine and it looks better. The code in simple compiles, but in extended it doesn't. It looks like somebody forgot to rename ocsigen-widgets to ocsigen-toolkit @clembu

➜  extended git:(master) ✗ make clean && make test.byte                                                                                           ocsi-4.13.1
rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot
rm -f *.type_mli
rm -f graffiti.js
rm -rf _client _server
js_of_eliom -ppx -c -package ocsigen-widgets.client -package js_of_ocaml.ppx -package js_of_ocaml.deriving.ppx -package lwt.ppx  graffiti.eliom
Fatal error: exception Fl_package_base.No_such_package("ocsigen-widgets.client", "")
make: *** [Makefile:206: _client/graffiti.cmo] Error 2
➜  extended git:(master) ✗ pwd                                                                                                                    ocsi-4.13.1
/home/kakadu/asp/graffiti/extended

I'm planning to test on original machine too.

Kakadu commented 2 years ago

Okay, more details. Extended demo doesn't compiler from first attempt and gives an error about CSS module. No idea how to fix it.

➜  graffiti git:(master) ✗ make -C extended distclean
make: Entering directory '/media/work/asp/eliom-test/graffiti/extended'
rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot
rm -f *.type_mli
rm -f graffiti.js
rm -rf _client _server
rm -rf local/ _deps .depend
make: Leaving directory '/media/work/asp/eliom-test/graffiti/extended'

➜  graffiti git:(master) ✗ make -C extended test.byte
make: Entering directory '/media/work/asp/eliom-test/graffiti/extended'
mkdir _deps
eliomdep -server -ppx -package cairo2 -package unix -package eliom.server.ext -package js_of_ocaml.deriving.ppx -package lwt.ppx graffiti.eliom > _deps/graffiti.eliom.server
Fatal error: exception Fl_package_base.No_such_package("eliom.server.ext", "")
Makefile:216: .depend: No such file or directory
make: *** [Makefile:222: _deps/graffiti.eliom.server] Error 2
make: Leaving directory '/media/work/asp/eliom-test/graffiti/extended'

➜  graffiti git:(master) ✗ make -C extended test.byte
make: Entering directory '/media/work/asp/eliom-test/graffiti/extended'
eliomdep -server -ppx -package cairo2 -package unix -package eliom.server.ext -package js_of_ocaml.deriving.ppx -package lwt.ppx server.ml > _deps/server.ml.server
eliomdep -server -ppx -package cairo2 -package unix -package eliom.server.ext -package js_of_ocaml.deriving.ppx -package lwt.ppx common.ml > _deps/common.ml.server
eliomdep -server -ppx -package cairo2 -package unix -package eliom.server.ext -package js_of_ocaml.deriving.ppx -package lwt.ppx feed.ml > _deps/feed.ml.server
eliomdep -client -ppx -package ocsigen-toolkit.client -package js_of_ocaml-ppx -package js_of_ocaml.deriving -package lwt_ppx graffiti.eliom > _deps/graffiti.eliom.client
eliomdep -client -ppx -package ocsigen-toolkit.client -package js_of_ocaml-ppx -package js_of_ocaml.deriving -package lwt_ppx client.ml > _deps/client.ml.client
eliomdep -client -ppx -package ocsigen-toolkit.client -package js_of_ocaml-ppx -package js_of_ocaml.deriving -package lwt_ppx common.ml > _deps/common.ml.client
cat _deps/graffiti.eliom.server _deps/server.ml.server _deps/common.ml.server _deps/feed.ml.server _deps/graffiti.eliom.client _deps/client.ml.client _deps/common.ml.client > .depend
mkdir -p local/etc/graffiti
sed -e "/^ *%%%/d" -e "s|%%PROJECT_NAME%%|graffiti|g" -e "s|%%DATABASE_NAME%%||g" -e "s|%%DATABASE_USER%%||g" -e "s|%%CMDPIPE%%|%%PREFIX%%var/run/graffiti-cmd|g" -e "s|%%LOGDIR%%|%%PREFIX%%var/log/graffiti|g" -e "s|%%DATADIR%%|%%PREFIX%%var/data/graffiti|g" -e "s|%%PERSISTENT_DATA_BACKEND%%|dbm|g" -e "s|%%LIBDIR%%|%%PREFIX%%lib/graffiti|g" -e "s|%%WARNING%%|DON\'T EDIT THIS FILE! It is generated from graffiti.conf.in, edit that one, or the variables in Makefile.options|g" -e "s|%%PACKAGES%%|\<extension\ findlib-package=\"cairo2\"\ /\> \<extension\ findlib-package=\"unix\"\ /\> \<extension\ findlib-package=\"eliom.server.ext\"\ /\> \<extension\ findlib-package=\"js_of_ocaml.deriving.ppx\"\ /\> \<extension\ findlib-package=\"lwt.ppx\"\ /\>|g" -e "s|%%ELIOMSTATICDIR%%|%%PREFIX%%var/www/graffiti/eliom|g" -e "s|%%DEBUGMODE%%||g" -e "s|%%PORT%%|8080|g" -e "s|%%STATICDIR%%|static|g" -e "s|%%USERGROUP%%||g" graffiti.conf.in | sed -e "s|%%PREFIX%%|local/|g" > local/etc/graffiti/graffiti-test.conf
mkdir -p local/var/data/graffiti
mkdir -p local/lib/graffiti
mkdir -p local/var/log/graffiti
mkdir -p local/var/www/graffiti/static
mkdir -p local/var/www/graffiti/eliom
mkdir -p local/var/run
js_of_eliom -ppx -c -package ocsigen-toolkit.client -package js_of_ocaml-ppx -package js_of_ocaml.deriving -package lwt_ppx  common.ml
js_of_eliom -ppx -c -package ocsigen-toolkit.client -package js_of_ocaml-ppx -package js_of_ocaml.deriving -package lwt_ppx  client.ml
File "client.ml", line 25, characters 14-35:
25 |   let color = CSS.Color.string_of_t (CSS.Color.rgb r g b) in
                   ^^^^^^^^^^^^^^^^^^^^^
Error: Unbound module CSS
make: *** [Makefile:208: _client/client.cmo] Error 2
make: Leaving directory '/media/work/asp/eliom-test/graffiti/extended'
Installed packages: (Spoiler warning) ```` ➜ graffiti git:(master) ✗ opam list # Packages matching: installed # Name # Installed # Synopsis alcotest 1.5.0 Alcotest is a lightweight and colourful test framework angstrom 0.15.0 Parser combinators built for speed and memory-efficiency arp 3.0.0 Address Resolution Protocol purely in OCaml art 0.1.1 Adaptive Radix Tree asn1-combinators 0.2.6 Embed typed ASN.1 grammars in OCaml astring 0.8.5 Alternative String module for OCaml awa 0.0.5 SSH implementation in OCaml awa-mirage 0.0.5 SSH implementation in OCaml base v0.14.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 3.5.0 Base64 encoding for OCaml base_bigstring v0.14.0 String type based on [Bigarray], for use in I/O and C-bindings base_quickcheck v0.14.1 Randomized testing framework, designed for compatibility with Base batteries 3.3.0 A community-maintained standard library extension benchmark 1.6 Benchmark running times of code bheap 2.0.0 Priority queues bigarray-compat 1.0.0 Compatibility library to use Stdlib.Bigarray when possible bigstringaf 0.8.0 Bigstring intrinsics and fast blits based on memcpy/memmove bin_prot v0.14.0 A binary protocol generator biniou 1.2.1 Binary data format designed for speed, safety, ease of use and backward compatibility as protocols evolve bos 0.2.1 Basic OS interaction for OCaml ca-certs 0.2.2 Detect root CA certificates from the operating system ca-certs-nss 3.71.0.1 X.509 trust anchors extracted from Mozilla's NSS cairo2 0.6.2 Binding to Cairo, a 2D Vector Graphics Library calendar 2.04 Library for handling dates and times in your program camlp5 8.00.02 Preprocessor-pretty-printer of OCaml camlzip 1.11 Accessing compressed files in ZIP, GZIP and JAR format camomile 1.0.2 A Unicode library carton 0.4.3 Implementation of PACKv2 file in OCaml carton-git 0.4.3 Implementation of PACK file in OCaml carton-lwt 0.4.3 Implementation of PACK file in OCaml charInfo_width 1.1.0 Determine column width for a character checkseum 0.3.2 Adler-32, CRC32 and CRC32-C implementation in C and OCaml cmdliner 1.0.4 Declarative definition of command line interfaces for OCaml cohttp 4.0.0 An OCaml library for HTTP clients and servers cohttp-lwt 4.0.0 CoHTTP implementation using the Lwt concurrency library cohttp-lwt-unix 4.0.0 CoHTTP implementation for Unix and Windows using Lwt conduit 4.0.2 A network connection establishment library conduit-lwt 4.0.2 A portable network connection establishment library using Lwt conduit-lwt-unix 4.0.2 A network connection establishment library for Lwt_unix conf-cairo 1 Virtual package relying on a Cairo system installation conf-dbm 1.0.0 Virtual package relying on gdbm conf-gmp 3 Virtual package relying on a GMP lib system installation conf-gmp-powm-sec 3 Virtual package relying on a GMP lib with constant-time modular exponentiation conf-libpcre 1 Virtual package relying on a libpcre system installation conf-libseccomp 1 Virtual package relying on a libseccomp system installation conf-libssl 3 Virtual package relying on an OpenSSL library system installation conf-m4 1 Virtual package relying on m4 conf-perl 1 Virtual package relying on perl conf-perl-ipc-system-simple 1 Virtual package relying on perl's IPC::System::Simple conf-perl-string-shellquote 1 Virtual package relying on perl's String::ShellQuote conf-pkg-config 2 Check if pkg-config is installed and create an opam switch local pkgconfig folder conf-python-2-7 1.2 Virtual package relying on Python-2.7 installation conf-sqlite3 1 Virtual package relying on an SQLite3 system installation conf-which 1 Virtual package relying on which conf-zlib 1 Virtual package relying on zlib core v0.14.1 Industrial strength alternative to OCaml's standard library core_kernel v0.14.2 Industrial strength alternative to OCaml's standard library cppo 1.6.8 Code preprocessor like cpp for OCaml cryptokit 1.16.1 A library of cryptographic primitives csexp 1.5.1 Parsing and printing of S-expressions in Canonical form cstruct 6.0.1 Access C-like structures directly from OCaml cstruct-lwt 6.0.1 Access C-like structures directly from OCaml cstruct-sexp 6.0.1 S-expression serialisers for C-like structures cstruct-unix 6.0.1 Access C-like structures directly from OCaml dbm 1.3 Binding to the NDBM/GDBM Unix "databases" decompress 1.4.2 Implementation of Zlib and GZip in OCaml digestif 1.1.0 Hashes implementations (SHA*, RIPEMD160, BLAKE2* and MD5) domain-name 0.3.1 RFC 1035 Internet domain names duff 0.4 Rabin's fingerprint and diff algorithm in OCaml dune 2.9.1 Fast, portable, and opinionated build system dune-action-plugin 2.9.1 [experimental] API for writing dynamic Dune actions dune-build-info 2.9.1 Embed build informations inside executable dune-configurator 2.9.1 Helper library for gathering system configuration dune-glob 2.9.1 Glob string matching language supported by dune dune-private-libs 2.9.1 Private libraries of Dune duration 0.2.0 Conversions to various time units easy-format 1.3.2 High-level and functional interface to the Format module of the OCaml standard library either 1.0.0 Compatibility Either module eliom 9.3.0 Client/server Web framework emile 1.1 Parser of email address according RFC822 encore 0.8 Library to generate encoder/decoder which ensure isomorphism eqaf 0.8 Constant-time equal function on string ethernet 3.0.0 OCaml Ethernet (IEEE 802.3) layer, used in MirageOS fieldslib v0.14.0 Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a fix 20201120 Facilities for memoization and fixed points fmt 0.9.0 OCaml Format pretty-printer combinators fpath 0.7.3 File system paths for OCaml functoria-runtime 3.0.3 Runtime support library for functoria-generated code GT 0.4.2 Generic programming with extensible transformations gen 0.5.3 Iterators for OCaml, both restartable and consumable git 3.6.0 Git format and protocol in pure OCaml git-cohttp 3.6.0 A package to use HTTP-based ocaml-git with Unix backend git-cohttp-unix 3.6.0 A package to use HTTP-based ocaml-git with Unix backend git-unix 3.6.0 Virtual package to install and configure ocaml-git's Unix backend gmap 0.3.0 Heterogenous maps over a GADT hkdf 1.0.4 HMAC-based Extract-and-Expand Key Derivation Function (RFC 5869) hmap 0.8.1 Heterogeneous value maps for OCaml hxd 0.3.1 Hexdump in OCaml io-page 2.4.0 Support for efficient handling of I/O memory pages ipaddr 5.2.0 A library for manipulation of IP (and MAC) address representations ipaddr-sexp 5.2.0 A library for manipulation of IP address representations using sexp jane-street-headers v0.14.0 Jane Street C header files js_of_ocaml 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-compiler 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-lwt 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ocamlbuild 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ppx 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-ppx_deriving_json 3.11.0 Compiler from OCaml bytecode to JavaScript js_of_ocaml-tyxml 3.11.0 Compiler from OCaml bytecode to JavaScript jsonm 1.0.1 Non-blocking streaming JSON codec for OCaml jst-config v0.14.1 Compile-time configuration for Jane Street libraries ke 0.4 Queue implementation lambda-term 3.1.0 Terminal manipulation library for OCaml lazy-trie 1.2.0 Implementation of lazy prefix trees logger-p5 0.4.5 Camlp5 syntax extension for logging logs 0.7.0 Logging infrastructure for OCaml lru 0.3.0 Scalable LRU caches lwt 5.5.0 Promises and event-driven I/O lwt-dllist 1.0.1 Mutable doubly-linked list with Lwt iterators lwt_log 1.1.1 Lwt logging library (deprecated) lwt_ppx 2.0.3 PPX syntax for Lwt, providing something similar to async/await from JavaScript lwt_react 1.1.5 Helpers for using React with Lwt lwt_ssl 1.1.3 OpenSSL binding with concurrent I/O macaddr 5.2.0 A library for manipulation of MAC address representations macaddr-cstruct 5.2.0 A library for manipulation of MAC address representations using Cstructs magic-mime 1.2.0 Map filenames to common MIME types melange ~dev pinned to version ~dev at git+file:///media/work/asp/melange#fork melange-compiler-libs dev pinned to version dev at git+https://github.com/melange-re/melange-compiler-libs.git menhir 20211012 An LR(1) parser generator menhirLib 20211012 Runtime support library for parsers generated by Menhir menhirSdk 20211012 Compile-time library for auxiliary tools related to Menhir merlin-extend 0.6 A protocol to provide custom frontend to Merlin metrics 0.3.0 Metrics infrastructure for OCaml mew 0.1.0 Modal editing witch mew_vi 0.5.0 Modal editing witch, VI interpreter mimic 0.0.4 A simple protocol dispatcher mirage-clock 4.0.0 Libraries and module types for portable clocks mirage-clock-unix 4.0.0 Unix-based implementation for the MirageOS Clock interface mirage-crypto 0.10.5 Simple symmetric cryptography for the modern age mirage-crypto-ec 0.10.5 Elliptic Curve Cryptography with primitives taken from Fiat mirage-crypto-pk 0.10.5 Simple public-key cryptography for the modern age mirage-crypto-rng 0.10.5 A cryptographically secure PRNG mirage-flow 3.0.0 Flow implementations and combinators for MirageOS mirage-kv 4.0.0 MirageOS signatures for key/value devices mirage-net 4.0.0 Network signatures for MirageOS mirage-no-solo5 1 Virtual package conflicting with mirage-solo5 mirage-no-xen 1 Virtual package conflicting with mirage-xen mirage-profile 0.9.1 Collect runtime profiling information in CTF format mirage-random 3.0.0 Random-related devices for MirageOS mirage-runtime 3.10.8 The base MirageOS runtime library, part of every MirageOS unikernel mirage-time 3.0.0 Time operations for MirageOS mirage-unix 4.0.1 Unix core platform libraries for MirageOS mmap 1.1.0 File mapping functionality mtime 1.3.0 Monotonic wall-clock time for OCaml num 1.4 The legacy Num library for arbitrary-precision integer and rational arithmetic OCanren 0.2.0 Implementation of miniKanren relational (logic) EDSL OCanren-ppx 0.2.0 Implementation of miniKanren relational (logic) EDSL: PPX extensions oasis 0.4.11 Tooling for building OCaml libraries and applications ocaml 4.12.1 The OCaml compiler (virtual package) ocaml-compiler-libs v0.12.4 OCaml compiler libraries repackaged ocaml-config 2 OCaml Switch Configuration ocaml-lsp-server 1.9.0~4.13preview pinned to version 1.9.0~4.13preview at git+file:///media/work/asp/ocaml-lsp-server#HEAD ocaml-migrate-parsetree 2.2.0 Convert OCaml parsetrees between different versions ocaml-option-flambda 1 Set OCaml to be compiled with flambda activated ocaml-src 4.12.1 Compiler sources ocaml-syntax-shims 1.0.0 Backport new syntax to older OCaml versions ocaml-variants 4.12.1+options Official release of OCaml 4.12.1 ocaml-version 3.4.0 Manipulate, parse and generate OCaml compiler version strings ocamlbuild 0.14.0 OCamlbuild is a build system with builtin rules to easily build most OCaml projects. ocamlfind 1.9.1 A library manager for OCaml ocamlformat 0.19.0 Auto-formatter for OCaml code ocamlformat-rpc 0.19.0 Auto-formatter for OCaml code (RPC mode) ocamlformat-rpc-lib 0.19.0 Auto-formatter for OCaml code (RPC mode) ocamlgraph 2.0.0 A generic graph library for OCaml ocamlify 0.0.1 Include files in OCaml code ocamlmod 0.0.9 Generate OCaml modules from source files ocp-indent 1.8.1 A simple tool to indent OCaml programs ocplib-endian 1.2 Optimised functions to read and write int16/32/64 from strings and bigarrays ocsigen-toolkit 3.0.1 Reusable UI components for Eliom applications (client only, or client-server) ocsigenserver 5.0.0 A full-featured and extensible Web server ocsipersist 1.0.1 Persistent key/value storage (for Ocsigen) using multiple backends ocsipersist-lib 1.0.3 Persistent key/value storage (for Ocsigen) - support library ocsipersist-sqlite 1.0 Persistent key/value storage (for Ocsigen) using SQLite octavius 1.2.2 Ocamldoc comment syntax parser odoc 2.0.0 OCaml documentation generator odoc-parser 0.9.0 Parser for ocaml documentation comments optint 0.1.0 Efficient integer types on 64-bit architectures ounit2 2.2.4 OUnit testing framework parsexp v0.14.1 S-expression parsing library pbkdf 1.2.0 Password based key derivation functions (PBKDF) from PKCS#5 pcre 7.5.0 Bindings to the Perl Compatibility Regular Expressions library pecu 0.6 Encoder/Decoder of Quoted-Printable (RFC2045 & RFC2047) pp 1.1.2 Pretty-printing library ppx_assert v0.14.0 Assert-like extension nodes that raise useful errors on failure ppx_base v0.14.0 Base set of ppx rewriters ppx_bench v0.14.1 Syntax extension for writing in-line benchmarks in ocaml code ppx_bin_prot v0.14.0 Generation of bin_prot readers and writers from types ppx_blob 0.7.2 Include a file as a string at compile time ppx_cold v0.14.0 Expands [@cold] into [@inline never][@specialise never][@local never] ppx_compare v0.14.0 Generation of comparison functions from types ppx_cstruct 6.0.1 Access C-like structures directly from OCaml ppx_custom_printf v0.14.1 Printf-style format-strings for user-defined string conversion ppx_derivers 1.2.1 Shared [@@deriving] plugin registry ppx_deriving 5.2.1 Type-driven code generation for OCaml ppx_enumerate v0.14.0 Generate a list containing all values of a finite type ppx_expect v0.14.2 Cram like framework for OCaml ppx_fail v0.14.0 Add location to calls to failwiths ppx_fields_conv v0.14.2 Generation of accessor and iteration functions for ocaml records ppx_fixed_literal v0.14.0 Simpler notation for fixed point literals ppx_hash v0.14.0 A ppx rewriter that generates hash functions from type expressions and definitions ppx_here v0.14.0 Expands [%here] into its location ppx_inline_test v0.14.1 Syntax extension for writing in-line tests in ocaml code ppx_jane v0.14.0 Standard Jane Street ppx rewriters ppx_js_style v0.14.1 Code style checker for Jane Street Packages ppx_let v0.14.0 Monadic let-bindings ppx_module_timer v0.14.0 Ppx rewriter that records top-level module startup times ppx_optcomp v0.14.3 Optional compilation for OCaml ppx_optional v0.14.0 Pattern matching on flat options ppx_pipebang v0.14.0 A ppx rewriter that inlines reverse application operators `|>` and `|!` ppx_sexp_conv v0.14.3 [@@deriving] plugin to generate S-expression conversion functions ppx_sexp_message v0.14.1 A ppx rewriter for easy construction of s-expressions ppx_sexp_value v0.14.0 A ppx rewriter that simplifies building s-expressions from ocaml values ppx_show 0.2.1 OCaml PPX deriver for deriving show based on ppxlib ppx_stable v0.14.1 Stable types conversions generator ppx_string v0.14.1 Ppx extension for string interpolation ppx_string_interpolation 1.0.1 String interpolation PPX preprocessor ppx_typerep_conv v0.14.2 Generation of runtime types from type declarations ppx_variants_conv v0.14.1 Generation of accessor and iteration functions for ocaml variant types ppx_yojson_conv_lib v0.14.0 Runtime lib for ppx_yojson_conv ppxlib 0.22.2 Standard library for ppx rewriters psq 0.2.0 Functional Priority Search Queues ptime 0.8.6 POSIX time for OCaml qcheck 0.18 Compatibility package for qcheck qcheck-core 0.18 Core qcheck library qcheck-ounit 0.18 OUnit backend for qcheck randomconv 0.1.3 Convert from random byte vectors (Cstruct.t) to random native numbers re 1.10.3 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 reason 3.7.0 Reason: Syntax & Toolchain for OCaml result 1.5 Compatibility Result module rresult 0.7.0 Result value combinators for OCaml sedlex 2.4 An OCaml lexer generator for Unicode seq base Compatibility package for OCaml's standard iterator type starting from 4.07. sexplib v0.14.0 Library for serializing OCaml values to and from S-expressions sexplib0 v0.14.0 Library containing the definition of S-expressions and some base converters shared-memory-ring 3.1.0 Shared memory rings for RPC and bytestream communications solo5-bindings-spt 0.6.9 Solo5 sandboxed execution environment (spt target) spawn v0.14.0 Spawning sub-processes splittable_random v0.14.0 PRNG that can be split into independent streams sqlite3 5.1.0 SQLite3 bindings for OCaml ssl 0.5.10 Bindings for OpenSSL stdcompat 17 Compatibility module for OCaml standard library stdio v0.14.0 Standard IO library for OCaml stdlib-shims 0.3.0 Backport some of the new stdlib features to older compiler streaming 0.8.0 Fast, safe and composable streaming abstractions stringext 1.6.0 Extra string functions for OCaml tcpip 7.0.1 OCaml TCP/IP networking stack, used in MirageOS time_now v0.14.0 Reports the current time timezone v0.14.0 Time-zone handling tls 0.15.2 Transport Layer Security purely in OCaml tls-mirage 0.15.2 Transport Layer Security purely in OCaml, MirageOS layer topkg 1.0.4 The transitory OCaml software packager trie 1.0.0 Strict impure trie tree typerep v0.14.0 Typerep is a library for runtime types tyxml 4.5.0 A library for building correct HTML and SVG documents uchar 0.0.2 Compatibility library for OCaml's Uchar module uri 4.2.0 An RFC3986 URI/URL parsing library uri-sexp 4.2.0 An RFC3986 URI/URL parsing library utop 2.8.0 Universal toplevel for OCaml uucp 14.0.0 Unicode character properties for OCaml uuseg 14.0.0 Unicode text segmentation for OCaml uutf 1.0.2 Non-blocking streaming Unicode codec for OCaml variantslib v0.14.0 Part of Jane Street's Core library x509 0.15.2 Public Key Infrastructure (RFC 5280, PKCS) purely in OCaml xml-light 2.4 Xml-Light is a minimal XML parser & printer for OCaml yojson 1.7.0 Yojson is an optimized parsing and printing library for the JSON format z3 4.8.11 Z3 solver zarith 1.12 Implements arithmetic and logical operations over arbitrary-precision integers zed 3.1.0 Abstract engine for text edition in OCaml ````
Kakadu commented 2 years ago

I also added CI to the repo where my issue is reproduced. https://github.com/Kakadu/graffiti/tree/ci https://github.com/Kakadu/graffiti/runs/4684623756?check_suite_focus=true