Skip to content

Make bob, bob again!

:) it means we want to remove this idea of core and extra packages and make everything a part of bob.

To do so we need:

  • Make sure bob is only a meta package (both in PyPI and conda) with only optional dependencies.
  • Bob will (optionally) depend on all core and extra packages. There will be no concept of core and extra packages anymore.
  • We will still use semantic versioning in Bob and follow semantic versioning. This means with every release, we could easily be releasing a new major version of Bob: bob 4, bob 5, bob 6
  • We could remove bob/bob.nightlies and bob/docs repositories as well and do everything here.
  • Since the bob package is not going to install anything, we could potentially list private stable packages here too. However, I am not sure we can build the docs here then.

Here is the idea for its conda recipe at least:

{% set name = 'bob' %}
{% set project_dir = environ.get('RECIPE_DIR') + '/..' %}

package:
  name: {{ name }}
  version: {{ environ.get('BOB_PACKAGE_VERSION', '0.0.1') }}

build:
  number: {{ environ.get('BOB_BUILD_NUMBER', 0) }}
  run_exports:
    - {{ pin_subpackage(name) }}
  script:
    - cd {{ project_dir }}
    {% if environ.get('BUILD_EGG') %}
    - python setup.py sdist --formats=zip
    {% endif %}
    - python setup.py install --single-version-externally-managed --record record.txt

requirements:
  run:
    - python {{ python }}
    - setuptools {{ setuptools }}
    - bob.extension
    - bob.blitz
    ...
    - bob.ip.flandmark
    - bob.bio.base
    ...
    - gridtk
    - bob.pad.voice
    ...
    - bob.buildout # even bob.buildout

test:
  imports:
    - {{ name }}
  commands:
    - nosetests --with-coverage --cover-package={{ name }} -sv {{ name }}
    - conda inspect linkages -p $PREFIX {{ name }}  # [not win]
    - conda inspect objects -p $PREFIX {{ name }}  # [osx]
  requires:
    - bob-devel {{ bob_devel }}.*
    - nose
    - coverage
    - sphinx
    - sphinx_rtd_theme
    - pkgtools
    - cmake
    - pkg-config
    - freetype
    - {{ compiler('c') }}
    - {{ compiler('cxx') }}
    - bob.buildout
...

Then we run conda render, and create a new recipe based on that while converting run to run_constrained. I have explained this in https://gitlab.idiap.ch/bob/bob.conda/issues/46#note_25677

Edited by Amir MOHAMMADI