rand00 / conntest

MirageOS unikernel to test networking
GNU Lesser General Public License v2.1
16 stars 7 forks source link

outreachy: compile and run conntest! #1

Open rand00 opened 1 year ago

rand00 commented 1 year ago

The instructions can be seen in the README.md. Post questions here if you e.g. have trouble compiling (:

rand00 commented 1 year ago

It will also be nice if you note anything you found hard, then we can add more information to the README

Burnleydev1 commented 1 year ago

Hello @rand00 please can I work on this?

Burnleydev1 commented 1 year ago

Hello @rand00, I keep running into this error when I run mirage configure -t spt -f mirage/config.ml && make depend && mirage build -f mirage/config.ml Please is it that I am missing a step? this is the error message I get

opam-monorepo: [ERROR] Can't find all required versions.
Selected: angstrom.0.15.0 arp.3.0.0 astring.0.8.5+dune base.v0.15.1
          base-bigarray.base base-bytes.base+dune base-domains.base
          base-nnp.base base-threads.base base-unix.base bheap.2.0.0
          bigstringaf.0.9.0 cmdliner.1.1.1+dune conf-pkg-config.2
          conntest.zdev conntest-spt.zdev cppo.1.6.9 csexp.1.5.1
          cstruct.6.1.1 cstruct-lwt.6.1.1 domain-name.0.4.0 dune.3.7.0
          dune-configurator.3.7.0 duration.0.2.1 eqaf.0.9 ethernet.3.0.0
          findlib.1.9.5+dune fmt.0.9.0+dune functoria-runtime.4.3.4
          ipaddr.5.3.1 logs.0.7.0+dune2 lru.0.3.1 lwt.5.6.1 lwt-dllist.1.0.1
          lwt_react.1.2.0 macaddr.5.3.1 macaddr-cstruct.5.3.1 metrics.0.4.0
          metrics-lwt.0.4.0 mirage-bootvar-solo5.0.6.0 mirage-clock.4.2.0
          mirage-clock-solo5.4.2.0 mirage-console.5.1.0
          mirage-console-solo5.0.8.0 mirage-crypto.0.11.0
          mirage-crypto-rng.0.11.0 mirage-crypto-rng-mirage.0.11.0
          mirage-flow.3.0.0 mirage-logs.1.2.0 mirage-net.4.0.0
          mirage-net-solo5.0.8.0 mirage-profile.0.9.1 mirage-random.3.0.0
          mirage-runtime.4.3.4 mirage-solo5.0.9.2 mirage-time.3.0.0 notty.dev
          num.1.4+dune2 ocaml-base-compiler.5.0.0 ocaml-compiler-libs.v0.12.4
          ocaml-config.3 ocaml-options-vanilla.1 ocaml-syntax-shims.1.0.0
          ocamlfind.1.9.5+dune ocplib-endian.1.2 parse-argv.0.2.0
          parsexp.v0.15.0 ppx_cstruct.6.1.1 ppx_derivers.1.2.1
          ppx_deriving.5.2.1 ppx_deriving_yojson.3.7.0 ppxlib.0.29.1
          psq.0.2.1 ptime.1.0.0+dune2 randomconv.0.1.3 react.1.2.2+dune
          result.1.5 seq.base+dune sexplib.v0.15.1 sexplib0.v0.15.1
          stdlib-shims.0.3.0 stringext.1.6.0 tcpip.7.1.2 uri.4.2.0
          uuidm.0.9.8+dune uutf.1.0.3+dune yojson.2.0.2
          ocaml-base-compiler&conntest-spt base-domains ocaml
          ocaml-base-compiler ocaml-base-compiler ocaml-base-compiler
- ocaml -> ocaml.5.0.0
    User requested = 5.0.0
- ocaml-variants -> (problem)
    Rejected candidates:
      ocaml-variants.5.1.0+trunk: In same conflict class (ocaml-core-compiler) as ocaml-base-compiler
      ocaml-variants.5.0.1+trunk: In same conflict class (ocaml-core-compiler) as ocaml-base-compiler
      ocaml-variants.5.0.0+tsan: In same conflict class (ocaml-core-compiler) as ocaml-base-compiler
      ocaml-variants.5.0.0+options: In same conflict class (ocaml-core-compiler) as ocaml-base-compiler
      ocaml-variants.5.0.0~rc1+options: In same conflict class (ocaml-core-compiler) as ocaml-base-compiler
      ...
removing overlay repository [opam-overlays, mirage-overlays]
Repositories removed from the selections of switch mirage. Use '--all' to forget about them altogether.
Repositories removed from the selections of switch mirage. Use '--all' to forget about them altogether.
make[2]: *** [Makefile:36: mirage/mirage/conntest-spt.opam.locked] Error 1
make[1]: *** [Makefile:39: lock] Error 2
make: *** [Makefile:51: depend] Error 2
Burnleydev1 commented 1 year ago

So I learned that since mirage is not supported by ocaml v5.0.0, the command mirage configure -t spt -f mirage/config.ml && make depend && mirage build -f mirage/config.ml was not running successfully, so I am suggesting we add it to the README.md file so others will remember to change to v4.14.1.

Burnleydev1 commented 1 year ago

Also running the command mirage/dist/conntest --help gives the error bash: mirage/dist/conntest: No such file or directory since there is rather contest.spt and contest.hvt and that did not work as well.

rand00 commented 1 year ago

Hey @Burnleydev1 !

so I am suggesting we add it to the README.md file so others will remember to change to v4.14.1.

Indeed this would be useful (: Will you make a PR for this?

mirage/dist/conntest --help

Yes - this binary is only present if you configured for the unix target. You can also pass --help if run using solo5-spt or solo5-hvt, e.g.:

solo5-spt --net:service=tap101 mirage/dist/conntest.spt --help

.. but here you need to have setup the TAP device first, as this is a dependency of the unikernel to run as these targets

As the README currently states that you can run that command after compiling to the unix target, I don't think this is an issue.

Thanks for the report (:

Burnleydev1 commented 1 year ago

Hello @rand00,

Indeed this would be useful (: Will you make a PR for this?

yes, I would love to add it.

As the README currently states that you can run that command after compiling to the unix target, I don't think this is an issue.

Perhaps we could add the steps that can be used to run the script, the location where it should be saved, and other points that will make it easier for users to set up TAP

rand00 commented 1 year ago

Perhaps we could add the steps that can be used to run the script, the location where it should be saved, and other points that will make it easier for users to set up TAP

At the end of the README there is the 'Network setup' section. The script shown there just needs to be run from any location, as setting up a bridge and tap-devices is a global action on the system (not persisted between restarts). I'm not sure that more information is needed.

Burnleydev1 commented 1 year ago

Hello @rand00, thank you, I have removed that part from the PR