Skip to content

The Oils Repo Is Different From the Tarball Releases

andychu edited this page Mar 13, 2025 · 7 revisions

(Back to Contributing)

This page addresses common confusion with Oils.

Their contents are very different:

  • The git repo has Python source code.
  • The oils-for-unix tarballs have (generated) C++ source code. There is no Python.

FAQs

How do I build a shell binary from the tarball?

See the instructions in INSTALL.html.

How do I build the tarball from the repo?

This build process is pretty involved, and changes from time to time. It's not meant for end users.

Details:

  • Oils developers should follow the instructions on the Contributing page.
  • It involves custom tools like Zephyr ASDL and mycpp. mycpp is built on a specific version of the MyPy type checker.
  • The Soil CI makes a tarball at every commit. So we are sure it always works. See soil/worker.sh and the cpp-tarball job.

Is it Unusual That the Repo Is Different than the Tarball?

Generating C++ from Python is unusual, but many projects have a non-trivial release process.

For example, when a project uses autotools, you run its generated shell scripts like ./configure, and generated makefiles. You're not running the original m4 source code.

You don't need to install m4 to build and autotools project, only shell and make. This is an intended feature.

Likewise, with Oils, you don't need Python to build or run. You only need a C++ compiler.

I want to "bootstrap" Oils

Everything is open source, so you can do this.

However, I wouldn't recommend it as the first thing you do with the source of the Oils project. People have tried before and gotten stuck!

A good first contribution would be to pick a bug from the issue tracker.

What should be improved about the tarball build?

As of March 2025, we shouldn't require root access for building "wedges", e.g. specific versions of re2c, Python 2, Python 3, etc.

Clone this wiki locally