[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] Building mirage-www fails
CCing the devel list so everyone knows how this works. If you have a Linux box with Docker installed, you can clone the precise environment by: $ sudo docker pull avsm/docker This gives you access to a number of 'tags' (which are predefined builds of OPAM/OCaml on various filesystems). Full list of tags are: https://registry.hub.docker.com/u/avsm/docker-opam/tags/manage/ You can use a tag directly via: $ sudo docker build -t avsm/docker:ubuntu-trusty-4.01.0 <cmd> The scripts referenced below already do this, and are all in: https://github.com/mirage/is-mirage-broken The cron.sh is the one that's run regularly and sync with the Docker registry and builds every combination. To recreate one of them, just run build.sh directly; e.g. ./build.sh ubuntu-trusty-4.01.0 mirage-skeleton If you already have a suitable environment with OPAM and OCaml installed system-wide, you can just run the shell scripts in is-mirage-broken/scripts/ directly to fix them. -anil On 22 Oct 2014, at 13:55, Nik Sultana <ns441@xxxxxxxxx> wrote: > Hi Anil, is this something I can try locally to see if the modified script > works, or do I need to run the script on a build server somewhere? Feel free > to point me to any "BUILD" notes i could use for this, in case I can test it > and make a PR, if it's still an open issue. > Best, > Nik > > On 2014-10-21 16:18, Richard Mortier wrote: >> if you read the docs i quoted, that's exactly as documented: >>>>>>> • The -e setting shall be ignored when executing the compound >>>>>>> list >>>>>>> following the while, until, if, or elif reserved word, a pipeline >>>>>>> beginning with the ! reserved word, or any command of an AND-OR list >>>>>>> other than the last. >> it might be rather counter-intuitive and of dubious merit, but it's >> the documented behaviour... >> On 21 Oct 2014, at 16:01, Nik Sultana <ns441@xxxxxxxxx> wrote: >>> I think Richard might be right. The semantics of && seems to be a bit >>> counterintuitive in this case. Consider this script: >>> #!/bin/sh >>> set -e #line1 >>> false && echo hello #line2 >>> echo hello2 >>> false #line4 >>> echo world >>> It gives the output: >>> hello2 >>> which is odd, because we expect the script to be terminated at line2 -- >>> the line "echo hello2" should never be reached. Instead, the script >>> continues on and is only terminated at line4. >>> Just to test the effect of "set -e", commenting line1 and running the >>> script gives the output: >>> hello2 >>> world >>> On 2014-10-21 15:49, Anil Madhavapeddy wrote: >>>> The && should catch that failure. Consider: >>>> #!/bin/sh -ex >>>> exit 1 && echo hello >>>> echo world >>>> Executing that: >>>> $ ./test.sh >>>> + exit 1 >>>> If the make depend fails, I'd expect the && to fail, and the resulting >>>> non-zero exit code to cause the whole shell to exit. >>>> -anil >>>> On 21 Oct 2014, at 15:37, Richard Mortier >>>> <Richard.Mortier@xxxxxxxxxxxxxxxx> wrote: >>>>> but isn't it the "make depend" step that's failing as far as the >>>>> is-mirage-broken/scripts/mirage-www script is concerned -- hence it >>>>> won't exit according to point 2. below (-e is ignored if it's any >>>>> command of an AND-OR list other than the last). >>>>> with -e on, seems expected practice is to issue the commands >>>>> individually i.e. >>>>> make depend >>>>> make configure >>>>> make build >>>>> ...and let the -e fail them if required. (assuming you don't want to >>>>> accumulate info about failures of depend/configure on other platforms >>>>> before bailing out.) >>>>> On 21 Oct 2014, at 15:18, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote: >>>>>> It's here: >>>>>> https://github.com/mirage/is-mirage-broken/blob/master/scripts/mirage-www >>>>>> And the `make` invocations do seem to exit with a non-zero exit code. >>>>>> -ani >>>>>> On 21 Oct 2014, at 15:02, Richard Mortier >>>>>> <Richard.Mortier@xxxxxxxxxxxxxxxx> wrote: >>>>>>> not sure precisely where the script being executed actually is but >>>>>>> could it be because it's a command in a multi-command pipeline? >>>>>>> http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html >>>>>>> -e >>>>>>> When this option is on, when any command fails (for any of the >>>>>>> reasons listed in Consequences of Shell Errors or by returning an >>>>>>> exit status greater than zero), the shell immediately shall exit >>>>>>> with the following exceptions: >>>>>>> • The failure of any individual command in a multi-command >>>>>>> pipeline >>>>>>> shall not cause the shell to exit. Only the failure of the pipeline >>>>>>> itself shall be considered. >>>>>>> • The -e setting shall be ignored when executing the compound >>>>>>> list >>>>>>> following the while, until, if, or elif reserved word, a pipeline >>>>>>> beginning with the ! reserved word, or any command of an AND-OR list >>>>>>> other than the last. >>>>>>> • If the exit status of a compound command other than a subshell >>>>>>> command was the result of a failure while -e was being ignored, then >>>>>>> -e shall not apply to this command. >>>>>>> This requirement applies to the shell environment and each subshell >>>>>>> environment separately. For example, in: >>>>>>> set -e; (false; echo one) | cat; echo two >>>>>>> the false command causes the subshell to exit without executing echo >>>>>>> one; however, echo two is executed because the exit status of the >>>>>>> pipeline (false; echo one) | cat is zero. >>>>>>> On 21 Oct 2014, at 14:31, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote: >>>>>>>> Great! For the rest of the list, it looks like mirage-dev is >>>>>>>> working with the external OPAM solver (aspcud, on Ubuntu-trusty), >>>>>>>> but not with the internal one (CentOS builds): >>>>>>>> https://github.com/mirage/is-mirage-broken/tree/master/logs >>>>>>>> This is probably due to our excessive use of depopts; I will >>>>>>>> replace those with explicit virtual packages (e.g. dns-mirage) that >>>>>>>> encode all the dependencies they need. >>>>>>>> More mysteriously, the `set -e` in the shell script isn't causing >>>>>>>> it to terminate early, so the `MIRAGE WORKS` string is always >>>>>>>> printed. We need a is-mirage-working-working script to fix our >>>>>>>> is-mirage-working script :-) >>>>>>>> -anil >>>>>>>> On 20 Oct 2014, at 15:09, Luke Dunstan <lukedunstan81@xxxxxxxxx> >>>>>>>> wrote: >>>>>>>>> Thanks, I was able to compile and run mirage-www on a Docker image >>>>>>>>> with 4.01. >>>>>>>>> Luke >>>>>>>>> On 20 October 2014 09:28, Anil Madhavapeddy <anil@xxxxxxxxxx> >>>>>>>>> wrote: >>>>>>>>> On 19 Oct 2014, at 03:17, Luke Dunstan <lukedunstan81@xxxxxxxxx> >>>>>>>>> wrote: >>>>>>>>>> Hi, >>>>>>>>>> I tried to build mirage-www as per >>>>>>>>>> http://openmirage.org/wiki/mirage-www >>>>>>>>>> $ env NET=socket FS=crunch mirage configure --unix >>>>>>>>>> (success) >>>>>>>>>> $ make depend >>>>>>>>>> (success*) >>>>>>>>>> $ make >>>>>>>>>> camlbuild -classic-display -use-ocamlfind -pkgs >>>>>>>>>> lwt.syntax,conduit.mirage,cow.syntax,cowabloga,cstruct,io-page,io-page.unix,lwt,mirage-console.unix,mirage-fs-unix,mirage-http,mirage-types,mirage-types.lwt,tcpip.stack-socket >>>>>>>>>> -tags "syntax(camlp4o),annot,bin_annot,strict_sequence,principal" >>>>>>>>>> -cflag -g -lflags -g,-linkpkg main.native >>>>>>>>>> ocamlfind ocamlc -c -g -annot -bin-annot -principal >>>>>>>>>> -strict-sequence -package tcpip.stack-socket -package >>>>>>>>>> mirage-types.lwt -package mirage-types -package mirage-http >>>>>>>>>> -package mirage-fs-unix -package mirage-console.unix -package lwt >>>>>>>>>> -package io-page.unix -package io-page -package cstruct -package >>>>>>>>>> cowabloga -package cow.syntax -package conduit.mirage -package >>>>>>>>>> lwt.syntax -syntax camlp4o -o main.cmo main.ml >>>>>>>>>> + ocamlfind ocamlc -c -g -annot -bin-annot -principal >>>>>>>>>> -strict-sequence -package tcpip.stack-socket -package >>>>>>>>>> mirage-types.lwt -package mirage-types -package mirage-http >>>>>>>>>> -package mirage-fs-unix -package mirage-console.unix -package lwt >>>>>>>>>> -package io-page.unix -package io-page -package cstruct -package >>>>>>>>>> cowabloga -package cow.syntax -package conduit.mirage -package >>>>>>>>>> lwt.syntax -syntax camlp4o -o main.cmo main.ml >>>>>>>>>> File "main.ml", line 98, characters 2-13: >>>>>>>>>> Error: Unbound module OS >>>>>>>>>> Command exited with code 2. >>>>>>>>>> make: *** [main.native] Error 10 >>>>>>>>>> To try to ensure that this was reproducible I also tried starting >>>>>>>>>> from the "avsm/docker-opam:ubuntu-trusty-4.01.0" Docker image and >>>>>>>>>> got the same error. However, I had to change the ounit package >>>>>>>>>> URL because forge.ocamlcore.org is apparently down. >>>>>>>>>> Also, I had to "apt-get install libssl-dev" to get past the >>>>>>>>>> "configure" / "make depend" step because it was apparently >>>>>>>>>> required to compile ssl-0.4.7, so maybe that is related to the >>>>>>>>>> problem? >>>>>>>>> Hi Luke, >>>>>>>>> Thanks for the bug report, and bonus points for trying the Docker >>>>>>>>> repository out. I've fixed the underlying issue that was causing >>>>>>>>> the unbound OS module to show up -- it's because of some recent >>>>>>>>> shuffling of dependencies in console handling, and this resulted >>>>>>>>> in mirage-unix no longer being implicitly depended on. I've >>>>>>>>> modified the mirage tool to explicitly add the dependency in. >>>>>>>>> In order to help keep things working across the increasing number >>>>>>>>> of distributions, I've also created a couple of cron jobs that >>>>>>>>> automatically build things and publish the logs >>>>>>>>> - The Docker registry now has OPAM tags for Ubuntu/CentOS on OCaml >>>>>>>>> 4.01 and 4.02: >>>>>>>>> https://registry.hub.docker.com/u/avsm/docker-opam/builds_history/15669/ >>>>>>>>> https://github.com/avsm/docker-opam has the sources >>>>>>>>> - https://github.com/mirage/is-mirage-broken runs as a cronjob >>>>>>>>> (cron.sh) on blobs.openmirage.org daily and pushes the logs to the >>>>>>>>> logs/ directory in this repo. When that's completed running (and >>>>>>>>> we've fixed the build breakages!), it should be easy to get it on >>>>>>>>> the website as a badge so we can see the status of repos at a >>>>>>>>> glance. >>>>>>>>> About to hop on a flight now, so I've left the cron job running >>>>>>>>> and will check it out tomorrow. If anyone else can test out the >>>>>>>>> Docker images in the meanwhile, feel free... >>>>>>>>> -anil >>>>>>>>> _______________________________________________ >>>>>>>>> MirageOS-devel mailing list >>>>>>>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx >>>>>>>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel >>>>>>>> _______________________________________________ >>>>>>>> MirageOS-devel mailing list >>>>>>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx >>>>>>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel >>>>>>> -- >>>>>>> Cheers, >>>>>>> R. >>>>>>> _______________________________________________ >>>>>>> MirageOS-devel mailing list >>>>>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx >>>>>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel >>>>> -- >>>>> Cheers, >>>>> R. >>>>> _______________________________________________ >>>>> MirageOS-devel mailing list >>>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx >>>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel >>>> _______________________________________________ >>>> MirageOS-devel mailing list >>>> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx >>>> http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel > _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |