Development Environment
Note
For Ubuntu 20.04 LTS
Packages
Install the following:
sudo locale-gen en_GB.utf8
sudo update-locale en_GB.utf8
Development tools (install vim or an editor of your choosing):
sudo apt install build-essential curl mercurial git vim wget
Note
Do we need to install wget?
Configure git with your email and name:
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
Tip
To remove the a/ and b/ prefixes from the diff output:
git config --global diff.noprefix true
(for more information, see diff.noprefix)
If you wish to use the scripts from dev-scripts install gawk:
sudo apt install gawk
Tip
If installing on versions earlier than 14.04 use apt-get.
python development:
sudo apt install python3-dev
# pillow
# for ubuntu 14.04
sudo apt install libtiff4-dev
# for ubuntu 15.10 and later including 16.04
sudo apt install libtiff5-dev
sudo apt install libjpeg-dev zlib1g-dev libfreetype6-dev
sudo apt install liblcms2-dev libwebp-dev tcl8.5-dev tk8.5-dev python-tk
# for readline
sudo apt install libncurses5-dev
# if you have issues with setuptools e.g. Requirement.parse('setuptools>=0.8'))
wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
Postgres:
sudo apt install postgresql libpq-dev
MySQL (if you plan to develop using MySQL):
sudo apt install mysql-server mysql-client default-libmysqlclient-dev
ODBC (if you plan to develop using odbc):
sudo apt install unixodbc-dev
Tip
The error message will be
ImportError: libodbc.so.2: cannot open shared object file: No such file or directory
Redis:
sudo apt install redis-server
python
apt install python3.9-venv
To create a virtualenv:
python3 -m venv venv-for-app
source venv-for-app/bin/activate.fish
bash and fish
Please use direnv
Database
Postgresql
Important
For ubuntu 14.10, replace 9.3 with 9.4.
For 16.04, replace 9.3 with 9.5.
For 18.04, replace 10.x with the correct version.
Replace /etc/postgresql/9.x/main/pg_hba.conf
with misc/9.x/pg_hba.conf:
Replace /etc/postgresql/10.x/main/pg_hba.conf
with misc/10.x/pg_hba.conf:
sudo chown postgres:postgres /etc/postgresql/9.x/main/pg_hba.conf
sudo chmod 640 /etc/postgresql/9.x/main/pg_hba.conf
Replace /etc/postgresql/9.3/main/postgresql.conf with
misc/9.3/postgresql.conf for 9.3
and
misc/9.4/postgresql.conf for 9.4::
and
misc/9.5/postgresql.conf for 9.5::
and
misc/9.6/postgresql.conf for 9.6::
and
misc/10.x/postgresql.conf for 10.x:
sudo chown postgres:postgres /etc/postgresql/9.x/main/postgresql.conf
sudo chmod 644 /etc/postgresql/9.x/main/postgresql.conf
Re-start Postgres:
sudo service postgresql restart
Create a role for your user name
(replace patrick with your linux user name):
psql -X -U postgres -c "CREATE ROLE patrick WITH NOSUPERUSER CREATEDB NOCREATEROLE LOGIN;"
# if you get 'ERROR: must be owner of extension plpgsql', then this will solve it
psql -X -U postgres -c "ALTER ROLE patrick SUPERUSER;"
python
pip
Note
Refer to your company Checklist and replace
devpi.yourbiz.co.uk with the name of your devpi server.
Do the same for the username and password.
Note
(to myself) Check out the --set-cfg parameter in
http://doc.devpi.net/latest/userman/devpi_commands.html
It might do the following automatically.
Warning
According to the latest pip documentation
(https://pip.pypa.io/en/latest/user_guide.html#configuration), there
is a config file at ~/.config/pip/pip.conf. (~/.pip/pip.conf
is now a legacy per-user configuration file).
Add the following to the ~/.config/pip/pip.conf file:
[install]
index-url = https://devpi.yourbiz.co.uk/kb/dev/+simple/
trusted-host = devpi.yourbiz.co.uk
[global]
require-virtualenv = True
Tip
trusted-host is copied from my current file.
Tip
require-virtualenv requires a virtual environment when using
pip.
Add the following to the ~/.pydistutils.cfg file:
[easy_install]
index_url = https://devpi.yourbiz.co.uk/kb/dev/+simple/
.pypirc
Tip
You won’t be able to pyproject and uv - Release and Deploy unless you do this!
Add the following to the ~/.pypirc file:
[distutils]
index-servers =
dev
[dev]
repository: https://devpi.yourbiz.co.uk/kb/dev/
username: bz
password: 789
Tip
To check the configuration of your package index, you can browse to https://pypi.yourbiz.co.uk/kb/dev/+simple/kb-base/
Tools
These are tools that I like (they are not required to build these projects):
And legacy notes on some old tools:
GIT
We use Forgejo, https://forgejo.org/, for our internal repositories.
To remove the port number from clone URIs, add the following to ~/.ssh/config:
Host forgejo.kbsoftware.co.uk
HostName forgejo.kbsoftware.co.uk
Port 222
User git
IdentityFile ~/.ssh/id_ed25519
Microsoft
To install the Microsoft core fonts (useful for sharing documents):
sudo apt install msttcorefonts
Tip
You’ll need to accept the Microsoft EULA.
Source Code
Check out your source code into this folder structure:
├── dev
│ ├── app
│ │ ├── base
│ │ ├── block
│ │ ├── booking
│ │ ├── cms
│ │ ├── crm
│ │ ├── enquiry
│ │ ├── invoice
│ │ ├── login
│ │ ├── mail
│ │ ├── pay
│ │ ├── search
│ │ └── stock
│ ├── module
│ │ ├── deploy
│ │ │ ├── pillar
│ │ │ ├── post-deploy
│ │ │ └── ssl-cert
│ │ ├── docs
│ │ ├── fabric
│ │ └── salt
│ └── project
│ ├── hatherleigh_info
│ └── pkimber_net
app
The source code for the reusable apps go into the app folder. The github
URL and documentation for our open source apps are here:
deploy
pillar, Pillar
ssl-cert, Create SSL Certificate
docs
(This documentation), https://github.com/pkimber/docs
fabric
project
Put the source code for your customer into the project folder e.g:
https://github.com/pkimber/pkimber_net
Follow the instructions in the README.rst file in the app or project
folder.