aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorEugene Kliuchnikov <eustas@google.com>2017-04-23 14:07:08 +0200
committerGitHub <noreply@github.com>2017-04-23 14:07:08 +0200
commit6ece1d8791a887c1b3fd500435be97d42921cee7 (patch)
treecc5504ff795d2d28efaccc8e30d4c72e0acd1eab /scripts
parent04de756ad2b0a8f58987d415ef520467e3440f20 (diff)
downloadbrotli-6ece1d8791a887c1b3fd500435be97d42921cee7.zip
brotli-6ece1d8791a887c1b3fd500435be97d42921cee7.tar.gz
brotli-6ece1d8791a887c1b3fd500435be97d42921cee7.tar.bz2
Move files & update paths (#541)
* Move files & update paths * Rename build to scripts. * Fix paths * Fix script.
Diffstat (limited to 'scripts')
-rw-r--r--scripts/.bintray.json19
-rw-r--r--scripts/.configure-custom.sh4
-rwxr-xr-xscripts/.travis.sh99
-rw-r--r--scripts/appveyor.yml107
-rw-r--r--scripts/install_py.ps1177
-rw-r--r--scripts/run_with_compiler.cmd80
m---------scripts/terryfy0
7 files changed, 486 insertions, 0 deletions
diff --git a/scripts/.bintray.json b/scripts/.bintray.json
new file mode 100644
index 0000000..ef2ea9d
--- /dev/null
+++ b/scripts/.bintray.json
@@ -0,0 +1,19 @@
+{
+ "package": {
+ "name": "bin",
+ "repo": "brotli",
+ "subject": "eustas"
+ },
+
+ "version": {"name": "snapshot"},
+
+ "files": [
+ {
+ "includePattern": "brotli.zip",
+ "uploadPattern": "brotli-${TRAVIS_OS_NAME}-${RELEASE_DATE}.zip",
+ "matrix_params": {"override": 1}
+ }
+ ],
+
+ "publish": true
+}
diff --git a/scripts/.configure-custom.sh b/scripts/.configure-custom.sh
new file mode 100644
index 0000000..538122c
--- /dev/null
+++ b/scripts/.configure-custom.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+DISABLE_VARS="shared-libs|0|BUILD_SHARED_LIBS"
+DISABLE_BUILD_SHARED_LIBS_DOC="force building static libraries"
diff --git a/scripts/.travis.sh b/scripts/.travis.sh
new file mode 100755
index 0000000..458dcdc
--- /dev/null
+++ b/scripts/.travis.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+
+case "$1" in
+ "before_install")
+ case "${TRAVIS_OS_NAME}" in
+ "linux")
+ case "${BUILD_SYSTEM}" in
+ "bazel")
+ wget https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel_0.4.5-linux-x86_64.deb
+ echo 'b494d0a413e4703b6cd5312403bea4d92246d6425b3be68c9bfbeb8cc4db8a55 bazel_0.4.5-linux-x86_64.deb' | sha256sum -c --strict || exit 1
+ sudo dpkg -i bazel_0.4.5-linux-x86_64.deb
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ "install")
+ case "${TRAVIS_OS_NAME}" in
+ "osx")
+ brew update
+ brew install binutils
+
+ case "${CC}" in
+ "gcc-"*)
+ which ${CC} || brew install homebrew/versions/gcc$(echo "${CC#*-}" | sed 's/\.//')
+ ;;
+ esac
+
+ case "${BUILD_SYSTEM}" in
+ "python")
+ source scripts/terryfy/travis_tools.sh
+ get_python_environment $INSTALL_TYPE $PYTHON_VERSION venv
+ pip install --upgrade wheel
+ ;;
+ "bazel")
+ brew install bazel
+ ;;
+ esac
+ ;;
+ "linux")
+ case "${CC}" in
+ "pgcc")
+ wget 'https://raw.githubusercontent.com/nemequ/pgi-travis/de6212d94fd0e7d07a6ef730c23548c337c436a7/install-pgi.sh'
+ echo 'acd3ef995ad93cfb87d26f65147395dcbedd4c3c844ee6ec39616f1a347c8df5 install-pgi.sh' | sha256sum -c --strict || exit 1
+ /bin/sh install-pgi.sh
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ "script")
+ case "${BUILD_SYSTEM}" in
+ "cmake")
+ mkdir builddir && cd builddir
+ CMAKE_FLAGS=
+ if [ "${CROSS_COMPILE}" = "yes" ]; then
+ CMAKE_FLAGS="-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_RC_COMPILER=${RC_COMPILER}"
+ fi
+ cmake ${CMAKE_FLAGS} -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" -DENABLE_SANITIZER="${SANITIZER}" -DCMAKE_C_FLAGS="${CFLAGS}" ..
+ make VERBOSE=1
+ ctest -V
+ ;;
+ "python")
+ if [ "${TRAVIS_OS_NAME}" = "osx" ]; then
+ source venv/bin/activate
+ fi
+ python setup.py build test
+ ;;
+ "maven")
+ cd java/org/brotli
+ mvn install && cd integration && mvn verify
+ ;;
+ "bazel")
+ bazel test -c opt ...:all
+ ;;
+ esac
+ ;;
+ "after_success")
+ case "${BUILD_SYSTEM}" in
+ "python")
+ case "${TRAVIS_OS_NAME}" in
+ "osx")
+ source venv/bin/activate
+ pip wheel -w dist .
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ "before_deploy")
+ case "${BUILD_SYSTEM}" in
+ "bazel")
+ export RELEASE_DATE=`date +%Y-%m-%d`
+ perl -p -i -e 's/\$\{([^}]+)\}/defined $ENV{$1} ? $ENV{$1} : $&/eg' scripts/.bintray.json
+ zip -j9 brotli.zip bazel-bin/libbrotli*.a bazel-bin/libbrotli*.so bazel-bin/bro
+ ;;
+ esac
+ ;;
+esac
diff --git a/scripts/appveyor.yml b/scripts/appveyor.yml
new file mode 100644
index 0000000..617f324
--- /dev/null
+++ b/scripts/appveyor.yml
@@ -0,0 +1,107 @@
+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
+ WITH_COMPILER: "cmd /E:ON /V:ON /C .\\scripts\\run_with_compiler.cmd"
+
+ matrix:
+ - BUILD_SYSTEM: CMake
+ GENERATOR: Visual Studio 14 2015 Win64
+
+ - BUILD_SYSTEM: CMake
+ GENERATOR: Visual Studio 14 2015
+
+ - BUILD_SYSTEM: CMake
+ GENERATOR: Visual Studio 12 2013 Win64
+
+ - BUILD_SYSTEM: CMake
+ GENERATOR: Visual Studio 12 2013
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python27"
+ PYTHON_VERSION: "2.7.x"
+ PYTHON_ARCH: "32"
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python34"
+ PYTHON_VERSION: "3.4.x"
+ PYTHON_ARCH: "32"
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python35"
+ PYTHON_VERSION: "3.5.0"
+ PYTHON_ARCH: "32"
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python27-x64"
+ PYTHON_VERSION: "2.7.x"
+ PYTHON_ARCH: "64"
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python34-x64"
+ PYTHON_VERSION: "3.4.x"
+ PYTHON_ARCH: "64"
+
+ - BUILD_SYSTEM: Python
+ PYTHON: "C:\\Python35-x64"
+ PYTHON_VERSION: "3.5.0"
+ PYTHON_ARCH: "64"
+
+install:
+ - ps: |
+ if ($env:BUILD_SYSTEM -eq "Python") {
+ # install Python and pip when not already installed
+ if (-not(Test-Path($env:PYTHON))) { & scripts\install_py.ps1 }
+
+ # prepend newly installed Python to the PATH
+ $env:Path = $env:PYTHON + ';' + $env:PYTHON + '\\Scripts;' + $env:PATH
+
+ # upgrade pip to avoid out-of-date warnings
+ pip install --disable-pip-version-check --user --upgrade pip
+
+ # install/upgrade setuptools and wheel to build packages
+ pip install --upgrade setuptools wheel
+ }
+
+before_build:
+ - ps: |
+ if ($env:BUILD_SYSTEM -eq "CMake") {
+ mkdir builddir
+ cd builddir
+
+ cmake -G "$env:GENERATOR" ..
+ }
+
+build_script:
+ - ps: |
+ if ($env:BUILD_SYSTEM -eq "CMake") {
+ cmake --build . --config Debug
+ }
+
+test_script:
+ - if "%BUILD_SYSTEM%" == "CMake" ( ctest --output-on-failure --interactive-debug-mode 0 -C Debug )
+ - if "%BUILD_SYSTEM%" == "Python" ( python setup.py build test )
+
+after_test:
+ - if "%BUILD_SYSTEM%" == "Python" ( pip wheel -w dist . )
+ - if "%BUILD_SYSTEM%" == "Python" ( python setup.py sdist --formats=gztar,zip )
+
+artifacts:
+ # archive the generated packages in the ci.appveyor.com build report
+ - path: dist\*.whl
+ - path: dist\*.zip
+ - path: dist\*.tar.gz
+
+# For info, see: http://www.appveyor.com/docs/deployment/github
+
+deploy:
+ - provider: GitHub
+ auth_token:
+ secure: dfL56DgbwuGJNNE5GzKi/pAgBQnJ37Du+AnCtnsTnIYxpis8ah3fPmA/G+bn4NJ3
+ artifact:
+ draft: false
+ prerelease: false
+ on:
+ appveyor_repo_tag: true
diff --git a/scripts/install_py.ps1 b/scripts/install_py.ps1
new file mode 100644
index 0000000..bdd0cd3
--- /dev/null
+++ b/scripts/install_py.ps1
@@ -0,0 +1,177 @@
+# Sample script to install Python and pip under Windows
+# Authors: Olivier Grisel, Jonathan Helmus, Kyle Kastner, and Alex Willmer
+# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
+# Source: https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor/install.ps1
+
+$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"
+
+$PYTHON_PRERELEASE_REGEX = @"
+(?x)
+(?<major>\d+)
+\.
+(?<minor>\d+)
+\.
+(?<micro>\d+)
+(?<prerelease>[a-z]{1,2}\d+)
+"@
+
+
+function Download ($filename, $url) {
+ $webclient = New-Object System.Net.WebClient
+
+ $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 = 2
+ for ($i = 0; $i -lt $retry_attempts; $i++) {
+ try {
+ $webclient.DownloadFile($url, $filepath)
+ break
+ }
+ Catch [Exception]{
+ Start-Sleep 1
+ }
+ }
+ if (Test-Path $filepath) {
+ Write-Host "File saved at" $filepath
+ } else {
+ # Retry once to get the error message if any at the last try
+ $webclient.DownloadFile($url, $filepath)
+ }
+ return $filepath
+}
+
+
+function ParsePythonVersion ($python_version) {
+ if ($python_version -match $PYTHON_PRERELEASE_REGEX) {
+ return ([int]$matches.major, [int]$matches.minor, [int]$matches.micro,
+ $matches.prerelease)
+ }
+ $version_obj = [version]$python_version
+ return ($version_obj.major, $version_obj.minor, $version_obj.build, "")
+}
+
+
+function DownloadPython ($python_version, $platform_suffix) {
+ $major, $minor, $micro, $prerelease = ParsePythonVersion $python_version
+
+ if (($major -le 2 -and $micro -eq 0) `
+ -or ($major -eq 3 -and $minor -le 2 -and $micro -eq 0) `
+ ) {
+ $dir = "$major.$minor"
+ $python_version = "$major.$minor$prerelease"
+ } else {
+ $dir = "$major.$minor.$micro"
+ }
+
+ if ($prerelease) {
+ if (($major -le 2) `
+ -or ($major -eq 3 -and $minor -eq 1) `
+ -or ($major -eq 3 -and $minor -eq 2) `
+ -or ($major -eq 3 -and $minor -eq 3) `
+ ) {
+ $dir = "$dir/prev"
+ }
+ }
+
+ if (($major -le 2) -or ($major -le 3 -and $minor -le 4)) {
+ $ext = "msi"
+ if ($platform_suffix) {
+ $platform_suffix = ".$platform_suffix"
+ }
+ } else {
+ $ext = "exe"
+ if ($platform_suffix) {
+ $platform_suffix = "-$platform_suffix"
+ }
+ }
+
+ $filename = "python-$python_version$platform_suffix.$ext"
+ $url = "$BASE_URL$dir/$filename"
+ $filepath = Download $filename $url
+ 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"
+ }
+ $installer_path = DownloadPython $python_version $platform_suffix
+ $installer_ext = [System.IO.Path]::GetExtension($installer_path)
+ Write-Host "Installing $installer_path to $python_home"
+ $install_log = $python_home + ".log"
+ if ($installer_ext -eq '.msi') {
+ InstallPythonMSI $installer_path $python_home $install_log
+ } else {
+ InstallPythonEXE $installer_path $python_home $install_log
+ }
+ if (Test-Path $python_home) {
+ Write-Host "Python $python_version ($architecture) installation complete"
+ } else {
+ Write-Host "Failed to install Python in $python_home"
+ Get-Content -Path $install_log
+ Exit 1
+ }
+}
+
+
+function InstallPythonEXE ($exepath, $python_home, $install_log) {
+ $install_args = "/quiet InstallAllUsers=1 TargetDir=$python_home"
+ RunCommand $exepath $install_args
+}
+
+
+function InstallPythonMSI ($msipath, $python_home, $install_log) {
+ $install_args = "/qn /log $install_log /i $msipath TARGETDIR=$python_home"
+ $uninstall_args = "/qn /x $msipath"
+ RunCommand "msiexec.exe" $install_args
+ if (-not(Test-Path $python_home)) {
+ Write-Host "Python seems to be installed else-where, reinstalling."
+ RunCommand "msiexec.exe" $uninstall_args
+ RunCommand "msiexec.exe" $install_args
+ }
+}
+
+function RunCommand ($command, $command_args) {
+ Write-Host $command $command_args
+ Start-Process -FilePath $command -ArgumentList $command_args -Wait -Passthru
+}
+
+
+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
+ & $python_path $GET_PIP_PATH
+ } else {
+ Write-Host "pip already installed."
+ }
+}
+
+
+function main () {
+ InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON
+ InstallPip $env:PYTHON
+}
+
+main \ No newline at end of file
diff --git a/scripts/run_with_compiler.cmd b/scripts/run_with_compiler.cmd
new file mode 100644
index 0000000..ad125ec
--- /dev/null
+++ b/scripts/run_with_compiler.cmd
@@ -0,0 +1,80 @@
+:: 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, and 64-bit builds for 3.5 and beyond, 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
+::
+:: Original source:
+:: https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor/run_with_env.cmd
+::
+:: 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 WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
+
+:: Extract the major and minor versions, and allow for the minor version to be
+:: more than 9. This requires the version number to have two dots in it.
+SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
+IF "%PYTHON_VERSION:~3,1%" == "." (
+ SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
+) ELSE (
+ SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
+)
+
+:: Based on the Python version, determine what SDK version to use, and whether
+:: to set the SDK for 64-bit.
+IF %MAJOR_PYTHON_VERSION% == 2 (
+ SET WINDOWS_SDK_VERSION="v7.0"
+ SET SET_SDK_64=Y
+) ELSE (
+ IF %MAJOR_PYTHON_VERSION% == 3 (
+ SET WINDOWS_SDK_VERSION="v7.1"
+ IF %MINOR_PYTHON_VERSION% LEQ 4 (
+ SET SET_SDK_64=Y
+ ) ELSE (
+ SET SET_SDK_64=N
+ IF EXIST "%WIN_WDK%" (
+ :: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
+ REN "%WIN_WDK%" 0wdf
+ )
+ )
+ ) ELSE (
+ ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
+ EXIT 1
+ )
+)
+
+IF %PYTHON_ARCH% == 64 (
+ IF %SET_SDK_64% == Y (
+ 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 64 bit architecture
+ 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
+)
diff --git a/scripts/terryfy b/scripts/terryfy
new file mode 160000
+Subproject 8bb673f4410819df06920fdcfd24e18d235d84f