@@ -0,0 +1,56 @@ | |||
# This config file is used by appveyor.com to build Windows release binaries | |||
version: 0.4.1.dev0-b{build} | |||
branches: | |||
only: | |||
- master | |||
skip_tags: true | |||
environment: | |||
global: | |||
# See: http://stackoverflow.com/a/13751649/163740 | |||
WRAPPER: "cmd /E:ON /V:ON /C .\\scripts\\win_wrapper.cmd" | |||
matrix: | |||
- PYTHON: "C:\\Python27" | |||
PYTHON_VERSION: "2.7.10" | |||
PYTHON_ARCH: "32" | |||
- PYTHON: "C:\\Python27-x64" | |||
PYTHON_VERSION: "2.7.10" | |||
PYTHON_ARCH: "64" | |||
- PYTHON: "C:\\Python33" | |||
PYTHON_VERSION: "3.3.6" | |||
PYTHON_ARCH: "32" | |||
- PYTHON: "C:\\Python33-x64" | |||
PYTHON_VERSION: "3.3.6" | |||
PYTHON_ARCH: "64" | |||
- PYTHON: "C:\\Python34" | |||
PYTHON_VERSION: "3.4.3" | |||
PYTHON_ARCH: "32" | |||
- PYTHON: "C:\\Python34-x64" | |||
PYTHON_VERSION: "3.4.3" | |||
PYTHON_ARCH: "64" | |||
install: | |||
- "powershell scripts\\win_install.ps1" | |||
build_script: | |||
- "%WRAPPER% %PYTHON%\\python setup.py build" | |||
test_script: | |||
- "%WRAPPER% %PYTHON%\\python setup.py -q test" | |||
after_test: | |||
- "%WRAPPER% %PYTHON%\\python setup.py bdist_wheel" | |||
artifacts: | |||
- path: dist\* | |||
deploy: off |
@@ -0,0 +1,3 @@ | |||
This directory contains support files used for *developing* mwparserfromhell, | |||
not running it. If you are looking for code examples, read the documentation | |||
or explore the source code. |
@@ -31,6 +31,8 @@ update_version() { | |||
echo " done." | |||
} | |||
# TODO: update appveyor version! | |||
update_changelog() { | |||
filename="CHANGELOG" | |||
echo -n "Updating $filename..." | |||
@@ -67,10 +69,9 @@ do_git_stuff() { | |||
} | |||
upload_to_pypi() { | |||
# TODO: check whether these commands give output | |||
echo -n "PyPI: uploading source tarball and docs..." | |||
python setup.py register sdist upload -s | |||
python setup.py upload_docs | |||
python setup.py -q register sdist upload -s | |||
python setup.py -q upload_docs | |||
echo " done." | |||
} | |||
@@ -1,58 +0,0 @@ | |||
# Build requirements: | |||
# | |||
# Python 2.6-3.2: Visual C++ Express Edition 2008: | |||
# http://go.microsoft.com/?linkid=7729279 | |||
# | |||
# Python 3.3+: Visual C++ Express Edition 2010: | |||
# http://go.microsoft.com/?linkid=9709949 | |||
# | |||
# x64 builds: Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: | |||
# http://www.microsoft.com/en-us/download/details.aspx?id=3138 | |||
# | |||
# Python interpreter, 2.6, 2.7, 3.2-3.4: | |||
# https://www.python.org/downloads/ | |||
# | |||
# Pip, setuptools, wheel: | |||
# https://bootstrap.pypa.io/get-pip.py | |||
# and run *for each* Python version: | |||
# c:\pythonXX\python get-pip.py | |||
# c:\pythonXX\scripts\pip install wheel | |||
# | |||
# Afterwards, run this script with any of the python interpreters (2.7 suggested) | |||
from __future__ import print_function | |||
import os | |||
from subprocess import call, STDOUT | |||
ENVIRONMENTS = ["26", "27", "32", "33", "34"] | |||
def run(pyver, cmds): | |||
cmd = [r"C:\Python%s\Python.exe" % pyver, "setup.py"] + cmds | |||
print(" ".join(cmd), end=" ") | |||
with open("%s%s.log" % (cmds[0], pyver), "w") as logfile: | |||
retval = call(cmd, stdout=logfile, stderr=STDOUT, cwd="..") | |||
if not retval: | |||
print("[OK]") | |||
else: | |||
print("[FAILED (%i)]" % retval) | |||
return retval | |||
def main(): | |||
path = os.path.split(__file__)[0] | |||
if path: | |||
os.chdir(path) | |||
print("Building Windows wheels for Python %s:" % ", ".join(ENVIRONMENTS)) | |||
for pyver in ENVIRONMENTS: | |||
print() | |||
try: | |||
os.unlink("mwparserfromhell/parser/_tokenizer.pyd") | |||
except OSError: | |||
pass | |||
if run(pyver, ["test"]) == 0: | |||
run(pyver, ["bdist_wheel", "upload"]) # TODO: add "-s" to GPG sign | |||
if __name__ == "__main__": | |||
main() |
@@ -0,0 +1,85 @@ | |||
# Sample script to install Python and pip under Windows | |||
# Authors: Olivier Grisel and Kyle Kastner | |||
# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ | |||
$BASE_URL = "https://www.python.org/ftp/python/" | |||
$GET_PIP_URL = "https://bootstrap.pypa.io/get-pip.py" | |||
$GET_PIP_PATH = "C:\get-pip.py" | |||
function DownloadPython ($python_version, $platform_suffix) { | |||
$webclient = New-Object System.Net.WebClient | |||
$filename = "python-" + $python_version + $platform_suffix + ".msi" | |||
$url = $BASE_URL + $python_version + "/" + $filename | |||
$basedir = $pwd.Path + "\" | |||
$filepath = $basedir + $filename | |||
if (Test-Path $filename) { | |||
Write-Host "Reusing" $filepath | |||
return $filepath | |||
} | |||
# Download and retry up to 3 times in case of network transient errors. | |||
Write-Host "Downloading" $filename "from" $url | |||
$retry_attempts = 3 | |||
for($i=0; $i -lt $retry_attempts; $i++){ | |||
try { | |||
$webclient.DownloadFile($url, $filepath) | |||
break | |||
} | |||
Catch [Exception]{ | |||
Start-Sleep 1 | |||
} | |||
} | |||
Write-Host "File saved at" $filepath | |||
return $filepath | |||
} | |||
function InstallPython ($python_version, $architecture, $python_home) { | |||
Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home | |||
if (Test-Path $python_home) { | |||
Write-Host $python_home "already exists, skipping." | |||
return $false | |||
} | |||
if ($architecture -eq "32") { | |||
$platform_suffix = "" | |||
} else { | |||
$platform_suffix = ".amd64" | |||
} | |||
$filepath = DownloadPython $python_version $platform_suffix | |||
Write-Host "Installing" $filepath "to" $python_home | |||
$args = "/qn /i $filepath TARGETDIR=$python_home" | |||
Write-Host "msiexec.exe" $args | |||
Start-Process -FilePath "msiexec.exe" -ArgumentList $args -Wait -Passthru | |||
Write-Host "Python $python_version ($architecture) installation complete" | |||
return $true | |||
} | |||
function InstallPip ($python_home) { | |||
$pip_path = $python_home + "/Scripts/pip.exe" | |||
$python_path = $python_home + "/python.exe" | |||
if (-not(Test-Path $pip_path)) { | |||
Write-Host "Installing pip..." | |||
$webclient = New-Object System.Net.WebClient | |||
$webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH) | |||
Write-Host "Executing:" $python_path $GET_PIP_PATH | |||
Start-Process -FilePath "$python_path" -ArgumentList "$GET_PIP_PATH" -Wait -Passthru | |||
} else { | |||
Write-Host "pip already installed." | |||
} | |||
} | |||
function InstallPackage ($python_home, $pkg) { | |||
$pip_path = $python_home + "/Scripts/pip.exe" | |||
& $pip_path install $pkg | |||
} | |||
function main () { | |||
InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON | |||
InstallPip $env:PYTHON | |||
InstallPackage $env:PYTHON wheel | |||
} | |||
main |
@@ -0,0 +1,47 @@ | |||
:: 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 (SDK v7.1) | |||
:: | |||
:: To build extensions for 64 bit Python 2, we need to configure environment | |||
:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of: | |||
:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0) | |||
:: | |||
:: 32 bit builds do not require specific environment configurations. | |||
:: | |||
:: Note: this script needs to be run with the /E:ON and /V:ON flags for the | |||
:: cmd interpreter, at least for (SDK v7.0) | |||
:: | |||
:: More details at: | |||
:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows | |||
:: http://stackoverflow.com/a/13751649/163740 | |||
:: | |||
:: Author: Olivier Grisel | |||
:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/ | |||
@ECHO OFF | |||
SET COMMAND_TO_RUN=%* | |||
SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows | |||
SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%" | |||
IF %MAJOR_PYTHON_VERSION% == "2" ( | |||
SET WINDOWS_SDK_VERSION="v7.0" | |||
) ELSE IF %MAJOR_PYTHON_VERSION% == "3" ( | |||
SET WINDOWS_SDK_VERSION="v7.1" | |||
) ELSE ( | |||
ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%" | |||
EXIT 1 | |||
) | |||
IF "%PYTHON_ARCH%"=="64" ( | |||
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture | |||
SET DISTUTILS_USE_SDK=1 | |||
SET MSSdk=1 | |||
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION% | |||
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release | |||
ECHO Executing: %COMMAND_TO_RUN% | |||
call %COMMAND_TO_RUN% || EXIT 1 | |||
) ELSE ( | |||
ECHO Using default MSVC build environment for 32 bit architecture | |||
ECHO Executing: %COMMAND_TO_RUN% | |||
call %COMMAND_TO_RUN% || EXIT 1 | |||
) |