diff --git a/projects/miragesdk/examples/mirage-dhcp.yml b/projects/miragesdk/examples/mirage-dhcp.yml index cdb441b31..fb93fbcd9 100644 --- a/projects/miragesdk/examples/mirage-dhcp.yml +++ b/projects/miragesdk/examples/mirage-dhcp.yml @@ -17,16 +17,6 @@ system: - /proc/sys/fs/binfmt_misc:/binfmt_misc read_only: true command: [/usr/bin/binfmt, -dir, /etc/binfmt.d/, -mount, /binfmt_misc] - - name: dhcp-client - network_mode: host - image: "mobylinux/dhcp-client:aaf811d77ff8d8b2e16ca4dd9d0a2849ef8977b6" - capabilities: - - CAP_NET_ADMIN # to bring eth0 up - - CAP_NET_RAW # to read /dev/eth0 - binds: - - /var/run/dhcp-client:/data - command: [/dhcp-client, -vv] - read_only: true daemon: - name: rngd image: "mobylinux/rngd:3dad6dd43270fa632ac031e99d1947f20b22eec9@sha256:1c93c1db7196f6f71f8e300bc1d15f0376dd18e8891c8789d77c8ff19f3a9a92" @@ -35,6 +25,16 @@ daemon: oom_score_adj: -800 read_only: true command: [/bin/tini, /usr/sbin/rngd, -f] + - name: dhcp-client + network_mode: host + image: "mobylinux/dhcp-client:f40cafe2ade4b115704750a85d21eb35b1116b91" + capabilities: + - CAP_NET_ADMIN # to bring eth0 up + - CAP_NET_RAW # to read /dev/eth0 + binds: + - /var/run/dhcp-client:/data + command: [/dhcp-client, -vv] + read_only: true files: - path: /var/run/dhcp-client/README contents: 'data for dhcp-client' diff --git a/projects/miragesdk/src/.gitignore b/projects/miragesdk/src/.gitignore index 21a037422..2a8d64394 100644 --- a/projects/miragesdk/src/.gitignore +++ b/projects/miragesdk/src/.gitignore @@ -5,6 +5,7 @@ obj/ hash # Generated by jbuilder +dhcp-client/calf/.merlin dhcp-client/bpf/.merlin dhcp-client/.merlin sdk/.merlin diff --git a/projects/miragesdk/src/Dockerfile.build b/projects/miragesdk/src/Dockerfile.build index 4c0cfb568..fe1d25f83 100644 --- a/projects/miragesdk/src/Dockerfile.build +++ b/projects/miragesdk/src/Dockerfile.build @@ -7,6 +7,14 @@ RUN opam pin -n add mirage-net-unix https://github.com/samoht/mirage-net-unix.gi RUN opam depext -iy mirage-net-unix logs-syslog irmin-unix cohttp decompress RUN opam depext -iy rawlink tuntap.1.0.0 jbuilder irmin-watcher inotify RUN opam install rresult +RUN opam pin add cstruct --dev # for ppx/jbuilder +RUN opam pin add tuntap 1.0.0 + +# TMP: to compile the calf +RUN opam pin add -n charrua-client https://github.com/yomimono/charrua-client.git#state-halfway +RUN opam depext -uiy ocamlfind topkg-care ocamlbuild lwt mirage-types-lwt mirage +RUN opam depext -uiy charrua-client cohttp conduit mirage-unix +RUN opam depext -uiy mirage-net-fd ptime mirage-logs RUN sudo mkdir -p /src COPY ./sdk /src/sdk @@ -16,7 +24,8 @@ RUN sudo chown opam -R /src USER opam WORKDIR /src -RUN opam pin add cstruct --dev # for ppx/jbuilder - RUN opam config exec -- jbuilder build dhcp-client/main.exe RUN sudo cp /src/_build/default/dhcp-client/main.exe /dhcp-client + +RUN opam config exec -- jbuilder build dhcp-client/calf/unikernel.exe +RUN sudo cp /src/_build/default/dhcp-client/calf/unikernel.exe /dhcp-client-calf diff --git a/projects/miragesdk/src/Makefile b/projects/miragesdk/src/Makefile index 9fb07d3f0..a7cd8a225 100644 --- a/projects/miragesdk/src/Makefile +++ b/projects/miragesdk/src/Makefile @@ -8,7 +8,8 @@ OBJS=obj/dhcp-client MIRAGE_COMPILE=mobylinux/mirage-compile:f903b0e1b4328271364cc63f123ac49d56739cef@sha256:a54d9ca84d3f5998dba92ce83d60d49289cee8908a8b0f6ec280d30ab8edf46c CALF_OBJS=obj/dhcp-client-calf -CALF_FILES=dhcp-client/calf/config.ml dhcp-client/calf/unikernel.ml +CALF_FILES=dhcp-client/calf/config.ml dhcp-client/calf/unikernel.ml \ + dhcp-client/calf/jbuild default: push @ @@ -34,18 +35,18 @@ enter-build: .build enter-dev: .dev docker run --privileged -it -v `pwd`:/src $(shell cat .dev) -$(CALF_OBJS): $(CALF_FILES) - mkdir -p obj/bin - ( cd obj && \ - tar -C ../dhcp-client/calf -cf - $(CALF_FILES:dhcp-client/calf/%=%) | \ - docker run --rm -i --log-driver=none $(MIRAGE_COMPILE) -o dhcp-client-calf | \ - tar xf - || exit 1) && \ - touch $@ +#$(CALF_OBJS): $(CALF_FILES) +# mkdir -p obj/bin +# ( cd obj && \ +# tar -C ../dhcp-client/calf -cf - $(CALF_FILES:dhcp-client/calf/%=%) | \ +# docker run --rm -i --log-driver=none $(MIRAGE_COMPILE) -o dhcp-client-calf | \ +# tar xf - || exit 1) && \ +# touch $@ -$(OBJS): .build $(FILES) +$(OBJS) $(CALF_OBJS): .build $(FILES) $(CALF_FILES) mkdir -p obj/usr/lib obj/bin ( cd obj && \ - docker run --rm --net=none --log-driver=none -i $(IMAGE):build tar -cf - $(OBJS:obj/%=/%) | tar xf - ) && \ + docker run --rm --net=none --log-driver=none -i $(IMAGE):build tar -cf - $(OBJS:obj/%=/%) $(CALF_OBJS:obj/%=/%) | tar xf - ) && \ touch $@ hash: Makefile Dockerfile.build Dockerfile.pkg $(FILES) $(CALF_FILES) .build @@ -77,7 +78,8 @@ dev-clean: rm -rf _build dhcp-client/calf/_build dev: - cd dhcp-client/calf && mirage configure && make jbuilder build dhcp-client/main.exe --dev + jbuilder build dhcp-client/calf/unikernel.exe --dev +# cd dhcp-client/calf && mirage configure && make .DELETE_ON_ERROR: