Native installation of Caliopen
Go developments for CaliOpen
As Caliopen use a mono repository structure and use many languages, the setup for a go development environment need some specific considerations.
A specific GOPATH is privilegied
We use govendor for external dependencies it's better to have a specific GOPATH to develop on Caliopen.
mkdir $HOME/caliopen
cd $HOME/caliopen
for i in bin pkg src/github.com/CaliOpen
do
mkdir -p caliopen/$i
done
cd src/github.com/CaliOpen
git clone https://github.com/CaliOpen/Caliopen
# DO NOT FORGET TO SETUP AS a distinct GOPATH
export GOPATH=$HOME/caliopen
NOTE: you will need to setup frequently this GOPATH, add an alias into your shell, for example for bash or zsh:
alias tocaliopen="export GOPATH=$HOME/caliopen; cd $GOPATH/src/github.com/CaliOpen"
Setup external dependencies
Using govendor external dependencies will be fetch into your Caliopen repository
cd $GOPATH/src/github.com/CaliOpen/Caliopen
go get -u github.com/kardianos/govendor
govendor sync -v
Directory $GOPATH/src/github.com/CaliOpen/Caliopen/src/backend/vendor
contain
all external golang dependencies for all CaliOpen services written in this
language.
Build
Refer to devtools/package.yaml file for services in go language and their build command
For example:
go build github.com/CaliOpen/Caliopen/src/backend/protocols/go.smtp/cmd/caliopen_lmtpd
Will produce a caliopen_lmtp binary from where this command is launched inside the $GOPATH
Python developments for CaliOpen
System packages
Debian/Ubuntu
apt-get install virtualenv libffi-dev gcc python-dev
Python virtualenv
You will need a python2 local virtualenv than can be setup using the devtools/setup-virtualenv.sh script.
Apiv1
To start the apiv1 service and develop on it, you can use the pyramid pserve command to start a local http server that will be restarted each time you update part of the code.
cd src/backend
pserve configs/apiv1.ini --reload
Message queue worker
This service process nats message for : - incoming SMTP message - incomling Twitter message - cryptographic public key actions - contact actions (create, update)
cd src/backend/interfaces/NATS/py.client/caliopen_nats
python listener.py -f ../../../../configs/caliopen.yaml.template