Skip to content

Commit

Permalink
Tests for version, use conda-build for download/check (#13)
Browse files Browse the repository at this point in the history
* #12: add more aggressive tests for version, use conda-build to source binaries and check checksums instead of python/curl, add maintainer

* MNT: Re-rendered with conda-smithy 3.2.2 and pinning 2019.01.09

* uses pkgresources

* try adding x in test

* fix url

* move xorg to test requirements

* add glib for testing

* change testing strategy on linux

* fix perms

* appveyor has an older chromedriver

* move side-effect test to end

* more path/string work
  • Loading branch information
bollwyvl authored and igortg committed Jan 14, 2019
1 parent c46cb46 commit ba693c8
Show file tree
Hide file tree
Showing 16 changed files with 384 additions and 59 deletions.
11 changes: 3 additions & 8 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ install:
ff_ci_pr_build -v --ci "appveyor" "%APPVEYOR_ACCOUNT_NAME%/%APPVEYOR_PROJECT_SLUG%" "%APPVEYOR_BUILD_NUMBER%" "%APPVEYOR_PULL_REQUEST_NUMBER%"
del ff_ci_pr_build.py
# Cywing's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
# Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
- cmd: rmdir C:\cygwin /s /q

# Add path, activate `conda` and update conda.
Expand All @@ -40,14 +40,9 @@ install:

- cmd: set PYTHONUNBUFFERED=1

# Add our channels.
- cmd: conda.exe config --set show_channel_urls true
- cmd: conda.exe config --remove channels defaults
- cmd: conda.exe config --add channels defaults
- cmd: conda.exe config --add channels conda-forge

# Configure the VM.
- cmd: conda.exe install -n root --quiet --yes conda-forge-ci-setup=2
- cmd: conda.exe install -n root -c conda-forge --quiet --yes conda-forge-ci-setup=2
- cmd: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml
- cmd: run_conda_forge_build_setup

# Skip .NET project specific build phase.
Expand Down
22 changes: 22 additions & 0 deletions .azure-pipelines/azure-pipelines-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
jobs:
- job: linux_64
pool:
vmImage: ubuntu-16.04
timeoutInMinutes: 240
strategy:
maxParallel: 8
matrix:
linux_python2.7:
CONFIG: linux_python2.7
linux_python3.6:
CONFIG: linux_python3.6
linux_python3.7:
CONFIG: linux_python3.7
steps:
- script: |
sudo pip install --upgrade pip
sudo pip install setuptools shyaml
displayName: Install dependencies
- script: .azure-pipelines/run_docker_build.sh
displayName: Run docker build
78 changes: 78 additions & 0 deletions .azure-pipelines/azure-pipelines-osx.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
jobs:
- job: osx_64
pool:
vmImage: macOS-10.13
timeoutInMinutes: 240
strategy:
maxParallel: 8
matrix:
osx_python2.7:
CONFIG: osx_python2.7
osx_python3.6:
CONFIG: osx_python3.6
osx_python3.7:
CONFIG: osx_python3.7

steps:
# TODO: Fast finish on azure pipelines?
- script: |
echo "Fast Finish"
- script: |
echo "Removing homebrew from Azure to avoid conflicts."
curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall > ~/uninstall_homebrew
chmod +x ~/uninstall_homebrew
~/uninstall_homebrew -fq
rm ~/uninstall_homebrew
displayName: Remove homebrew
- script: |
echo "Installing Miniconda"
set -x -e
curl -o $(Build.StagingDirectory)/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
chmod +x $(Build.StagingDirectory)/miniconda.sh
$(Build.StagingDirectory)/miniconda.sh -b -p $(Build.StagingDirectory)/miniconda
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
echo "Setting up Conda environment"
displayName: 'Install miniconda'
- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
conda install -n base -c conda-forge --quiet --yes conda-forge-ci-setup=2
displayName: 'Add conda-forge-ci-setup=2'
- script: |
set -x -e
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
echo "Configuring conda."
setup_conda_rc ./ ./recipe ./.ci_support/${CONFIG}.yaml
source run_conda_forge_build_setup
conda update --yes --quiet --override-channels -c conda-forge -c defaults --all
env: {
OSX_FORCE_SDK_DOWNLOAD: "1"
}
displayName: Configure conda and conda-build
- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
mangle_compiler ./ ./recipe ./.ci_support/${CONFIG}.yaml
displayName: Mangle compiler
- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml
displayName: Generate build number clobber file
- script: |
export PATH=$(Build.StagingDirectory)/miniconda/bin:$PATH
set -x -e
conda build ./recipe -m ./.ci_support/${CONFIG}.yaml --clobber-file ./.ci_support/clobber_${CONFIG}.yaml
displayName: Build recipe
91 changes: 91 additions & 0 deletions .azure-pipelines/azure-pipelines-win.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
jobs:
- job: win_64
pool:
vmImage: vs2017-win2016
timeoutInMinutes: 240
strategy:
maxParallel: 4
matrix:
win_python2.7:
CONFIG: win_python2.7
CONDA_BLD_PATH: D:\\bld\\
win_python3.6:
CONFIG: win_python3.6
CONDA_BLD_PATH: D:\\bld\\
win_python3.7:
CONFIG: win_python3.7
CONDA_BLD_PATH: D:\\bld\\
steps:
# TODO: Fast finish on azure pipelines?
- script: |
ECHO ON
- script: |
choco install vcpython27 -fdv -y --debug
condition: contains(variables['CONFIG'], 'vs2008')
displayName: Install vcpython27.msi (if needed)
# Cygwin's git breaks conda-build. (See https://github.com/conda-forge/conda-smithy-feedstock/pull/2.)
# - script: rmdir C:\cygwin /s /q
# continueOnError: true


- powershell: |
Set-PSDebug -Trace 1
$batchcontent = @"
ECHO ON
SET vcpython=C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0
DIR "%vcpython%"
CALL "%vcpython%\vcvarsall.bat" %*
"@
$batchDir = "C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC"
$batchPath = "$batchDir" + "\vcvarsall.bat"
New-Item -Path $batchPath -ItemType "file" -Force
Set-Content -Value $batchcontent -Path $batchPath
Get-ChildItem -Path $batchDir
Get-ChildItem -Path ($batchDir + '\..')
condition: contains(variables['CONFIG'], 'vs2008')
displayName: Patch vs2008 (if needed)
- task: CondaEnvironment@1
inputs:
packageSpecs: 'python=3.6 conda-build conda conda-forge::conda-forge-ci-setup=2' # Optional
installOptions: "-c conda-forge"
updateConda: false
displayName: Install conda-build and activate environment

- script: set PYTHONUNBUFFERED=1

# Configure the VM
- script: setup_conda_rc .\ .\recipe .\.ci_support\%CONFIG%.yaml

# Configure the VM.
- script: |
run_conda_forge_build_setup
displayName: conda-forge build setup
run_conda_forge_build_setup

# Special cased version setting some more things!
- script: |
conda.exe build recipe -m .ci_support\%CONFIG%.yaml --quiet
displayName: Build recipe (vs2008)
env: {
VS90COMNTOOLS: "C:\\Program Files (x86)\\Common Files\\Microsoft\\Visual C++ for Python\\9.0\\VC\\bin",
}
condition: contains(variables['CONFIG'], 'vs2008')
- script: |
conda.exe build recipe -m .ci_support\%CONFIG%.yaml --quiet
displayName: Build recipe
condition: not(contains(variables['CONFIG'], 'vs2008'))
38 changes: 38 additions & 0 deletions .azure-pipelines/build_steps.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash

# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here
# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent
# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
# benefit from the improvement.

set -xeuo pipefail
export PYTHONUNBUFFERED=1
export FEEDSTOCK_ROOT=/home/conda/feedstock_root
export RECIPE_ROOT=/home/conda/recipe_root
export CI_SUPPORT=/home/conda/feedstock_root/.ci_support
export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml"

cat >~/.condarc <<CONDARC
conda-build:
root-dir: /home/conda/feedstock_root/build_artifacts
CONDARC

conda install --yes --quiet conda-forge-ci-setup=2 conda-build -c conda-forge

# set up the condarc
setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

# A lock sometimes occurs with incomplete builds. The lock file is stored in build_artifacts.
conda clean --lock

run_conda_forge_build_setup# make the build number clobber
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml"



touch "/home/conda/feedstock_root/build_artifacts/conda-forge-build-done-${CONFIG}"
56 changes: 56 additions & 0 deletions .azure-pipelines/run_docker_build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env bash

# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here
# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent
# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also
# benefit from the improvement.

set -xeuo pipefail

THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
PROVIDER_DIR="$(basename $THISDIR)"

FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;)
RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe"

docker info

# In order for the conda-build process in the container to write to the mounted
# volumes, we need to run with the same id as the host machine, which is
# normally the owner of the mounted volumes, or at least has write permission
export HOST_USER_ID=$(id -u)
# Check if docker-machine is being used (normally on OSX) and get the uid from
# the VM
if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then
export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u)
fi

ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts"

if [ -z "$CONFIG" ]; then
echo "Need to set CONFIG env variable"
exit 1
fi

pip install shyaml
DOCKER_IMAGE=$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil )

mkdir -p "$ARTIFACTS"
DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}"
rm -f "$DONE_CANARY"
# Not all providers run with a real tty. Disable using one
DOCKER_RUN_ARGS=" "


docker run ${DOCKER_RUN_ARGS} \
-v "${RECIPE_ROOT}":/home/conda/recipe_root:ro,z \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \
-e CONFIG \
-e BINSTAR_TOKEN \
-e HOST_USER_ID \
$DOCKER_IMAGE \
bash \
/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh

# verify that the end of the script was reached
test -f "$DONE_CANARY"
6 changes: 4 additions & 2 deletions .circleci/build_steps.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ conda-build:
CONDARC

conda install --yes --quiet conda-forge::conda-forge-ci-setup=2 conda-build
conda install --yes --quiet conda-forge-ci-setup=2 conda-build -c conda-forge

# set up the condarc
setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"
Expand All @@ -33,8 +33,10 @@ source run_conda_forge_build_setup
make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"

conda build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" --quiet
--clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml"


upload_package "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}"


touch "/home/conda/feedstock_root/build_artifacts/conda-forge-build-done-${CONFIG}"
14 changes: 10 additions & 4 deletions .circleci/run_docker_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@

set -xeuo pipefail

THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )"
PROVIDER_DIR="$(basename $THISDIR)"

FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;)
RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe"

Expand Down Expand Up @@ -35,16 +38,19 @@ DOCKER_IMAGE=$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-v
mkdir -p "$ARTIFACTS"
DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}"
rm -f "$DONE_CANARY"
# Enable running in interactive mode attached to a tty
DOCKER_RUN_ARGS=" -it "


docker run -it \
-v "${RECIPE_ROOT}":/home/conda/recipe_root \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root \
docker run ${DOCKER_RUN_ARGS} \
-v "${RECIPE_ROOT}":/home/conda/recipe_root:ro,z \
-v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \
-e CONFIG \
-e BINSTAR_TOKEN \
-e HOST_USER_ID \
$DOCKER_IMAGE \
bash \
/home/conda/feedstock_root/.circleci/build_steps.sh
/home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh

# verify that the end of the script was reached
test -f "$DONE_CANARY"
Loading

1 comment on commit ba693c8

@conda-forge-linter
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi! This is the friendly automated conda-forge-webservice.

I updated the Github team because of this commit.

  • @bollwyvl was added to this feedstock maintenance team.

You should get push access to this feedstock and CI services.

Feel free to join the community chat room.

NOTE: Please make sure to not push to the repository directly.
Use branches in your fork for any changes and send a PR.
More details here

Please sign in to comment.