User Installation¶
This documents the installation process for setting up Tendril on a user’s machine, given that a Tendril Deployment already exists for the context in which the user will use it. If you don’t already have a Tendril Deployment for your organization, you should look at the Instance Deployment documentation first.
For the moment, tendril is not designed to be installed to the system (/usr, /opt, etc). Such installation scripts may be developed for later versions.
Setting up Tendril is essentially a matter of cloning/checking out the approriate git/svn repository and providing the software with a suitable environment which contains all the necessary dependencies. The instructions listed here are for Ubuntu, and should work as-is on most Debian based Linux distributions.
The use of pyenv
and virtualenv
for this is strongly recommended but not necessary. The use of these
tools should create a reasonably stable environment until any cross-version kinks are found and worked out.
Compatibility of the scripts has not been tested with any python version other than the Python 2.7.6
which comes with Ubuntu 14.04.1 LTS Trusty Tahr
. They will most certainly not work with Python 3.x
in their current form and may or may not work with older point realeases of Python 2.7
. While they
may work, it’s probably a good idea to avoid using Python versions < 2.7 with these scripts unit a full set
of unit tests can be prepared and run.
Basic Installation¶
Getting the Code¶
The code can be obtained from the version control system. For users, the specific instance of tendril
applicable to the organization should be checked out from the locally controlled repository. This repository
should be essentially read-only
with a specific set of people administering the installation.
Create an ssh key for yourself, if you don’t already have one.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Register the key (
~/.ssh/id_rsa.pub
) on gitlab.(Proxy) Setup ssh to use corkscrew for the git host, if necessary. Put the following into
~/.ssh/config
, create the file if necessary. Your proxy credentials go into~/.ssh/proxyauth
in the formatuser:pass
.Host gitlab.com Hostname gitlab.com User git IdentityFile ~/.ssh/id_rsa ProxyCommand corkscrew proxy.host port %h %p ~/.ssh/proxyauthGet the Organization’s fork of tendril core.
git clone git@gitlab.com:<org>/tendril.git(Optional) Clone the submodule. (Presently only
tendril-frontend-static
)cd tendril git submodule update --init
Get the Organization’s instance configuration.
git clone git@gitlab.com:<org>/tendril-instance-<org>.git ~/.tendril
Setting up pyenv¶
Note
pyenv
is needed to easily set up multiple python versions on
your computer. While not strictly necessary to run Tendril, this
is a very strongly recommended step. It allows the following :
- Make sure Tendril is run with the correct python version.
- Run tox tests for any developed code (not yet added).
Install Git:
sudo apt-get install git-core curl
(Proxy) Setup proxy, if any:
export http_proxy=http://user:pass@192.168.1.254:3128 export https_proxy=http://user:pass@192.168.1.254:3128 export ftp_proxy=http://user:pass@192.168.1.254:3128
(Proxy) Setup corkscrew to use git through a http proxy. Proxy should be configured for github.com in
~/.ssh/config
.Host github.com Hostname github.com User git IdentityFile ~/.ssh/id_rsa ProxyCommand corkscrew proxy.host port %h %p ~/.ssh/proxyauth
Run the
pyenv
installer:curl -L \ https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer \ | bash
Insert the following at the end of
~/.bashrc
:export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then export PATH="${PYENV_ROOT}/bin:${PATH}" eval "$(pyenv init -)" fi
Install Build Dependencies for Python 2.7:
sudo apt-get build-dep python2.7 sudo apt-get install build-essential wget \ libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev \ zlib1g-dev liblzma-dev
Install Python 2.7.6:
Hint
Python 2.7.x, where x>=6, should be fine. x<6 is untested. New features were introduced in 2.7.5, 2.7.6 that may be necessary for the scripts to run. If system python is 2.7.6 or better,
pyenv
isn’t strictly necessary. However, to standardize the environment in the absense of cross-version testing and intelligent installation scripts, the use of a version-specified python (as opposed tosystem
) is recommended.CONFIGURE_OPTS=--enable-shared pyenv install 2.7.6
Once you’ve installed
pyenv
, you can use the following commands instead to setup and use your virtualenv:pyenv virtualenv 2.7.6 tendril pyenv deactivate pyenv activate tendril
Setting up virtualenv¶
Note
You can skip this step if you’ve installed pyenv
. pyenv
includes within it the necessary virtualenv
setup and
management mechanisms.
Install
virtualenv
from the standard repository.sudo aptitude install python-virtualenv virtualenvwrapper
Create a directory for the virtual environments.
mkdir ~/.virtualenvs
Tell virtualenvwrapper where the folder you just created is. Put it into the bashrc so that you don’t have to do it every time you restart.
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
Start up a fresh shell.
Create a new
virtualenv
with the correct interpreter version. Don’t use system packages.mkvirtualenv tendril
mkvirtualenv
leaves you with the new virtualenv active. To deactivate,deactivate
To reactivate the virtualenv, which you should do when running the scripts in a new terminal:
workon tendril
Installing the Dependencies¶
Note
The recommended installation is using pyenv, or atleast virtualenv. You can,
however, install the dependencies directly to your system if you want to. This
installation can be done using pip without vitualenv active, or manually install
your linux distribution’s packages with it’s standard package manager. The
dependencies are listed in setup.py
and requirements.txt
.
Install required python libraries (virtualenv should be active):
cd /path/to/tendril/clone pip install -e .
Hint
You can install the package into the virtualenv or even into your system. However, due to the present volatile state of the code, you should expect a fairly continuous stream of small changes, most of which aren’t going to come with a bump in the version number. This may make upgrading the package a more involved process. This command (
-e .
) installs all the dependencies normally, but the tendril package itself redirects to the clone, where you can make changes which instantly propagate to the version you get when youimport tendril
.Hint
The dependencies may require additional libraries (and their development headers) to be installed on your system. A non-exhaustive list of the libraries you should have available is :
- libfreetype
- libpng
- libjpeg
- libffi
- libpqxx
- libxml2
- libxslt1
Install dependencies not covered by
requirements.txt
Install
sofficehelpers
:sofficehelpers
is a collection of scripts to deal withlibreoffice
documents. The libreoffice python interface (uno
) requires use of the python bundled into libreoffice, and therefore is kept separate from the rest of tendril. There are plenty of other (and simpler) ways to achieve the same effect, inculding a number of uno-based scripts to do this. The custom script is retained for the moment to maintain a functional base upon which additional functionality can be added on as needed. If another solution is to be used instead, appropriate changes should be made totendril.utils.files.libreoffice.XLFile._make_csv_files()
andtendril.utils.files.libreoffice.XLFile._parse_sscout()
.Install dependencies:
sudo apt-get install python-uno python-pip3
Install the
sofficehelpers
package from PyPi:pip3 install sofficehelpers
(Optional) Install
gaf 1.9.1
or the devlopment version from git. This is required forgaf export
, which in turn is required to convertgschem
files to pdf on a headless server. Refer to your instance specific conventions and rules to determine if using this version generally is safe.wget http://ftp.geda-project.org/geda-gaf/unstable/v1.9/1.9.1/geda-gaf-1.9.1.tar.gz tar xvzf geda-gaf-1.9.1.tar.gz cd geda-gaf-1.9.1 ./configure --prefix=/opt/geda make make install
Install
pdflatex
. The reference implementation assumestexlive-latex
with an as-yet unspecified set of addons. The following list of ubuntu packages is a complete set which definitely contains the used latex packages, though not all of these are needed.texlive-latex-recommended
is a good start.- texlive-latex-base
- texlive-binaries
- texlive-latex-recommended
- texlive-fonts-recommended
- texlive-font-utils
- texlive-fonts-extra
- texlive-generic-recommended
- texlive-pictures
- texlive-science
- texlive-extra-utils
- texlive-pstricks
Install
pstoedit
, used to generate DXFs from gerber files.
Install packages required specifically for your instance. Look up your instance-specific documentation and configurations to figure out what those are.
Setup your repository tree. This tree need not be specially created for tendril. You can point to a folder within which all your repositories exist. The following are the constraints you should keep in mind :
- Any folder with a
configs.yaml
in the correct format is assumed to be a gEDA project, and the correct folder structure around it is expected. - Most workflows call for specific information stored in a specific location in the repository tree, such as inventory information, for instance. These resources should mirror their location (relative to the repository root) in the canonical repository tree.
- If you intend to generate
refdocs
on your computer and push them to the central instance’s refdocs filesystem, you should make sure that the repository tree you have locally exactly mirrors the organization’s repository tree.
Beyond this, you can use whatever method or tool you desire to keep the repositories up to date. I recommend checkoutmanager.
Install
checkoutmanager
pip install checkoutmanager
Setup your
~/.checkoutmanager.cfg
. Your instance may have a sample in theresources
folder. If it does, you may be able to simply copy the configuration and make whatever local changes you require.cd ~/.tendril/resources cp checkoutmanager.cfg ~/.checkoutmanager.cfg
Create the checkouts.
checkoutmanager co
- Any folder with a
Create a
local_config_overrides.py
file in~/.tendril
, and add the configuration options within it which are different from the instance’s default configuration. See thelocal_config_overrides.py.sample
for an example.(Optional) Create a ‘full’ local tendril installation, detaching your copy from requiring the central tendril installation to be accessible on the network. Follow the instructions in the Instance Deployment section to :
- Setup
apache
. - Setup the filesystems.
- Generate your copy of
refdocs
.
Warning
Real synchronization is not implemented yet. While some parts of tendril are to safe to use in isolation, much of it is not. Use with extreme caution. The following is a non-exhaustive list of potential failures :
postgresql
replication / synchronization is not set up. Anything that hits the database is likely to fail.- Filesystem synchronization is not setup. Anything that hits
docstore
is likely to cause trouble.refdocs
andwallet
are relatively safe to have a local version of the filesystem of, though you should remember that these are copies of the respective filesystem - which you will have to maintain yourself.
- Setup
Maintaining the Installation¶
Updating the Core¶
cd tendril git checkout master git pull
Updating the Instance Folder¶
cd ~/.tendril git checkout master git pull
Contributing to the Instance¶
TODO