From 5c0eb246d468454de9e84dca0d08c813459a5a6d Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 19 Dec 2012 07:45:02 +0900 Subject: documentation update! reSTructured (no pun intended) the sphinx docs, and trimmed README --- docs/dev/authors.rst | 0 docs/dev/environment.rst | 59 +++++++++++++++++++++++++++++++++++++ docs/dev/internals.rst | 12 ++++++++ docs/dev/internationalization.rst | 27 +++++++++++++++++ docs/dev/resources.rst | 14 +++++++++ docs/dev/tests.rst | 62 +++++++++++++++++++++++++++++++++++++++ docs/dev/todo.rst | 0 docs/dev/workflow.rst | 8 +++++ 8 files changed, 182 insertions(+) create mode 100644 docs/dev/authors.rst create mode 100644 docs/dev/environment.rst create mode 100644 docs/dev/internals.rst create mode 100644 docs/dev/internationalization.rst create mode 100644 docs/dev/resources.rst create mode 100644 docs/dev/tests.rst create mode 100644 docs/dev/todo.rst create mode 100644 docs/dev/workflow.rst (limited to 'docs/dev') diff --git a/docs/dev/authors.rst b/docs/dev/authors.rst new file mode 100644 index 00000000..e69de29b diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst new file mode 100644 index 00000000..7eafcdea --- /dev/null +++ b/docs/dev/environment.rst @@ -0,0 +1,59 @@ +.. _environment: + +Setting up a Work Environment +============================== + +This document covers how to get an enviroment ready to contribute code to the LEAP Client. + +Base Dependencies +------------------ +Leap client depends on these libraries: + +* `python 2.6 or 2.7` +* `qt4` libraries (see also :ref:`Troubleshooting PyQt install ` about how to install inside your virtualenv) +* `libgnutls` +* `openvpn` + +.. _virtualenv: + +Working with virtualenv +----------------------- + +Intro to virtualenv +^^^^^^^^^^^^^^^^^^^ +Virtualenv blah blah + +Install python dependencies +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can install python dependencies with pip:: + + $ apt-get install python-pip python-dev libgnutls-dev + $ pip install -r pkg/requirements.pip + +.. _pyqtvirtualenv: + +Troubleshooting PyQt install inside a virtualenv +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you attempt to install PyQt inside a virtualenv using pip, it will fail because PyQt4 does not use the standard setup.py mechanism. + +As a workaround, you can run the following script after creating your virtualenv. It will symlink to your global PyQt installation (`this is the recommended way if you are running a debian-based system`):: + + $ pkg/postmkvenv.sh + +A second option if that does not work for you would be to install PyQt globally and pass the `--site-packages` option when you are creating your virtualenv:: + + $ apt-get install python-qt4 + $ virtualenv --site-packages . + +Or, if you prefer, you can also download the official PyQt tarball and execute `configure.py` in the root folder of their distribution, which generates a `Makefile`:: + + $ python configure.py + $ make && make install + + +Cloning the repo +---------------- + +`XXX` diff --git a/docs/dev/internals.rst b/docs/dev/internals.rst new file mode 100644 index 00000000..8bb19211 --- /dev/null +++ b/docs/dev/internals.rst @@ -0,0 +1,12 @@ +.. _internals: + +Internals +========= + +This section covers briefly the internal organization of the LEAP Client source tree. + +.. note:: + + very unfinished. + +`TBD` diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst new file mode 100644 index 00000000..4e75739b --- /dev/null +++ b/docs/dev/internationalization.rst @@ -0,0 +1,27 @@ +.. _i18n: + +Internationalization +==================== + +This part of the documentation covers the localization and translation of LEAP Client. +Because we want to *bring fire to the people*, in as many countries and languages as possible. + +.. note:: + We should probably move the translators info to a top level section of the docs, and leave this + as internal/tech-savvy notes. + +Translate the Qt App +-------------------- + +.. note:: + ... unfinished + +`transifex `_ + +Translate the Documentation +--------------------------- + +.. note:: + ...unfinished + +`translating sphinx docs `_ diff --git a/docs/dev/resources.rst b/docs/dev/resources.rst new file mode 100644 index 00000000..7cfa2b70 --- /dev/null +++ b/docs/dev/resources.rst @@ -0,0 +1,14 @@ +.. _resources: + +PyQt Resource files +=================== + +Compiling resource/ui files +--------------------------- + +You should refresh resource/ui files every time you change an image or a resource/ui (.ui / .qc). From the root folder:: + + % make ui + % make resources + +As there are some tests to guard against unwanted resource updates, you will have to update the resource hash in those failing tests. diff --git a/docs/dev/tests.rst b/docs/dev/tests.rst new file mode 100644 index 00000000..7f5fbaaf --- /dev/null +++ b/docs/dev/tests.rst @@ -0,0 +1,62 @@ +.. _tests: + +Running and writing tests +========================= + +.. note:: + should include seeAlso to virtualenv + +This section covers the documentation about the tests for the LEAP Client code. +All patches should have tests for them ... + + +Testing dependencies +-------------------- + +have a look at ``pkg/test-requirements.pip`` +The ``./run_tests.sh`` command should install all of them in your virtualenv for you. + +If you prefer to install them system wide, this should do in a debian system:: + + $ apt-get install python-nose python-mock python-coverage + + +Running tests +------------- + +There is a convenience script at ``./run_tests.sh`` + +If you want to run specific tests, pass the (sub)module to nose:: + + $ nosetests leap.util + +or:: + + $ nosetests leap.util.tests.test_leap_argparse + +Hint: colorized output +^^^^^^^^^^^^^^^^^^^^^^ + +Install ``rednose`` locally, export the ``NOSE_REDNOSE`` variable, and give your eyes a rest :):: + + (leap_client)% pip install rednose + (leap_client)% export NOSE_REDNOSE=1 + +Testing all the supported python versions +----------------------------------------- + +For running testsuite against all the supported python versions (currently 2.6 and 2.7), run:: + + % tox -v + +Coverage reports +---------------- + +Pass the ``-c`` flat to the ``run_tests.sh`` script:: + + $ run_tests.sh -c + +Using ``coverage`` it will generate beautiful html reports that you can access pointing your browser to ``docs/covhtml/index.html`` + +.. note:: + The coverage reports will not be generated if all tests are not passing. diff --git a/docs/dev/todo.rst b/docs/dev/todo.rst new file mode 100644 index 00000000..e69de29b diff --git a/docs/dev/workflow.rst b/docs/dev/workflow.rst new file mode 100644 index 00000000..3f773712 --- /dev/null +++ b/docs/dev/workflow.rst @@ -0,0 +1,8 @@ +.. _workflow: + +Development Workflow +==================== + +This section documents the workflow that the LEAP project team follows and expects for the code contributions. + +XXX -- cgit v1.2.3 From 41a084823ebc967fcabb613a97e8d72c662dbe18 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 19 Dec 2012 09:38:42 +0900 Subject: added transifex config, updated some docs --- docs/dev/environment.rst | 66 ++++++++++++++++++++++++++++++++++----- docs/dev/internationalization.rst | 45 +++++++++++++++++++++++--- 2 files changed, 98 insertions(+), 13 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 7eafcdea..55696537 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -5,6 +5,16 @@ Setting up a Work Environment This document covers how to get an enviroment ready to contribute code to the LEAP Client. +Cloning the repo +---------------- +.. note:: + Stable releases will be in *master* branch (nothing there yet, move on!). + Development code lives in *develop* branch. + +:: + + git clone git://leap.se/leap_client + Base Dependencies ------------------ Leap client depends on these libraries: @@ -14,21 +24,43 @@ Leap client depends on these libraries: * `libgnutls` * `openvpn` +In debian-based systems:: + + $ apt-get install openvpn python-qt4 python-crypto python-gnutls + +To install the software from sources:: + + $ apt-get install python-pip python-dev libgnutls-dev + .. _virtualenv: Working with virtualenv ----------------------- -Intro to virtualenv +Intro ^^^^^^^^^^^^^^^^^^^ -Virtualenv blah blah + +*Virtualenv* is the *Virtual Python Environment builder*. + +It is a tool to create isolated Python environments. + +The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded. + +Read more about it in the `project documentation page `_. + + +Create and activate your dev environment +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +:: + + $ virtualenv + $ source /bin/activate Install python dependencies ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -You can install python dependencies with pip:: +You can install python dependencies with pip. If you do it inside your working environment, they will be installed avoiding the need for administrative permissions:: - $ apt-get install python-pip python-dev libgnutls-dev $ pip install -r pkg/requirements.pip .. _pyqtvirtualenv: @@ -38,7 +70,7 @@ Troubleshooting PyQt install inside a virtualenv If you attempt to install PyQt inside a virtualenv using pip, it will fail because PyQt4 does not use the standard setup.py mechanism. -As a workaround, you can run the following script after creating your virtualenv. It will symlink to your global PyQt installation (`this is the recommended way if you are running a debian-based system`):: +As a workaround, you can run the following script after creating your virtualenv. It will symlink to your global PyQt installation (*this is the recommended way if you are running a debian-based system*):: $ pkg/postmkvenv.sh @@ -52,8 +84,26 @@ Or, if you prefer, you can also download the official PyQt tarball and execute ` $ python configure.py $ make && make install +.. note:: + this section could be completed with useful options that can be passed to the virtualenv command (e.g., to make portable paths, site-packages, ...). -Cloning the repo ----------------- -`XXX` + +.. _policykit: + +Running openvpn without root privileges +--------------------------------------- + +In linux, we are using ``policykit`` to be able to run openvpn without run privileges, and a policy file is needed to be installed for that to be possible. +The setup script tries to install the policy file when installing the client system-wide, so if you have installed the client in your global site-packages at least once it should have copied this file for you. + +If you *only* are running the client from inside a virtualenv, you will need to copy this file by hand:: + + $ sudo cp pkg/linux/polkit/net.openvpn.gui.leap.policy /usr/share/polkit-1/actions/net.openvpn.gui.leap.policy + +Missing Authentication agent +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you are running a desktop other than gnome or unity, you might get an error saying that you are not running the authentication agent. You can launch it like this:: + + /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 & diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index 4e75739b..6cbc6f72 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -10,16 +10,51 @@ Because we want to *bring fire to the people*, in as many countries and language We should probably move the translators info to a top level section of the docs, and leave this as internal/tech-savvy notes. -Translate the Qt App --------------------- +Translating the LEAP Client PyQt Application +-------------------------------------------- +.. raw:: html + + + + +For translators +^^^^^^^^^^^^^^^ .. note:: ... unfinished -`transifex `_ +We are using `transifex `_ site to coordinate translation efforts. If you want to contribute, just sign up there and ... + +.. note:: + ... and what?? + +For devs: i18n conventions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + should link to PyQt docs on i18n + also our special cases (labels and exceptions) + +tl;dr;:: + + self.tr('your string') + +for any string that you want to be translated. + +For i18n maintainers +^^^^^^^^^^^^^^^^^^^^ + +.. note:: + + how do we use the transifex client; automation. + +If you do not already have it, install the ``transifex-client`` from the cheese shop:: + + pip install transifex-client + -Translate the Documentation ---------------------------- +Translating the Documentation +------------------------------ .. note:: ...unfinished -- cgit v1.2.3 From 0bb7a486ae2aaf8171afcbe6a9846cbd5a99e0a5 Mon Sep 17 00:00:00 2001 From: kali Date: Wed, 19 Dec 2012 23:55:03 +0900 Subject: fix links to online docs --- docs/dev/environment.rst | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 55696537..8561396e 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -1,7 +1,7 @@ .. _environment: -Setting up a Work Environment -============================== +Setting up a development environment +==================================== This document covers how to get an enviroment ready to contribute code to the LEAP Client. @@ -24,6 +24,8 @@ Leap client depends on these libraries: * `libgnutls` * `openvpn` +Debian +^^^^^^ In debian-based systems:: $ apt-get install openvpn python-qt4 python-crypto python-gnutls @@ -79,7 +81,8 @@ A second option if that does not work for you would be to install PyQt globally $ apt-get install python-qt4 $ virtualenv --site-packages . -Or, if you prefer, you can also download the official PyQt tarball and execute `configure.py` in the root folder of their distribution, which generates a `Makefile`:: +.. TODO add link to PyQt tar.gz +Or, if you prefer, you can also download the official PyQt tarball and execute `configure.py` in the root folder of their distribution, which generates a ``Makefile``:: $ python configure.py $ make && make install @@ -99,7 +102,7 @@ The setup script tries to install the policy file when installing the client sys If you *only* are running the client from inside a virtualenv, you will need to copy this file by hand:: - $ sudo cp pkg/linux/polkit/net.openvpn.gui.leap.policy /usr/share/polkit-1/actions/net.openvpn.gui.leap.policy + $ sudo cp pkg/linux/polkit/net.openvpn.gui.leap.policy /usr/share/polkit-1/actions/ Missing Authentication agent ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- cgit v1.2.3 From 6a8b5c24571251cb39e8d83333b0450e8324dcbe Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 20 Dec 2012 01:30:18 +0900 Subject: add links to pyqt and openvpn --- docs/dev/environment.rst | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 8561396e..55f00d5e 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -22,7 +22,7 @@ Leap client depends on these libraries: * `python 2.6 or 2.7` * `qt4` libraries (see also :ref:`Troubleshooting PyQt install ` about how to install inside your virtualenv) * `libgnutls` -* `openvpn` +* `openvpn`_ Debian ^^^^^^ @@ -76,13 +76,12 @@ As a workaround, you can run the following script after creating your virtualenv $ pkg/postmkvenv.sh -A second option if that does not work for you would be to install PyQt globally and pass the `--site-packages` option when you are creating your virtualenv:: +A second option if that does not work for you would be to install PyQt globally and pass the ``--site-packages`` option when you are creating your virtualenv:: $ apt-get install python-qt4 $ virtualenv --site-packages . -.. TODO add link to PyQt tar.gz -Or, if you prefer, you can also download the official PyQt tarball and execute `configure.py` in the root folder of their distribution, which generates a ``Makefile``:: +Or, if you prefer, you can also `download the official PyQt tarball`_ and execute ``configure.py`` in the root folder of their distribution, which generates a ``Makefile``:: $ python configure.py $ make && make install -- cgit v1.2.3 From 06bccc52c84a93407ab4699a2749b24f55fe3061 Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 20 Dec 2012 08:19:55 +0900 Subject: working transifex workflow Closes #666 --- docs/dev/internationalization.rst | 68 ++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 11 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index 6cbc6f72..e6b89dea 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -6,24 +6,22 @@ Internationalization This part of the documentation covers the localization and translation of LEAP Client. Because we want to *bring fire to the people*, in as many countries and languages as possible. -.. note:: - We should probably move the translators info to a top level section of the docs, and leave this - as internal/tech-savvy notes. - Translating the LEAP Client PyQt Application -------------------------------------------- .. raw:: html - + For translators ^^^^^^^^^^^^^^^ .. note:: - ... unfinished + We should probably move the translators info to a top level section of the docs, and leave this + as internal notes. -We are using `transifex `_ site to coordinate translation efforts. If you want to contribute, just sign up there and ... + +We are using `transifex `_ to coordinate translation efforts. If you want to contribute, just sign up there and ... .. note:: ... and what?? @@ -32,8 +30,9 @@ For devs: i18n conventions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: - should link to PyQt docs on i18n - also our special cases (labels and exceptions) + should say something about our special cases (provider labels and exceptions) when we get decision about it. + +Refer to `pyqt documentation `_. tl;dr;:: @@ -41,17 +40,64 @@ tl;dr;:: for any string that you want to be translated. +.. Note about this: there seems to be some problems with the .tr method + on QObjects. Investigate this. + I still believe we can use a generic _ method which is smart enough to + fallback to QObject.tr methods or lookup our own tr implementation (for our + multilungual objects, like in exceptions or provider labels that came from json objects). + --kali + For i18n maintainers ^^^^^^^^^^^^^^^^^^^^ -.. note:: +You need ``pylupdate4`` for these steps. To get it, in debian:: - how do we use the transifex client; automation. + $ apt-get install python-qt4-utils If you do not already have it, install the ``transifex-client`` from the cheese shop:: pip install transifex-client +You can learn more about the transifex-client `here `_. + +**1.** Add any new source files to the project file, ``data/leap_client.pro``. *We should automate this with some templating, it's tedious.* + +**2.** Update the source .ts file ``data/ts/en_US.ts``.:: + + $ make translations + +**3.** Push source .ts file to transifex:: + + $ tx push -s + +**4.** Let the translation fairies do their work... + +**5.** *Et voila!* Get updated .ts files for each language from ``Transifex``. For instance, to pull updated spanish translations:: + + $ tx pull -l es + Pulling new translations for resource leap-client.leap-client (source: data/ts/en_US.ts) + -> es: data/translations/es.ts + Done. + + +Note that there is a configuration option in ``.tx/config`` for setting the minimum completion percentage needed to be able to actually pull a resource. + +**6.** Generate .qm files from the updated .ts files:: + + $ make translations + +and yes, it's the same command than in step 2. One less thing to remember :) + +**7.** Check that the .qm for the language you're working with is listed in ``data/resources/locale.qrc`` file. That should take the translated files from ``data/translations`` + +**8.** Re-generate ``src/leap/gui/locale_qrc``. This is the embedded resource file that we load in the main app entry point; and from where we load the data for the qt translator object:: + + $ make resources + +If you want to try it, just set your LANG environment variable:: + + $ LANG=es_ES leap-client + Translating the Documentation ------------------------------ -- cgit v1.2.3 From 654b83db5f050a94f9637fb1ce80df5cb7ed5a38 Mon Sep 17 00:00:00 2001 From: kali Date: Fri, 21 Dec 2012 07:44:59 +0900 Subject: updated "translate" to work in objects other than QObjects --- docs/dev/internationalization.rst | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index e6b89dea..1a9af0be 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -38,21 +38,30 @@ tl;dr;:: self.tr('your string') -for any string that you want to be translated. +for any string that you want to be translated, as long as the instance derives from ``QObject``. + +If you have to translate something that it is not a ``QObject``, use the magic leap ``translate`` method: + + +.. code-block:: python + + from leap.util.translations import translate + + class Foo(object): + bar = translate(, , ) + .. Note about this: there seems to be some problems with the .tr method - on QObjects. Investigate this. - I still believe we can use a generic _ method which is smart enough to - fallback to QObject.tr methods or lookup our own tr implementation (for our - multilungual objects, like in exceptions or provider labels that came from json objects). + so the translate method could actually be the preferred thing in all the cases. + Still missing what to do for language labels (json-based). --kali For i18n maintainers ^^^^^^^^^^^^^^^^^^^^ -You need ``pylupdate4`` for these steps. To get it, in debian:: +You need ``pylupdate4`` and ``lrelease`` for these steps. To get it, in debian:: - $ apt-get install python-qt4-utils + $ apt-get install pyqt4-dev-tools qt4-linguist-tools If you do not already have it, install the ``transifex-client`` from the cheese shop:: -- cgit v1.2.3 From c962db2a85efe265a6be34df8ab127acc220382d Mon Sep 17 00:00:00 2001 From: kali Date: Thu, 3 Jan 2013 11:38:50 +0900 Subject: typo --- docs/dev/environment.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 55f00d5e..9f70cb04 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -96,7 +96,7 @@ Or, if you prefer, you can also `download the official PyQt tarball Date: Wed, 23 Jan 2013 07:02:58 +0900 Subject: working up/down resolv-conf script --- docs/dev/environment.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 9f70cb04..3c2b0291 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -90,6 +90,15 @@ Or, if you prefer, you can also `download the official PyQt tarball Date: Thu, 24 Jan 2013 03:29:21 +0900 Subject: update docs about system files --- docs/dev/environment.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 3c2b0291..33310b91 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -81,7 +81,7 @@ A second option if that does not work for you would be to install PyQt globally $ apt-get install python-qt4 $ virtualenv --site-packages . -Or, if you prefer, you can also `download the official PyQt tarball`_ and execute ``configure.py`` in the root folder of their distribution, which generates a ``Makefile``:: +Or, if you prefer, you can also `download the official PyQt tarball `_ and execute ``configure.py`` in the root folder of their distribution, which generates a ``Makefile``:: $ python configure.py $ make && make install @@ -90,7 +90,7 @@ Or, if you prefer, you can also `download the official PyQt tarball Date: Thu, 24 Jan 2013 07:56:52 +0900 Subject: update docs --- docs/dev/environment.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'docs/dev') diff --git a/docs/dev/environment.rst b/docs/dev/environment.rst index 33310b91..c3868b81 100644 --- a/docs/dev/environment.rst +++ b/docs/dev/environment.rst @@ -21,18 +21,18 @@ Leap client depends on these libraries: * `python 2.6 or 2.7` * `qt4` libraries (see also :ref:`Troubleshooting PyQt install ` about how to install inside your virtualenv) -* `libgnutls` -* `openvpn`_ +* `openssl` +* `openvpn `_ Debian ^^^^^^ In debian-based systems:: - $ apt-get install openvpn python-qt4 python-crypto python-gnutls + $ apt-get install openvpn python-qt4 python-crypto python-openssl To install the software from sources:: - $ apt-get install python-pip python-dev libgnutls-dev + $ apt-get install python-pip python-dev .. _virtualenv: -- cgit v1.2.3 From 51a99d6405bff732a37ad561b75cacfc13f2173d Mon Sep 17 00:00:00 2001 From: kali Date: Fri, 25 Jan 2013 18:13:55 +0900 Subject: updated docs about dev workflow --- docs/dev/workflow.rst | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'docs/dev') diff --git a/docs/dev/workflow.rst b/docs/dev/workflow.rst index 3f773712..5ceccca4 100644 --- a/docs/dev/workflow.rst +++ b/docs/dev/workflow.rst @@ -5,4 +5,37 @@ Development Workflow This section documents the workflow that the LEAP project team follows and expects for the code contributions. -XXX +Code formatting +--------------- +In one word: `PEP8`_. + +`autopep8` might be your friend. or eat your code. + +.. _`PEP8`: http://www.python.org/dev/peps/pep-0008/ +.. _`autopep8`: http://pypi.python.org/pypi/autopep8 + +Dependencies +------------ +If you introduce a new dependency, please add it under ``pkg/requirements`` or ``pkg/test-requirements`` as appropiate, under the proper module section. + +Git flow +-------- +See `A successful git branching model `_ for more information. The slight modification we make is that release tags are made in the release branch before getting merged to master, rather than getting tagged in master. + +.. image:: https://leap.se/code/attachments/13/git-branching-model.png + +The author of the aforementioned post has also a handy pdf version of it: `branching_model.pdf`_ + +A couple of tools that help to follow this process are `git-flow`_ and `git-sweep`_. + +.. _`branching_model.pdf`: https://leap.se/code/attachments/14/Git-branching-model.pdf +.. _`git-flow`: https://github.com/nvie/gitflow +.. _`git-sweep`: http://pypi.python.org/pypi/git-sweep + +Merge into integration branch +----------------------------- +All code ready to be merged into the integration branch is expected to: + +* Have tests +* Be documented +* Pass existing tests: do **run_tests.sh** and **tox -v**. All feature branches are automagically built by our `buildbot farm `_. So please check your branch is green before merging it it to `develop`. Rebasing against the current tip of the integration when possible is preferred in order to keep a clean history. -- cgit v1.2.3