Common coding tasks

Adding a new permission

  1. Set the permission’s default value, description, and other attributes in the permissions module

  2. Tell subuser how to apply the permission in the runtime class

  3. Test your permission by adding it to the all-permissions image in the test suit and running the test suit.

Running the test suit

In the root source directory run:

subuser dev texttest-dev

To run the xpra-bridge test suit run:

./logic/test xpra-bridge

Building the docs

In order to build the docs, you must have the subuser-standard within the docs directory. In order to get the subser-standard issue:

cd ~/<subuser-git-repo>/docs
git clone https://github.com/subuser-security/subuser-standard.git

To build the docs, cd to this repositories root, run subuser dev docs and run make html in the docs directory:

cd ~/<subuser-git-repo>/
subuser dev docs-dev
cd docs
make html

Profiling

Running a built in command, with the exception of test, with the SUBUSER_RUN_PROFILER environment variable set will run those commands and print profiler output once the command has finnished.

Debugging the XPRA bridge

If you set the SUBUSER_DEBUG_XPRA environment variable then XPRA logs will be left in ~/.subuser/volumes/xpra/<subuser-name>/xpra-home/. XPRA will also spew out a bunch of garbage to the screen that you can read through.

Running with a higher verbosity level

Set the SUBUSER_VERBOSITY environment variable to 3 to see more messages. The default is 2. 1 is very terse.

Prepairing a release

  1. Run the pre-release checklist by running the pre-release script.

  2. Bump the VERSION file.

  3. Tag release:

    $ git tag -s major.minor.reallyminor
    
  4. Make packages and test them:

    $ make packages
    $ su
    # pip3 uninstall subuser
    # pip3 install ./dist/subuser-0.5.8-py3-none-any.whl
    
  5. Deploy everything:

    $ make deploy
    $ git push origin 0.5.8