[pygobject] Add detailed development environment setup instructions



commit 44244816844ef819dbd6ce6ac66eb6260a23aac9
Author: Dan Yeaw <dan yeaw me>
Date:   Tue Mar 6 22:37:53 2018 -0500

    Add detailed development environment setup instructions
    
    Signed-off-by: Dan Yeaw <dan yeaw me>

 docs/devguide/dev_environ.rst | 202 ++++++++++++++++++++++++++++++++++++++----
 docs/getting_started.rst      |  80 ++++++++---------
 2 files changed, 220 insertions(+), 62 deletions(-)
---
diff --git a/docs/devguide/dev_environ.rst b/docs/devguide/dev_environ.rst
index 081cd775..89d8693e 100644
--- a/docs/devguide/dev_environ.rst
+++ b/docs/devguide/dev_environ.rst
@@ -1,48 +1,216 @@
 .. include:: ../icons.rst
 
+.. _devenv:
+
 ==================================
 Creating a Development Environment
 ==================================
 
-This describes how to work on PyGObject itself. Please follow the instructions
-on ":ref:`gettingstarted`" first, as they are a pre-requirement.
+This describes how to setup a development environment for working on a project
+that uses PyGObject, or for working on PyGObject itself. Please follow the
+instructions on ":ref:`gettingstarted`" first, as they are a pre-requirement.
+
+.. _pipenv:
+
+************
+Pipenv Setup
+************
 
+.. _ubuntu:
 
 |ubuntu-logo| Ubuntu / |debian-logo| Debian
 -------------------------------------------
 
 .. code:: console
 
-    sudo apt build-dep pygobject
-    sudo apt install autoconf-archive python3-pytest python3-flake8
-    git clone https://gitlab.gnome.org/GNOME/pygobject.git
-    cd pygobject
-    ./autogen.sh
-    make
-    make check
+    sudo apt-get install -y python3-venv python3-wheel
+    sudo apt-get install -y libgirepository1.0-dev build-essential \
+      libbz2-dev libreadline-dev libssl-dev zlib1g-dev libsqlite3-dev wget \
+      curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
+    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
+    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
+    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
+    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
+    ~/.pyenv/bin/pyenv install 3.6.4
+    curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - 
--src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
+    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
+    ~/.local/bin/pipsi install pew
+    ~/.local/bin/pipsi install pipenv
+
+
+.. _fedora:
 
+|fedora-logo| Fedora
+--------------------
+
+.. code:: console
+
+
+    sudo dnf install -y python3-venv python3-wheel
+    sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \
+      sqlite sqlite-devel openssl-devel tk-devel git python3-cairo-devel \
+      cairo-gobject-devel gobject-introspection-devel
+    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
+    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
+    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
+    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
+    ~/.pyenv/bin/pyenv install 3.6.4
+    curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - 
--src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
+    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
+    ~/.local/bin/pipsi install pew
+    ~/.local/bin/pipsi install pipenv
+
+
+.. _arch:
+
+|arch-logo| Arch Linux
+----------------------
+
+.. code:: console
+
+    sudo pacman -S --noconfirm python-virtualenv python-wheel
+    sudo pacman -S --noconfirm base-devel openssl zlib git gobject-introspection
+    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
+    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
+    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
+    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
+    ~/.pyenv/bin/pyenv install 3.6.4
+    curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - 
--src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
+    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
+    ~/.local/bin/pipsi install pew
+    ~/.local/bin/pipsi install pipenv
+
+
+.. _opensuse:
+
+|opensuse-logo| openSUSE
+------------------------
+
+.. code:: console
+
+    sudo zypper install -y python3-venv python3-wheel gobject-introspection \
+      python3-cairo-devel openssl zlib git
+    sudo zypper install --type pattern devel_basis
+    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
+    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
+    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
+    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
+    ~/.pyenv/bin/pyenv install 3.6.4
+    curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - 
--src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
+    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
+    ~/.local/bin/pipsi install pew
+    ~/.local/bin/pipsi install pipenv
+
+.. _windows:
 
 |windows-logo| Windows
 ----------------------
 
+TODO: currently no way to install pyenv in Windows
+
 .. code:: console
 
     pacman -S --needed --noconfirm base-devel mingw-w64-i686-toolchain git \
-        mingw-w64-i686-python3 mingw-w64-i686-python3-cairo \
-        mingw-w64-i686-gobject-introspection mingw-w64-i686-gtk3 \
-        mingw-w64-i686-libffi autoconf-archive mingw-w64-i686-python3-pytest \
-        mingw-w64-i686-python3-pip
-    pip3 install --user flake8
+       mingw-w64-i686-python3 mingw-w64-i686-python3-cairo \
+       mingw-w64-i686-gobject-introspection mingw-w64-i686-libffi
+    virtualenv --python 3 myvenv
+    source myvenv/bin/activate
+
+
+|macosx-logo| macOS
+-------------------
+
+.. code:: console
+
+    brew install pyenv
+    pyenv install 3.6.4
+    curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python3 - 
--src=git+https://github.com/mitsuhiko/pipsi.git\#egg=pipsi
+    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.profile
+    ~/.local/bin/pipsi install pew
+    ~/.local/bin/pipsi install pipenv
+
+
+.. _otherprojects:
+
+************************************
+Projects with PyGObject Dependencies
+************************************
+
+If you are going to work on a project that has PyGObject as a dependency, then
+do the following additional steps:
+
+.. code:: console
+
+    git clone <url/projectname.git>
+    cd projectname
+    pipenv --python 3
+    pipenv install pycairo
+    pipenv install pygobject
+    pipenv shell
+
+
+.. _pygobjectwork:
+
+*****************
+Work on PyGObject
+*****************
+
+If you are going to work on developing PyGObject itself, then do the following
+additional steps:
+
+.. code:: console
+
     git clone https://gitlab.gnome.org/GNOME/pygobject.git
     cd pygobject
+    pipenv --python 3
+    pipenv install pytest
+    pipenv install flake8
+    pipenv shell
+
+
+.. _ubuntu:
+
+|ubuntu-logo| Ubuntu / |debian-logo| Debian
+-------------------------------------------
+
+.. code:: console
+
+    sudo apt build-dep pygobject
+    sudo apt install autoconf-archive
     ./autogen.sh
     make
     make check
 
 
-|macosx-logo| macOS
--------------------
+.. _fedora:
+
+|fedora-logo| Fedora
+--------------------
+
+    sudo dnf builddep pygobject
+    ./autogen.sh
+    make
+    make check
+
+
+ .. _arch:
+
+|arch-logo| Arch Linux
+----------------------
 
 .. code:: console
 
-    # TODO
+    makepkg -s pygobject
+    ./autogen.sh
+    make
+    make check
+
+
+.. _windows:
+
+|windows-logo| Windows
+----------------------
+    pacman -S --needed --noconfirm autoconf-archive
+    ./autogen.sh
+    make
+    make check
\ No newline at end of file
diff --git a/docs/getting_started.rst b/docs/getting_started.rst
index 030af55e..fe2a6a44 100644
--- a/docs/getting_started.rst
+++ b/docs/getting_started.rst
@@ -22,15 +22,8 @@ the following content and save it somewhere:
     window.connect("destroy", Gtk.main_quit)
     Gtk.main()
 
-
-.. _pypi:
-
-|python-logo| From PyPI
------------------------
-Before we can run the example application we need to install PyGObject, GTK+ and
-their dependencies. Although not strictly required, the recommend way to run
-PyGObject is from within a virtual environment and using pip. Follow the
-instructions for your platform below.
+Before we can run the example application we need to install PyGObject, GTK+
+and their dependencies. Follow the instructions for your platform below.
 
 ======================================= ==================================== 
==================================== ==========================================
 |ubuntu-logo| :ref:`Ubuntu <ubuntu>`    |fedora-logo| :ref:`Fedora <fedora>` |arch-logo| :ref:`Arch Linux 
<arch>` |opensuse-logo| :ref:`openSUSE <opensuse>`
@@ -46,7 +39,7 @@ instructions for your platform below.
 1) Go to http://www.msys2.org/ and download the x86_64 installer
 2) Follow the instructions on the page for setting up the basic environment
 3) Run ``C:\msys64\mingw32.exe`` - a terminal window should pop up
-4) Execute ``pacman -S mingw-w64-i686-gtk3 mingw-w64-i686-python2-gobject mingw-w64-i686-python3-gobject 
mingw-w64-i686-gobject-introspection``
+4) Execute ``pacman -S mingw-w64-i686-gtk3 mingw-w64-i686-python2-gobject mingw-w64-i686-python3-gobject``
 5) To test that GTK+3 is working you can run ``gtk3-demo``
 6) Copy the ``hello.py`` script you created to ``C:\msys64\home\<username>``
 7) In the mingw32 terminal execute ``python3 hello.py`` - a window should appear.
@@ -61,13 +54,9 @@ instructions for your platform below.
 -------------------------------------------
 
 1) Open a terminal
-2) Execute ``sudo apt install python-gi python-gi-cairo python3-gi python3-gi-cairo gir1.2-gtk-3.0 
libgirepository1.0-dev``
-3) Execute ``virtualenv --python=python3 myvenv``
-4) Execute ``source myvenv/bin/activate``
-5) Execute ``pip install pycairo``
-6) Execute ``pip install pygobject``
-7) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
-8) Run ``python3 hello.py``
+2) Execute ``sudo apt install python-gi python-gi-cairo python3-gi python3-gi-cairo gir1.2-gtk-3.0``
+3) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
+4) Run ``python3 hello.py``
 
 .. figure:: images/start_linux.png
     :scale: 60%
@@ -79,13 +68,9 @@ instructions for your platform below.
 --------------------
 
 1) Open a terminal
-2) Execute ``sudo dnf install pygobject3 python3-gobject gtk3 gobject-introspection-devel 
python3-cairo-devel cairo-gobject-devel``
-3) Execute ``virtualenv --python=python3 myvenv``
-4) Execute ``source myvenv/bin/activate``
-5) Execute ``pip install pycairo``
-6) Execute ``pip install pygobject``
-7) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
-8) Run ``python3 hello.py``
+2) Execute ``sudo dnf install pygobject3 python3-gobject gtk3``
+3) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
+4) Run ``python3 hello.py``
 
 
 .. _arch:
@@ -94,13 +79,9 @@ instructions for your platform below.
 ----------------------
 
 1) Open a terminal
-2) Execute ``sudo pacman -S python-gobject python2-gobject gtk3 gobject-introspection``
-3) Execute ``virtualenv --python=python3 myvenv``
-4) Execute ``source myvenv/bin/activate``
-5) Execute ``pip install pycairo``
-6) Execute ``pip install pygobject``
-7) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
-8) Run ``python3 hello.py``
+2) Execute ``sudo pacman -S python-gobject python2-gobject gtk3``
+3) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
+4) Run ``python3 hello.py``
 
 
 .. _opensuse:
@@ -109,13 +90,9 @@ instructions for your platform below.
 ------------------------
 
 1) Open a terminal
-2) Execute ``sudo zypper install python-gobject python3-gobject gtk3 gobject-introspection 
python3-cairo-devel cairo-gobject-devel``
-3) Execute ``virtualenv --python=python3 myvenv``
-4) Execute ``source myvenv/bin/activate``
-5) Execute ``pip install pycairo``
-6) Execute ``pip install pygobject``
-7) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
-8) Run ``python3 hello.py``
+2) Execute ``sudo zypper install python-gobject python3-gobject gtk3``
+3) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
+4) Run ``python3 hello.py``
 
 
 .. _macosx:
@@ -126,13 +103,26 @@ instructions for your platform below.
 1) Go to https://brew.sh/ and install homebrew
 2) Open a terminal
 3) Execute ``brew install pygobject3 --with-python3 gtk+3`` to install for both python2 and python3
-4) Execute ``brew install gobject-introspection``
-5) Execute ``virtualenv --python=python3 myvenv``
-6) Execute ``source myvenv/bin/activate``
-7) Execute ``pip install pycairo``
-8) Execute ``pip install pygobject``
-9) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
-10) Run ``python3 hello.py``
+4) Change the directory to where your ``hello.py`` script can be found (e.g. ``cd Desktop``)
+5) Run ``python3 hello.py``
 
 .. figure:: images/start_macos.png
     :scale: 70%
+
+
+.. _pypi:
+
+|python-logo| From PyPI
+-----------------------
+
+PyGObject is also available on PyPI: https://pypi.org/project/PyGObject
+
+For this approach you have to make sure that all runtime and build
+dependencies are present yourself as pip will only take care of pycairo.
+
+.. code::
+
+    virtualenv --python=python3 myvenv
+    source myvenv/bin/activate
+    pip install pygobject
+    python hello.py


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]