| 1 | `deps/` Directory
|
| 2 | =================
|
| 3 |
|
| 4 | Scripts to build various dependencies. They can used on the host machine, or
|
| 5 | in a Dockerfile to build a container. The container is used in our CI build,
|
| 6 | and can also be used locally.
|
| 7 |
|
| 8 | ## Docker Files
|
| 9 |
|
| 10 | Our images:
|
| 11 |
|
| 12 | - <https://hub.docker.com/u/oilshell>
|
| 13 |
|
| 14 | Base image maintained by:
|
| 15 |
|
| 16 | - <https://hub.docker.com/_/debian>
|
| 17 | - <https://github.com/debuerreotype/debuerreotype>
|
| 18 |
|
| 19 | Note: 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 |
|
| 27 | The 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 | wedge/
|
| 34 | oils-for-unix.org # should be oils.pub
|
| 35 | pkg/
|
| 36 | bash/
|
| 37 | 4.4/
|
| 38 | 5.2/
|
| 39 | R-libs/
|
| 40 | ...
|
| 41 |
|
| 42 | Note that `build/dev-shell.sh` puts some executables in `$PATH`.
|
| 43 |
|
| 44 | TODO:
|
| 45 |
|
| 46 | - We should `--mount type=bind` "wedges" into say `/wedge/foo`
|
| 47 | - These can be either data or executable tools
|
| 48 | - I suppose `/home/uke/{oil,oil_DEPS}` are also wedges? They are meant not to conflict
|
| 49 | - But we want wedges to work OUTSIDE containers too.
|
| 50 | - We should also be able to COPY wedges into an image, for easier deployment on
|
| 51 | cloud services like Github Actions and fly.io
|
| 52 | - Then run an arbitrary shell command that uses the code and data
|
| 53 | - Outputs can go back into `/wedge`
|
| 54 | - Problems: absolute paths, root, `make install`, etc.
|
| 55 |
|
| 56 | Dir structure:
|
| 57 |
|
| 58 | /wedge/ # or you can build your own /home/andy/wedge
|
| 59 | oilshell.org/ # built for this distro, e.g. ubuntu-18.04
|
| 60 | DEPS/
|
| 61 | Python-2.7.13/
|
| 62 | Python-3.10.4/
|
| 63 | bash-4.4/
|
| 64 | bash-5.1/
|
| 65 |
|
| 66 | And then we'll need some symlinks like `python3`, etc.
|
| 67 |
|
| 68 | ## Kinds of Tarballs / "Dir Values"
|
| 69 |
|
| 70 | - Source vs. Intermediate - what repo stores it?
|
| 71 | - Absolute vs. Relative - where is it mounted?
|
| 72 | - Layer vs. Wedge - how is it mounted?
|
| 73 |
|
| 74 | ## Soil C++ Tarball Notes
|
| 75 |
|
| 76 | cpp-tarball is consumed by these jobs now:
|
| 77 |
|
| 78 | - raw-vm
|
| 79 | - wild
|
| 80 | - app-tests for ble.sh
|
| 81 |
|
| 82 | If we use it in more tasks, we could try to remove MyPy/Python 3 from Docker
|
| 83 | images. It should especially speed up the pull on sourcehut -- 30-40 seconds
|
| 84 | for pea/other-tests, vs. 2:13 for benchmarks2
|
| 85 |
|
| 86 | So these can also consume the tarball:
|
| 87 |
|
| 88 | - benchmarks
|
| 89 | - benchmarks2
|
| 90 | - interactive uses the 'benchmarks' image for some reason
|
| 91 | - cpp-spec
|
| 92 | - build ASAN binary from tarball
|
| 93 | - needs both osh and ysh
|
| 94 | - cpp-coverage -- would need to include C++ unit tests and Ninja in tarball,
|
| 95 | which is not a bad idea
|
| 96 |
|
| 97 | More:
|
| 98 |
|
| 99 | - Alpine testing
|
| 100 | - Smoosh testing with OCaml, similar to spec tests
|
| 101 |
|