OILS / deps / README.md View on Github | oilshell.org

107 lines, 74 significant
1`deps/` Directory
2=================
3
4Scripts to build various dependencies. They can used on the host machine, or
5in a Dockerfile to build a container. The container is used in our CI build,
6and can also be used locally.
7
8## Docker Files
9
10Our images:
11
12- <https://hub.docker.com/u/oilshell>
13
14Base image maintained by:
15
16- <https://hub.docker.com/_/debian>
17- <https://github.com/debuerreotype/debuerreotype>
18
19Note: we could use names like `buster-20220912-slim` instead of `buster-slim`.
20
21- How can we get notified when the image is updated?
22 - <https://crazymax.dev/diun/> has many notification mechanisms
23
24
25## Container Dir Structure
26
27The file system in our images looks like this:
28
29 /home/uke/
30 tmp/ # Dockerfiles copy build scripts here
31 oil/ # soil/host-shim.sh mounts the repo here
32 _tmp/ # published as .wwz files to CI
33 oil_DEPS/ # Built into containers
34 cpython-full/ # build of Python
35 py3/ # like cpython-full
36
37 mycpp-venv/ # installed by python3 -m pip
38 mypy/ # git repo
39
40 spec-bin/
41 wild/ # Pure data
42
43 cmark/
44
45 libcmark.so # shared library
46 python3 # Plain executable
47
48Note that `build/dev-shell.sh` puts some executables in `$PATH`.
49
50TODO:
51
52- We should `--mount type=bind` "wedges" into say `/wedge/foo`
53 - These can be either data or executable tools
54 - I suppose `/home/uke/{oil,oil_DEPS}` are also wedges? They are meant not to conflict
55 - But we want wedges to work OUTSIDE containers too.
56- We should also be able to COPY wedges into an image, for easier deployment on
57 cloud services like Github Actions and fly.io
58- Then run an arbitrary shell command that uses the code and data
59- Outputs can go back into `/wedge`
60 - Problems: absolute paths, root, `make install`, etc.
61
62Dir structure:
63
64 /wedge/ # or you can build your own /home/andy/wedge
65 oilshell.org/ # built for this distro, e.g. ubuntu-18.04
66 DEPS/
67 Python-2.7.13/
68 Python-3.10.4/
69 bash-4.4/
70 bash-5.1/
71
72And then we'll need some symlinks like `python3`, etc.
73
74## Kinds of Tarballs / "Dir Values"
75
76- Source vs. Intermediate - what repo stores it?
77- Absolute vs. Relative - where is it mounted?
78- Layer vs. Wedge - how is it mounted?
79
80## Soil C++ Tarball Notes
81
82cpp-tarball is consumed by these jobs now:
83
84- raw-vm
85- wild
86- app-tests for ble.sh
87
88If we use it in more tasks, we could try to remove MyPy/Python 3 from Docker
89images. It should especially speed up the pull on sourcehut -- 30-40 seconds
90for pea/other-tests, vs. 2:13 for benchmarks2
91
92So these can also consume the tarball:
93
94- benchmarks
95- benchmarks2
96- interactive uses the 'benchmarks' image for some reason
97- cpp-spec
98 - build ASAN binary from tarball
99 - needs both osh and ysh
100- cpp-coverage -- would need to include C++ unit tests and Ninja in tarball,
101 which is not a bad idea
102
103More:
104
105- Alpine testing
106- Smoosh testing with OCaml, similar to spec tests
107