From 8f6f19f3f188cb08829b4c152679922e861cc8c0 Mon Sep 17 00:00:00 2001
From: Holger Nahrstaedt <holger@nahrstaedt.de>
Date: Wed, 14 Feb 2018 15:49:05 +0100
Subject: [PATCH] add appveyor

---
 appveyor.yml                      | 80 +++++++++++++++++++++++++++++++
 util/appveyor/build.cmd           | 21 ++++++++
 util/readthedocs/requirements.txt | 15 ++++++
 util/travis_osx_install.sh        | 59 +++++++++++++++++++++++
 4 files changed, 175 insertions(+)
 create mode 100644 appveyor.yml
 create mode 100644 util/appveyor/build.cmd
 create mode 100644 util/readthedocs/requirements.txt
 create mode 100644 util/travis_osx_install.sh

diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 00000000..30e07cca
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,80 @@
+# Based on https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor.yml
+
+environment:
+  global:
+    # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
+    # /E:ON and /V:ON options are not enabled in the batch script intepreter
+    # See: http://stackoverflow.com/a/13751649/163740
+    WITH_COMPILER: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_compiler.cmd"
+
+  matrix:
+    - PYTHON: "C:\\Python35"
+      PYTHON_ARCH: "32"
+      MINICONDA: C:\Miniconda35
+
+    - PYTHON: "C:\\Python35-x64"
+      PYTHON_ARCH: "64"
+      MINICONDA: C:\Miniconda35-x64
+
+    - PYTHON: "C:\\Python36"
+      PYTHON_ARCH: "32"
+      MINICONDA: C:\Miniconda36
+
+    - PYTHON: "C:\\Python36-x64"
+      PYTHON_ARCH: "64"
+      MINICONDA: C:\Miniconda36-x64
+
+      
+install:
+  # If there is a newer build queued for the same PR, cancel this one.
+  # The AppVeyor 'rollout builds' option is supposed to serve the same
+  # purpose but it is problematic because it tends to cancel builds pushed
+  # directly to master instead of just PR builds (or the converse).
+  # credits: JuliaLang developers.
+  - ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
+        https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
+        Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
+          throw "There are newer queued builds for this pull request, failing early." }
+  - ECHO "Filesystem root:"
+  - ps: "ls \"C:/\""
+
+  - ECHO "Installed SDKs:"
+  - ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
+  #- set "PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON%\\Tools\\Scripts;%PATH%"
+  - set "PATH=%MINICONDA%;%MINICONDA%\\Scripts;%PATH%"
+  #- set VCINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
+  - call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
+  - set CL=-FI"%VCINSTALLDIR%\INCLUDE\stdint.h"
+  - conda config --set always_yes yes --set changeps1 no
+  - conda config --add channels conda-forge
+  - conda config --add channels wheeler-microfluidics
+  - conda update -q conda
+  - conda info -a
+  - conda install --yes nose conda-build pycrypto setuptools pip numpy pytest-pylint
+  # Upgrade to the latest version of pip to avoid it displaying warnings
+  # about it being out of date.
+  #- "pip install --disable-pip-version-check --user --upgrade pip"
+  #- "python -m pip install -U pip setuptools"
+  #- "pip install --user pycrypto Paramiko"
+  - "pip install --user --upgrade graphenelib"
+
+build_script:
+  # Build the compiled extension
+  - "python setup.py build"
+
+test_script:
+  # Run the project tests
+  - "py.test"
+
+after_test:
+  # If tests are successful, create binary packages for the project.
+  - "pip install wheel"
+  - "python setup.py bdist_wheel"
+  #- "%CMD_IN_ENV% python setup.py bdist_wininst"
+  #- "%CMD_IN_ENV% python setup.py bdist_msi"
+  - ps: "ls dist"
+
+artifacts:
+  # Archive the generated packages in the ci.appveyor.com build report.
+  - path: dist\*
+
diff --git a/util/appveyor/build.cmd b/util/appveyor/build.cmd
new file mode 100644
index 00000000..e1c8c03d
--- /dev/null
+++ b/util/appveyor/build.cmd
@@ -0,0 +1,21 @@
+@echo off
+:: To build extensions for 64 bit Python 3, we need to configure environment
+:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
+:: MS Windows SDK for Windows 7 and .NET Framework 4
+::
+:: More details at:
+:: https://packaging.python.org/appveyor/
+
+IF "%DISTUTILS_USE_SDK%"=="1" (
+    ECHO Configuring environment to build with MSVC on a 64bit architecture
+    ECHO Using Windows SDK 7.1
+    "C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\WindowsSdkVer.exe" -q -version:v7.1
+    CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /release
+    SET MSSdk=1
+    REM Need the following to allow tox to see the SDK compiler
+    SET TOX_TESTENV_PASSENV=DISTUTILS_USE_SDK MSSdk INCLUDE LIB
+) ELSE (
+    ECHO Using default MSVC build environment
+)
+
+CALL %*
\ No newline at end of file
diff --git a/util/readthedocs/requirements.txt b/util/readthedocs/requirements.txt
new file mode 100644
index 00000000..1c7d0fbb
--- /dev/null
+++ b/util/readthedocs/requirements.txt
@@ -0,0 +1,15 @@
+# Fetch a numpy wheel from the sklearn rackspace wheelhouse.
+# That wheel was generated by @ogrisel by calling `wheel convert` on
+# the binaries from http://www.lfd.uci.edu/~gohlke/pythonlibs/
+# This is a temporary solution. As soon as numpy provides an official
+# wheel for windows we ca delete this --find-links line.
+--find-links http://28daf2247a33ed269873-7b1aad3fab3cc330e1fd9d109892382a.r6.cf2.rackcdn.com
+
+# fix the versions of numpy to force the use of numpy to use the whl
+# of the rackspace folder instead of trying to install from more recent
+# source tarball published on PyPI
+numpy==1.9.1
+steem
+nose
+wheel
+numpydoc
\ No newline at end of file
diff --git a/util/travis_osx_install.sh b/util/travis_osx_install.sh
new file mode 100644
index 00000000..3a3c04b1
--- /dev/null
+++ b/util/travis_osx_install.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+brew update
+brew install ccache
+brew outdated openssl || brew upgrade openssl
+brew install openssl@1.1
+
+export CFLAGS="-I$(brew --prefix openssl)/include $CFLAGS"
+export LDFLAGS="-L$(brew --prefix openssl)/lib $LDFLAGS"
+
+# install pyenv
+git clone --depth 1 https://github.com/pyenv/pyenv ~/.pyenv
+PYENV_ROOT="$HOME/.pyenv"
+PATH="$PYENV_ROOT/bin:$PATH"
+eval "$(pyenv init -)"
+
+case "${TOXENV}" in
+	py27)
+		curl -O https://bootstrap.pypa.io/get-pip.py
+		python get-pip.py --user
+		;;
+	py33)
+		pyenv install 3.3.6
+		pyenv global 3.3.6
+		;;
+	py34)
+		pyenv install 3.4.6
+		pyenv global 3.4.6
+		;;
+	py35)
+		pyenv install 3.5.3
+		pyenv global 3.5.3
+		;;
+	py36)
+		pyenv install 3.6.1
+		pyenv global 3.6.1
+		;;
+	pypy*)
+		pyenv install "$PYPY_VERSION"
+		pyenv global "$PYPY_VERSION"
+		;;
+	pypy3)
+		pyenv install pypy3-2.4.0
+		pyenv global pypy3-2.4.0
+		;;
+	docs)
+		brew install enchant
+		curl -O https://bootstrap.pypa.io/get-pip.py
+		python get-pip.py --user
+		;;
+esac
+pyenv rehash
+python -m pip install --user virtualenv
+python -m virtualenv ~/.venv
+source ~/.venv/bin/activate
+# This coverage pin must be kept in sync with tox.ini
+pip install --upgrade pip
+pip install --upgrade wheel
+pip install tox
+pip install delocate 
-- 
GitLab