Skip to content
Ubuntu Make
Branch: master
Clone or download
LyzardKing Update readme
Add snapcraft store badge
remove ppa warning
Latest commit 5ca6726 Apr 12, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Support running VCS umake version without being in root directory Dec 7, 2016
confs Prepare for zesty Dec 7, 2016
debian Release version 18.09 Sep 27, 2018
docker games: Update Twine ans Stencyl Jan 5, 2019
po Merge pull request #370 from WhiteSymmetry/patch-2 Nov 14, 2016
tests Flake8 test: unused imports Feb 18, 2019
umake Snap test branch (#560) Feb 23, 2019
.dockerignore Add Unity3D support May 14, 2018
.gitattributes Ignore data files for incorrect language attribution May 29, 2018
.gitignore Style fixes and pre-commit pep8 test Feb 18, 2019
.pep8 Ignore continuation line not being a multiple of 4 (only occur on old… Sep 10, 2015
.travis.yml Install test dependencies from package and autopkgtests Dec 18, 2015
COPYING License and build fixes Aug 1, 2014
Dockerfile Add instructions to run from git master Mar 10, 2017 Update readme Apr 12, 2019
TODO Update TODO Sep 8, 2014
enable_completion Releasing under a new name: ubuntu make Dec 9, 2014 Style fixes and pre-commit pep8 test Feb 18, 2019
requirements.txt Snap test branch (#560) Feb 23, 2019
runtests Move to autopkgtest May 17, 2018
setup.cfg Flake8 test: unused imports Feb 18, 2019 Add ZSH autocompletion Nov 18, 2015

Ubuntu Make

Ubuntu Make is a project designed to enable quick and easy setup of common needs for developers on Ubuntu.

Get it from the Snap Store

More information on what this snap is available at

Current project health

Build Status (pep8 and small tests)

Snap Status


We recommend to use the Ubuntu Make snap to ensure you always have the latest and greatest version, even on older supported releases.

$ snap install ubuntu-make --classic

If installed via the snap it can be run as ubuntu-make.umake, or via the alias umake


If the snap does not work there is a daily build ppa:

sudo add-apt-repository ppa:lyzardking/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make


Umake has three listing options:

  • --list to show all the frameworks
  • --list-available to show the available frameworks
  • --list-installed to show the installed frameworks

Running the command line tool

To run the tool:

$ ./umake

You can use --help to get more information and change the verbosity of the output with -v, -vv.


Note that this project uses python3 and requires at least python 3.3. All commands use the python 3 version. There are directions later on explaining how to install the corresponding virtualenv.

Shell completion

To enable shell completion on bash or zsh, just run:

$ . enable_completion

Different level of logging

Multiple logging profiles are available in confs/ to be able to have different traces of your execution (particularly useful for debugging). For instance, you will find:

  • debug.logcfg: Similar to using -vv, but also puts logs in a debug.log.
  • debug_network.logcfg: The root logging level is INFO (-v), the network activities are in DEBUG mode and will be logged in debug_network.log.
  • testing.logcfg: Mostly for coverage tests, do not set any logging config on stdout, but:
  • DEBUG logs and above are available in debug.log.
  • INFO logs and above are available in info.log.
  • WARNING and ERROR logs are available in error.log.

Under normal circumstances, we expect error.log to remain empty../

To load one of those logging profiles:

$ LOG_CFG=confs/debug.logcfg bin/umake


Providing user's framework

It's possible for anyone to have local frameworks for either development purposes or for special local or team use-cases.

  • Any files in a directory set with the "UMAKE_FRAMEWORKS" environment variable will be loaded first.
  • Any files inside ~/.umake/frameworks will be loaded next.

Any file should eventually contain a category or frameworks like the ones in umake/frameworks/*.

If category names are duplicated only one will be loaded. Ubuntu Make will first load the one controlled by the environment variable, then the one located in the home based directory, and finally, the system one. Note that duplicate filenames are supported but not encouraged.

Style guide and checking

We are running pep8, but the max line length has been relaxed to 120. env/ is excluded from the pep8 check as well.

Running this test, in particular:

$ ./runtests pep8

This will run those pep8 checks on the code.

You can also run the pep8 tool directly from the project directory:

$ pep8 .


Types of tests

There are four types of tests that can be combined in runtests:

  • pep8: Run the pep8 tests on all the umake and test code.
  • small: Tests modules and components with mock content around them. Note that this uses a local webserver (http and https) to serve mock content.
  • medium: Tests the whole workflow. It directly calls end user tools from the command line, but without affecting the local system. Requirements like installing packages are mocked, as well as the usage of a local webserver serving (smaller) content similar to what will be fetched in a real use case. The assets have the same formats and layout.
  • large: Runs the same tests as the medium test, but with real server downloads and installation of dpkg packages. Most of these tests need root privileges. Be aware that these tests only run on a graphical environment. It will interfere with it and it is likely to install or remove packages on your system.

To run all the tests, with coverage report, like in our jenkins infra:

$ ./runtests

Use --no-config to disable the coverage report selection.

Running some tests with all debug infos

By default, runtests will not display any debug output if the tests are successful, similar to Nose. However, if only some tests are selected, runtests will a display full debug log,

$  ./runtests tests/small/

Use --no-config to disable the debug output selection.

More information on runtests

runtests is a small nose wrapper used to simplify the testing process. By default, if no arguments are supplied or if "all" is supplied, runtests will run all available tests on the project using the production nose configuration. It is possible to run only some types of tests:

$ ./runtests small medium

This will only run small and medium tests, with all nose defaults (no profile is selected).

Finally, you can run a selection of one or more tests:

$ ./runtests tests/small/

This enables the debug profile by default, to display all outputs and logging information (at debug level).

You can activate/disable/change any of those default selected configurations with --config/--coverage/--debug/--no-config (see runtests --help for more information)

Nose configurations

Some nose configurations are available in confs/. You will find:

  • debug.nose: this profile shows all outputs and logging information while turning debug logging on.
  • prod.nose: this profile keeps all outputs captured, but display tests coverage results.

Check for Python warnings:

runtests is compatible with showing the Python warnings:

$ PYTHONWARNINGS=d ./runtests

Create your own environment and run from it

For an easier development workflow, we encourage the use of virtualenv to test and iterate on the project rather than installing all the requirements on your machine. In the project root directory run (env/ is already in .gitignore and excluded from pep8 checking):

$ virtualenv --python=python3 --system-site-packages env
$ sudo apt-get install -qq apt apt-utils libapt-pkg-dev # those are the requirements to compile python-apt
$ sudo apt-get install -qq python3-gi # not installable with pypi
$ sudo apt-get install -qq bzr python3-dev # requires for pip install -r
$ env/bin/pip install -r requirements.txt
$ source env/bin/activate
$ bin/umake

Developing using system package

Instead of using a virtual environment, you can install system packages to be able to run the Ubuntu Make tests. The build dependencies are listed in debian/control and should be available in latest development Ubuntu version. If you are using the latest LTS, you should find them in a dedicated Ubuntu Make Build-dep ppa.

Release management

Refresh .pot files:

$ ./ update_pot
You can’t perform that action at this time.