Browse Source

Simplify appveyor.yml

Stefan Profanter 6 years ago
parent
commit
38e69af485
3 changed files with 179 additions and 117 deletions
  1. 13 117
      appveyor.yml
  2. 131 0
      tools/appveyor/build.ps1
  3. 35 0
      tools/appveyor/install.ps1

+ 13 - 117
appveyor.yml

@@ -9,78 +9,48 @@ skip_branch_with_pr: true
 environment:
     global:
         APPVEYOR_CACHE_ENTRY_ZIP_ARGS: -t7z -m0=lzma -mx=9
-        CYG_ARCH: x86
-        CYG_ROOT: C:/cygwin
-        CYG_SETUP_URL: http://cygwin.com/setup-x86.exe
-        CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
-        CYG_CACHE: C:\cygwin\var\cache\setup
-        CYG_BASH: C:/cygwin/bin/bash
-      
+
     matrix:
         - CC_NAME: MinGW Makefiles
           CC_SHORTNAME: mingw
-          MAKE: mingw32-make -j
+          # We need to redirect stderr to stdout otherwise powershell will fail if there is an output during amalgamation
+          MAKE: mingw32-make -j 2>&1
           FORCE_CXX: OFF
           OUT_DIR_LIB: bin
           OUT_DIR_EXAMPLES: bin\examples
         - CC_NAME: Visual Studio 9 2008
           CC_SHORTNAME: vs2008
-          # Do not build in parallel, project dependencies are not solved correctly and thus appveyor may randomly fail
-          MAKE: msbuild /m:1 /p:BuildInParallel=false /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
+          MAKE: msbuild /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
           FORCE_CXX: ON
           OUT_DIR_LIB: bin\Debug
           OUT_DIR_EXAMPLES: bin\examples\Debug
         - CC_NAME: Visual Studio 12 2013
           CC_SHORTNAME: vs2013
-          # Do not build in parallel, project dependencies are not solved correctly and thus appveyor may randomly fail
-          MAKE: msbuild /m:1 /p:BuildInParallel=false /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
+          MAKE: msbuild /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
           FORCE_CXX: OFF
           OUT_DIR_LIB: bin\Debug
           OUT_DIR_EXAMPLES: bin\examples\Debug
         - CC_NAME: Visual Studio 14 2015
           CC_SHORTNAME: vs2015
-          # Do not build in parallel, project dependencies are not solved correctly and thus appveyor may randomly fail
-          MAKE: msbuild /m:1 /p:BuildInParallel=false /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
+          MAKE: msbuild /p:ContinueOnError=false /p:StopOnFirstFailure=true open62541.sln
           FORCE_CXX: OFF
           OUT_DIR_LIB: bin\Debug
           OUT_DIR_EXAMPLES: bin\examples\Debug
 
 cache:
-  - '%CYG_CACHE%'
-  - 'c:\miktex'
+  - C:\ProgramData\chocolatey\bin -> tools/appveyor/install.ps1
+  - C:\ProgramData\chocolatey\lib -> tools/appveyor/install.ps1
+  #- 'c:\miktex'
 
 init:
   - git config --global core.autocrlf input # Attempt to ensure we don't try to convert line endings to Win32 CRLF as this will cause build to fail
 
-# Install needed build dependencies
 install:
-  - git submodule update --init --recursive
-  - if not exist "%CYG_ROOT%" mkdir "%CYG_ROOT%"
-  - ps: echo "Installing Cygwin from $env:CYG_SETUP_URL to $env:CYG_ROOT/setup-x86.exe"
-  - appveyor DownloadFile %CYG_SETUP_URL% -FileName %CYG_ROOT%/setup-x86.exe
-  - ps: echo "Downloaded. Now ready to install."
-  - cmd: '"%CYG_ROOT%/setup-x86.exe" --quiet-mode --no-shortcuts --only-site -R "%CYG_ROOT%" -s "%CYG_MIRROR%" -l "%CYG_CACHE%" --packages cmake,python'
-  - cmd: '%CYG_BASH% -lc "cygcheck -dc cygwin"'
-  # Install miktex to get pdflatex, if we don't get it from the cache
-  - if not exist c:\miktex\texmfs\install\miktex\bin\pdflatex.exe appveyor DownloadFile http://mirrors.ctan.org/systems/win32/miktex/setup/miktex-portable.exe
-  - if not exist c:\miktex\texmfs\install\miktex\bin\pdflatex.exe 7z x miktex-portable.exe -oc:\miktex >NUL
-  # Remove some big files to reduce size to be cached
-  - if exist c:\miktex\texmfs\install\doc rd /s /q c:\miktex\texmfs\install\doc
-  - if exist c:\miktex\texmfs\install\internal rd /s /q c:\miktex\texmfs\install\internal
-  - if exist c:\miktex\texmfs\install\miktex\bin\biber.exe rd /s /q c:\miktex\texmfs\install\miktex\bin\biber.exe
-  - if exist c:\miktex\texmfs\install\miktex\bin\icudt58.dll rd /s /q c:\miktex\texmfs\install\miktex\bin\icudt58.dll
-  - if exist c:\miktex\texmfs\install\miktex\bin\a5toa4.exe rd /s /q c:\miktex\texmfs\install\miktex\bin\a5toa4.exe
-  - pip install --user sphinx sphinx_rtd_theme
-  - cinst graphviz.portable
-  # Download and build libcheck
-  - appveyor DownloadFile https://github.com/Pro/check/releases/download/0.12.0_win/check.zip
-  - 7z x check.zip -oc:\ >NUL
-  # Install DrMemory
-  - cinst drmemory
+- ps: '& "./tools/appveyor/install.ps1"'
 
 before_build:
-  # use MinGW64
-  - set PATH=C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;C:\Program Files (x86)\Dr. Memory\bin;%PATH%
+  # Add installed tools to PATH
+  - set PATH=C:\mingw-w64\i686-5.3.0-posix-dwarf-rt_v4-rev0\mingw32\bin;C:\Program Files (x86)\Dr. Memory\bin;C:\Program Files\CMake\bin;%PATH%
   # Workaround for CMake not wanting sh.exe on PATH for MinGW
   - set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
   # Miktex
@@ -91,81 +61,7 @@ before_build:
   - initexmf --update-fndb
 
 build_script:
-  # log is loaded from cache, so we strip it here
-  - rd /s /q c:\miktex\texmfs\data\miktex\log
-
-  - cd c:\projects\open62541
-  # Collect files for .zip packing
-  - md pack
-  - copy "%APPVEYOR_BUILD_FOLDER%\LICENSE" pack\
-  - copy "%APPVEYOR_BUILD_FOLDER%\AUTHORS" pack\
-  - copy "%APPVEYOR_BUILD_FOLDER%\README.md" pack\
-  # now start build
-  - md build
-  - cd build
-  - echo. && echo "##### Building Documentation on %CC_NAME% #####" && echo.
-  - cmake -DMIKTEX_BINARY_PATH=c:\miktex\texmfs\install\miktex\bin -DCMAKE_BUILD_TYPE=Release -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -DUA_BUILD_EXAMPLES:BOOL=OFF -G"%CC_NAME%" ..
-  - cmake --build . --target doc_latex & cmake --build . --target doc_pdf
-  - move "%APPVEYOR_BUILD_FOLDER%\build\doc_latex\open62541.pdf" %APPVEYOR_BUILD_FOLDER%\pack\
-  - cd ..
-  - rd /s /q build
-  - md build
-  - cd build
-  - echo. && echo "##### Testing %CC_NAME% #####" && echo.
-  - cmake -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -G"%CC_NAME%" ..
-  - '%MAKE%'
-  - cd ..
-  - rd /s /q build
-  - md build
-  - cd build
-  - echo. && echo "##### Testing %CC_NAME% with full NS0 #####" && echo.
-  - cmake -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_FULL_NS0:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -G"%CC_NAME%" ..
-  - '%MAKE%'
-  - cd ..
-  - rd /s /q build
-  - md build
-  - cd build
-  - echo. && echo "##### Testing %CC_NAME% with amalgamation #####" && echo.
-  - cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_AMALGAMATION:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -DBUILD_SHARED_LIBS:BOOL=OFF -G"%CC_NAME%" ..
-  - '%MAKE%'
-  - md %APPVEYOR_BUILD_FOLDER%\pack_tmp
-  - move "%APPVEYOR_BUILD_FOLDER%\build\open62541.c" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\open62541.h" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_EXAMPLES%\server.exe" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_EXAMPLES%\client.exe" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\libopen62541.a" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if not "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\open62541.lib" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - cd ..
-  - 7z a -tzip open62541-%CC_SHORTNAME%-static.zip "%APPVEYOR_BUILD_FOLDER%\pack\*" "%APPVEYOR_BUILD_FOLDER%\pack_tmp\*"
-  - rd /s /q pack_tmp
-  - rd /s /q build
-  - md build
-  - cd build
-  - echo. && echo "##### Testing %CC_NAME% with amalgamation and .dll #####" && echo.
-  - cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_AMALGAMATION:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -DBUILD_SHARED_LIBS:BOOL=ON -G"%CC_NAME%" ..
-  - '%MAKE%'
-  - md %APPVEYOR_BUILD_FOLDER%\pack_tmp
-  - move "%APPVEYOR_BUILD_FOLDER%\build\open62541.c" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\open62541.h" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_EXAMPLES%\server.exe" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_EXAMPLES%\client.exe" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\libopen62541.dll" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\libopen62541.dll.a" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if not "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\open62541.dll" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - if not "%CC_SHORTNAME%" == "mingw" move "%APPVEYOR_BUILD_FOLDER%\build\%OUT_DIR_LIB%\open62541.pdb" %APPVEYOR_BUILD_FOLDER%\pack_tmp\
-  - cd ..
-  - 7z a -tzip open62541-%CC_SHORTNAME%-dynamic.zip "%APPVEYOR_BUILD_FOLDER%\pack\*" "%APPVEYOR_BUILD_FOLDER%\pack_tmp\*"
-  - rd /s /q pack_tmp
-  - rd /s /q build
-  # Only execute unit tests on vs2015 to save compilation time
-  - if "%CC_SHORTNAME%" == "vs2015" md build
-  - if "%CC_SHORTNAME%" == "vs2015" cd build
-  - if "%CC_SHORTNAME%" == "vs2015" echo. && echo "##### Testing %CC_NAME% with unit tests #####" && echo.
-  - if "%CC_SHORTNAME%" == "vs2015" cmake -DCMAKE_BUILD_TYPE=Debug -DUA_BUILD_EXAMPLES=OFF -DUA_ENABLE_DISCOVERY=ON -DUA_ENABLE_DISCOVERY_MULTICAST=ON -DUA_BUILD_UNIT_TESTS=ON -DUA_ENABLE_UNIT_TESTS_MEMCHECK=ON  -DCMAKE_LIBRARY_PATH=c:\check\lib -DCMAKE_INCLUDE_PATH=c:\check\include -DUA_COMPILE_AS_CXX:BOOL=%FORCE_CXX% -G"%CC_NAME%" ..
-  - if "%CC_SHORTNAME%" == "vs2015" %MAKE%
-  - if "%CC_SHORTNAME%" == "vs2015" cmake --build . --target test-verbose --config debug
-  # do not cache log
-  - rd /s /q c:\miktex\texmfs\data\miktex\log
+- ps: '& "./tools/appveyor/build.ps1"'
 
 after_build:
   - appveyor PushArtifact %APPVEYOR_BUILD_FOLDER%\open62541-%CC_SHORTNAME%-static.zip

+ 131 - 0
tools/appveyor/build.ps1

@@ -0,0 +1,131 @@
+$ErrorActionPreference = "Stop"
+
+cd $env:APPVEYOR_BUILD_FOLDER
+
+$make_cmd = "& $env:MAKE"
+
+# Collect files for .zip packing
+New-Item -ItemType directory -Path pack
+Copy-Item LICENSE pack
+Copy-Item AUTHORS pack
+Copy-Item README.md pack
+
+Write-Host -ForegroundColor Green "`n###################################################################"
+Write-Host -ForegroundColor Green "`n##### Building Documentation on $env:CC_NAME #####`n"
+New-Item -ItemType directory -Path build
+cd build
+& cmake -DMIKTEX_BINARY_PATH=c:\miktex\texmfs\install\miktex\bin -DCMAKE_BUILD_TYPE=Release -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -DUA_BUILD_EXAMPLES:BOOL=OFF -G"$env:CC_NAME" ..
+& cmake --build . --target doc_latex
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make doc_latex. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+& cmake --build . --target doc_pdf
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make doc_pdf. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+cd ..
+Move-Item -Path "build\doc_latex\open62541.pdf" -Destination pack\
+Remove-Item -Path build -Recurse
+
+
+Write-Host -ForegroundColor Green "`n###################################################################"
+Write-Host -ForegroundColor Green "`n##### Testing $env:CC_NAME #####`n"
+New-Item -ItemType directory -Path "build"
+cd build
+& cmake -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -G"$env:CC_NAME" ..
+Invoke-Expression $make_cmd
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make failed. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+cd ..
+Remove-Item -Path build -Recurse
+
+
+Write-Host -ForegroundColor Green "`n###################################################################"
+Write-Host -ForegroundColor Green "`n##### Testing $env:CC_NAME with full NS0 #####`n"
+New-Item -ItemType directory -Path "build"
+cd build
+& cmake -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_FULL_NS0:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -G"$env:CC_NAME" ..
+Invoke-Expression $make_cmd
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make failed. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+cd ..
+Remove-Item -Path build -Recurse
+
+
+Write-Host -ForegroundColor Green "`n###################################################################"
+Write-Host -ForegroundColor Green "`n##### Testing $env:CC_NAME with amalgamation #####`n"
+New-Item -ItemType directory -Path "build"
+cd build
+& cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_AMALGAMATION:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -DBUILD_SHARED_LIBS:BOOL=OFF -G"$env:CC_NAME" ..
+Invoke-Expression $make_cmd
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make failed. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+cd ..
+New-Item -ItemType directory -Path pack_tmp
+Move-Item -Path "build\open62541.c" -Destination pack_tmp\
+Move-Item -Path "build\open62541.h" -Destination pack_tmp\
+Move-Item -Path "build\$env:OUT_DIR_EXAMPLES\server.exe" -Destination pack_tmp\
+Move-Item -Path "build\$env:OUT_DIR_EXAMPLES\client.exe" -Destination pack_tmp\
+if ($env:CC_SHORTNAME -eq "mingw") {
+	Move-Item -Path "build\$env:OUT_DIR_LIB\libopen62541.a" -Destination pack_tmp\
+} else {
+	Move-Item -Path "build\$env:OUT_DIR_LIB\open62541.lib" -Destination pack_tmp\
+}
+& 7z a -tzip open62541-$env:CC_SHORTNAME-static.zip "$env:APPVEYOR_BUILD_FOLDER\pack\*" "$env:APPVEYOR_BUILD_FOLDER\pack_tmp\*"
+Remove-Item -Path pack_tmp -Recurse
+Remove-Item -Path build -Recurse
+
+
+Write-Host -ForegroundColor Green "`n###################################################################"
+Write-Host -ForegroundColor Green "`n##### Testing $env:CC_NAME with amalgamation and .dll #####`n"
+New-Item -ItemType directory -Path "build"
+cd build
+& cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DUA_BUILD_EXAMPLES:BOOL=ON -DUA_ENABLE_AMALGAMATION:BOOL=ON -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -DBUILD_SHARED_LIBS:BOOL=ON -G"$env:CC_NAME" ..
+Invoke-Expression $make_cmd
+if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+	Write-Host -ForegroundColor Red "`n`n*** Make failed. Exiting ... ***"
+	exit $LASTEXITCODE
+}
+cd ..
+New-Item -ItemType directory -Path pack_tmp
+Move-Item -Path "build\open62541.c" -Destination pack_tmp\
+Move-Item -Path "build\open62541.h" -Destination pack_tmp\
+Move-Item -Path "build\$env:OUT_DIR_EXAMPLES\server.exe" -Destination pack_tmp\
+Move-Item -Path "build\$env:OUT_DIR_EXAMPLES\client.exe" -Destination pack_tmp\
+if ($env:CC_SHORTNAME -eq "mingw") {
+	Move-Item -Path "build\$env:OUT_DIR_LIB\libopen62541.dll" -Destination pack_tmp\
+	Move-Item -Path "build\$env:OUT_DIR_LIB\libopen62541.dll.a" -Destination pack_tmp\
+} else {
+	Move-Item -Path "build\$env:OUT_DIR_LIB\open62541.dll" -Destination pack_tmp\
+	Move-Item -Path "build\$env:OUT_DIR_LIB\open62541.pdb" -Destination pack_tmp\
+}
+& 7z a -tzip open62541-$env:CC_SHORTNAME-dynamic.zip "$env:APPVEYOR_BUILD_FOLDER\pack\*" "$env:APPVEYOR_BUILD_FOLDER\pack_tmp\*"
+Remove-Item -Path pack_tmp -Recurse
+Remove-Item -Path build -Recurse
+
+if ($env:CC_SHORTNAME -eq "vs2015") {
+	# Only execute unit tests on vs2015 to save compilation time
+	New-Item -ItemType directory -Path "build"
+	cd build
+	Write-Host -ForegroundColor Green "`n###################################################################"
+	Write-Host -ForegroundColor Green "`n##### Testing $env:CC_NAME with unit tests #####`n"
+	& cmake -DCMAKE_BUILD_TYPE=Debug -DUA_BUILD_EXAMPLES=OFF -DUA_ENABLE_DISCOVERY=ON -DUA_ENABLE_DISCOVERY_MULTICAST=ON -DUA_BUILD_UNIT_TESTS=ON -DUA_ENABLE_UNIT_TESTS_MEMCHECK=ON  -DCMAKE_LIBRARY_PATH=c:\check\lib -DCMAKE_INCLUDE_PATH=c:\check\include -DUA_COMPILE_AS_CXX:BOOL=$env:FORCE_CXX -G"$env:CC_NAME" ..
+	Invoke-Expression $make_cmd
+    if ($LASTEXITCODE -and $LASTEXITCODE -ne 0) {
+    	Write-Host -ForegroundColor Red "`n`n*** Make failed. Exiting ... ***"
+    	exit $LASTEXITCODE
+    }
+	& cmake --build . --target test-verbose --config debug
+}
+
+
+# do not cache log
+Remove-Item -Path c:\miktex\texmfs\data\miktex\log -Recurse

+ 35 - 0
tools/appveyor/install.ps1

@@ -0,0 +1,35 @@
+$ErrorActionPreference = "Stop"
+
+& git submodule --quiet update --init --recursive
+
+
+Write-Host -ForegroundColor Green "`n### Installing CMake and python ###`n"
+& cinst --no-progress cmake python2
+
+Write-Host -ForegroundColor Green "`n### Installing sphinx ###`n"
+& pip install --user sphinx sphinx_rtd_theme
+
+Write-Host -ForegroundColor Green "`n### Installing Miktex ###`n"
+if (-not (Test-Path "c:\miktex\texmfs\install\miktex\bin\pdflatex.exe")) {
+	& appveyor DownloadFile https://ftp.uni-erlangen.de/mirrors/CTAN/systems/win32/miktex/setup/miktex-portable.exe
+	& 7z x miktex-portable.exe -oc:\miktex -bso0 -bsp0
+
+	# Remove some big files to reduce size to be cached
+	Remove-Item -Path c:\miktex\texmfs\install\doc -Recurse
+	Remove-Item -Path c:\miktex\texmfs\install\miktex\bin\biber.exe
+	Remove-Item -Path c:\miktex\texmfs\install\miktex\bin\icudt58.dll
+	Remove-Item -Path c:\miktex\texmfs\install\miktex\bin\a5toa4.exe
+}
+
+Write-Host -ForegroundColor Green "`n### Installing graphviz ###`n"
+& cinst --no-progress graphviz.portable
+
+
+if ($env:CC_SHORTNAME -eq "vs2015") {
+	Write-Host -ForegroundColor Green "`n### Installing libcheck ###`n"
+	& appveyor DownloadFile https://github.com/Pro/check/releases/download/0.12.0_win/check.zip
+	& 7z x check.zip -oc:\ -bso0 -bsp0
+
+	Write-Host -ForegroundColor Green "`n### Installing DrMemory ###`n"
+	& cinst --no-progress drmemory.portable
+}