5
$\begingroup$

I am in a process of installing a local Blender Flamenco server on Debian Stretch. So I first downloaded all the source files for key components:

I did this using GIT which I first installed using sudo apt install git and then:

git clone git://git.blender.org/flamenco.git
git clone git://git.blender.org/pillar.git
git clone git://git.blender.org/pillar-python-sdk.git

Then I opened the top directory of the Flamenco using cd flamenco and I opened the README.md file which states that in order to install Flamenco you have to pass these five steps:

  • Install requirements with pip install -r requirements-dev.txt
  • Install Flamenco Server locally with pip install -e .
  • Add Flamenco as Pillar extension to our project
  • Give a user 'subscriber' or 'demo' role to obtain flamenco-use capability, or set up your own mapping from role to flamenco-use and flamenco-view capabilities
  • Run ./gulp

So I first executed pip install -r requirements-dev.txt which failed when trying to install mypy component. It failed because pip uses python2 which is softlinked to python2.7 on Debian Stretch, but mypy needs python3 which is softlinked to python 3.5 on Debian Stretch. So I had to execute this using pip3 instead of pip:

pip3 install -r requirements-dev.txt

This resulted in an error:

current_app: 'PillarServer' = LocalProxy(_get_current_app)
           ^
SyntaxError: invalid syntax

I solved this error with a help of experts on Stack overflow (topic) where they told me that syntax used is actually Python 3.6, so I installed Python 3.6 from GIT Hub (here) using commands:

wget https://github.com/chriskuehl/python3.6-debian-stretch/releases/download/v3.6.3-1-deb9u1/{python3.6_3.6.3-1.deb9u1_amd64,python3.6-minimal_3.6.3-1.deb9u1_amd64,python3.6-dev_3.6.3-1.deb9u1_amd64,libpython3.6_3.6.3-1.deb9u1_amd64,libpython3.6-minimal_3.6.3-1.deb9u1_amd64,libpython3.6-stdlib_3.6.3-1.deb9u1_amd64,libpython3.6-dev_3.6.3-1.deb9u1_amd64}.deb
sudo dpkg -i *.deb

In order for this to work I had to delete the softlink /usr/bin/python3 which was pointing to python 3.5 and create a new softlink /usr/bin/python3 pointing to Python 3.6:

sudo rm /usr/bin/python3
sudo ln -s /usr/bin/python3.6 /usr/bin/python3

And then I again used command pip3 install -r requirements-dev.txt which worked. The installation of dependancies succeeded so first point of the procedure was done. Next point was to execute pip install -e . (still inside flamenco directory) but I rather used:

pip3 install -e .

And this worked as well. But now I am stuck! Third point is totally indescriptive. So how in the whole universe I should know what these next steps mean:

  • Add Flamenco as Pillar extension to our project
  • Give a user 'subscriber' or 'demo' role to obtain flamenco-use capability, or set up your own mapping from role to flamenco-use and flamenco-view capabilities
  • Run ./gulp

Well gulp is inside flamenco directory but I can't figure out the two steps preceeding it. Any help from Blender community would be welcome.

$\endgroup$

2 Answers 2

3
$\begingroup$

Oh man, I've been through this pain myself in the last week. I was able to get Flamenco up and running but I'm afraid I have zero help when it comes to the issues you're having with permissions.

The first thing is - everything is Python 3. Everything. I configured mine on CentOS 7. This script gets me pretty close to having everything working:

The basic gist is:

  • Install a LOT of pre-requisites, a lot of which you won't find out until you actually go to compile something. In the case of CentOS/RedHat:
    • git2u unzip gcc npm openssl openssl-devel libffi-devel python36u python36u-pip python36u-devel libffi-devel python-pip
  • Install docker and run docker images for Mongo, RabbitMQ and Redis
  • Check out ALL the components (pillar sdk, piller, blender-cloud, flamenco, a bunch of other things)
  • From within the blender-cloud repo:
    • Create a virtualenv for Python that points to a Python 3 runtime
    • Run the pip install
    • Run ./gulp (you need to have NPM installed, which is one of the prerequisites)

The documentation on https://pillarframework.org/development/install/ is out of date. You do not need to do the steps for urler

My CentOS script for doing this is below (do not invoke the script as sudo, it will elevate itself when required):

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y epel-release
sudo yum install -y open-vm-tools yum-utils net-tools nano git2u unzip gcc npm screen openssl openssl-devel libffi-devel python36u python36u-pip python36u-devel libffi-devel python-pip

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce

sudo systemctl enable docker
sudo systemctl start docker

sudo systemctl stop firewalld
sudo systemctl disable firewalld

sudo docker run -d -v /data/db:/data/db -p 27017:27017 --name mongo mongo
sudo docker run -d -p 6379:6379 --name redis redis
sudo docker run -d -p 5672:5672 --name rabbit rabbitmq

sudo mkdir /data/storage
sudo chown -R markness:markness /data

mkdir ~/data
cd ~/data

git clone http://git.blender.org/pillar-python-sdk.git
git clone http://git.blender.org/pillar.git
git clone http://git.blender.org/attract.git
git clone http://git.blender.org/flamenco.git
git clone http://git.blender.org/pillar-svnman.git
git clone http://git.blender.org/blender-cloud.git

sudo pip install --upgrade pip
sudo pip install virtualenvwrapper

sudo pip3.6 install --upgrade pip

echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "export PROJECT_HOME=$HOME/Devel" >> ~/.bashrc
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc

source ~/.bashrc

cd ~/data/blender-cloud
mkvirtualenv blender-cloud -p python3.6

pip install -r requirements-dev.txt
./gulp all

It probably won't get you completely on track, but I hope it helps.

$\endgroup$
1
$\begingroup$

Flamenco is an extension for the Pillar framework. To run it, you need to have an application definition that loads Pillar and all the extensions you want to use. Flamenco comes with its own runserver.py, which does exactly that.

Giving roles can be done by a user with admin role on the /u/ endpoint. You set up your first admin user when you initialise the database with manage.py setupdb. Alternatively, use a MongoDB client to directly edit a user in the database and give them the roles (roles are just strings).

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .