diff --git a/.gitignore b/.gitignore index d9d98e5bf39f1d58d7eacdc7c5383a23893133e1..aa9a5114f92daf98bc278eca7002a0ca199e3ffa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,22 +1,5 @@ *~ *.swp -*.pyc -*.so -*.dylib -CMakeLists.txt -bin -eggs -parts -.installed.cfg -.mr.developer.cfg -*.egg-info -develop-eggs -sphinx -dist -.nfs* -.gdb_history -build -*.egg -opsnr.stt -.coverage -.DS_Store +_ci/ +src/ +dist/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6dd6990dbc1ddaf9460d2e563d65740a79ddc0c5..d68f21f77ab6726f6fc4c52745aefc9764d48078 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,97 +1,28 @@ -# This build file heavily uses template features from YAML so it is generic -# enough for any Bob project. Don't modify it unless you know what you're -# doing. - - -# Definition of our build pipeline stages: - - build_bob - - test_bob - - wheels_bob - - -# --------- -# Templates -# --------- + - build -# Template for the build stage -# Needs to run on all supported architectures, platforms and python versions -.build_bob_template: &build_bob_job - stage: build_bob +core_linux_27: + stage: build before_script: - git clean -ffdx - #- mkdir _ci - #- curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > _ci/install.sh - #- chmod 755 _ci/install.sh - #- ./_ci/install.sh _ci #updates - - ./_ci/before_build.sh buildout-bob.cfg - script: - - ./_ci/build.sh buildout-bob.cfg requirements-bob.txt - after_script: - - ./_ci/after_build.sh - artifacts: - expire_in: 1 week - paths: - - _ci/ - - dist/ - - -# Template for the test stage - re-installs from uploaded wheels -# Needs to run on all supported architectures, platforms and python versions -.test_bob_template: &test_bob_job - stage: test_bob - before_script: - #- ./_ci/install.sh _ci #updates - - ./_ci/before_test.sh buildout-bob.cfg - script: - - ./_ci/test.sh buildout-bob.cfg - after_script: - - ./_ci/after_test.sh - - -# Template for the wheel uploading stage -# Needs to run against all combinations of python and operating systems -.wheels_bob_template: &wheels_bob_job - stage: wheels_bob - environment: intranet - only: - - new_ci - - /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags) - before_script: - #- ./_ci/install.sh _ci #updates - - ./_ci/before_wheels.sh script: + - ./build.sh core.txt 2.7 - ./_ci/wheels.sh after_script: - - ./_ci/after_wheels.sh - - - -# ------------- -# Build Targets -# ------------- - -# Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed) -build_bob_linux_27: - <<: *build_bob_job - variables: &linux_27_build_variables - PYTHON_VERSION: "2.7" - tags: - - conda-linux - -test_bob_linux_27: - <<: *test_bob_job - variables: *linux_27_build_variables - dependencies: - - build_bob_linux_27 + - git clean -ffdx src tags: - conda-linux -wheels_bob_linux_27: - <<: *wheels_bob_job - variables: *linux_27_build_variables +extras_linux_27: + stage: build dependencies: - - build_bob_linux_27 + - core_linux_27 + before_script: + - git clean -ffdx + script: + - ./build.sh extras.txt 2.7 + - ./_ci/wheels.sh + after_script: + - git clean -ffdx tags: - conda-linux - diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 7ac8998a23ffd779d3e33b4fa0bc6c1301353c81..0000000000000000000000000000000000000000 --- a/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2013, Andre Anjos - Idiap Research Institute -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. Redistributions in binary -form must reproduce the above copyright notice, this list of conditions and the -following disclaimer in the documentation and/or other materials provided with -the distribution. Neither the name of the Idiap Research Institute nor the -names of its contributors may be used to endorse or promote products derived -from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.rst b/README.rst index de46d4b9f25c621a18d564c776d40325487ba95f..1f3790c4deeea0a2601d37b562bf9861f383f96a 100644 --- a/README.rst +++ b/README.rst @@ -1,125 +1,72 @@ .. vim: set fileencoding=utf-8 : .. Andre Anjos <andre.anjos@idiap.ch> -.. Mon 03 Nov 2014 10:37:52 CET +.. Thu 22 Dec 2016 08:47:14 CET -.. |badge| image:: https://gitlab.idiap.ch/ci/projects/6/status.png?ref=master - :target: https://gitlab.idiap.ch/ci/projects/6?ref=master +.. image:: https://gitlab.idiap.ch/bob/bob.io.audio/badges/master/build.svg + :target: https://gitlab.idiap.ch/bob/bob.io.audio/commits/master -====================================== - Bob Nightlies (concentrator) |badge| -====================================== +=============== + Bob Nightlies +=============== -Bob is a free signal-processing and machine learning toolbox originally -developed by the Biometrics group at `Idiap`_ Research Institute, Switzerland. +This package is part of the signal-processing and machine learning toolbox +Bob_. This package implements the so-called "nightlies" aggregator. Its build +is triggered every night so all packages are properly recompiled against the +latest environment and tested together under that light. -The toolbox is written in a mix of `Python`_ and `C++`_ and is designed to be -both efficient and reduce development time. It is composed of a reasonably -large number of `packages`_ that implement tools for image, audio & video -processing, machine learning and pattern recognition. - -**This package is not Bob. It is just a container that includes Bob -packages so we can continously integrate them.** - -If just want to use Bob's functionalities on your experiments, you are **not** -supposed to install this package on your machine, but rather `create your own -personalised work environment -<https://github.com/idiap/bob/wiki/Installation>`_ depending on your needs, by -collecting individual sub-packages based on your requirements. - -If you are developing Bob packages which are supposed to built along side our -`nightly build system <https://www.idiap.ch/software/bob/buildbot/waterfall>`_, -please read on. Installation ------------ -As per-usual, make sure all external `dependencies`_ are installed on your host -before trying to compile the whole of Bob. Once all dependencies_ are -satisfied, you should be able to:: - - $ python bootstrap.py - $ ./bin/buildout - -You may tweak the options in ``buildout.cfg`` to disable/enable verbosity and -debug builds, **before you run** ``./bin/buildout``. - - -Documentation -------------- - -You can generate the documentation for all packages in this container, after -installation, using Sphinx:: - - $ ./bin/sphinx-build . sphinx - -This shall place in the directory ``sphinx``, the current version for the -documentation of the package. - -Testing -------- +This package can be built starting from a base development environment, as +provided by our `from-scratch.sh`_ script. First run it to create a conda-based +environment for development. Once the environment is ready, follow the +instructions on the ``.gitlab-ci.yml`` file to complete the development cycle. -You can run a set of tests using the nose test runner:: +The script ``build.sh`` will try to execute the steps from the CI in the right +order and can be used to locally test your modifications **before** pushing a +branch into the nightlies, which will trigger a complete set of builds in +multiple platforms. - $ ./bin/nosetests -sv +The script ``build.sh`` takes several parameters:: -You can run our documentation tests using sphinx itself:: + $ ./build.sh - $ ./bin/sphinx-build -b doctest . sphinx Updating a Package ------------------ .. warning:: - Before adding a package to this prototype, please ensure that the package: + Before adding a package to this prototype, please ensure that the package + contains all standard components of a Bob_ package (README, unit tests, CI + integration and documentation among others). - * contains a README clearly indicating how to install the package (including - external dependencies required). Also, please add package badges for the - build status and coverage as shown in other packages (even if your package - is not yet integrated to Travis or Coveralls). + If you don't know how to do this, ask for information on our `mailing + list`_. - * Has unit tests. +The new package sits in one of two categories: - * Is integrated with gitlab-ci and correctly tested on that platform (i.e. - it builds, it tests fine and a documentation can be constructed and tested - w/o errors) +1. If the package belongs to the core of Bob, add the package to the file + ``core.txt``, following other packages already inserted. Be attentive to + the order in which packages should be compiled. +2. If the package is not part of the core of Bob, add the package to the file + ``extras.txt``, following other packages already inserted. Be attentive + to the order in which packages should be compiled. - If you don't know how to do this, ask for information on the bob-devel - mailing list. +Once the file is modified, commit the changes to a **new branch**, with a +suggestive name. Push the branch and, once it is green, you may merge it to the +master (or ask it to be merged). -Then, add/update/remove the following files: -1. Add your package to the build:: - - $ vim layer2.cfg - -2. Add your package to the overall documentation:: - - $ vim index.rst - -3. Add your package to be "deploy-tested":: - - $ vim requirements2.txt - -4. Add a row for your package in our Packages_ list - -5. Update the dependency graph:: - - $ tools/update_dependency_graphs.sh all - - The current dependency graph looks like that: - - .. image:: https://raw.githubusercontent.com/idiap/bob/master/dependencies.png - :target: https://raw.githubusercontent.com/idiap/bob/master/dependencies.png - :width: 50% +Contact +------- +For questions or reporting issues to this software package, contact our +development `mailing list`_. -.. External References -.. _c++: http://www2.research.att.com/~bs/C++.html -.. _python: http://www.python.org -.. _idiap: http://www.idiap.ch -.. _packages: https://gitlab.idiap.ch/bob/bob/wikis/Packages -.. _wiki: https://github.com/idiap/bob/wiki -.. _bug tracker: https://github.com/idiap/bob/issues -.. _dependencies: https://github.com/idiap/bob/wiki/Dependencies +.. Place your references here: +.. _bob: https://www.idiap.ch/software/bob +.. _mailing list: https://groups.google.com/forum/?fromgroups#!forum/bob-devel +.. _from-scratch.sh: https://gitlab.idiap.ch/bob/bob.admin/blob/master/install/from-scratch.sh diff --git a/_ci/README.md b/_ci/README.md deleted file mode 100644 index 59ea50aaabf1f09bcc282716b5fa65ae332af00e..0000000000000000000000000000000000000000 --- a/_ci/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Scripts for Continous Integration with Gitlab - -This directory contains scripts that are used by our continuous integration -(CI) builds. There are various sets of scripts named as follows: - -* `before_<stage>.sh` -* `<stage>.sh` -* `after_<stage>.sh` - -Each of these sets correpond to one of the build stages inside the CI builds. - -The script `install.sh` contains a basic set of routines to install and update -the scripts on the target host. If you add more scripts, it is sensible to -add those in there. - -The script `functions.sh` contains a set of functions that are shared between -all scripts. All scripts *source* `functions.sh` before anything is done. -`functions.sh` also set important local and global (export) variables that are -required by the build system. - -Before changing any script, try to understand the role of each of the stages by -looking at our template CI yaml files (in the directory `../templates`) and -then how to use the functions declared in `functions.sh`. diff --git a/_ci/after_build.sh b/_ci/after_build.sh deleted file mode 100755 index c9f0e880517fe5fd62f816e2b6569bf5e277984a..0000000000000000000000000000000000000000 --- a/_ci/after_build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Sat 24 Sep 08:12:24 2016 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/after_deploy.sh b/_ci/after_deploy.sh deleted file mode 100755 index dc97ec3a5e72f02e23d5efe1fc691bdec613ca2a..0000000000000000000000000000000000000000 --- a/_ci/after_deploy.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 15:11:53 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/after_docs.sh b/_ci/after_docs.sh deleted file mode 100755 index cd563fb91dbdc844066e4a4a8d506f28d420cade..0000000000000000000000000000000000000000 --- a/_ci/after_docs.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 18:23:57 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/after_test.sh b/_ci/after_test.sh deleted file mode 100755 index 67a04cb79ada656a7be2d1cf2296f653acf399bb..0000000000000000000000000000000000000000 --- a/_ci/after_test.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 13:59:03 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/after_wheels.sh b/_ci/after_wheels.sh deleted file mode 100755 index cd563fb91dbdc844066e4a4a8d506f28d420cade..0000000000000000000000000000000000000000 --- a/_ci/after_wheels.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 18:23:57 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/before_build.sh b/_ci/before_build.sh deleted file mode 100755 index 8cca5970c6fa1da6c70292c90970e97433ed1b6e..0000000000000000000000000000000000000000 --- a/_ci/before_build.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env bash -# Mon 8 Aug 17:40:24 2016 CEST - -source $(dirname ${0})/functions.sh - -WHEELS_REPOSITORY="${DOCSERVER}/software/bob/wheels/gitlab/" -WHEELS_SERVER=`echo ${DOCSERVER} | sed 's;https\?://;;'` -check_env WHEELS_REPOSITORY -check_env WHEELS_SERVER - -NIGHTLIES=$1 - -# Readies the virtualenv to use for installation -if [ ! -d ${PREFIX} ]; then - log_info "Creating virtualenv installation at ${PREFIX}..." - run_cmd ${BOB_PREFIX_PATH}/bin/virtualenv --system-site-packages ${PREFIX} -else - log_warn "Prefix directory ${PREFIX} exists, not re-installing..." -fi - -# Source the newly created virtualenv -log_info "$ source ${PREFIX}/bin/activate" -source ${PREFIX}/bin/activate - -# Verify where pip is installed -use_pip=`which pip` -if [ -z "${use_pip}" ]; then - log_error "Cannot find pip, aborting..." - exit 1 -else - log_info "Using pip: ${use_pip}" -fi - -# Upgrade wheel generation library to avoid bugs -run_cmd ${use_pip} install --upgrade setuptools pip wheel - -use_python=`which python` -if [ -z "${use_python}" ]; then - log_error "Cannot find python, aborting..." - exit 1 -else - log_info "Using python: ${use_python}" -fi - -# Install this package's build dependencies -PIPOPTS="--find-links ${WHEELS_REPOSITORY} --trusted-host ${WHEELS_SERVER}" -PIPOPTS="${PIPOPTS} --pre --use-wheel --no-index" -if [ -e requirements.txt ]; then - run_cmd ${use_pip} install ${PIPOPTS} --requirement requirements.txt -else - log_info "No requirements.txt file found, skipping 'pip install <build-deps>'..." -fi - -# Install this package's test dependencies -if [ -e test-requirements.txt ]; then - run_cmd ${use_pip} install ${PIPOPTS} --requirement test-requirements.txt -else - log_info "No test-requirements.txt file found, skipping 'pip install <test-deps>'..." -fi - -# Finally, bootstrap the installation from the new environment -if [ -e bootstrap-buildout.py ]; then - - if [ "$NIGHTLIES" -eq '' ]; then - run_cmd ${use_python} bootstrap-buildout.py - else - run_cmd ${use_python} bootstrap-buildout.py -c ${NIGHTLIES} - fi - -else - log_error "No bootstrap-buildout.py file found, stopping..." - exit 1 -fi diff --git a/_ci/before_deploy.sh b/_ci/before_deploy.sh deleted file mode 100755 index cac81087be5533b36b8ab026d458748b8f607f25..0000000000000000000000000000000000000000 --- a/_ci/before_deploy.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -# Wed 21 Sep 2016 13:08:05 CEST - -source $(dirname ${0})/functions.sh - -run_cmd $(dirname ${0})/before_test.sh - -# setup database locally and run `bob_dbmanage.py all download` -# if this is a database package - need auxiliary file for package -if [[ ${CI_PROJECT_NAME} == bob.db.* ]]; then - run_cmd ./bin/buildout - if [ -x ./bin/bob_dbmanage.py ]; then - run_cmd ./bin/bob_dbmanage.py all download --force; - fi -fi diff --git a/_ci/before_docs.sh b/_ci/before_docs.sh deleted file mode 100755 index cd563fb91dbdc844066e4a4a8d506f28d420cade..0000000000000000000000000000000000000000 --- a/_ci/before_docs.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 18:23:57 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/before_test.sh b/_ci/before_test.sh deleted file mode 100755 index f1cc929bd0ecbcab255ad92c9c0fef1b45277975..0000000000000000000000000000000000000000 --- a/_ci/before_test.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -# Wed 21 Sep 2016 13:08:05 CEST - -source $(dirname ${0})/functions.sh - -NIGHTLIES=$1 - -if [ "$NIGHTLIES" -eq '' ]; then - run_cmd $(dirname ${0})/before_build.sh -else - run_cmd $(dirname ${0})/before_build.sh ${NIGHTLIES} -fi - -# Source the newly created virtualenv -log_info "$ source ${PREFIX}/bin/activate" -source ${PREFIX}/bin/activate - -# Verify where pip is installed -use_pip=`which pip` -if [ -z "${use_pip}" ]; then - log_error "Cannot find pip, aborting..." - exit 1 -else - log_info "Using pip: ${use_pip}" -fi - -# zc.recipe.egg needs some special installation instructions -if [ "${CI_PROJECT_NAME}" == "bob.buildout" ]; then - run_cmd ${use_pip} install --upgrade --no-binary ":all:" zc.recipe.egg -fi - -run_cmd ${use_pip} install --upgrade --use-wheel --no-index --pre dist/*.whl diff --git a/_ci/before_wheels.sh b/_ci/before_wheels.sh deleted file mode 100755 index cd563fb91dbdc844066e4a4a8d506f28d420cade..0000000000000000000000000000000000000000 --- a/_ci/before_wheels.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 18:23:57 CEST - -source $(dirname ${0})/functions.sh - -log_info "*** Not yet implemented ***" diff --git a/_ci/build.sh b/_ci/build.sh deleted file mode 100755 index 4f68ce5038b85f9325cf33afc4e99fa39803a641..0000000000000000000000000000000000000000 --- a/_ci/build.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash -# Wed 21 Sep 2016 13:08:05 CEST - -source $(dirname ${0})/functions.sh - -NIGHTLIES=$1 -REQUIREMENTS=$2 - - -if [ "$NIGHTLIES" -eq '' ]; then - run_cmd ./bin/buildout -else - run_cmd ./bin/buildout -c ${NIGHTLIES} -fi - - - -if [ -x ./bin/bob_dbmanage.py ]; then - run_cmd ./bin/bob_dbmanage.py all download --force; -fi - -if [ -d ./doc ]; then - run_cmd ./bin/sphinx-build -W doc sphinx -fi - -if [ "$NIGHTLIES" -eq '' ]; then - - if [ -z "${WHEEL_TAG}" ]; then - # C/C++ extensions - run_cmd ./bin/python setup.py bdist_wheel - else - # Python-only packages - run_cmd ./bin/python setup.py bdist_wheel --python-tag ${WHEEL_TAG} - fi - -else - - # Generating the whell of the nightlies - if [ -z "${WHEEL_TAG}" ]; then - run_cmd ./bin/python setup.py bdist_wheel --dist-dir ./dist - else - run_cmd ./bin/python setup.py bdist_wheel --dist-dir ./dist --python-tag ${WHEEL_TAG} - fi - - #WHEELS FROM THE DEPENDENCIES - for f in ${REQUIREMENTS} - do - while read -r line - do - dir="src/"$line - run_cmd cd $dir - if [ -z "${WHEEL_TAG}" ]; then - run_cmd ../../bin/python setup.py bdist_wheel --dist-dir ../../dist - else - run_cmd ../../bin/python setup.py bdist_wheel --dist-dir ../../dist --python-tag ${WHEEL_TAG} - fi - - run_cmd cd ../../ - done < "$f" - done - -fi diff --git a/_ci/deploy.sh b/_ci/deploy.sh deleted file mode 100755 index 34b1ca2372e35333c200e5188de5c57fd133f73c..0000000000000000000000000000000000000000 --- a/_ci/deploy.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 13:59:03 CEST - -source $(dirname ${0})/functions.sh - -lock_pypirc - -setup_deploy register --repository staging -setup_deploy check sdist --formats zip upload --repository staging - -# if that worked, uploads source package to the production index -log_info "Uploading package to ${PYPISERVER} on behalf of ${PYPIUSER}..." -setup_deploy register --repository production -setup_deploy check sdist --formats zip upload --repository production - -# if that worked, uploads documentation to pythonhosted if any exists -if [ -d sphinx ]; then - log_info "Uploading documentation to ${PYPISERVER} on behalf of ${PYPIUSER}..." - setup_deploy upload_docs --upload-dir sphinx --repository production -fi - -unlock_pypirc - -condaforge_packages=("bob" \ -"bob.extension" \ -"bob.blitz" \ -"bob.core" \ -"bob.ip.draw" \ -"bob.io.base" \ -"bob.sp" \ -"bob.math" \ -"bob.ap" \ -"bob.measure" \ -"bob.db.base" \ -"bob.io.image" \ -"bob.io.video" \ -"bob.io.matlab" \ -"bob.ip.base" \ -"bob.ip.color" \ -"bob.ip.gabor" \ -"bob.learn.activation" \ -"bob.learn.libsvm" \ -"bob.learn.boosting" \ -"bob.io.audio" \ -"bob.learn.linear" \ -"bob.learn.mlp" \ -"bob.db.wine" \ -"bob.db.mnist" \ -"bob.db.atnt" \ -"bob.ip.flandmark" \ -"bob.ip.facedetect" \ -"bob.ip.optflow.hornschunck" \ -"bob.ip.optflow.liu" \ -"bob.learn.em" \ -"bob.db.iris") - -if contains_element ${CI_PROJECT_NAME} "${condaforge_packages[@]}"; then - run_cmd ${CONDA_FOLDER}/bin/python _ci/update_feedstock.py ${CI_PROJECT_NAME} -fi diff --git a/_ci/docs.sh b/_ci/docs.sh deleted file mode 100755 index d2a62c3f7cd34ba6ca10eddded1daf66e21acf3f..0000000000000000000000000000000000000000 --- a/_ci/docs.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -# Wed 21 Sep 2016 13:08:05 CEST - -source $(dirname ${0})/functions.sh - -info=sphinx/.gitlab-ci.info - -echo "repo=${CI_PROJECT_PATH}" > ${info} -echo "branch=${CI_BUILD_REF_NAME}" >> ${info} -echo "tag=${CI_BUILD_TAG}" >> ${info} -echo "build=${CI_BUILD_ID}" >> ${info} -echo "commit=${CI_BUILD_REF}" >> ${info} -echo "runner=${CI_RUNNER_DESCRIPTION}" >> ${info} - -file=${CI_PROJECT_NAME}-${CI_BUILD_REF}.tar.bz2 -run_cmd tar cfj ${file} sphinx - -doc_upload ${file} software/bob/docs-upload/ diff --git a/_ci/functions.sh b/_ci/functions.sh deleted file mode 100644 index e82893c3b1e9213ea7a833b1d4e9be1cf14325d4..0000000000000000000000000000000000000000 --- a/_ci/functions.sh +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 13:05:54 CEST - -# Build utilities - -# Determines the architecture we're using -arch() { - [[ "$(uname -s)" == "Darwin" ]] && echo "macosx" || echo "linux" -} - - -# Functions for coloring echo commands -log_info() { - echo -e "(`date +%T`) \033[1;34m${@}\033[0m" -} - - -log_warn() { - echo -e "(`date +%T`) \033[1;35mWarning: ${@}\033[0m" >&2 -} - - -log_error() { - echo -e "(`date +%T`) \033[1;31mError: ${@}\033[0m" >&2 -} - - -# Checks a given environment variable is set (non-zero size) -check_env() { - if [ -z "${!1}" ]; then - log_error "Variable ${1} is undefined - aborting..."; - exit 1 - else - log_info "${1}=${!1}"; - fi -} - - -# Exports a given environment variable, verbosely -export_env() { - if [ -z "${!1}" ]; then - log_error "Variable ${1} is undefined - aborting..."; - exit 1 - else - export ${1} - log_info "export ${1}=${!1}"; - fi -} - - -# Checks a given environment variable is set (non-zero size) -check_pass() { - if [ -z "${!1}" ]; then - log_error "Variable ${1} is undefined - aborting..."; - exit 1 - else - log_info "${1}=********"; - fi -} - - -# Function for running command and echoing results -run_cmd() { - log_info "$ ${@}" - ${@} - local status=$? - if [ ${status} != 0 ]; then - log_error "Command Failed \"${@}\"" - exit ${status} - fi -} - - -# Prepares ~/.pypirc -lock_pypirc() { - local lockfile=/var/tmp/pypirc_lock - local rc=${HOME}/.pypirc - local maxtries=10 - local try=0 - local sleeptime=30 #seconds - - while true; do - if [[ ${try} -lt ${maxtries} ]]; then - ((try++)) - if ( set -o noclobber; echo "$$" > "${lockfile}") 2> /dev/null; then - log_info "Successfully acquired ${lockfile}" - echo $$ > ${lockfile} - log_info "trapping on ${lockfile}..." - trap 'rm -f "${lockfile}"; exit $?' INT TERM EXIT - - # start: protected code - log_info "Creating ${rc}..." - if [ -e ${rc} ]; then - run_cmd rm -f ${rc} - fi - cat <<EOT >> ${rc} -[distutils] -index-servers = - production - staging - -[production] -repository: ${PYPISERVER} -username: ${PYPIUSER} -password: ${PYPIPASS} - -[staging] -repository: ${TESTSERVER} -username: ${PYPIUSER} -password: ${PYPIPASS} -EOT - run_cmd chmod 600 ${rc} - # end: protected code - break - else - log_warn "${lockfile} exists, owned by process $(cat $lockfile)" - log_info "Will retry after a ${sleeptime} seconds sleep (${try}/${maxtries})" - run_cmd sleep ${sleeptime} - fi - else - log_error "I already retried deploying ${try} times. Aborting..." - log_error "You can retry this step when less packages are building." - exit 1 - fi - done -} - - -# Cleans ~/.pypirc, if the lock file belongs to us -unlock_pypirc() { - local lockfile=/var/tmp/pypirc_lock - local rc=${HOME}/.pypirc - - # untrap if lock belongs to the running process - if [[ $(cat ${lockfile}) == $$ ]]; then - run_cmd rm -r ${lockfile} - run_cmd rm -rf ${rc} - log_info "$ trap - INT TERM EXIT" - trap - INT TERM EXIT - fi -} - - -# Runs setup.py in a deployment context. If fails, tries to unlock -# the ${HOME}/.pypirc file lock -setup_deploy() { - log_info "$ ${@}" - ${PREFIX}/bin/python setup.py ${@} - local status=$? - if [ ${status} != 0 ]; then - log_error "Command Failed \"${@}\"" - unlock_pypirc #just tries - exit ${status} - fi -} - - -# Uploads a file to our intranet location via curl -doc_upload() { - log_info "curl: ${1} -> ${DOCSERVER}/${2}..." - curl --location --silent --show-error --user "${DOCUSER}:${DOCPASS}" --upload-file ${1} ${DOCSERVER}/${2} - local status=$? - if [ ${status} != 0 ]; then - log_error "Curl command finished with an error condition (status=${status})" - exit ${status} - fi - log_info "Successfully uploaded ${1} with curl" -} - -check_env PYTHON_VERSION -check_env CI_PROJECT_DIR -check_env CI_PROJECT_PATH -check_env CI_PROJECT_NAME -check_env CI_BUILD_REF -check_env CI_BUILD_REF_NAME -check_pass PYPIUSER -check_pass PYPIPASS -check_pass DOCUSER -check_pass DOCPASS - -# Sets up variables -ARCH=`arch` - -if [ -z "${CONDA_FOLDER}" ]; then - if [ "${ARCH}" == "linux" ]; then - CONDA_FOLDER=/local/conda - else - CONDA_FOLDER=/opt/conda - fi -fi - -if [ -z "${CONDA_PREFIX}" ]; then - CONDA_PREFIX=env -fi - -if [ -z "${DOCSERVER}" ]; then - DOCSERVER=https://www.idiap.ch -fi - -PREFIX=${CI_PROJECT_DIR}/${CONDA_PREFIX} - -# Add "-coverage" support -if [ "${ARCH}" == "linux" ]; then - # Temporary hack to get building done right with gcc-5 compilers - if [ -z "${CFLAGS}" ]; then - CFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -coverage" - else - CFLAGS="${CFLAGS} -D_GLIBCXX_USE_CXX11_ABI=0 -coverage" - fi - CXXFLAGS=${CFLAGS} -else - if [ -z "${CFLAGS}" ]; then - CFLAGS="-coverage" - else - CFLAGS="${CFLAGS} -coverage" - fi - CXXFLAGS=${CFLAGS} -fi - -PYVER=py$(echo ${PYTHON_VERSION} | tr -d '.') -BOB_PREFIX_PATH=${CONDA_FOLDER}/envs/bob-devel-${PYVER} -LD_LIBRARY_PATH=${BOB_PREFIX_PATH}/lib - -if [ -z "${PYPISERVER}" ]; then - PYPISERVER="https://pypi.python.org/pypi" -fi - -TESTSERVER=https://testpypi.python.org/pypi - -check_env ARCH -check_env PYVER -check_env PREFIX -export_env CFLAGS -export_env CXXFLAGS -check_env DOCSERVER -check_env PYPISERVER -check_env TESTSERVER -check_env CONDA_FOLDER -check_env CONDA_PREFIX -export_env LD_LIBRARY_PATH -export_env BOB_PREFIX_PATH - -if [ -z "${CI_BUILD_TAG}" ]; then - BOB_DOCUMENTATION_SERVER="${DOCSERVER}/software/bob/docs/latest/bob/%s/master/" - export_env BOB_DOCUMENTATION_SERVER -else - log_info "Building tag, not setting BOB_DOCUMENTATION_SERVER" -fi - -# taken from here: https://stackoverflow.com/questions/3685970/check-if-an-array-contains-a-value -contains_element () { - local e - for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done - return 1 -} diff --git a/_ci/install.sh b/_ci/install.sh deleted file mode 100755 index 8adb34b7f3cebf8ad4ab118feaefe90726231282..0000000000000000000000000000000000000000 --- a/_ci/install.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 13:05:54 CEST - -# Installation script for our build tools - -if [ "${#}" -ne 1 ]; then - echo "usage: ${0} <ci-support-directory>" - echo "example: ${0} _ci" - exit 1 -fi - - -# Functions for coloring echo commands -log_info() { - echo -e "(`date +%T`) \033[1;34m${@}\033[0m" -} - - -log_error() { - echo -e "(`date +%T`) \033[1;31mError: ${@}\033[0m" -} - - -# Function for running command and echoing results -run_cmd() { - log_info "$ ${@}" - ${@} - local status=$? - if [ ${status} != 0 ]; then - log_error "Command Failed \"${@}\"" - exit ${status} - fi -} - - -get_script() { - local url="https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/${2}" - local curlopt="--location --silent --show-error --output ${1}/${2}" - if [ -e ${1}/${2} ]; then - rm -f ${1}/${2} - fi - run_cmd curl ${curlopt} ${url} -} - - -get_exec() { - get_script ${1} ${2} - run_cmd chmod 755 ${1}/${2} -} - - -run_cmd mkdir -pv ${1} -get_script ${1} functions.sh -get_exec ${1} install.sh -for stage in "build" "test" "docs" "wheels" "deploy"; do - get_exec ${1} before_${stage}.sh - get_exec ${1} ${stage}.sh - get_exec ${1} after_${stage}.sh -done -get_exec ${1} update_feedstock.py diff --git a/_ci/test.sh b/_ci/test.sh deleted file mode 100755 index e544b7ef5e81d6aa26e1b2ac5890e80e33f7af90..0000000000000000000000000000000000000000 --- a/_ci/test.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash -# Wed 21 Sep 2016 13:08:05 CEST - -source $(dirname ${0})/functions.sh - -run_cmd cd ${PREFIX} - -NIGHTLIES=$1 - -# The tests: -if [ "$NIGHTLIES" -eq '' ]; then - run_cmd ${PREFIX}/bin/python ${BOB_PREFIX_PATH}/bin/coverage run --source=${CI_PROJECT_NAME} ${BOB_PREFIX_PATH}/bin/nosetests -sv ${CI_PROJECT_NAME} - run_cmd ${PREFIX}/bin/python ${BOB_PREFIX_PATH}/bin/coverage report - run_cmd ${PREFIX}/bin/python ${BOB_PREFIX_PATH}/bin/sphinx-build -b doctest ${CI_PROJECT_DIR}/doc ${CI_PROJECT_NAME}/sphinx -else - run_cmd ${PREFIX}/bin/python ${BOB_PREFIX_PATH}/bin/coverage run --source=bob ${BOB_PREFIX_PATH}/bin/nosetests -sv bob - run_cmd ${PREFIX}/bin/python ${BOB_PREFIX_PATH}/bin/coverage report -fi - -run_cmd cd ${CI_PROJECT_DIR} diff --git a/_ci/update_feedstock.py b/_ci/update_feedstock.py deleted file mode 100755 index cbdfdac1cbedc386539ebe6be899f4b09290f208..0000000000000000000000000000000000000000 --- a/_ci/update_feedstock.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/env python - -import hashlib -try: - from urllib2 import urlopen -except ImportError: - from urllib.request import urlopen -import requests -import json -try: - from packaging.version import parse -except ImportError: - from pip._vendor.packaging.version import parse -import re -import tempfile -import shutil -import os -import subprocess - -URL_PATTERN = 'https://pypi.python.org/pypi/{package}/json' - - -def run_commands(*calls): - """runs the given commands.""" - # get all calls - for call in calls: - print(' - ' + ' '.join(call)) - # execute call - if subprocess.call(call): - # call failed (has non-zero exit status) - raise ValueError("Command '%s' failed; stopping" % ' '.join(call)) - - -def get_version(package, url_pattern=URL_PATTERN): - """Return version of package on pypi.python.org using json.""" - req = requests.get(url_pattern.format(package=package)) - version = parse('0') - if req.status_code == requests.codes.ok: - j = json.loads(req.text) - if 'releases' in j: - releases = j['releases'] - for release in releases: - ver = parse(release) - if not ver.is_prerelease: - version = max(version, ver) - return str(version) - - -def get_remote_md5_sum(url, max_file_size=100 * 1024 * 1024): - remote = urlopen(url) - hash = hashlib.md5() - - total_read = 0 - while True: - data = remote.read(4096) - total_read += 4096 - - if not data or total_read > max_file_size: - break - hash.update(data) - - return hash.hexdigest() - - -def main(package, direct_push=False): - stable_version = get_version(package) - print('latest stable version for {} is {}'.format(package, stable_version)) - url = 'https://pypi.io/packages/source/{0}/{1}/{1}-{2}.zip'.format( - package[0], package, stable_version) - try: - md5 = get_remote_md5_sum(url) - except Exception: - raise - temp_dir = tempfile.mkdtemp() - try: - print("\nClonning the feedstock") - feedstock = os.path.join(temp_dir, '{}-feedstock'.format(package)) - try: - run_commands( - ['git', 'clone', - 'git@github.com:conda-forge/{}-feedstock.git'.format(package), - feedstock]) - except ValueError: - print("\nThe feedstock does not exist on conda-forge. Exiting ...") - raise - os.chdir(feedstock) - if not direct_push: - run_commands( - ['git', 'remote', 'add', 'bioidiap', - 'git@github.com:bioidiap/{}-feedstock.git'.format(package)], - ['git', 'checkout', '-b', stable_version]) - # update meta.yaml - with open('recipe/meta.yaml') as f: - doc = f.read() - if package == 'bob.math': - build_number = '200' - else: - build_number = '0' - doc = re.sub(r'\{\s?%\s?set\s?version\s?=\s?".*"\s?%\s?\}', - '{% set version = "' + str(stable_version) + '" %}', - doc, count=1) - doc = re.sub(r'\s+number\:\s?[0-9]+', '\n number: ' + build_number, doc, - count=1) - doc = re.sub(r'\{\s?%\s?set\s?build_number\s?=\s?"[0-9]+"\s?%\s?\}', - '{% set build_number = "' + build_number + '" %}', - doc, count=1) - doc = re.sub(r'\s+md5\:.*', '\n md5: {}'.format(md5), doc, count=1) - doc = re.sub(r'\s+url\:.*', - '\n url: {}'.format( - url.replace(stable_version, '{{ version }}')), - doc, count=1) - doc = re.sub(r'\s+home\:.*', - '\n home: https://www.idiap.ch/software/bob/', - doc, count=1) - - if package == 'bob': - requrl = 'https://gitlab.idiap.ch/bob/bob/raw/master/requirements.txt' - remote = requests.get(requrl) - req = remote.content.decode() - req = '\n - '.join(req.replace('== ', '==').strip().split('\n')) - be_id = doc.find('bob.extension') - te_id = doc.find('test:\n', be_id) - template = '''{req} - - run: - - python - - {req} - -'''.format(req=req) - doc = doc[:be_id] + template + doc[te_id:] - - with open('recipe/meta.yaml', 'w') as f: - f.write(doc) - - conda_smithy_path = '' - if os.path.isdir('/local/conda/bin/'): - conda_smithy_path = '/local/conda/bin/' - run_commands([conda_smithy_path+'conda-smithy', 'rerender'], - ['git', '--no-pager', 'diff'], - ['git', 'add', '-A']) - try: - run_commands(['git', 'commit', '-am', - 'Update to version {}'.format(stable_version)]) - except ValueError: - print('Feedstock is already uptodate, skipping.') - return - if direct_push: - print(feedstock) - try: - answer = raw_input('Would you like to push directly to master?').lower() - except Exception: - answer = input('Would you like to push directly to master?').lower() - if answer.startswith('y') or answer == '': - run_commands(['git', 'push']) - print('See the changes at:\n' - 'https://github.com/conda-forge/' - '{}-feedstock/commits/master\n\n'.format(package)) - else: - run_commands(['git', 'push', '--force', '--set-upstream', - 'bioidiap', stable_version], - ['hub', 'pull-request', '-b', 'conda-forge:master', - '-h', 'bioidiap:{}'.format(stable_version), - '-m', 'Update to version {}'.format(stable_version)]) - finally: - shutil.rmtree(temp_dir) - - -if __name__ == '__main__': - import sys - pkg = sys.argv[1] - main(pkg) diff --git a/_ci/wheels.sh b/_ci/wheels.sh deleted file mode 100755 index 34fb958f109f24c281b06cc3dcc437f6ed6dfe4c..0000000000000000000000000000000000000000 --- a/_ci/wheels.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash -# Thu 22 Sep 2016 13:58:56 CEST - -source $(dirname ${0})/functions.sh - -for file in dist/*.whl; do - doc_upload ${file} software/bob/wheels-upload/gitlab/ -done diff --git a/bootstrap-buildout.py b/bootstrap-buildout.py deleted file mode 100644 index a629566735c1c84fbec7173f0f30015b2b432512..0000000000000000000000000000000000000000 --- a/bootstrap-buildout.py +++ /dev/null @@ -1,189 +0,0 @@ -############################################################################## -# -# Copyright (c) 2006 Zope Foundation and Contributors. -# All Rights Reserved. -# -# This software is subject to the provisions of the Zope Public License, -# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. -# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED -# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS -# FOR A PARTICULAR PURPOSE. -# -############################################################################## -"""Bootstrap a buildout-based project - -Simply run this script in a directory containing a buildout.cfg. -The script accepts buildout command-line options, so you can -use the -c option to specify an alternate configuration file. -""" - -import os -import shutil -import sys -import tempfile - -from optparse import OptionParser - -tmpeggs = tempfile.mkdtemp() - -usage = '''\ -[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] - -Bootstraps a buildout-based project. - -Simply run this script in a directory containing a buildout.cfg, using the -Python that you want bin/buildout to use. - -Note that by using --find-links to point to local resources, you can keep -this script from going over the network. -''' - -parser = OptionParser(usage=usage) -parser.add_option("-v", "--version", help="use a specific zc.buildout version") - -parser.add_option("-t", "--accept-buildout-test-releases", - dest='accept_buildout_test_releases', - action="store_true", default=False, - help=("Normally, if you do not specify a --version, the " - "bootstrap script and buildout gets the newest " - "*final* versions of zc.buildout and its recipes and " - "extensions for you. If you use this flag, " - "bootstrap and buildout will get the newest releases " - "even if they are alphas or betas.")) -parser.add_option("-c", "--config-file", - help=("Specify the path to the buildout configuration " - "file to be used.")) -parser.add_option("-f", "--find-links", - help=("Specify a URL to search for buildout releases")) -parser.add_option("--allow-site-packages", - action="store_true", default=False, - help=("Let bootstrap.py use existing site packages")) -parser.add_option("--setuptools-version", - help="use a specific setuptools version") - - -options, args = parser.parse_args() - -###################################################################### -# load/install setuptools - -try: - if options.allow_site_packages: - import setuptools - import pkg_resources - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -ez = {} -exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) - -if not options.allow_site_packages: - # ez_setup imports site, which adds site packages - # this will remove them from the path to ensure that incompatible versions - # of setuptools are not in the path - import site - # inside a virtualenv, there is no 'getsitepackages'. - # We can't remove these reliably - if hasattr(site, 'getsitepackages'): - for sitepackage_path in site.getsitepackages(): - sys.path[:] = [x for x in sys.path if sitepackage_path not in x] - -setup_args = dict(to_dir=tmpeggs, download_delay=0) - -if options.setuptools_version is not None: - setup_args['version'] = options.setuptools_version - -ez['use_setuptools'](**setup_args) -import setuptools -import pkg_resources - -# This does not (always?) update the default working set. We will -# do it. -for path in sys.path: - if path not in pkg_resources.working_set.entries: - pkg_resources.working_set.add_entry(path) - -###################################################################### -# Install buildout - -ws = pkg_resources.working_set - -cmd = [sys.executable, '-c', - 'from setuptools.command.easy_install import main; main()', - '-mZqNxd', tmpeggs] - -find_links = os.environ.get( - 'bootstrap-testing-find-links', - options.find_links or - ('http://downloads.buildout.org/' - if options.accept_buildout_test_releases else None) - ) -if find_links: - cmd.extend(['-f', find_links]) - -setuptools_path = ws.find( - pkg_resources.Requirement.parse('setuptools')).location - -requirement = 'zc.buildout' -version = options.version -if version is None and not options.accept_buildout_test_releases: - # Figure out the most recent final version of zc.buildout. - import setuptools.package_index - _final_parts = '*final-', '*final' - - def _final_version(parsed_version): - try: - return not parsed_version.is_prerelease - except AttributeError: - # Older setuptools - for part in parsed_version: - if (part[:1] == '*') and (part not in _final_parts): - return False - return True - - index = setuptools.package_index.PackageIndex( - search_path=[setuptools_path]) - if find_links: - index.add_find_links((find_links,)) - req = pkg_resources.Requirement.parse(requirement) - if index.obtain(req) is not None: - best = [] - bestv = None - for dist in index[req.project_name]: - distv = dist.parsed_version - if _final_version(distv): - if bestv is None or distv > bestv: - best = [dist] - bestv = distv - elif distv == bestv: - best.append(dist) - if best: - best.sort() - version = best[-1].version -if version: - requirement = '=='.join((requirement, version)) -cmd.append(requirement) - -import subprocess -if subprocess.call(cmd, env=dict(os.environ, PYTHONPATH=setuptools_path)) != 0: - raise Exception( - "Failed to execute command:\n%s" % repr(cmd)[1:-1]) - -###################################################################### -# Import and run buildout - -ws.add_entry(tmpeggs) -ws.require(requirement) -import zc.buildout.buildout - -if not [a for a in args if '=' not in a]: - args.append('bootstrap') - -# if -c was provided, we push it back into args for buildout' main function -if options.config_file is not None: - args[0:0] = ['-c', options.config_file] - -zc.buildout.buildout.main(args) -shutil.rmtree(tmpeggs) diff --git a/build.sh b/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..0145713837b6fd0cc544ed3cc63caf65aacfbebc --- /dev/null +++ b/build.sh @@ -0,0 +1,132 @@ +#!/bin/bash +# Andre Anjos <andre.anjos@idiap.ch> +# Thu 22 Dec 2016 09:31:34 CET + +if [ $# != 4 ]; then + echo "Runs the nightly builds by setting environment variables and" + echo "proceeding in the order establish in the provided text file" + echo "usage: $0 <order.txt> <python-version> [<conda-root> [<env-name>]]" + echo "example: $0 core.txt 2.7 #ci paths and structure" + echo "example: $0 core.txt 2.7 /opt/conda #changes conda root" + echo "example: $0 core.txt 2.7 /opt/conda bob-devel-py27 #be specific" + exit 1 +fi + +# Some required variables +PYTHON_VERSION=$2 +basedir=`realpath .` + +# Download stock build scripts +if [ ! -d _ci ]; then + mkdir _ci +fi +curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > ${basedir}/_ci/install.sh +chmod 755 ${basedir}/_ci/install.sh +${basedir}/_ci/install.sh _ci + +# Defines some required defaults, if they are not set by the CI +CI_PROJECT_DIR="${CI_PROJECT_DIR:-${basedir}}" +CI_PROJECT_NAME="${CI_PROJECT_NAME:-$(basename ${basedir})}" +CI_PROJECT_NAMESPACE="${CI_PROJECT_NAMESPACE:-bob}" +CI_PROJECT_PATH="${CI_PROJECT_PATH:-${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}}" +CI_BUILD_REF="${CI_BUILD_REF:-12345678}" +CI_BUILD_REF_NAME="${CI_BUILD_REF_NAME:-@local}" +CI_PROJECT_URL="${CI_PROJECT_URL:-https://gitlab.idiap.ch/${CI_PROJECT_PATH}}" +PYPIUSER="${PYPIUSER:-unknown}" +PYPIPASS="${PYPIUSER:-unknown}" +DOCUSER="${PYPIUSER:-unknown}" +DOCPASS="${PYPIUSER:-unknown}" + +# Source useful functions +source ${basedir}/_ci/functions.sh + +# Checks some extra settings +check_env CI_PROJECT_URL + +# Overrides some stuff +if [ "${CI_BUILD_REF_NAME}" == "@local" ]; then + log_info "Overwriting CONDA_FOLDER since in @local build..." + if [ -n "$3" ]; then CONDA_FOLDER=$3; fi + if [ -n "$4" ]; then BOB_PREFIX_PATH=${CONDA_FOLDER}/envs/$4; fi + LD_LIBRARY_PATH=${BOB_PREFIX_PATH}/lib + export_env CONDA_FOLDER + export_env LD_LIBRARY_PATH + export_env BOB_PREFIX_PATH +fi + +log_info "Exporting variables for subsequent builds..." +export_env CI_PROJECT_DIR +export_env CI_PROJECT_NAME +export_env CI_PROJECT_NAMESPACE +export_env CI_PROJECT_PATH +export_env CI_BUILD_REF +export_env CI_BUILD_REF_NAME +export_env CI_PROJECT_URL +export_env PYPIUSER +export_env PYPIPASS +export_env DOCUSER +export_env DOCPASS +export_env PYTHON_VERSION + +# Prepares wheel container +WHEELS_DIR=${basedir}/dist +if [ ! -d ${WHEELS_DIR} ]; then + run_cmd mkdir -pv ${WHEELS_DIR} + run_cmd rm -fv ${WHEELS_DIR}/* +fi + +log_info "Running builds for all packages in \`$1'..." + +for f in `cat $1`; do + + run_cmd cd ${basedir} + + log_info "Building $f..."; + + # Setup project variables + CI_PROJECT_DIR=${basedir}/src + CI_PROJECT_PATH=${CI_PROJECT_NAMESPACE}/${f} + CI_PROJECT_NAME=${f} + WHEELS_REPOSITORY=${WHEELS_DIR} + export_env CI_PROJECT_DIR + export_env CI_PROJECT_PATH + export_env CI_PROJECT_NAME + export_env WHEELS_REPOSITORY + + rm -rf ${CI_PROJECT_DIR} + run_cmd git clone --depth 1 $(dirname ${CI_PROJECT_URL})/${f} ${CI_PROJECT_DIR} + run_cmd cd ${CI_PROJECT_DIR} + run_cmd ln -s ${basedir}/_ci . + + # Define WHEEL_TAG if defined on the package's CI yaml file + if [ $(grep -c WHEEL_TAG ${CI_PROJECT_DIR}/.gitlab-ci.yml) -gt 0 ]; then + # Python-only package, need to define the WHEEL_TAG + case ${PYTHON_VERSION} in + 2.7) + WHEEL_TAG=py27 + ;; + 3.*) + WHEEL_TAG=py3 + ;; + *) + log_error "Python version ${PYTHON_VERSION} is unsupported"; + exit 1 + ;; + esac + export_env WHEEL_TAG + else + unset WHEEL_TAG + fi + + # Runs the whole shebang + run_cmd ./_ci/before_build.sh + run_cmd ./_ci/build.sh + #run_cmd ./_ci/before_test.sh + #run_cmd ./_ci/test.sh + + # Copies the generated wheel to our provisional wheels repository + run_cmd cp -fv dist/*.whl ${WHEELS_DIR}/ + + run_cmd cd ${basedir} + +done diff --git a/buildout-bob.cfg b/buildout-bob.cfg deleted file mode 100644 index bf49a6a2185cfee722fd610276b7b869caac0ef0..0000000000000000000000000000000000000000 --- a/buildout-bob.cfg +++ /dev/null @@ -1,40 +0,0 @@ -; vim: set fileencoding=utf-8 : -; Andre Anjos <andre.bioidiap@idiap.ch> -; Mon 16 Apr 08:29:18 2012 CEST - -[buildout] -parts = scripts - -extensions = bob.buildout - mr.developer - -auto-checkout = * - -; options for bob.buildout extension -newest = false -debug = false -verbose = true - - -develop = src/bob.buildout - src/bob.extension - src/bob.blitz - src/bob.core - src/bob.io.base - -eggs = bob.extension - bob.blitz - bob.core - bob.io.base - -[sources] -bob.buildout = git https://gitlab.idiap.ch/bob/bob.buildout -bob.extension = git https://gitlab.idiap.ch/bob/bob.extension -bob.blitz = git https://gitlab.idiap.ch/bob/bob.blitz -bob.core = git https://gitlab.idiap.ch/bob/bob.core -bob.io.base = git https://gitlab.idiap.ch/bob/bob.io.base - - -[scripts] -recipe = bob.buildout:scripts - diff --git a/buildout-satellites.cfg b/buildout-satellites.cfg deleted file mode 100644 index ad56313d4190e42e77398f5e2b15854259aa1272..0000000000000000000000000000000000000000 --- a/buildout-satellites.cfg +++ /dev/null @@ -1,125 +0,0 @@ -; vim: set fileencoding=utf-8 : -; Andre Anjos <andre.bioidiap@idiap.ch> -; Mon 16 Apr 08:29:18 2012 CEST - -[buildout] - -parts = scripts - -extensions = bob.buildout - mr.developer -auto-checkout = * - -; options for bob.buildout extension -newest = false -debug = false -verbose = true - - -develop = src/bob.db.bio_filelist - src/bob.db.banca - src/bob.db.biosecure - src/bob.db.caspeal - src/bob.db.frgc - src/bob.db.gbu - src/bob.db.lfw - src/bob.db.mobio - src/bob.db.multipie - src/bob.db.scface - src/bob.db.xm2vts - src/bob.db.youtube - src/bob.db.voxforge - src/bob.db.utfvp - src/bob.db.livdet2013 - src/bob.db.atvskeystroke - src/bob.db.biosecurid.face - src/bob.db.casme2 - src/bob.db.replay - src/bob.db.biowave_test - src/bob.db.verafinger - src/bob.bio.base - src/bob.bio.gmm - src/bob.bio.spear - src/bob.bio.face - src/bob.bio.video - src/bob.db.msu_mfsd_mod - src/bob.db.avspoof - src/bob.db.asvspoof - src/bob.db.kboc16 - src/bob.db.putvein - src/bob.db.cuhk_cufs - src/gridtk - -eggs = bob.db.bio_filelist - bob.db.banca - bob.db.biosecure - bob.db.caspeal - bob.db.frgc - bob.db.gbu - bob.db.lfw - bob.db.mobio - bob.db.multipie - bob.db.scface - bob.db.xm2vts - bob.db.youtube - bob.db.voxforge - bob.db.utfvp - bob.db.livdet2013 - bob.db.atvskeystroke - bob.db.biosecurid.face - bob.db.casme2 - bob.db.replay - bob.db.biowave_test - bob.db.verafinger - bob.bio.base - bob.bio.gmm - bob.bio.spear - bob.bio.face - bob.bio.video - bob.db.msu_mfsd_mod - bob.db.avspoof - bob.db.asvspoof - bob.db.kboc16 - bob.db.putvein - bob.db.cuhk_cufs - gridtk - - -[sources] -bob.db.bio_filelist = git https://gitlab.idiap.ch/bob/bob.db.bio_filelist -bob.db.banca = git https://gitlab.idiap.ch/bob/bob.db.banca -bob.db.biosecure = git https://gitlab.idiap.ch/bob/bob.db.biosecure -bob.db.caspeal = git https://gitlab.idiap.ch/bob/bob.db.caspeal -bob.db.frgc = git https://gitlab.idiap.ch/bob/bob.db.frgc -bob.db.gbu = git https://gitlab.idiap.ch/bob/bob.db.gbu -bob.db.lfw = git https://gitlab.idiap.ch/bob/bob.db.lfw -bob.db.mobio = git https://gitlab.idiap.ch/bob/bob.db.mobio -bob.db.multipie = git https://gitlab.idiap.ch/bob/bob.db.multipie -bob.db.scface = git https://gitlab.idiap.ch/bob/bob.db.scface -bob.db.xm2vts = git https://gitlab.idiap.ch/bob/bob.db.xm2vts -bob.db.youtube = git https://gitlab.idiap.ch/bob/bob.db.youtube -bob.db.voxforge = git https://gitlab.idiap.ch/bob/bob.db.voxforge -bob.db.utfvp = git https://gitlab.idiap.ch/bob/bob.db.utfvp -bob.db.livdet2013 = git https://gitlab.idiap.ch/bob/bob.db.livdet2013 -bob.db.atvskeystroke = git https://gitlab.idiap.ch/bob/bob.db.atvskeystroke -bob.db.biosecurid.face = git https://gitlab.idiap.ch/bob/bob.db.biosecurid.face -bob.db.casme2 = git https://gitlab.idiap.ch/bob/bob.db.casme2 -bob.db.replay = git https://gitlab.idiap.ch/bob/bob.db.replay -bob.db.biowave_test = git https://gitlab.idiap.ch/bob/bob.db.biowave_test -bob.db.verafinger = git git@gitlab.idiap.ch:bob/bob.db.verafinger -bob.bio.base = git https://gitlab.idiap.ch/bob/bob.bio.base -bob.bio.gmm = git https://gitlab.idiap.ch/bob/bob.bio.gmm -bob.bio.spear = git https://gitlab.idiap.ch/bob/bob.bio.spear -bob.bio.face = git https://gitlab.idiap.ch/bob/bob.bio.face -bob.bio.video = git https://gitlab.idiap.ch/bob/bob.bio.video -bob.db.msu_mfsd_mod = git https://gitlab.idiap.ch/bob/bob.db.msu_mfsd_mod -bob.db.avspoof = git https://gitlab.idiap.ch/bob/bob.db.avspoof -bob.db.asvspoof = git https://gitlab.idiap.ch/bob/bob.db.asvspoof -bob.db.kboc16 = git https://gitlab.idiap.ch/bob/bob.db.kboc16 -bob.db.putvein = git https://gitlab.idiap.ch/bob/bob.db.putvein -bob.db.cuhk_cufs = git https://gitlab.idiap.ch/bob/bob.db.cuhk_cufs -gridtk = git https://gitlab.idiap.ch/bob/gridtk - -[scripts] -recipe = bob.buildout:scripts - diff --git a/buildout.cfg b/buildout.cfg deleted file mode 100644 index d8e5ba3fb963cc0a55574d6e0340fbe8f1a66791..0000000000000000000000000000000000000000 --- a/buildout.cfg +++ /dev/null @@ -1,20 +0,0 @@ -; vim: set fileencoding=utf-8 : -; Andre Anjos <andre.bioidiap@idiap.ch> -; Mon 16 Apr 08:29:18 2012 CEST - -[buildout] -parts = scripts -extends = buildout-satellites.cfg - -extensions = bob.buildout - mr.developer -auto-checkout = * - - -; options for bob.buildout extension -newest = false -debug = false -verbose = true - -[scripts] -recipe = bob.buildout:scripts diff --git a/conf.py b/conf.py deleted file mode 100644 index 4bef390661368979ab17caa1867ce45a44ac2176..0000000000000000000000000000000000000000 --- a/conf.py +++ /dev/null @@ -1,260 +0,0 @@ - - -#!/usr/bin/env python -# vim: set fileencoding=utf-8 : -# Andre Anjos <andre.anjos@idiap.ch> -# Tue 15 Oct 16:37:18 2013 CEST -# -# Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland - -import os -import sys -import glob -import pkg_resources - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = [ - 'sphinx.ext.todo', - 'sphinx.ext.coverage', - 'sphinx.ext.pngmath', - 'sphinx.ext.ifconfig', - 'sphinx.ext.autodoc', - 'sphinx.ext.autosummary', - 'sphinx.ext.doctest', - 'sphinx.ext.intersphinx', - 'matplotlib.sphinxext.plot_directive', - ] - -# The viewcode extension appeared only on Sphinx >= 1.0.0 -import sphinx -if sphinx.__version__ >= "1.0": - extensions.append('sphinx.ext.viewcode') - -# Always includes todos -todo_include_todos = True - -# If we are on OSX, the 'dvipng' path maybe different -dvipng_osx = '/opt/local/libexec/texlive/binaries/dvipng' -if os.path.exists(dvipng_osx): pngmath_dvipng = dvipng_osx - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Bob' -import time -copyright = u'%s, Idiap Research Institute' % time.strftime('%Y') - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.0.1' -# The full version, including alpha/beta/rc tags. -release = version - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['**/links.rst', '**/README.rst', 'README.rst', 'TODO.rst', '**/examples/**/index.rst'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -if sphinx.__version__ >= "1.0": - html_theme = 'nature' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# "<project> v<release> documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = 'bob' - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -html_logo = 'img/logo.png' - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -html_favicon = 'img/favicon.ico' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a <link> tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'bob_doc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -latex_paper_size = 'a4' - -# The font size ('10pt', '11pt' or '12pt'). -latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'bob.tex', u'Bob/Python Documentation', - u'Biometrics Group, Idiap Research Institute', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -latex_logo = '' - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - -# Included after all input documents -rst_epilog = """ -.. |project| replace:: Bob -.. |url| replace:: https://www.idiap.ch/software/bob/ -.. |version| replace:: %s -.. |current-year| date:: %%Y -""" % (version,) - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'bob', u'Bob/Python Documentation', [u'Idiap Research Institute'], 1) -] - -# Default processing flags for sphinx -autoclass_content = 'both' -autodoc_member_order = 'bysource' -autodoc_default_flags = ['members', 'undoc-members', 'inherited-members', 'show-inheritance'] - -# For inter-documentation mapping: -from bob.extension.utils import link_documentation -intersphinx_mapping = link_documentation(additional_packages = ['python', 'numpy', 'scipy', 'gridtk'], requirements_file = None) - - -def setup(app): - pass - - diff --git a/core.txt b/core.txt new file mode 100644 index 0000000000000000000000000000000000000000..9010f29db772f4295e6f75b761e5ec1f9cd30e45 --- /dev/null +++ b/core.txt @@ -0,0 +1,31 @@ +bob.extension +bob.blitz +bob.core +bob.io.base +bob.sp +bob.ap +bob.math +bob.measure +bob.db.base +bob.io.audio +bob.io.image +bob.io.video +bob.io.matlab +bob.ip.base +bob.ip.color +bob.ip.draw +bob.ip.gabor +bob.learn.activation +bob.learn.libsvm +bob.learn.linear +bob.learn.mlp +bob.learn.em +bob.learn.boosting +bob.db.iris +bob.db.wine +bob.db.mnist +bob.db.atnt +bob.ip.facedetect +bob.ip.optflow.hornschunk +bob.ip.optflow.liu +bob.ip.flandmark diff --git a/dependencies.png b/dependencies.png deleted file mode 100644 index 653890d2fdc61c07329aee3e0f642c33dc5aea3f..0000000000000000000000000000000000000000 Binary files a/dependencies.png and /dev/null differ diff --git a/requirements-satellites.txt b/extras.txt similarity index 100% rename from requirements-satellites.txt rename to extras.txt diff --git a/img/favicon.ico b/img/favicon.ico deleted file mode 100644 index 4cc3264302627d40868261add69eb755856611b6..0000000000000000000000000000000000000000 Binary files a/img/favicon.ico and /dev/null differ diff --git a/img/logo.png b/img/logo.png deleted file mode 100644 index b9dd573a01019afd1af58a881996930e5212699d..0000000000000000000000000000000000000000 Binary files a/img/logo.png and /dev/null differ diff --git a/index.rst b/index.rst deleted file mode 100644 index 00f53eea1b538e28e2b59e67279bb34201ba2d66..0000000000000000000000000000000000000000 --- a/index.rst +++ /dev/null @@ -1,179 +0,0 @@ -.. vim: set fileencoding=utf-8 : -.. Andre Anjos <andre.anjos@idiap.ch> -.. Mon 17 Feb 2014 17:40:07 CET -.. -.. Copyright (C) 2011-2014 Idiap Research Institute, Martigny, Switzerland - -======================= - Bob (Python Bindings) -======================= - -.. todolist:: - -Basic Functionality -................... - -.. toctree:: - :maxdepth: 2 - - layers/0/bob.core/doc/index - layers/0/bob.math/doc/index - layers/0/bob.measure/doc/index - -Data Input and Output -..................... - -.. toctree:: - :maxdepth: 2 - - layers/0/bob.io.base/doc/index - layers/1/bob.io.image/doc/index - layers/1/bob.io.matlab/doc/index - layers/1/bob.io.video/doc/index - layers/1/bob.io.audio/doc/index - -Signal, Audio, Image and Video Processing -......................................... - -.. toctree:: - :maxdepth: 2 - - layers/0/bob.ap/doc/index - layers/0/bob.sp/doc/index - layers/1/bob.ip.base/doc/index - layers/1/bob.ip.color/doc/index - layers/1/bob.ip.draw/doc/index - layers/1/bob.ip.gabor/doc/index - layers/2/bob.ip.facedetect/doc/index - layers/2/bob.ip.flandmark/doc/index - layers/2/bob.ip.optflow.hornschunck/doc/index - layers/2/bob.ip.optflow.liu/doc/index - layers/2/bob.ip.skincolorfilter/doc/index - -Machine Learning -................ - -.. toctree:: - :maxdepth: 2 - - layers/1/bob.learn.activation/doc/index - layers/1/bob.learn.boosting/doc/index - layers/1/bob.learn.em/doc/index - layers/1/bob.learn.libsvm/doc/index - layers/1/bob.learn.linear/doc/index - layers/1/bob.learn.mlp/doc/index - -Database Modules -................ - -General databases -................. - -.. toctree:: - :maxdepth: 2 - - layers/0/bob.db.base/doc/index - layers/0/bob.db.bio_filelist/doc/index - layers/0/bob.db.casme2/doc/index - layers/2/bob.db.mnist/doc/index - layers/2/bob.db.wine/doc/index - -Face verification databases -........................... - -.. toctree:: - :maxdepth: 2 - - layers/2/bob.db.arface/doc/index - layers/2/bob.db.atnt/doc/index - layers/2/bob.db.banca/doc/index - layers/2/bob.db.biosecure/doc/index - layers/2/bob.db.biosecurid.face/doc/index - layers/2/bob.db.caspeal/doc/index - layers/2/bob.db.frgc/doc/index - layers/2/bob.db.gbu/doc/index - layers/2/bob.db.lfw/doc/index - layers/2/bob.db.mobio/doc/index - layers/2/bob.db.multipie/doc/index - layers/2/bob.db.scface/doc/index - layers/2/bob.db.xm2vts/doc/index - layers/2/bob.db.youtube/doc/index - layers/2/bob.db.ijba/doc/index - layers/2/bob.db.cuhk_cufs/doc/index - layers/2/bob.db.cbsr_nir_vis_2/doc/index - - - -Speaker verification databases -.............................. - -.. toctree:: - :maxdepth: 2 - - layers/2/bob.db.mobio/doc/index - layers/2/bob.db.nist_sre12/doc/index - layers/2/bob.db.voxforge/doc/index - - -Other biometric databases -......................... - - - layers/2/bob.db.atvskeystroke/doc/index - layers/2/bob.db.kboc16/doc/index - layers/2/bob.db.utfvp/doc/index - layers/2/bob.db.putvein/doc/index - - -Antispoofing packages -..................... - -.. toctree:: - :maxdepth: 2 - - layers/2/bob.db.avspoof/doc/index - layers/2/bob.db.casia_fasd/doc/index - layers/2/bob.db.msu_mfsd_mod/doc/index - layers/2/bob.db.replay/doc/index - - -Example packages -................ - -.. toctree:: - :maxdepth: 2 - - layers/2/bob.db.iris/doc/index - - -Biometric Recognition Packages -.............................. - -.. toctree:: - :maxdepth: 2 - - layers/2/bob.bio.db/doc/index - layers/2/bob.bio.base/doc/index - layers/2/bob.bio.face/doc/index - layers/2/bob.bio.gmm/doc/index - layers/2/bob.bio.spear/doc/index - layers/2/bob.bio.video/doc/index - - -Modules for Developers -...................... - -.. toctree:: - :maxdepth: 2 - - layers/0/bob.buildout/doc/index - layers/0/bob.extension/doc/index - layers/0/bob.blitz/doc/index - - -Indices and tables -.................. - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/plot/detect_single_face.py b/plot/detect_single_face.py deleted file mode 120000 index 8d4df33b53ec062aa723ae24294eb7e403c544ad..0000000000000000000000000000000000000000 --- a/plot/detect_single_face.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.facedetect/doc/plot/detect_single_face.py \ No newline at end of file diff --git a/plot/detect_skin_pixels.py b/plot/detect_skin_pixels.py deleted file mode 120000 index 3ed5e86d98fc9d95b05ede16d9557bb687869d6a..0000000000000000000000000000000000000000 --- a/plot/detect_skin_pixels.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.skincolorfilter/doc/plot/detect_skin_pixels.py \ No newline at end of file diff --git a/plot/disparity.py b/plot/disparity.py deleted file mode 120000 index 3a71fb55484341beb0e8200fd0e3a7d97050a09f..0000000000000000000000000000000000000000 --- a/plot/disparity.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.gabor/doc/plot/disparity.py \ No newline at end of file diff --git a/plot/face_eyes_norm.py b/plot/face_eyes_norm.py deleted file mode 120000 index 6efe7d804f680cbb61599aef6a4df3c3fe15655a..0000000000000000000000000000000000000000 --- a/plot/face_eyes_norm.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.base/doc/plot/face_eyes_norm.py \ No newline at end of file diff --git a/plot/gaussian.py b/plot/gaussian.py deleted file mode 120000 index 231e79b6f76e3ab10406ffe18abff2d9a053daec..0000000000000000000000000000000000000000 --- a/plot/gaussian.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.base/doc/plot/gaussian.py \ No newline at end of file diff --git a/plot/iris_lda.py b/plot/iris_lda.py deleted file mode 120000 index 0d9e10b091e5413ab849743f887cc2a6008bc817..0000000000000000000000000000000000000000 --- a/plot/iris_lda.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.db.iris/doc/plot/iris_lda.py \ No newline at end of file diff --git a/plot/iris_lda_roc.py b/plot/iris_lda_roc.py deleted file mode 120000 index 3dac37a9b6f4230eac9e370e9fe51d86a34fc0db..0000000000000000000000000000000000000000 --- a/plot/iris_lda_roc.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.db.iris/doc/plot/iris_lda_roc.py \ No newline at end of file diff --git a/plot/show_lena.py b/plot/show_lena.py deleted file mode 120000 index 765a745943e7150ba10038c7c967aa702909ba30..0000000000000000000000000000000000000000 --- a/plot/show_lena.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.flandmark/doc/plot/show_lena.py \ No newline at end of file diff --git a/plot/similarity.py b/plot/similarity.py deleted file mode 120000 index 22ffb05428dddfe4b04796bb12def41c5c724fad..0000000000000000000000000000000000000000 --- a/plot/similarity.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.gabor/doc/plot/similarity.py \ No newline at end of file diff --git a/plot/sobel.py b/plot/sobel.py deleted file mode 120000 index e02e0ef41b85bd34f7fb95e39f52c2252a83e599..0000000000000000000000000000000000000000 --- a/plot/sobel.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.base/doc/plot/sobel.py \ No newline at end of file diff --git a/plot/transform.py b/plot/transform.py deleted file mode 120000 index 3e25b52d4c20dee2eb4481f4ed40036b822ce0b8..0000000000000000000000000000000000000000 --- a/plot/transform.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.gabor/doc/plot/transform.py \ No newline at end of file diff --git a/plot/wavelet.py b/plot/wavelet.py deleted file mode 120000 index 57fb967cf446d050c228ac1a5cabc7bb4a53f3c0..0000000000000000000000000000000000000000 --- a/plot/wavelet.py +++ /dev/null @@ -1 +0,0 @@ -../src/bob.ip.gabor/doc/plot/wavelet.py \ No newline at end of file diff --git a/requirements-bob.txt b/requirements-bob.txt deleted file mode 100644 index 4d67b381758d0a079afe620e9d45901c484c4d63..0000000000000000000000000000000000000000 --- a/requirements-bob.txt +++ /dev/null @@ -1,4 +0,0 @@ -bob.extension -bob.blitz -bob.core -bob.io.base diff --git a/setup.py b/setup.py deleted file mode 100644 index be8b192bb4b38dfc0a1478b354c5fc62a7adad66..0000000000000000000000000000000000000000 --- a/setup.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python -# vim: set fileencoding=utf-8 : -# Tiago de Freitas Pereira <tiago.pereira@idiap.ch> -# Tue Apr 24 18:55:40 CEST 2012 - -# This file contains the python (distutils/setuptools) instructions so your -# package can be installed on **any** host system. It defines some basic -# information like the package name for instance, or its homepage. -# -# It also defines which other packages this python package depends on and that -# are required for this package's operation. The python subsystem will make -# sure all dependent packages are installed or will install them for you upon -# the installation of this package. -# -# The 'buildout' system we use here will go further and wrap this package in -# such a way to create an isolated python working environment. Buildout will -# make sure that dependencies which are not yet installed do get installed, but -# **without** requiring administrative privileges on the host system. This -# allows you to test your package with new python dependencies w/o requiring -# administrative interventions. - -from setuptools import setup, find_packages - -requeriments = [l.rstrip("\n") for l in open("requirements-bob.txt", 'r').readlines()] -#requeriments = requeriments + [l.rstrip("\n") for l in open("requirements-satellites.txt", 'r').readlines()] - -# The only thing we do in this file is to call the setup() function with all -# parameters that define our package. -setup( - - # This is the basic information about your project. Modify all this - # information before releasing code publicly. - name='bob.nightlies', - version='0.0.1', - description='Bob is a free signal-processing and machine learning toolbox originally developed by the Biometrics group at Idiap Research Institute, in Switzerland.', - url='http://idiap.github.io/bob/', - license='BSD', - author='IDIAP Biometrics Group', - author_email='biometric@idiap.ch', - - long_description=open('README.rst').read(), - - # This line is required for any distutils based packaging. - packages=find_packages(), - include_package_data=True, - zip_safe=False, - - # This line defines which packages should be installed when you "install" - # this package. All packages that are mentioned here, but are not installed - # on the current system will be installed locally and only visible to the - # scripts of this package. Don't worry - You won't need administrative - # privileges when using buildout. - install_requires=["setuptools"] + requeriments, - - classifiers = [ - 'Development Status :: 5 - Production/Stable', - 'License :: OSI Approved :: BSD License', - 'Intended Audience :: Education', - 'Intended Audience :: Science/Research', - 'Natural Language :: English', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - ], - -) diff --git a/tools/SuppressBuildbotWarnings.txt b/tools/SuppressBuildbotWarnings.txt deleted file mode 100644 index 9a60a0022809596154496209be7921e3c58492da..0000000000000000000000000000000000000000 --- a/tools/SuppressBuildbotWarnings.txt +++ /dev/null @@ -1,11 +0,0 @@ -# Warnings that should be suppressed at Buildbot - no solution for those... -.* : .*arg is not a Python function.* -.* : ^\s*1.*This is a warning message.* -.* : .*LaTeX Warning:\s+.* -.* : .*Package\s+\S+\s+Warning:.* -.* : .*unusable reference target found: \.\./\.\./doxygen/html/index.html.* -.* : .*no files found matching '\*\.sql3' under directory 'bob'.* -.* : .*dereferencing type-punned pointer will break strict-aliasing rules.* -.*: .*: .*standard file.*-c.*not found.* -.*: .*no previously-included files matching .* found anywhere in distribution.* -.*: WARNING: duplicate citation .*, other instance in.* diff --git a/tools/build_bob_stable.sh b/tools/build_bob_stable.sh deleted file mode 100755 index c8af9ba34a0f5e467000d1a1a54b686ef49287ce..0000000000000000000000000000000000000000 --- a/tools/build_bob_stable.sh +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/bash -# Manuel Gunther <siebenkopf@googlemail.com> -# Thu Dec 3 10:41:06 MST 2015 - - -# parameters: -# - BUILD_DEPENDENCIES (0: off, 1: basics, 2: +py3, 3: +utils) -BUILD_DEPENDENCIES=0 - -# - VERSIONS the pythobn versions that you want; the py27-debug requires the externals directory in /idiap/group/torch5spro/externals -VERSIONS="py27 py27-debug py34" - -# - LAYERS the layers of bob.nigtlies to install -LAYERS="0 1 2" - -# - PARALLEL the number of parallel threads to use (only for bob packages) -PARALLEL=4 - -# - SERVER where bob.nightlies files can be found -SERVER=https://gitlab.idiap.ch/biometric/bob.nightlies/raw/master/ - - -# FIRST, make sure that all the dependencies are installed -# this needs sudo permissions, but can be left out, when these dependencies are already installed -if [ $BUILD_DEPENDENCIES -gt 0 ]; then - sudo add-apt-repository ppa:biometrics/bob - sudo apt-get update - sudo apt-get install wget git-core pkg-config cmake python-dev python-support python-pip python-virtualenv liblapack-dev libatlas-base-dev libblitz1-dev libavformat-dev libavcodec-dev libswscale-dev libboost-all-dev libmatio-dev libjpeg8-dev libnetpbm10-dev libpng12-dev libtiff4-dev libgif-dev libhdf5-serial-dev libfftw3-dev texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended libsvm-dev libvl-dev dvipng python-numpy python-scipy dvipng libopencv-dev ccache libsox-dev -fi - -# for python3 you'll need extra: -if [ $BUILD_DEPENDENCIES -gt 1 ]; then - sudo apt-get install python3-dev -fi - -# a good idea is: -if [ $BUILD_DEPENDENCIES -gt 2 ]; then - sudo apt-get install hdf5-tools hdfview kdiff3 -fi - - -# SECOND: get information from server, if not there yet -# - virtual_build.sh -if [ ! -f virtual-build.sh ]; then - wget --no-check-certificate $SERVER/tools/virtual-build.sh - chmod u+x virtual-build.sh -fi - -# - the requirements files of the layers -#for l in ${LAYERS}; do -# if [ ! -f requirements${l}.txt ]; then -# wget --no-check-certificate $SERVER/requirements${l}.txt -# fi -#done -if [ ! -f requirements.txt ]; then - wget --no-check-certificate $SERVER/requirements.txt -fi - - - - -# THIRD create bob-stable-$DATE directory -DATE=`date +%Y-%m-%d` -DIR="bob-stable-${DATE}" - -# external requirements, which will be installed using pip before installing Bob packages -# (not for the py27-debug build, though) -echo -e "nose" > forced_requirements.txt -echo -e "numpy\nscipy\nmatplotlib\nsqlalchemy\nsix\ncoveralls\ngridtk\nmr.developer\nipdb\nsphinx" > extra_requirements.txt - - -status=0 - -# run virtual build for the desired python versions -for v in ${VERSIONS}; do - - if [ ! -d $DIR/${v} ]; then - mkdir -p $DIR/${v}/logs - fi - - if [ "$v" == "py27-debug" ]; then - # for py27-debug, we use the externals created in /idiap/group/torch5spro/externals/py27-debug/usr, which include a pre-compiled python version in debug mode - o=debug - export BOB_PREFIX_PATH=/idiap/group/torch5spro/externals/${v}/usr - exe="-x $BOB_PREFIX_PATH/bin/virtualenv" - python="" - else - # for release builds, we do not need any externals, but we need to install other python dependencies - o=release - exe="" - python=${v:0:3}.${v:3} - python="-P /usr/bin/${python/py/python}" - - # first, build other dependencies like numpy, scipy, coveralls, ... - ./virtual-build.sh -r forced_requirements.txt -o ${o} -d $DIR/${v} ${python} -u -F | tee ${DIR}/${v}/logs/BOB_${v}_forced_install.log - status=$? - if [ ${status} != 0 ]; then - echo "Installation of forced requirements failed; aborting"$ - exit 1 - fi - ./virtual-build.sh -r extra_requirements.txt -o ${o} -d $DIR/${v} ${python} -uW | tee ${DIR}/${v}/logs/BOB_${v}_extra_install.log - status=$? - if [ ${status} != 0 ]; then - echo "Installation of extra requirements failed; aborting" - exit 1 - fi - fi - - # For all builds, we run through the requested layers and install all Bob packages - # For newer pip versions, caching is used, which we DISABLE here (as all packages need to be compiled freshly when the API of dependent packages has changed) - #for l in ${LAYERS}; do - # ./virtual-build.sh -r requirements${l}.txt -o ${o} -d $DIR/${v} -p ${PARALLEL} ${exe} ${python} -iC | tee ${DIR}/${v}/logs/BOB_${v}_layer${l}_install.log - # status=$? - # if [ ${status} != 0 ]; then - # echo "Installation of layer ${l} failed; aborting" - # exit 1 - # fi - #done - - ./virtual-build.sh -r requirements.txt -o ${o} -d $DIR/${v} -p ${PARALLEL} ${exe} ${python} -iC | tee ${DIR}/${v}/logs/BOB_${v}_install.log - status=$? - if [ ${status} != 0 ]; then - echo "Installation failed; aborting" - exit 1 - fi - - - -done - -# FINALLY, when everything succeeded: -# - link the new release -if [ -h bob-stable ]; then - unlink bob-stable -fi -ln -s $DIR bob-stable - -# - cleanup -#rm -f virtual-build.sh requirements0.txt requirements1.txt requirements2.txt forced_requirements.txt extra_requirements.txt -rm -f virtual-build.sh requirements.txt forced_requirements.txt extra_requirements.txt diff --git a/tools/package.sh b/tools/package.sh deleted file mode 100755 index 418c9bfe7cbc2c568779e22dbdf5a25cb435119f..0000000000000000000000000000000000000000 --- a/tools/package.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Andre Anjos <andre.anjos@idiap.ch> -# Tue 28 Aug 2012 11:34:25 CEST - -if [ $# = 0 ]; then - echo "usage: $0 destination-directory" - exit 1 -fi - -basedir=`python -c "import os; print os.path.dirname(os.path.dirname(os.path.abspath('$0')))"` -dest=`python -c "import os; print os.path.abspath('$1')"` - -if [ ! -d ${dest} ]; then - echo "Creating destination directory ${dest}..."; - mkdir -v -p ${dest}; -fi - -# package all submodules -echo "Creating packages..." -git submodule foreach `pwd`/bin/python setup.py sdist --formats=zip -echo "Copying packages to ${dest}..." -git submodule foreach "cp -va dist/*.zip ${dest}" diff --git a/tools/update_dependency_graphs.sh b/tools/update_dependency_graphs.sh deleted file mode 100755 index f3d0a40a1663bdb10c35848fa04316a97c1ff12d..0000000000000000000000000000000000000000 --- a/tools/update_dependency_graphs.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# Manuel Guenther <manuel.guenther@idiap.ch> -# Wed 7 Jan 19:25:56 CET 2015 - -if [ $# == 0 ]; then - echo "usage: $0 directory [directory] [...]" - echo "e.g. $0 layers/0/bob.io.base layers/1/bob.ip.base ..." - echo "or: $0 all" - exit 1 -fi - -if [ "$1" == "all" ]; then - # generate overall plot for all packages - echo "bin/bob_dependecy_graph.py -P requirements*.txt -W x.dot -v -X" - bin/bob_dependecy_graph.py -P requirements*.txt -W x.dot -v -X -else - # generate dependency graph for each of the given directories - while [ $# != 0 ]; do - directory=$1 - shift - if [ -d $directory ]; then - package=`basename "$directory"` - echo "bin/bob_dependecy_graph.py -p $package -X -w $directory/dependencies.png -v" - bin/bob_dependecy_graph.py -p $package -X -w $directory/dependencies.png -v - fi - done -fi diff --git a/tools/virtual-build.sh b/tools/virtual-build.sh deleted file mode 100755 index 6d397aa88de042944bc38bc7786360236ed47637..0000000000000000000000000000000000000000 --- a/tools/virtual-build.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash -# Andre Anjos <andre.anjos@idiap.ch> -# Tue 03 Jun 2014 11:45:19 CEST - -# Builds a virtualenv with all packages in layer2, downloaded from -# some webserver (could be PyPI) - -# Requirement: virtualenv *should* be installed with the base framework -# pre-compiled (e.g. NumPy, SciPy, Matplotlib, etc.), to avoid unnecessary time -# spent on compiling trivialities. - -# Usage info -show_help() { -cat << EOF -Usage: ${0##*/} [-r requirements] [-x externals] [-f find-links] - [-d folder] [-o debug/release] [-p threads] [-P python] [-h] [-i] [-u] [-F] [-C] [-W] - -Creates a virtual environment, basing itself on the given externals area. -Pre-populates the virtual environment with the package list provided, if -one is given. - --h display this help and exit --r FILE use the following requirements file to extra packages to install --x EXE use the virtualenv executable pointed by this flag instead of the - default one --f URL find packages for installation on this URL --d DIR create the new virtual environment on this directory --o debug/release compiles the Source code in debug or release mode - (default: release) --p INT If specified, Bob will be compiled with the given number of parallel - threads --P EXE If specified, uses the given python to initialize the virtualenv --i ignore installation errors and keep going --u upgrade the given requirements --F forces the installation of a certain package --C does not use cached elements --W does not use wheels -EOF -} - -requirements="" -virtualenv="virtualenv" -find_links="" -directory="" -optimize="release" -parallel="" -python="" -upgrade="" -ignore=0 -force="" -nocache=0 -nowheel=0 - -while getopts "hr:x:f:d:o:p:P:iuFCW" opt; do - case "$opt" in - h) - show_help - exit 0 - ;; - r) requirements=$OPTARG - ;; - x) virtualenv=$OPTARG - ;; - f) find_links=$OPTARG - ;; - d) directory=$OPTARG - ;; - o) optimize=$OPTARG - ;; - p) parallel=$OPTARG - ;; - P) python="-p $OPTARG" - ;; - i) ignore=1 - ;; - u) upgrade="--upgrade" - ;; - F) force="--force-reinstall" - ;; - C) nocache=1 - ;; - W) nowheel=1 - ;; - - '?') - show_help >&2 - exit 1 - ;; - esac -done - -# Prepares the new virtual environment -tmpdir="" -if [ -z "${directory}" ]; then - tmpdir=`mktemp --tmpdir -d ${0##*/}.XXXXXX` - directory=${tmpdir} - echo "Installing on temporary directory \`${directory}'..." -fi - -if [ ! -d ${directory}/bin ]; then - echo "Initializing virtual environment at \`${directory}'..." - ${virtualenv} ${python} ${directory} - ${directory}/bin/pip install --upgrade setuptools pip -else - echo "Skipped virtual environment initialization at \`${directory}'" -fi - -if [ "${optimize}" == "release" ]; then - echo "Setting RELEASE flags" - export CFLAGS="-O3 -g0 -mtune=generic" - export CXXFLAGS="-O3 -g0 -mtune=generic" -else - echo "Setting DEBUG flags" - export CFLAGS='-O0 -g -DBOB_DEBUG -DBZ_DEBUG' - export CXXFLAGS='-O0 -g -DBOB_DEBUG -DBZ_DEBUG' -fi - -if [ -n "${parallel}" ]; then - echo "Using ${parallel} parallel threads for compilation" - export BOB_BUILD_PARALLEL=${parallel} -fi - -# Installs all components listed the requirements file -if [ -n "${requirements}" ]; then - pip_opt="--verbose --pre" - - if [ -n "${find_links}" ]; then - pip_opt="--find-links=${find_links} --no-index ${pip_opt}" - fi - - if [ ${nocache} == 1 ]; then - pip_opt="--no-cache-dir ${pip_opt}" - fi - - if [ ${nowheel} == 1 ]; then - pip_opt="--no-use-wheel ${pip_opt}" - fi - - echo "Installing all requirements in \`${requirements}'..." - for req in `cat ${requirements}`; do - echo "Installing \`${req}'..." - ${directory}/bin/pip install ${upgrade} ${force} ${pip_opt} "${req}" - status=$? - if [ ${ignore} == 0 -a ${status} != 0 ]; then - echo "Installation of package ${req} failed; aborting" - exit ${status}; fi - done -fi - -# Removes temporary directory if one was created -if [ -n "${tmpdir}" ]; then - echo "Removing temporary directory \`${directory}'..." - rm -rf ${tmpdir} -fi