summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-16 18:23:23 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2017-02-16 18:23:23 +0000
commit559dbe7b53d69876f6ca8b51860974b5e0d8efd1 (patch)
tree9bd059c5354d1d8bfebb93b936c61145530a56ef
parent30efe59af7b2cf71227b13a569a8dd780292dbd3 (diff)
parentafcae0a61b0db1389c3d13f72d0ca9b3661aea6a (diff)
downloadpsycopg2-559dbe7b53d69876f6ca8b51860974b5e0d8efd1.tar.gz
Merge branch 'test-windows'
-rw-r--r--.appveyor.yml239
-rw-r--r--README.rst11
-rw-r--r--scripts/appveyor.cache_rebuild15
-rw-r--r--scripts/vcvars64-vs2010.bat117
4 files changed, 380 insertions, 2 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
new file mode 100644
index 0000000..e4cf152
--- /dev/null
+++ b/.appveyor.yml
@@ -0,0 +1,239 @@
+version : 2.x.{build}
+
+clone_folder: C:\Project
+
+environment:
+ global:
+ # MSVC Express 2008's setenv.cmd failes if /E:ON and /V:ON are not
+ # enabled in the batch script interpreter
+ #
+ # WITH_COMPILER: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_compiler.cmd"
+ CMD_IN_ENV: cmd /E:ON /V:ON /C .\appveyor\run_with_env.cmd
+
+ matrix:
+ # For Python versions available on Appveyor, see
+ # http://www.appveyor.com/docs/installed-software#python
+
+ # Py 2.7 = VS Ver. 9.0 (VS 2008)
+ # Py 3.3, 3.4 = VS Ver. 10.0 (VS 2010)
+ # Py 3.5, 3.6 = VS Ver. 14.0 (VS 2015)
+
+ - PYTHON: C:\Python27-x64
+ PYTHON_ARCH: 64
+ VS_VER: 9.0
+
+ - PYTHON: C:\Python27
+ PYTHON_ARCH: 32
+ VS_VER: 9.0
+
+ - PYTHON: C:\Python36-x64
+ PYTHON_ARCH: 64
+ VS_VER: 14.0
+
+ - PYTHON: C:\Python36
+ PYTHON_ARCH: 32
+ VS_VER: 14.0
+
+ - PYTHON: C:\Python35-x64
+ PYTHON_ARCH: 64
+ VS_VER: 14.0
+
+ - PYTHON: C:\Python35
+ PYTHON_ARCH: 32
+ VS_VER: 14.0
+
+ - PYTHON: C:\Python34-x64
+ DISTUTILS_USE_SDK: '1'
+ PYTHON_ARCH: 64
+ VS_VER: 10.0
+
+ - PYTHON: C:\Python34
+ PYTHON_ARCH: 32
+ VS_VER: 10.0
+
+ - PYTHON: C:\Python33-x64
+ DISTUTILS_USE_SDK: '1'
+ PYTHON_ARCH: 64
+ VS_VER: 10.0
+
+ - PYTHON: C:\Python33
+ PYTHON_ARCH: 32
+ VS_VER: 10.0
+
+ PSYCOPG2_TESTDB: psycopg2_test
+ PSYCOPG2_TESTDB_USER: postgres
+ PSYCOPG2_TESTDB_PASSWORD: Password12!
+ PSYCOPG2_TESTDB_HOST: localhost
+ PSYCOPG2_TESTDB_PORT: 5432
+
+ PGUSER: postgres
+ PGPASSWORD: Password12!
+
+matrix:
+ fast_finish: false
+
+services:
+ - postgresql95
+
+cache:
+ # Rebuild cache if following file changes
+ - C:\Others -> scripts\appveyor.cache_rebuild
+
+# Script called before repo cloning
+init:
+ # Uncomment next line to get RDP access during the build.
+ #- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
+ #
+ # Set Python to the path
+ - SET PATH=%PYTHON%;%PYTHON%\Scripts;%PATH%
+
+ # Verify Python version and architecture
+ - ECHO *******************************************************************
+ - ECHO Python Information
+ - ECHO *******************************************************************
+ - "%PYTHON%\\python --version"
+ - "%PYTHON%\\python -c \"import sys; print('64bit: ' + str(sys.maxsize > 2**32))\""
+
+ # Get & Install NASM
+ #- curl -L -o nasminst.exe http://www.nasm.us/pub/nasm/releasebuilds/2.12.02/win64/nasm-2.12.02-installer-x64.exe && start /wait nasminst.exe /S
+ #- SET PATH="C:\Program Files (x86)\nasm;%PATH%"
+
+ # Fix problem with VS2008 Express and 64bit builds
+ - ECHO Fixing VS2008 Express and 64bit builds
+ - COPY "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin\\vcvars64.bat" "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin\\amd64\\vcvarsamd64.bat"
+
+ # Fix problem with VS2010 Express 64bit missing vcvars64.bat
+ # Note: repository not cloned at this point, so need to fetch
+ # file another way
+ - ECHO Fixing VS2010 Express and 64bit builds
+ - curl -fsSL -o "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64\\vcvars64.bat" https://raw.githubusercontent.com/psycopg/psycopg2-wheels/master/scripts/vcvars64-vs2010.bat
+
+ # Setup the compiler based upon version and architecture
+ - ECHO Configuring Compiler
+ - IF "%PYTHON_ARCH%"=="32" (CALL "C:\\Program Files (x86)\\Microsoft Visual Studio %VS_VER%\\VC\\vcvarsall.bat" x86)
+ - IF "%PYTHON_ARCH%"=="64" (CALL "C:\\Program Files (x86)\\Microsoft Visual Studio %VS_VER%\\VC\\vcvarsall.bat" amd64)
+
+ # Change PostgreSQL config before service starts to allow > 1 prepared
+ # transactions for test cases
+ - ECHO max_prepared_transactions = 10 >> "C:\\Program Files\\PostgreSQL\\9.5\\data\\postgresql.conf"
+
+
+# Repository gets cloned, Cache is restored
+install:
+ # We start off CD'ed to cloned folder
+ - SET BASE_DIR=C:\Others\%PYTHON_ARCH%\%VS_VER%
+ - SET BUILD_DIR=%BASE_DIR%\Builds
+ - IF NOT EXIST %BUILD_DIR% MKDIR %BUILD_DIR%
+
+ - ECHO *******************************************************************
+ - ECHO Initialized variables specific for this build
+ - ECHO *******************************************************************
+ - ECHO %BASE_DIR%
+ - ECHO %BUILD_DIR%
+ - ECHO *******************************************************************
+
+ # Setup directories for building OpenSSL libraries
+ - ECHO *******************************************************************
+ - ECHO Preparing for building OpenSSL
+ - ECHO *******************************************************************
+ - SET OPENSSLTOP=%BASE_DIR%\openssl
+ - IF NOT EXIST %OPENSSLTOP%\include\openssl MKDIR %OPENSSLTOP%\include\openssl
+ - IF NOT EXIST %OPENSSLTOP%\lib MKDIR %OPENSSLTOP%\lib
+
+ # Setup OpenSSL Environment Variables based on processor architecture
+ - ps: >-
+ If ($env:PYTHON_ARCH -Match "32" ) {
+ $env:VCVARS_PLATFORM="x86"
+ $env:TARGET="VC-WIN32"
+ $env:DO="do_ms"
+ } Else {
+ $env:VCVARS_PLATFORM="amd64"
+ $env:TARGET="VC-WIN64A"
+ $env:DO="do_win64a"
+ $env:CPU="AMD64"
+ }
+ # Download OpenSSL source
+ - CD C:\Others
+ - IF NOT EXIST OpenSSL_1_0_2k.zip (
+ curl -fsSL -o OpenSSL_1_0_2k.zip https://github.com/openssl/openssl/archive/OpenSSL_1_0_2k.zip
+ )
+
+ # To use OpenSSL >= 1.1.0, both libpq and psycopg build environments have
+ # to support the new library names. Below are commands to build OpenSSL
+ # 1.1.0:
+ # - mkdir _build
+ # - cd _build
+ # - perl ..\Configure %TARGET% no-asm no-shared --prefix=%BASE_DIR%\openssl --openssldir=%BASE_DIR%\openssl
+ # - nmake build_libs install_dev
+ - IF NOT EXIST %OPENSSLTOP%\lib\ssleay32.lib (
+ CD %BUILD_DIR% &&
+ 7z x C:\Others\OpenSSL_1_0_2k.zip &&
+ CD openssl-OpenSSL_1_0_2k &&
+ perl Configure %TARGET% no-asm no-shared no-zlib --prefix=%OPENSSLTOP% --openssldir=%OPENSSLTOP% &&
+ CALL ms\%DO% &&
+ nmake -f ms\nt.mak init headers lib &&
+ COPY inc32\openssl\*.h %OPENSSLTOP%\include\openssl &&
+ COPY out32\*.lib %OPENSSLTOP%\lib &&
+ CD %BASE_DIR% &&
+ RMDIR /S /Q %BUILD_DIR%\openssl-OpenSSL_1_0_2k
+ )
+
+ # Setup directories for building PostgreSQL librarires
+ - ECHO *******************************************************************
+ - ECHO Preparing for building PostgreSQL libraries
+ - ECHO *******************************************************************
+ - SET PGTOP=%BASE_DIR%\postgresql
+ - IF NOT EXIST %PGTOP%\include MKDIR %PGTOP%\include
+ - IF NOT EXIST %PGTOP%\lib MKDIR %PGTOP%\lib
+ # Download PostgreSQL source
+ - CD C:\Others
+ - IF NOT EXIST postgres-REL9_6_2.zip (
+ curl -fsSL -o postgres-REL9_6_2.zip https://github.com/postgres/postgres/archive/REL9_6_2.zip
+ )
+
+ # Setup build config file (config.pl)
+ # Build libpgport first
+ # Build libpq
+ # NOTE: Cannot set and use the same variable inside an IF
+ - SET PGBUILD=%BUILD_DIR%\postgres-REL9_6_2
+ - IF NOT EXIST %PGTOP%\lib\libpq.lib (
+ CD %BUILD_DIR% &&
+ 7z x C:\Others\postgres-REL9_6_2.zip &&
+ CD postgres-REL9_6_2\src\tools\msvc &&
+ ECHO $config-^>{ldap} = 0; > config.pl &&
+ ECHO $config-^>{openssl} = "%OPENSSLTOP:\=\\%"; >> config.pl &&
+ ECHO.>> config.pl &&
+ ECHO 1;>> config.pl &&
+ build libpgport &&
+ XCOPY /E ..\..\include %PGTOP%\include &&
+ COPY %PGBUILD%\Release\libpgport\libpgport.lib %PGTOP%\lib &&
+ CD ..\..\interfaces\libpq &&
+ nmake -f win32.mak USE_OPENSSL=1 ENABLE_THREAD_SAFETY=1 SSL_INC=%OPENSSLTOP%\include SSL_LIB_PATH=%OPENSSLTOP%\lib config .\Release\libpq.lib &&
+ COPY *.h %PGTOP%\include &&
+ COPY Release\libpq.lib %PGTOP%\lib &&
+ CD %BASE_DIR% &&
+ RMDIR /S /Q %PGBUILD%
+ )
+
+build: off
+
+#before_build:
+
+build_script:
+ # Add PostgreSQL binaries to the path
+ - PATH=C:\Program Files\PostgreSQL\9.5\bin\;%PATH%
+ - CD C:\Project
+ - "%PYTHON%\\python.exe setup.py build_ext --have-ssl -l libpgcommon -L %OPENSSLTOP%\\lib;%PGTOP%\\lib -I %OPENSSLTOP%\\include;%PGTOP%\\include"
+ - "%PYTHON%\\python.exe setup.py build"
+ - "%PYTHON%\\python.exe setup.py install"
+
+#after_build:
+
+before_test:
+ # Create and setup PostgreSQL database for the tests
+ - createdb %PSYCOPG2_TESTDB%
+ - psql -d %PSYCOPG2_TESTDB% -c "CREATE EXTENSION HSTORE;"
+
+test_script:
+ - "%PYTHON%\\python.exe -c \"import psycopg2; print(psycopg2.__version__)\""
+ - "%PYTHON%\\python.exe -c \"from psycopg2 import tests; tests.unittest.main(defaultTest='tests.test_suite')\" --verbose"
diff --git a/README.rst b/README.rst
index 03c84c4..8a6b6c6 100644
--- a/README.rst
+++ b/README.rst
@@ -53,6 +53,13 @@ please check the `project homepage`__.
.. __: http://initd.org/psycopg/
-.. image:: https://travis-ci.org/psycopg/psycopg2.svg?branch=master
+:Linux/OSX: |travis|
+:Windows: |appveyor|
+
+.. |travis| image:: https://travis-ci.org/psycopg/psycopg2.svg?branch=master
:target: https://travis-ci.org/psycopg/psycopg2
- :alt: Build Status
+ :alt: Linux and OSX build status
+
+.. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/psycopg/psycopg2?svg=true
+ :target: https://ci.appveyor.com/project/psycopg/psycopg2
+ :alt: Windows build status
diff --git a/scripts/appveyor.cache_rebuild b/scripts/appveyor.cache_rebuild
new file mode 100644
index 0000000..9bc1ce1
--- /dev/null
+++ b/scripts/appveyor.cache_rebuild
@@ -0,0 +1,15 @@
+This file is a simple placeholder for forcing the appveyor build cache
+to invalidate itself since appveyor.yml changes more frequently then
+the cache needs updating. Note, the versions list here can be
+different than what is indicated in appveyor.yml.
+
+To invalidate the cache, update this file and check it into git.
+
+
+Currently used modules built in the cache:
+
+OpenSSL
+ Version: 1.0.2k
+
+PostgreSQL
+ Version: 9.6.2
diff --git a/scripts/vcvars64-vs2010.bat b/scripts/vcvars64-vs2010.bat
new file mode 100644
index 0000000..7c8e1c2
--- /dev/null
+++ b/scripts/vcvars64-vs2010.bat
@@ -0,0 +1,117 @@
+@echo Setting environment for using Microsoft Visual Studio 2010 x64 tools.
+
+@call :GetVSCommonToolsDir
+@if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
+
+@call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" No32bit 64bit
+
+@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
+@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
+@if "%FrameworkDir64%"=="" goto error_no_FrameworkDIR64
+@if "%FrameworkVersion64%"=="" goto error_no_FrameworkVer64
+@if "%Framework35Version%"=="" goto error_no_Framework35Version
+
+@set FrameworkDir=%FrameworkDir64%
+@set FrameworkVersion=%FrameworkVersion64%
+
+@if not "%WindowsSdkDir%" == "" (
+ @set "PATH=%WindowsSdkDir%bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%bin\x64;%WindowsSdkDir%bin;%PATH%"
+ @set "INCLUDE=%WindowsSdkDir%include;%INCLUDE%"
+ @set "LIB=%WindowsSdkDir%lib\x64;%LIB%"
+)
+
+@rem PATH
+@rem ----
+@if exist "%VSINSTALLDIR%Team Tools\Performance Tools\x64" (
+ @set "PATH=%VSINSTALLDIR%Team Tools\Performance Tools\x64;%VSINSTALLDIR%Team Tools\Performance Tools;%PATH%"
+)
+@if exist "%ProgramFiles%\HTML Help Workshop" set PATH=%ProgramFiles%\HTML Help Workshop;%PATH%
+@if exist "%ProgramFiles(x86)%\HTML Help Workshop" set PATH=%ProgramFiles(x86)%\HTML Help Workshop;%PATH%
+@set PATH=%VSINSTALLDIR%Common7\Tools;%PATH%
+@set PATH=%VSINSTALLDIR%Common7\IDE;%PATH%
+@set PATH=%VCINSTALLDIR%VCPackages;%PATH%
+@set PATH=%FrameworkDir%\%Framework35Version%;%PATH%
+@set PATH=%FrameworkDir%\%FrameworkVersion%;%PATH%
+@set PATH=%VCINSTALLDIR%BIN\amd64;%PATH%
+
+@rem INCLUDE
+@rem -------
+@if exist "%VCINSTALLDIR%ATLMFC\INCLUDE" set INCLUDE=%VCINSTALLDIR%ATLMFC\INCLUDE;%INCLUDE%
+@set INCLUDE=%VCINSTALLDIR%INCLUDE;%INCLUDE%
+
+@rem LIB
+@rem ---
+@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIB=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIB%
+@set LIB=%VCINSTALLDIR%LIB\amd64;%LIB%
+@rem Don't forget to include the libraries in the SDK
+@set LIB=C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64;%LIB%
+
+OSLIbraries
+
+@rem LIBPATH
+@rem -------
+@if exist "%VCINSTALLDIR%ATLMFC\LIB\amd64" set LIBPATH=%VCINSTALLDIR%ATLMFC\LIB\amd64;%LIBPATH%
+@set LIBPATH=%VCINSTALLDIR%LIB\amd64;%LIBPATH%
+@set LIBPATH=%FrameworkDir%\%Framework35Version%;%LIBPATH%
+@set LIBPATH=%FrameworkDir%\%FrameworkVersion%;%LIBPATH%
+
+@set Platform=X64
+@set CommandPromptType=Native
+
+@goto end
+
+@REM -----------------------------------------------------------------------
+:GetVSCommonToolsDir
+@set VS100COMNTOOLS=
+@call :GetVSCommonToolsDirHelper32 HKLM > nul 2>&1
+@if errorlevel 1 call :GetVSCommonToolsDirHelper32 HKCU > nul 2>&1
+@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKLM > nul 2>&1
+@if errorlevel 1 call :GetVSCommonToolsDirHelper64 HKCU > nul 2>&1
+@exit /B 0
+
+:GetVSCommonToolsDirHelper32
+@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
+ @if "%%i"=="10.0" (
+ @SET "VS100COMNTOOLS=%%k"
+ )
+)
+@if "%VS100COMNTOOLS%"=="" exit /B 1
+@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
+@exit /B 0
+
+:GetVSCommonToolsDirHelper64
+@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7" /v "10.0"') DO (
+ @if "%%i"=="10.0" (
+ @SET "VS100COMNTOOLS=%%k"
+ )
+)
+@if "%VS100COMNTOOLS%"=="" exit /B 1
+@SET "VS100COMNTOOLS=%VS100COMNTOOLS%Common7\Tools\"
+@exit /B 0
+
+@REM -----------------------------------------------------------------------
+:error_no_VS100COMNTOOLSDIR
+@echo ERROR: Cannot determine the location of the VS Common Tools folder.
+@goto end
+
+:error_no_VSINSTALLDIR
+@echo ERROR: Cannot determine the location of the VS installation.
+@goto end
+
+:error_no_VCINSTALLDIR
+@echo ERROR: Cannot determine the location of the VC installation.
+@goto end
+
+:error_no_FrameworkDIR64
+@echo ERROR: Cannot determine the location of the .NET Framework 64bit installation.
+@goto end
+
+:error_no_FrameworkVer64
+@echo ERROR: Cannot determine the version of the .NET Framework 64bit installation.
+@goto end
+
+:error_no_Framework35Version
+@echo ERROR: Cannot determine the .NET Framework 3.5 version.
+@goto end
+
+:end