Commit 24461621 authored by Amir MOHAMMADI's avatar Amir MOHAMMADI

Merge branch 'condapackage' [skip ci]

parents 2189fd0e cca86e96
Pipeline #15940 skipped
......@@ -17,3 +17,4 @@ dist
build
*.egg
src/
record.txt
# 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.
# This build file 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 global variables (all stages)
variables:
CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda"
# Definition of our build pipeline
# Definition of our build pipeline order
stages:
- build
- test
- docs
- wheels
- deploy
- pypi
# ---------
# Templates
# ---------
# Template for the build stage
# Needs to run on all supported architectures, platforms and python versions
# Build targets
.build_template: &build_job
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
- curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/condapackage/gitlab/install.sh" > _ci/install.sh
- chmod 755 _ci/install.sh
- ./_ci/install.sh _ci #updates
- ./_ci/install.sh _ci condapackage #installs ci support scripts
- ./_ci/before_build.sh
script:
- ./_ci/build.sh
after_script:
- ./_ci/after_build.sh
artifacts:
expire_in: 1 week
cache: &build_caches
paths:
- _ci/
- dist/
- sphinx/
# Template for the test stage - re-installs from uploaded wheels
# Needs to run on all supported architectures, platforms and python versions
.test_template: &test_job
stage: test
before_script:
- ./_ci/install.sh _ci #updates
- ./_ci/before_test.sh
script:
- ./_ci/test.sh
after_script:
- ./_ci/after_test.sh
# Template for the wheel uploading stage
# Needs to run against all combinations of python and operating systems
.wheels_template: &wheels_job
stage: wheels
environment: intranet
only:
- master
- /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags)
before_script:
- ./_ci/install.sh _ci #updates
- ./_ci/before_wheels.sh
script:
- ./_ci/wheels.sh
after_script:
- ./_ci/after_wheels.sh
# Template for (latest) documentation upload stage
# Only one real job needs to do this
.docs_template: &docs_job
stage: docs
environment: intranet
only:
- master
before_script:
- ./_ci/install.sh _ci #updates
- ./_ci/before_docs.sh
script:
- ./_ci/docs.sh
after_script:
- ./_ci/after_docs.sh
# Template for the deployment stage - re-installs from uploaded wheels
# Needs to run on a single architecture only
# Will deploy your package to PyPI and other required services
# Only runs for tags
.deploy_template: &deploy_job
stage: deploy
environment: internet
only:
- /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags)
except:
- branches
before_script:
- ./_ci/install.sh _ci #updates
- ./_ci/before_deploy.sh
script:
- ./_ci/deploy.sh
after_script:
- ./_ci/after_deploy.sh
- miniconda.sh
- ${CONDA_ROOT}/pkgs/*.tar.bz2
- ${CONDA_ROOT}/pkgs/urls.txt
# -------------
# Build Targets
# -------------
# Linux + Python 2.7: Builds, tests, uploads wheel and deploys (if needed)
build_linux_27:
.build_linux_template: &linux_build_job
<<: *build_job
variables: &linux_27_build_variables
PYTHON_VERSION: "2.7"
tags:
- conda-linux
test_linux_27:
<<: *test_job
variables: *linux_27_build_variables
dependencies:
- build_linux_27
tags:
- conda-linux
wheels_linux_27:
<<: *wheels_job
variables: *linux_27_build_variables
dependencies:
- build_linux_27
tags:
- conda-linux
deploy_linux_27:
<<: *deploy_job
variables: *linux_27_build_variables
dependencies:
- build_linux_27
tags:
- conda-linux
- docker
image: continuumio/conda-concourse-ci
artifacts:
expire_in: 1 week
paths:
- _ci/
- ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
cache:
<<: *build_caches
key: "linux-cache"
# Linux + Python 3.5: Builds, tests and uploads wheel
build_linux_35:
.build_macosx_template: &macosx_build_job
<<: *build_job
variables: &linux_35_build_variables
PYTHON_VERSION: "3.5"
tags:
- conda-linux
test_linux_35:
<<: *test_job
variables: *linux_35_build_variables
dependencies:
- build_linux_35
tags:
- conda-linux
- macosx
artifacts:
expire_in: 1 week
paths:
- _ci/
- ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2
cache:
<<: *build_caches
key: "macosx-cache"
wheels_linux_35:
<<: *wheels_job
variables: *linux_35_build_variables
dependencies:
- build_linux_35
tags:
- conda-linux
docs_linux_35:
<<: *docs_job
variables: *linux_35_build_variables
dependencies:
- build_linux_35
tags:
- conda-linux
build_linux_27:
<<: *linux_build_job
variables:
PYTHON_VERSION: "2.7"
# Linux + Python 3.6: Builds and tests
build_linux_36:
<<: *build_job
variables: &linux_36_build_variables
<<: *linux_build_job
variables:
PYTHON_VERSION: "3.6"
tags:
- conda-linux
test_linux_36:
<<: *test_job
variables: *linux_36_build_variables
dependencies:
- build_linux_36
tags:
- conda-linux
wheels_linux_36:
<<: *wheels_job
variables: *linux_36_build_variables
dependencies:
- build_linux_36
tags:
- conda-linux
BUILD_EGG: "true"
artifacts:
expire_in: 1 week
paths:
- _ci/
- dist/*.zip
- sphinx
- ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
# Mac OSX + Python 2.7: Builds and tests
build_macosx_27:
<<: *build_job
variables: &macosx_27_build_variables
<<: *macosx_build_job
variables:
PYTHON_VERSION: "2.7"
tags:
- conda-macosx
test_macosx_27:
<<: *test_job
variables: *macosx_27_build_variables
dependencies:
- build_macosx_27
tags:
- conda-macosx
wheels_macosx_27:
<<: *wheels_job
variables: *macosx_27_build_variables
dependencies:
- build_macosx_27
tags:
- conda-macosx
build_macosx_36:
<<: *macosx_build_job
variables:
PYTHON_VERSION: "3.6"
# Mac OSX + Python 3.5: Builds and tests
build_macosx_35:
<<: *build_job
variables: &macosx_35_build_variables
PYTHON_VERSION: "3.5"
tags:
- conda-macosx
test_macosx_35:
<<: *test_job
variables: *macosx_35_build_variables
# Deploy targets
.deploy_template: &deploy_job
stage: deploy
before_script:
- ./_ci/install.sh _ci condapackage #updates ci support scripts
script:
- ./_ci/deploy.sh
dependencies:
- build_macosx_35
- build_linux_27
- build_linux_36
- build_macosx_27
- build_macosx_36
tags:
- conda-macosx
- deployer
wheels_macosx_35:
<<: *wheels_job
variables: *macosx_35_build_variables
dependencies:
- build_macosx_35
tags:
- conda-macosx
deploy_beta:
<<: *deploy_job
environment: beta
only:
- master
- condapackage
# Mac OSX + Python 3.6: Builds and tests
build_macosx_36:
<<: *build_job
variables: &macosx_36_build_variables
PYTHON_VERSION: "3.6"
tags:
- conda-macosx
test_macosx_36:
<<: *test_job
variables: *macosx_36_build_variables
dependencies:
- build_macosx_36
tags:
- conda-macosx
deploy_stable:
<<: *deploy_job
environment: stable
only:
- /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags)
except:
- branches
wheels_macosx_36:
<<: *wheels_job
variables: *macosx_36_build_variables
pypi:
stage: pypi
environment: pypi
only:
- /^v\d+\.\d+\.\d+([abc]\d*)?$/ # PEP-440 compliant version (tags)
except:
- branches
before_script:
- ./_ci/install.sh _ci condapackage #updates ci support scripts
script:
- ./_ci/pypi.sh
dependencies:
- build_macosx_36
- build_linux_36
tags:
- conda-macosx
- deployer
{% set name = 'bob.math' %}
{% 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
skip: True # [blas_impl == 'openblas' and win]
requires_features:
blas: {{ blas_impl }}
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- pkg-config {{ pkg_config }}
- cmake {{ cmake }}
host:
- python {{ python }}
- setuptools {{ setuptools }}
- bob.core
- libblitz {{ libblitz }}
- boost {{ boost }}
- numpy {{ numpy }}
- mkl-devel {{ mkl }} # [blas_impl == 'mkl']
- openblas-devel {{ openblas }} # [blas_impl == 'openblas']
- nomkl # [blas_impl == 'openblas']
run:
- python
- setuptools
- boost
- {{ pin_compatible('numpy') }}
test:
imports:
- {{ name }}
commands:
- nosetests --with-coverage --cover-package={{ name }} -sv {{ name }}
- sphinx-build -aEW {{ project_dir }}/doc {{ project_dir }}/sphinx
- sphinx-build -aEb doctest {{ project_dir }}/doc sphinx
- 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
about:
home: https://www.idiap.ch/software/bob/
license: BSD 3-Clause
summary: LAPACK and BLAS interfaces for Bob
license_family: BSD
......@@ -25,15 +25,9 @@ extensions = [
'sphinx.ext.intersphinx',
'sphinx.ext.napoleon',
'sphinx.ext.viewcode',
'sphinx.ext.mathjax',
]
import sphinx
if sphinx.__version__ >= "1.4.1":
extensions.append('sphinx.ext.imgmath')
imgmath_image_format = 'svg'
else:
extensions.append('sphinx.ext.pngmath')
# Be picky about warnings
nitpicky = True
......
......@@ -77,76 +77,7 @@ if len(math_flags['libraries']) > 0 and \
if lib in NOT_VALID:
math_flags['libraries'].remove(lib)
# checks if those libraries actually exist
found_all = all([find_library(lib, prefixes=math_flags.get('library_dirs'))
for lib in math_flags['libraries']])
if not found_all:
math_flags['libraries'] = []
# checks if any libraries are being linked, otherwise we
# search through the filesystem in stock locations.
if not math_flags['libraries']:
# reset all entries
math_flags = dict(
library_dirs = [],
libraries = [],
system_include_dirs = [],
define_macros = [],
extra_compile_args = [],
extra_link_args = [],
)
# tries first to find an MKL implementation
lapack = find_library('mkl_lapack64')
if not lapack:
# if that fails, go for openblas
lapack = find_library('openblas')
if not lapack:
# if that fails, go for the default implementation
lapack = find_library('lapack', subpaths=['sse2', ''])
if not lapack:
print("ERROR: LAPACK library not found - have that installed or set BOB_PREFIX_PATH to point to the correct installation prefix")
sys.exit(1)
# tries first to find an MKL implementation
blas = find_library('mkl')
if not blas:
# if that fails, go for openblas
blas = find_library('openblas')
if not blas:
# if that fails, go for the default implementation of cblas
blas = find_library('cblas', subpaths=['sse2', ''])
if not blas:
# if that fails, go for the default implementation of blas
blas = find_library('blas', subpaths=['sse2', ''])
if not blas:
print("ERROR: BLAS library not found - have that installed or set BOB_PREFIX_PATH to point to the correct installation prefix")
sys.exit(1)
# at this point both lapack and blas were detected, proceed
def libname(f): return os.path.splitext(os.path.basename(f))[0][3:]
math_flags['library_dirs'] = uniq([
os.path.dirname(lapack[0]),
os.path.dirname(blas[0]),
])
math_flags['libraries'] = uniq([
libname(lapack[0]),
libname(blas[0])
])
print("\nLAPACK/BLAS configuration from filesystem scan:")
else:
print("\nLAPACK/BLAS configuration from NumPy:")
print("\nLAPACK/BLAS configuration from NumPy:")
print(" * system include directories: %s" % ', '.join(math_flags['system_include_dirs']))
print(" * defines: %s" % \
', '.join(['-D%s=%s' % k for k in math_flags['define_macros']]))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment