# SlapOS component for ZEO.
# https://zeo.readthedocs.io/

[buildout]
extends =
    ../ZODB/buildout.cfg
    ../git/buildout.cfg

parts = ZEO/scripts


# ZEO provides ZEO<X> depending on ZODB major version.
#
# - ZEO4 works only with ZODB4
#   https://github.com/zopefoundation/ZEO/blob/4.3.1-1-g47d3fbe8/setup.py#L122
# - ZEO5 works only with ZODB5
#   https://github.com/zopefoundation/ZEO/blob/5.2.2-1-g3d90ed42/setup.py#L20
[ZEO]
recipe  = slapos.recipe.build
depends = ${ZODB:egg}
init =
  # link/depend to ZEO<ZODB.major>
  zodb = self.buildout['ZODB']
  zmajor = zodb['major']
  zeo_x = self.buildout['ZEO'+zmajor]
  options['depends'] += '$${%s:egg}' % zeo_x.name
  options['egg'] = zeo_x['egg']

  # update [versions] from what is needed by ZEO<X>
  self.buildout.parse('[_ZEO-versions]\n' + zeo_x['egg-versions'])
  versions = self.buildout['versions']
  versions.update(self.buildout['_ZEO-versions'])
  # propagate updated [versions] -> easy_install
  # (buildout does this in Buildout constructor)
  import zc.buildout.easy_install
  zc.buildout.easy_install.default_versions(versions)


# ZEO/scripts installs scripts from ZEO
[ZEO/scripts]
recipe  = zc.recipe.egg:scripts
eggs    = ${ZEO:egg}


# ZEO4: we maintain our own 4-nxd branch with patches
[ZEO4]
recipe  = zc.recipe.egg:develop
setup   = ${ZEO4-repository:location}
egg     = ZEO
egg-versions =

[ZEO4-repository]
recipe  = slapos.recipe.build:gitclone
repository = https://lab.nexedi.com/nexedi/ZEO.git
branch  = 4-nxd
revision= 5114f909e5a5
location = ${buildout:parts-directory}/ZEO4
git-executable = ${git:location}/bin/git


# ZEO5 is plain upstream egg
[ZEO5]
recipe  = zc.recipe.egg:eggs
egg     = ZEO
eggs    = ${:egg}

egg-versions =
  ZEO = 5.4.0
  trollius = 2.2.1
  futures = 3.3.0


# ZEO4-wc2 is ZEO4 version with patches for wendelin.core 2 to work correctly.
# The patches are backports of what is in ZEO master (ZEO5), but since upstream
# considers 4 branch to be "dead", we have to maintain it by ourselves.
# See https://github.com/zopefoundation/ZEO/pull/161 for the reference.
[ZEO4-wc2]
<= ZEO4
setup   = ${ZEO4-wc2-repository:location}

[ZEO4-wc2-repository]
<= ZEO4-repository
revision = bf80d23d3506
location = ${buildout:parts-directory}/ZEO4-wc2
