seL4 / seL4-CAmkES-L4v-dockerfiles

Dockerfiles defining the dependencies required to build seL4, CAmkES, and L4v.
13 stars 40 forks source link

sel4.sh: add setup for building documentation #31

Closed lsf37 closed 3 years ago

lsf37 commented 3 years ago

This commit adds doxygen + sufficient LaTeX dependencies to build the seL4 reference manual.

See also the discussion on seL4/ci-actions#65

lsf37 commented 3 years ago

Do not merge yet: this commit doesn't work, and I'm not sure what exactly the problem is.

The apt-get install fails downloading the deb package for texlive-fonts-extra (consistently). But, if I remove it from this apt-get line, and later just run

sudo apt-get install texlive-fonts-extra

in the container itself, it works just fine.

@wom-bat do you have any idea what might be going wrong here?

kent-mcleod commented 3 years ago

Is it possible to guard things by environment variables in docker? That way a version that can build the manual can be selectively enabled and hosted under a slightly modified label name, ie sel4-manual. This is how we handle riscv toolchains currently.

lsf37 commented 3 years ago

Is it possible to guard things by environment variables in docker? That way a version that can build the manual can be selectively enabled and hosted under a slightly modified label name, ie sel4-manual. This is how we handle riscv toolchains currently.

Yes, we can do that, basically making a separate script apply_manual.sh. Maybe that will actually circumvent the error.

It might become a bit more interesting when you then want to combine things, e.g. sel4_riscv_manual. Still alright I guess.

tcptomato commented 3 years ago

@lsf37 I think the problem is this one https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960304. When the script is executing, you're using the debian snapshot repositories (which seem to be rate limited / randomly closing connections). When you install it afterwards in the container, you're using the normal repos.

lsf37 commented 3 years ago

@lsf37 I think the problem is this one https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=960304. When the script is executing, you're using the debian snapshot repositories (which seem to be rate limited / randomly closing connections). When you install it afterwards in the container, you're using the normal repos.

Thank you, that sounds exactly like what is happening, and since texlive-fonts-extra is one of the last packages and reasonably large, it makes sense that it would trigger there. Will see if if the workarounds described in the bug report work for this as well.

lsf37 commented 3 years ago

Ok, this is now ready for review. I couldn't get it to work on snapshot, even with letting it wait (for rate limiting) etc, but @LukeMondy says there is no big downside to pulling it from the standard non-snapshot repo in this case, so that's what it's doing now.

With this, you can get a sel4-tex image by invoking

./build.sh -s tex -b sel4

It might make sense to add this to the Makefile as well, which is not done yet, but since @LukeMondy also mentioned that Debian now provides a prebuilt riscv toolchain, we might roll riscv into the base image and refactor the Makefile a bit more in that operation (which would override any new -tex combinations we put in).