Gatsby-source-plone: Local development set-up Failed

the instructions i followed :

$ git clone git@github.com:collective/gatsby-source-plone.git

$ cd gatsby-source-plone

$ virtualenv -p /usr/bin/python2.7 --distribute temp-source

$ source temp-source/bin/activate

(temp-source) tux (master) gatsby-source-plone $ make build -p python2.7

this was the error i got after running the above commands :

(temp-source) tux (master) gatsby-source-plone $ make build -p python2.7
Build
make build-backend
# make[1]: Entering directory '/home/tux/workspace/gatsby-source-plone'
Build
(cd api && virtualenv-2.7 . || virtualenv .)
/bin/bash: virtualenv-2.7: command not found
Using base prefix '/home/tux/usr'
New python executable in /home/tux/workspace/gatsby-source-plone/api/bin/python
copying /home/tux/usr/bin/python => /home/tux/workspace/gatsby-source-plone/api/bin/python
copying /home/tux/usr/bin/../lib/libpython3.6m.so.1.0 => /home/tux/workspace/gatsby-source-plone/api/lib/libpython3.6m.so.1.0
Installing setuptools, pip, wheel...done.
(cd api && bin/pip install -r requirements.txt)
Collecting setuptools==33.1.1 (from -r requirements.txt (line 2))
  Using cached setuptools-33.1.1-py2.py3-none-any.whl
Requirement already satisfied: zc.buildout==2.9.4 in ./lib/python3.6/site-packages (from -r requirements.txt (line 3))
Installing collected packages: setuptools
  Found existing installation: setuptools 38.4.0
    Uninstalling setuptools-38.4.0:
      Successfully uninstalled setuptools-38.4.0
Successfully installed setuptools-33.1.1
(cd api && bin/buildout)
Getting distribution for 'ZODB3==3.10.7'.
Traceback (most recent call last):
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 157, in save_modules
    yield saved
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 198, in setup_context
    yield
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 255, in run_setup
    DirectorySandbox(setup_dir).run(runner)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 285, in run
    return func()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 253, in runner
    _execfile(setup_script, ns)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 46, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-a3xv0sos/ZODB3-3.10.7/setup.py", line 34
    print "This version of ZODB requires Python 2.5 or higher"
                                                             ^
SyntaxError: Missing parentheses in call to 'print'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 2270, in main
    **kw
  File "/home/tux/yes/lib/python3.6/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/home/tux/yes/lib/python3.6/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/home/tux/yes/lib/python3.6/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 411, in run
    self.easy_install(spec, not self.no_deps)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 655, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 700, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 881, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1120, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 1106, in run_setup
    run_setup(setup_script, args)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 258, in run_setup
    raise
  File "/home/tux/yes/lib/python3.6/contextlib.py", line 100, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 198, in setup_context
    yield
  File "/home/tux/yes/lib/python3.6/contextlib.py", line 100, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 169, in save_modules
    saved_exc.resume()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 144, in resume
    six.reraise(type, exc, self._tb)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/pkg_resources/_vendor/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 157, in save_modules
    yield saved
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 198, in setup_context
    yield
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 255, in run_setup
    DirectorySandbox(setup_dir).run(runner)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 285, in run
    return func()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 253, in runner
    _execfile(setup_script, ns)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/setuptools/sandbox.py", line 46, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-a3xv0sos/ZODB3-3.10.7/setup.py", line 34
    print "This version of ZODB requires Python 2.5 or higher"
                                                             ^
SyntaxError: Missing parentheses in call to 'print'
An error occurred when trying to install /tmp/tmplsoinmckget_dist/ZODB3-3.10.7.tar.gz. Look above this message for any errors that were output by easy_install.
While:
  Installing.
  Getting section instance.
  Initializing section instance.
  Installing recipe plone.recipe.zope2instance.
  Getting distribution for 'ZODB3==3.10.7'.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 2123, in main
    getattr(buildout, command)(args)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 680, in install
    [self[part]['recipe'] for part in install_parts]
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 680, in <listcomp>
    [self[part]['recipe'] for part in install_parts]
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 1274, in __getitem__
    options._initialize()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 1382, in _initialize
    self.initialize()
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 1388, in initialize
    recipe_class = _install_and_load(reqs, 'zc.buildout', entry, buildout)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/buildout.py", line 1338, in _install_and_load
    allow_hosts=buildout._allow_hosts
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/easy_install.py", line 913, in install
    return installer.install(specs, working_set)
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/easy_install.py", line 714, in install
    for dist in self._get_dist(req, ws):
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/easy_install.py", line 563, in _get_dist
    dists = [_move_to_eggs_dir_and_compile(dist, self._dest)]
  File "/home/tux/workspace/gatsby-source-plone/api/lib/python3.6/site-packages/zc/buildout/easy_install.py", line 1699, in _move_to_eggs_dir_and_compile
    [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
ValueError: not enough values to unpack (expected 1, got 0)
Makefile:17: recipe for target 'build-backend' failed
make[1]: *** [build-backend] Error 1

buildout.cfg :

(temp-source) tux (master) api $ cat buildout.cfg
[buildout]
index = https://pypi.python.org/simple
extends = http://dist.plone.org/release/5.0.8/versions.cfg
parts =
    instance
    plonesite

[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 8080
eggs =
    Plone
    Pillow
    plone.restapi

zcml-additional =
  <configure xmlns="http://namespaces.zope.org/zope"
             xmlns:plone="http://namespaces.plone.org/plone">
  <plone:CORSPolicy
    allow_origin="http://localhost:4300,http://127.0.0.1:4300"
    allow_methods="DELETE,GET,OPTIONS,PATCH,POST,PUT"
    allow_credentials="true"
    expose_headers="Content-Length,X-My-Header"
    allow_headers="Accept,Authorization,Content-Type,X-Custom-Header"
    max_age="3600"
    />
  </configure>

[plonesite]
recipe = collective.recipe.plonesite
site-id = Plone
instance = instance
profiles-initial = Products.CMFPlone:dependencies
profiles =
    plonetheme.barceloneta:default
    plone.app.contenttypes:plone-content
    plone.restapi:default
upgrade-portal = False
upgrade-all-profiles = False
site-replace = True

[versions]
setuptools =
zc.buildout =
Pillow = 4.3.0
tux (master) api $ ls
bin  buildout.cfg  develop-eggs  eggs  include  lib  parts  pip-selfcheck.json  requirements.txt

I am sorry if I missed some steps :sweat_smile:

Make sure you have "virtualenv-2.7" installed.

/bin/bash: virtualenv-2.7: command not found
...
File "/tmp/easy_install-a3xv0sos/ZODB3-3.10.7/setup.py", line 34
print "This version of ZODB requires Python 2.5 or higher"
^
SyntaxError: Missing parentheses in call to 'print'

The makefile tries to create a new virtualenv in the directory ./api and
fails cause virtualenv-2.7 is not installed. It exists on python if you
install the package python-virtualenv and installes a python2.7
virtualenv by default.
The Makefile falls back to call virtualenv in this directory without a
parameter. This seems to install a virtualenv with python 3.

From the Makefile:

build-backend:
@echo "Build"
(cd api && virtualenv-2.7 . || virtualenv .)

The following syntax error happens cause the installation is running in
in Pyhton 3, where the print syntax changed from

print "a string"

to

print("another string")

Remove everything in the directory ./api except buildout.cfg and
requirements.txt. Then install python-virtualenv if you have Ubuntu, or
create a script that calls virtualenv with the right -p parameter.

Or modifiy the makefile to fall back to virutalenv -p with the right
path to python2.7
Or follow the makefile steps manually. The makefile is short :slight_smile:

..Carsten

1 Like

@csenger @tisto thanks for answering, i added (cd api && virtualenv-2.7 . || virtualenv -p /usr/bin/python .) in makefile and it's working. :grinning:
Also i have plone already running on http://localhost:8080/ from when i first set up the plone dev environment, how do i kill the process? using bin/instance stop doesn't stop it...

Start the instance in foreground with "bin/instance fg". Then you can stop it with CTRL+C.