wiki:Packaging

Packaging

TODO: Packaging is currently made by running a series of commands given in a packaging script for each supported platform. Probably it would be best to integrate this with setup.py and unify everything there, packaging scripts only to call setup.py. #865

TODO: We should also unify package names and versioning between platforms.

TODO: Add-ons are not packaged on all platforms.

This page describes steps necessary to package Orange.

Supported platforms

We are supporting:

  • Fink (Mac OS X)
  • Debian (Linux) – we try to have packages compatible with Ubuntu

Steps

Building

  1. unpack source package
  2. in source subdir run make
    • if you need to specify exactly with which Python executable building should be made, you can specify this to make: PYTHON=/path/to/python make
  3. in source/crs subdir run make, move resulting _orngCRS.so two dirs up (top dir of extracted package)
  4. you should not have few *.so files in the top dir

Installing

Installing is mostly cleaning up things and moving into proper packages (we try to keep GUI separate, in one package GUI and in the other package scripting/library part).

If you will be using unpackaged source dir directly as a source for packaging, you can now probably remove source subdir.

We often copy COPYING and LICENSES files to documentation, if there is no packaging-specific way of dealing with that.

List of files for scripting/library

  • orange/fixes
  • orange/Orange
  • orange/orange.so
  • orange/orangeom.so
  • orange/corn.so
  • orange/statc.so
  • orange/orangene.so
  • orange/_orngCRS.so
  • orange/orng*.py
  • orange/mathutil.py
  • orange/orange2to25.py
  • orange/urllib2_file.py
  • orange/widgetParser.py

Together with that package should contain documentation for scripting/library part and orange.pth file pointing to the orange subdir of site-packages once Orange is installed there. Because import orange in fact loads orange/orange.so, so we need to add orange to Python path.

Documentation is doc subdir, but without doc/widgets.

List of files for GUI

Everything else. Documentation for GUI and widgets. Be careful, orangeqt.so should go here (the rest of *.so files should go to scripting/library package).

Documentation is doc/style.css and doc/widgets subdir.

Removing some files

Some files from source package do not need to be packaged for binary distribution. Here is a list of some candidates

  • INSTALL.linux.txt
  • doc/INSTALL.linux.txt
  • c45.dll
  • liborange_include.a
  • updateOrange.py

Configuration

For packaging it is useful to preconfigure Orange so that it knows where to find needed files. For example, where to find example datasets. This is done through manipulation of orangerc.cfg file to proper defaults.

TODO: Currently we are still using deprecated way of configuring datasets dir through orngConfiguration.py. #842

TODO: Icons should be moved from Python library dir and Orange should be configured accordingly. #557

Executable

Opening Orange canvas should be also possible from command line. As this is platform specific a small wrapper is made while packaging which runs orange/OrangeCanvas/orngCanvas.pyw. We install this wrapper in /usr/bin/orange. Do not forget to set executable bit on this wrapper file.

If the platform uses some standard menu or launcher for applications it is needed to register Orange canvas also there.

Examples

Concrete scripts for above mentioned commands. You can also find used package names and descriptions here.

There is also information about needed dependencies.