talex5/cuekeeper

Problems building client and server

voila opened this issue · 9 comments

voila commented

make fails with pinned version of bin_prot, but works with current bin_prot (0.9.0).

make server fails because server/config.ml seems out of sync with current mirage:

  • get_mode() is not supported anymore
  • ipv4_conf does not have these fields anymore

I would like to be able to use the server to access cuekeeper from different devices. Can you recommend another unikernel configuration I could look at, to fix this one ?

(note: building with the Dockerfile still appears to work for building the JS side)

If you have time to update it to the latest versions, that would be great! There's a handy guide here:

https://mirage.io/wiki/mirage2-to-mirage3

voila commented

I have changed config.ml, when I do make server I get:

ocamlfind: Package 'tcpip.udp' not found

when I try opam install mirage-tcpip-unix, I get:

The following dependencies couldn't be met:
  - mirage-tcpip-unix -> ipaddr < 2.0.0
Your request can't be satisfied:
  - ipaddr<2.0.0 is not available because your system doesn't comply with ocaml-version < "4.04.0".

(I am using 4.04.1)

What should I do ?

Do you need to run make depend after mirage configure to update the dependencies?

If that isn't it, I think the tcpip package will pull in everything.

voila commented

Do you need to run make depend after mirage configure to update the dependencies?

I did, thanks !

server:
  ...
  (cd server && mirage configure ${MIRAGE_FLAGS} && make depend && make)

But now, I have a problem with Irmin:

Error: Unbound module Irmin
Command exited with code 2.
run ['ocamlbuild' '-use-ocamlfind' '-classic-display' '-tags'
     'predicate(mirage_unix),warn(A-4-41-42-44),debug,bin_annot,strict_sequence,principal,safe_string,color(always)'
     '-pkgs'
     'functoria-runtime,io-page,io-page.unix,lwt,mirage-clock-unix,mirage-console-unix,mirage-logs,mirage-net-unix,mirage-random,mirage-runtime,mirage-types,mirage-types-lwt,mirage-unix,tcpip,tcpip.arpv4,tcpip.ethif,tcpip.icmpv4,tcpip.ipv4,tcpip.stack-direct,tcpip.tcp,tcpip.udp'
     '-cflags' '-g' '-lflags' '-g' '-tag-line' '<static*.*>: warn(-32-34)'
     '-X' '_build-ukvm' 'main.native']: exited with 10
make[1]: *** [build] Error 1
make[1]: Leaving directory `/home/th3rac25/cuekeeper/server'
make: *** [server] Error 2

I tried opam install mirage-irmin (it failed because of versions conflict) and opam install irmin-mirage (the install succeeded, but I still get Error: Unbound module Irmin). Sorry, I feel like I am fumbling in the dark...

It's odd that there are no irmin* libraries in the list of -pkgs there. The current config.ml has ~libraries:["irmin.mem"; ...], which should pull it in, although we could be more explicit and add irmin itself to that list.

voila commented

My mistake! I modified config.ml and dropped the packages argument 😅

I have now another problem with Irmin (installed version 1.2.0):

File "server.ml", line 13, characters 19-156:
Error: The signature constrained by `with' has no component named branch_id

the line in server.ml is:

module Make (Store:Irmin.S with type branch_id = string and type commit_id = Irmin.Hash.SHA1.t)

indeed, there is no type branch_id nor commit_id anymore in 1.2.0

I tried looking for a project that has migrated from Irmin 0.9 to get a clue about what I should do, but did not find any...

However, this reminds me that Irmin's binary format has changed. I see two possible solutions:

  1. Fix talex5/irmin-indexeddb#3 by writing some code to auto-migrate old repositories to the (stable) Git format.

  2. Copy the current code for Irmin's binary format into CueKeeper and modify it to match the old format (there are only a couple of changes).

(2) would be easiest for now.

Closing as original issue is resolved. The format issue is tracked at talex5/irmin-indexeddb#7.