version: 1.0.{build} branches: only: - master - appveyor image: Unstable environment: WHEEL_DIR: C:\kivy_wheels KIVY_BUILD_DIR: C:\kivy_build AIRPLANE_CHARGE: secure: HgQr7XMKpB6lWn33SKv0GyYZbh1RfpgvaIKEE0B54R5XHJujQg5dhOEB3Vc2CfAqCprX+CGxXAjQwFnuv6pJeA3++9Z8/1SfFuEqCF59J7PqsDs2thA8lNHLRsThvRVJrBt2jcb1wrG3Nf3sz3vi7e+rBzYjprkcYiTP0XJ5FdQekyFTTjuXYaRBGWrwGX81dEVVUkGFuEZFYWJq2Yf/PkFGOX+IN0CjgpFB0pGfZSJcIG7mvscurfG/KvckLhNUINprUKt0pJ8iCN0iufsbmrOnuG+WC8AHktvlSxzHSfCm8zmhSZTkDNkJfpYHapFagQQThmiYq8PqsVIC0XOz+j4KLljc6bxyhE0oPtOPg4DohBdqLI28V1XB/Kqh7CCZR50wAw567voWVOtKsyets5oeywZH1q/gtK6stC5t7v+a2s0w1I2IEW6p2aPy7plreZj15QCgIR8h6JgIuMuwqiaVCUuhej/GauCZG/9jIBJpTf1NkBa9k4vIxHPq5R5/ltYX8za49vz5ImdLe1qlTFwy9fegMpb+D5m3y3ilm+t5xkDmqXQau1oVWIVd8jf0DawWqkNsKLp6hbYr51gclS+Gc7NVKwvFtcmoAfbvNCGBDH4vF6cR2wNhy6RDjjqDgIStnpUs3fKS9bKOyrv9+394esQqEuAXgLtC2vUMk+z3Hf8V18AFYKZfZmWxiGGrjI6YQCBOBOdh5VO5cASqtoTU22OvAPhXT7gX2JG96Rc9yf/K8DEvzuWo3lArDAclh2zLm++1SOh54dDiAiMZvLkNXu5tAsg60c+rJCx4FQ9ra0/GcFY1LKJntdKvpQyBkp4wKAvq3YyV7Rnx8u6PULXXG2rS6i7m+asLrY+FSCO5oRmLrMv5pEv0cF/BOAh0RGR6medX8ASmM40sHqz+WC9WJfaSUZplSzQwHxXCr/AzK40mOTtKgkg8e8tqwNzjI8mdjx0kwcu8zuOeUK6U6l83voGKbli1gzinkLvzhjvF1TXZwpT1y/HvAs5dGwXVfdigeOqcfmIOxXStPmaZ4CZRKVK3CgweYzpETyT6Pm5H3jANcAuyYuphJr7YrfHfWKAg6N3Q0r3AfzliOuIBm3DVfm2RuI8USGJxRsjaDX8LB8sdhrCPLUYBh1RNhYol5bVEM1IX+BcpXzIyqv00eSMTvN3G7KdsM+/8LGlnEM+apIgnBlVfcWOQI8rzBkXuJvExSwDhKzncGWbi12UapEVsE/QnVpDiwbiPdZtQQzQ= GDRIVE_CLIENT_ID: secure: iGAZpJPOTLhRmK7X60xzRZm1S0PbmoMwoVJdd8WiKBH34Tqsd6UEFhPjLLok7J0+xWStS8E3fwEQh4Wzn1BCXhry5Qv8FLD41oskVpiSwdc= GDRIVE_CLIENT_SECRET: secure: 7J8TZnhr3MsF5rveMVVkbrr9tzTwGG6rHWZMorW0WN4= GDRIVE_KIVY_UPLOAD_ID: 0B1_HB9J8mZepOV81UHpDbmg5SWM GDRIVE_GST_ID: 0B1_HB9J8mZepNzZ5aW91Q0tJU2s USE_SDL2: 1 USE_GSTREAMER: 1 KIVY_USE_SETUPTOOLS: 1 matrix: - PYVER: 27 BITTNESS: 86 - PYVER: 35 BITTNESS: 86 COMPILER: msvc - PYVER: 35 BITTNESS: 64 COMPILER: msvc - PYVER: 34 BITTNESS: 86 - PYVER: 27 BITTNESS: 64 - PYVER: 34 BITTNESS: 64 install: - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-desktop.ps1')) build_script: - ps: >- function Check-Error { param([int]$SuccessVal = 0) if ($SuccessVal -ne $LastExitCode) { throw "Failed with exit code $LastExitCode" } } echo "Bitness=$env:BITTNESS, scheduled=$env:APPVEYOR_SCHEDULED_BUILD, forced=$env:APPVEYOR_FORCED_BUILD, rebuild=$env:APPVEYOR_RE_BUILD, tagged=$env:APPVEYOR_REPO_TAG" cd $env:APPVEYOR_BUILD_FOLDER git clone -q --branch=master https://github.com/kivy/kivy-sdk-packager.git C:\projects\kivy-sdk-packager Check-Error $PYTHONPATH = "$env:APPVEYOR_BUILD_FOLDER;$PYTHONPATH" echo "Build folder: $env:APPVEYOR_BUILD_FOLDER. Wheel folder: $env:WHEEL_DIR." mkdir "$env:KIVY_BUILD_DIR" Check-Error mkdir "$env:WHEEL_DIR" Check-Error C:\Python27\Scripts\pip.exe install pydrive Check-Error if ($env:BITTNESS -eq "64") { $PYTHON_ROOT = "C:\Python$env:PYVER-x64" $WHELL_BITNESS = "win_amd64" } else { $PYTHON_ROOT = "C:\Python$env:PYVER" $WHELL_BITNESS = "win32" } $env:PATH = "$PYTHON_ROOT;$PYTHON_ROOT\Scripts;$env:PATH;C:\Program Files\7-Zip" $env:PATH = $PYTHON_ROOT+"\share\glew\bin;"+$PYTHON_ROOT+"\share\sdl2\bin;"+$PYTHON_ROOT+"\share\gstreamer\bin;"+$env:PATH $WHEEL_DATE = python -c "from time import strftime;print(strftime('%d%m%Y'))" Check-Error $GIT_TAG = git rev-parse --short HEAD Check-Error python -c "import kivy" Check-Error $WHEEL_VERSION_T = python -c "import kivy;print(kivy.__version__)" --config "kivy:log_level:error" Check-Error python -c "from os.path import join;kv=join('$env:APPVEYOR_BUILD_FOLDER','kivy','__init__.py');f=open(kv);s=f.read().replace('$WHEEL_VERSION_T','$WHEEL_VERSION_T`.$WHEEL_DATE`.$GIT_TAG');f.close();f=open(kv,'w');f.write(s);f.close()" Check-Error $WHEEL_VERSION = python -c "import kivy;print(kivy.__version__)" --config "kivy:log_level:error" Check-Error echo "Kivy version is: $WHEEL_VERSION" python -c "import sys;print('Python version is {}'.format(sys.version))" Check-Error $env:DO_TEST = "True" if ($env:APPVEYOR_SCHEDULED_BUILD -eq "True"){ $env:DO_TEST = "False" } $DO_WHEEL = "True" if ($env:APPVEYOR_REPO_TAG -eq "true"){ $WHEEL_NAME = "-cp" } elseif ($env:APPVEYOR_SCHEDULED_BUILD -eq "True" -or $env:APPVEYOR_FORCED_BUILD -eq "True" -or $env:APPVEYOR_RE_BUILD -eq "True"){ $WHEEL_NAME = "_$WHEEL_DATE`_git_$GIT_TAG-cp" } else { $DO_WHEEL = "False" } if ($env:APPVEYOR_REPO_BRANCH -ne "master") { $DO_WHEEL = "False" # remove later $DO_WHEEL = "True" } echo "test=$env:DO_TEST, make_wheel=$DO_WHEEL" if (($env:DO_TEST -eq "True" -or $DO_WHEEL -eq "True") -and $env:PYVER -ne "35") { python -c "with open(r'$PYTHON_ROOT\Lib\distutils\distutils.cfg', 'wb') as fh: fh.write(b'[build]\ncompiler = mingw32\n')" Check-Error python -m pip install pip wheel setuptools --upgrade Check-Error pip install -i https://pypi.anaconda.org/carlkl/simple mingwpy Check-Error pip install mock cython pygments docutils nose kivy.deps.glew_dev kivy.deps.glew kivy.deps.gstreamer_dev kivy.deps.gstreamer kivy.deps.sdl2_dev kivy.deps.sdl2 --extra-index-url http://kivy.org/downloads/packages/simple/ --trusted-host kivy.org Check-Error Copy-Item "$PYTHON_ROOT\Lib\site-packages\kivy\deps\*" -destination "$env:APPVEYOR_BUILD_FOLDER\kivy\deps" -recurse Remove-Item "$PYTHON_ROOT\Lib\site-packages\kivy" -Force -Recurse Remove-Item "$PYTHON_ROOT\Lib\site-packages\kivy.deps.*nspkg.pth" python setup.py build_ext --inplace Check-Error } else { # until 35 branch is merged, tests wont do any good here and we need DO_WHEEL too $env:DO_TEST = "False" $DO_WHEEL = "True" $py35="C:\py35" if ($env:BITTNESS -eq "64") { $sdl2_url = "0B-080DPVLKs2cWZXRXhGSXZqYmM" $sdl2_dev_url = "0B-080DPVLKs2QVZ6QUlTQjlwamM" $glew_url = "0B-080DPVLKs2UkdqTUZWZmdvRXc" $glew_dev_url = "0B-080DPVLKs2Q09zVnVjYngtX0E" $gst_dev_url = "0B-080DPVLKs2dEw5a0Fsb0FValE" $sdl2_file = $py35+"\kivy.deps.sdl2-0.1.13-cp35-cp35m-win_amd64.whl" $sdl2_dev_file = $py35+"\kivy.deps.sdl2_dev-0.1.13-cp35-cp35m-win_amd64.whl" $glew_file = $py35+"\kivy.deps.glew-0.1.5-cp35-cp35m-win_amd64.whl" $glew_dev_file = $py35+"\kivy.deps.glew_dev-0.1.5-cp35-cp35m-win_amd64.whl" $gst_dev_file = $py35+"\kivy.deps.gstreamer_dev-0.1.5-cp35-cp35m-win_amd64.whl" } else { $sdl2_url = "0B-080DPVLKs2TGg0SXcwX1p1OHc" $sdl2_dev_url = "0B-080DPVLKs2bjIyVDN3S0c0c0U" $glew_url = "0B-080DPVLKs2dkdoS2t1cU9PZmc" $glew_dev_url = "0B-080DPVLKs2QUZZNDNvem9meU0" $gst_dev_url = "0B-080DPVLKs2X1dfYkpXdmtMa3M" $sdl2_file = $py35+"\kivy.deps.sdl2-0.1.13-cp35-cp35m-win32.whl" $sdl2_dev_file = $py35+"\kivy.deps.sdl2_dev-0.1.13-cp35-cp35m-win32.whl" $glew_file = $py35+"\kivy.deps.glew-0.1.5-cp35-cp35m-win32.whl" $glew_dev_file = $py35+"\kivy.deps.glew_dev-0.1.5-cp35-cp35m-win32.whl" $gst_dev_file = $py35+"\kivy.deps.gstreamer_dev-0.1.5-cp35-cp35m-win32.whl" } Check-Error mkdir "$py35" Check-Error git clone -q --branch=feature-gl-backend https://github.com/kivy/kivy.git C:\projects\kivy_temp Check-Error (new-object net.webclient).DownloadFile("https://docs.google.com/uc?id="+$sdl2_url, $sdl2_file) Check-Error (new-object net.webclient).DownloadFile("https://docs.google.com/uc?id="+$sdl2_dev_url, $sdl2_dev_file) Check-Error (new-object net.webclient).DownloadFile("https://docs.google.com/uc?id="+$glew_url, $glew_file) Check-Error (new-object net.webclient).DownloadFile("https://docs.google.com/uc?id="+$glew_dev_url, $glew_dev_file) Check-Error (new-object net.webclient).DownloadFile("https://docs.google.com/uc?id="+$gst_dev_url, $gst_dev_file) Check-Error cmd /c '("C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x%BITTNESS%)&set' | foreach { if ($_ -match "=") { $v = $_.split("="); set-item -force -path "ENV:\$($v[0])" -value "$($v[1])" } } Check-Error write-host "`nMSVC variables set." $env:MSSdk=1 $env:USE_SDL2=1 $env:DISTUTILS_USE_SDK=1 $env:LIB=$PYTHON_ROOT+"\libs;"+$env:LIB $env:INCLUDE=$PYTHON_ROOT+"\include;"+$env:INCLUDE cd "C:\projects\kivy_temp" # pointer mismatch dirty fix (new-object net.webclient).DownloadFile("https://patch-diff.githubusercontent.com/raw/kivy/kivy/pull/4698.patch", "C:\projects\kivy_temp\mismatch.patch") git apply "mismatch.patch" python -m pip install pip wheel setuptools --upgrade Check-Error pip install mock cython pygments docutils nose kivy.deps.gstreamer $sdl2_file $sdl2_dev_file $glew_file $glew_dev_file $gst_dev_file --extra-index-url https://kivy.org/downloads/packages/simple/ Check-Error Copy-Item "$PYTHON_ROOT\Lib\site-packages\kivy\deps\*" -destination "C:\projects\kivy_temp\kivy\deps" -recurse Remove-Item "$PYTHON_ROOT\Lib\site-packages\kivy" -Force -Recurse Remove-Item "$PYTHON_ROOT\Lib\site-packages\kivy.deps.*nspkg.pth" python setup.py build_ext --inplace Check-Error } if ($DO_WHEEL -eq "True") { python setup.py bdist_wheel -d "$env:WHEEL_DIR" Check-Error $WHEEL_FNAME = python -c "from os import listdir;print(listdir(r'$env:WHEEL_DIR')[0])".Replace("_dev0", "") Check-Error echo "Wheel file: $env:WHEEL_DIR\$WHEEL_FNAME" Check-Error $NEW_WHEEL_FNAME = python -c "print('$WHEEL_FNAME'.replace('_dev0','').replace('.$WHEEL_DATE', '').replace('.$GIT_TAG`', ''))" Check-Error echo "Copying from $WHEEL_FNAME to nightly $NEW_WHEEL_FNAME" Copy-Item "$env:WHEEL_DIR\$WHEEL_FNAME" "$env:WHEEL_DIR\$NEW_WHEEL_FNAME" Check-Error dir "$env:WHEEL_DIR" C:\Python27\python.exe C:\projects\kivy-sdk-packager\win\gdrive.py upload "$env:GDRIVE_KIVY_UPLOAD_ID" "$env:WHEEL_DIR\*" Check-Error C:\Python27\python.exe C:\projects\kivy-sdk-packager\win\gdrive.py delete_older "$env:GDRIVE_KIVY_UPLOAD_ID" "15" Check-Error } test_script: - ps: >- function Check-Error { param([int]$SuccessVal = 0) if ($SuccessVal -ne $LastExitCode) { throw "Failed with exit code $LastExitCode" } } if ($env:DO_TEST -eq "True"){ $env:USE_OPENGL_MOCK = 1 python setup.py build_ext --inplace -f Check-Error python -m nose.core kivy/tests Check-Error }