Python App Bundle - oilshell/oil GitHub Wiki

Back to Contributing

Background: Python App Bundle Releases

You can look at the Python build this way:

(1) What I've documented above, i.e. running bin/osh, can be called the developer build. This builds native/libc.c and uses the system Python interpreter /usr/bin/env python2 to run Oil.

(2) The "production" build is split into two steps: (a) git repo -> release tarball, and (b) release tarball -> Oil app bundle.

2a. Release tarball. This step is architecture-independent and occurs on the developer machine. This process may change, but it's roughly as follows:

# First we need to build a raw Python interpreter, in order to dynamically discover Python dependencies.
build/dev.sh ubuntu-deps        # or equivalent for other distros
build/dev.sh yajl-release       # build the git submodule (TODO: perhaps remove this)
deps/from-tar.sh layer-cmark
deps/from-tar.sh layer-re2c
deps/from-tar.sh layer-cpython
build/py.sh all
devtools/release.sh quick-oil-tarball      # build _release/oil.tar with the Makefile and build/*.{sh,py}
devtools/release.sh test-oil-tar           # test that you can build the tarball

Notes:

  • This step is likely to be Linux-centric for awhile. The end-user build, step 2b, should not be Linux-centric. Ideally it would only require a POSIX environment.
  • The full release process is documented at the top of devtools/release.sh. Those comments are kept up-to-date.
  • After you've done the steps above, you can also try devtools/release.sh quick-oil-tarball to quickly make tarballs for testing on other machines. (It doesn't run any tests, so make sure the code works on Linux first.)

2b. Oil app bundle build. This step is architecture-dependent and occurs on the machine of the system packager or end user. To perform this step, follow the instructions in the INSTALL.txt file at the root of the tarball.