Install - notro/elixir GitHub Wiki

This is more or less how I installed it.

Set up Apache

$ sudo apt install apache2

$ sudo a2enmod cgi rewrite
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Enabling module cgid.
Enabling module rewrite.

$ sudo ufw allow 'Apache'
Rules updated
Rules updated (v6)

$ sudo ufw enable

$ sudo systemctl restart apache2

$ sudo adduser <someuser>

$ sudo adduser <someuser> www-data

$ sudo usermod -aG sudo <someuser>
# Login as <someuser>

Install elixir

$ sudo apt install python3-bsddb3 python3-pygments python3-jinja2 ctags

$ sudo mkdir /srv/elixir-data
$ sudo chown www-data:www-data /srv/elixir-data
$ sudo chmod g+w /srv/elixir-data

$ cd /usr/local
$ sudo mkdir /usr/local/elixir
$ sudo chown www-data:www-data /usr/local/elixir
$ sudo chmod g+w /usr/local/elixir

$ git clone https://github.com/notro/elixir /usr/local/elixir

/etc/apache2/sites-available/000-default.conf

<Directory /usr/local/elixir/http/>
    Options +ExecCGI
    AllowOverride None
    Require all granted
    SetEnv PYTHONIOENCODING utf-8
    SetEnv LXR_PROJ_DIR /srv/elixir-data
</Directory>

AddHandler cgi-script .py

<VirtualHost *:80>
    ServerName elixir.example.com
    DocumentRoot /usr/local/elixir/http

    RewriteEngine on
    RewriteRule "^/$" "/circuitpython/latest/source" [R]
    RewriteRule "^/.*/(source|ident|search)" "/web.py" [PT]
</VirtualHost>

Restart Apache

sudo systemctl restart apache2
systemctl status apache2

~/.profile

LXR_PROJ_DIR=/srv/elixir-data

Install Circuitpython repo and selected submodules

$ mkdir -p /srv/elixir-data/circuitpython/{data,repo,submodules}

$ cd /srv/elixir-data/circuitpython/
$ git clone --progress --bare --mirror https://github.com/adafruit/circuitpython repo

$ mkdir -p submodules/lib
$ git clone --progress --bare --mirror https://github.com/hathach/tinyusb submodules/lib/tinyusb

$ mkdir -p submodules/ports/atmel-samd
$ git clone --progress --bare --mirror https://github.com/adafruit/asf4 submodules/ports/atmel-samd/asf4
$ git clone --progress --bare --mirror https://github.com/adafruit/samd-peripherals submodules/ports/atmel-samd/peripherals

$ mkdir -p submodules/ports/nrf
$ git clone --progress --bare --mirror https://github.com/NordicSemiconductor/nrfx submodules/ports/nrf/nrfx

Show versions

$ cd /usr/local/elixir
$ LXR_REPO_DIR=/srv/elixir-data/circuitpython/repo python3 -m projects list-tags -h
v4 4.0 4.0.0-alpha
v3 3.0 3.0.0
v2 2.3 2.3.1
<snip>

$ LXR_REPO_DIR=/srv/elixir-data/circuitpython/repo python3 -m projects get-latest
4.0.0-alpha

Show repos

$ cd /usr/local/elixir
LXR_REPO_DIR=/srv/elixir-data/circuitpython/repo python3 -m projects update
/srv/elixir-data/circuitpython/repo
/srv/elixir-data/circuitpython/submodules/ports/atmel-samd/asf4
/srv/elixir-data/circuitpython/submodules/ports/atmel-samd/peripherals
/srv/elixir-data/circuitpython/submodules/ports/nrf/nrfx
/srv/elixir-data/circuitpython/submodules/lib/tinyusb

Fetch changes

LXR_REPO_DIR=/srv/elixir-data/circuitpython/repo python3 -m projects update fetch

Build/update database:

cd /usr/local/elixir
LXR_DATA_DIR=/srv/elixir-data/circuitpython/data LXR_REPO_DIR=/srv/elixir-data/circuitpython/repo ./update.py
⚠️ **GitHub.com Fallback** ⚠️