appveyor.yml 4.62 KB
Newer Older
Sophie Brun's avatar
Sophie Brun committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
# As config example taken this file: 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
    CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\tests\\scripts\\appveyor\\run_with_env.cmd"
    PIP_ACCEL_LOG_FORMAT: "%(name)-18s %(levelname)s %(message)s"

  matrix:

    # TODO Fix bootloader compilation of 64bit bootloader - either fix for msvc or install mingw-w64
    # Pre-installed Python versions, which Appveyor may upgrade to
    # a later point release.
#    - PYTHON: "C:\\Python34-x64"
#      PYTHON_VERSION: "3.4"
#      PYTHON_ARCH: "64"
#      # This forces to build bootloader with MSVC.
#      # Appveyor does not have 64-bit mingw.
#      WAF_ARGS: ""
#
#    - PYTHON: "C:\\Python33-x64"
#      PYTHON_VERSION: "3.3"
#      PYTHON_ARCH: "64"
#      WAF_ARGS: ""

    # TODO Enable Python 3.5 one day. Issue #1547.
    #- PYTHON: "C:\\Python35"
      #PYTHON_VERSION: "3.5"
      #PYTHON_ARCH: "32"
      #WAF_ARGS: "--gcc"

    - PYTHON: "C:\\Python34"
      PYTHON_VERSION: "3.4"
      PYTHON_ARCH: "32"
      #WAF_ARGS: "--gcc"
      # TODO use temporily msvc to compile bootloader until mingw-w64 is natively supported by Appveyor.
      WAF_ARGS: ""

    - PYTHON: "C:\\Python33"
      PYTHON_VERSION: "3.3"
      PYTHON_ARCH: "32"
      #WAF_ARGS: "--gcc"
      # TODO use temporily msvc to compile bootloader until mingw-w64 is natively supported by Appveyor.
      WAF_ARGS: ""

    - PYTHON: "C:\\Python27"
      PYTHON_VERSION: "2.7"
      PYTHON_ARCH: "32"
      #WAF_ARGS: "--gcc"
      # TODO use temporily msvc to compile bootloader until mingw-w64 is natively supported by Appveyor.
      WAF_ARGS: ""

cache:
  # 'pip-accel' requires caching of downloaded pip packages.
  - C:\Users\appveyor\AppData\Local\pip
  # Cache binary Python packages e.g. numpy, pycrypto
  - C:\Users\appveyor\.pip-accel
  # Cache downloaded mingw-w64 - it might take 5 min. in appveyor.
  # TODO Remove mingw-w64 caching when it is natively supported by apppveyor:
  #    https://github.com/appveyor/ci/issues/466
  # TODO mingw-w64 caching takes a lot of time - unpacking/zipping 15000 files.
  #- C:\tools\mingw32

init:
  - "ECHO %PYTHON% %PYTHON_VERSION% %PYTHON_ARCH%"

install:
  - ECHO "Filesystem root:"
  - ps: "ls \"C:/\""

  - ECHO "Chocolatey tools:"
  - ps: "ls \"C:/Tools\""

  - ECHO "Installed SDKs:"
  - ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""

  # Prepend newly installed Python to the PATH of this build (this cannot be
  # done from inside the powershell script as it would require to restart
  # the parent CMD process).
  - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"

  # Check that we have the expected version and architecture for Python
  - "python --version"
  - "python -c \"import struct; print(struct.calcsize('P') * 8)\""

  # Install 32bit mingw-w64. Bootloader can be compiled only with mingw-w64.
  # Install only if it is not cached from previous runs.
  # TODO use temporily msvc to compile bootloader until mingw-w64 is natively supported by Appveyor.
  #    It takes a lot of time to install mingw-w64.
  #
  #    https://github.com/appveyor/ci/issues/466
  #
  #- ps: If ( -not ( Test-Path C:/tools/mingw32 ) )  { choco install -y mingw -x86 }

  # Compile bootloader, use 32bit mingw-w64.
  - "SET PATH=C:\\tools\\mingw32\\bin;%PATH%"
  - cd bootloader
  - "python waf --msvc_version=\"msvc 12.0\" distclean all %WAF_ARGS%"
  - cd ..

  ### Install the PyInsaller dependencies.

  # Install pip-accel to cache pypi packages and avoid compiling some packages.
  # (numpy or pycrypto take a lot of tome to compile).
  #
  # TODO Use upstream version when windows support is merged.
  # Windows support is not yet merged upstream so use own 'pip-accel' fork:
  #   https://github.com/paylogic/pip-accel/pull/60
  - "%CMD_IN_ENV% pip install git+https://github.com/matysek/pip-accel.git"

  # Install lxml from anaconda.org channel since PyPI fails (or it takes too long).
  # See: https://github.com/pyinstaller/pyinstaller/pull/1638
  - "%CMD_IN_ENV% pip-accel install -i https://pypi.anaconda.org/giumas/simple lxml" 

  # Install the PyInstaller test dependencies.
  - "%CMD_IN_ENV% pip-accel install --disable-pip-version-check --timeout 5 --retries 2 -r tests/requirements-win.txt"

  # Install PyInstaller into virtualenv.
  - "%CMD_IN_ENV% pip install -e ."

build: none

test_script:
  # Split tests into several subprocesses.
  # Run unitttest first.
  - "%CMD_IN_ENV% py.test -n 3 --maxfail 5 --durations=10 tests\\unit tests"