mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-02-02 09:55:27 -05:00
615 lines
29 KiB
Python
615 lines
29 KiB
Python
# -*- python -*-
|
|
# ex: set syntax=python:
|
|
|
|
# This is a sample buildmaster config file. It must be installed as
|
|
# 'master.cfg' in your buildmaster's base directory.
|
|
|
|
# This is the dictionary that the buildmaster pays attention to. We also use
|
|
# a shorter alias to save typing.
|
|
c = BuildmasterConfig = {}
|
|
|
|
####### BUILDSLAVES
|
|
|
|
# The 'slaves' list defines the set of recognized buildslaves. Each element is
|
|
# a BuildSlave object, specifying a unique slave name and password. The same
|
|
# slave name and password must be configured on the slave.
|
|
from buildbot.buildslave import BuildSlave
|
|
from buildbot_private import pass_dict
|
|
c['slaves'] = [BuildSlave("linux-slave", pass_dict["linux-slave"], max_builds = 1),
|
|
BuildSlave("OSX-slave", pass_dict["OSX-slave"], max_builds = 1),
|
|
BuildSlave("windows-slave", pass_dict["windows-slave"], max_builds = 1)
|
|
]
|
|
|
|
# 'slavePortnum' defines the TCP port to listen on for connections from slaves.
|
|
# This must match the value configured into the buildslaves (with their
|
|
# --master option)
|
|
c['slavePortnum'] = 9989
|
|
|
|
####### CHANGESOURCES
|
|
|
|
# the 'change_source' setting tells the buildmaster how it should find out
|
|
# about source code changes. Here we point to the CoolProp source code.
|
|
|
|
from buildbot.changes.gitpoller import GitPoller
|
|
c['change_source'] = []
|
|
c['change_source'].append(GitPoller(
|
|
'https://github.com/CoolProp/CoolProp',
|
|
workdir='gitpoller-workdir', branch='master',
|
|
pollinterval=300)) # Interval between triggering a build
|
|
|
|
####### BUILDERS
|
|
|
|
# The 'builders' list defines the Builders, which tell Buildbot how to perform a build:
|
|
# what steps, and which slaves can execute them. Note that any particular build will
|
|
# only take place on one slave.
|
|
|
|
from buildbot.process.factory import BuildFactory
|
|
from buildbot.steps.source.git import Git
|
|
from buildbot.steps.shell import ShellCommand
|
|
from buildbot.steps.slave import MakeDirectory, RemoveDirectory
|
|
from buildbot.steps.transfer import DirectoryUpload, FileDownload
|
|
from buildbot.process import properties
|
|
|
|
"""
|
|
from http://ss64.com/nt/del.html
|
|
deltree.cmd script, save it somewhere on the system PATH on windows
|
|
:: DelTree.cmd
|
|
:: Remove all files and subfolders but NOT the root folder
|
|
:: From tip 617 at JsiFAQ.com
|
|
@echo off
|
|
if "%1"=="" goto:eof
|
|
pushd %1
|
|
del /q *.*
|
|
for /f "Tokens=*" %%G in ('dir /B') do rd /s /q "%%G"
|
|
popd
|
|
"""
|
|
|
|
@properties.renderer
|
|
def cleanCommand(props):
|
|
|
|
fullclean = props.getProperty('fullclean', default = False)
|
|
is_windows = props.getProperty('slavename').find('windows') >= 0
|
|
|
|
if fullclean:
|
|
if is_windows:
|
|
command = ' '.join(['deltree','.','&&','echo','fully cleaned'])
|
|
else:
|
|
command = ' '.join(['rm','-rfv','*','&&','echo','fully cleaned'])
|
|
else:
|
|
command = ['echo','no clean requested;', 'fullclean:', props.getProperty('fullclean')]
|
|
return command
|
|
|
|
|
|
def sphinx_slave(platform, git_mode = 'incremental'):
|
|
factory = BuildFactory()
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
# Check out sources
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
# Download files from nightly build
|
|
factory.addStep(FileDownload(mastersrc = 'public_html/nightly/fluid_properties/incompressibles.tar.gz', slavedest = 'incompressibles.tar.gz', haltOnFailure = True))
|
|
# Directory for incompressible files
|
|
factory.addStep(MakeDirectory(dir='build/Web/_static/fluid_properties/incompressible', haltOnFailure = True))
|
|
# Untar
|
|
factory.addStep(ShellCommand(command = 'tar -C Web/_static/fluid_properties/incompressible -xzvf incompressibles.tar.gz', workdir = 'build', haltOnFailure = True))
|
|
# Run sphinx build
|
|
factory.addStep(ShellCommand(command=["python", "setup.py", "install", "--user"], workdir= 'build/wrappers/Python', haltOnFailure = True))
|
|
# Run sphinx build
|
|
factory.addStep(ShellCommand(command=["python", "-c", "\"import CoolProp; print(CoolProp.__file___)\""], workdir= 'build/wrappers/Python', haltOnFailure = True))
|
|
# Run doxygen build
|
|
factory.addStep(ShellCommand(command=' '.join(["doxygen","Doxyfile"]), workdir= 'build', haltOnFailure = True))
|
|
# Run sphinx apidoc
|
|
#factory.addStep(ShellCommand(command=["sphinx-apidoc","-T","-f","-o","apidoc","../CoolProp"],workdir= 'build/Web', haltOnFailure = True))
|
|
# Run sphinx build
|
|
factory.addStep(ShellCommand(command=["make", "html"], workdir= 'build/Web', haltOnFailure = True))
|
|
# Upload the generated files
|
|
factory.addStep(DirectoryUpload(slavesrc="Web/_build/html",masterdest="public_html/sphinx",url="sphinx",compress="bz2"))
|
|
return factory
|
|
|
|
def javascript_slave(platform, cmake_args = [], cmake_env = {}, build_args = [], git_mode = 'incremental'):
|
|
factory = BuildFactory()
|
|
working_folder = "build/Javascript"
|
|
|
|
from buildbot.process.properties import WithProperties
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
|
|
# Check out sources
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
# Remove the temporary folder for installs
|
|
factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True))
|
|
|
|
factory.addStep(ShellCommand(command="cmake .. -DCOOLPROP_JAVASCRIPT_MODULE=ON -DCMAKE_TOOLCHAIN_FILE=${EMSCRIPTEN}/cmake/Platform/Emscripten.cmake",
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["cmake", "--build", ".", "--target", "install"]+build_args, workdir = working_folder, haltOnFailure = True))
|
|
factory.addStep(DirectoryUpload(slavesrc="install_root", masterdest="public_html/binaries", url="binaries", compress="bz2"))
|
|
|
|
return factory
|
|
|
|
def python_slave(key, platform, conda_env, cmake_args = [], cmake_env = {}, build_args = [], git_mode = 'incremental', bitness = 64):
|
|
factory = BuildFactory()
|
|
working_folder = "build/wrappers/Python"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
# Check out sources
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
# Remove the temporary folder for installs
|
|
factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True))
|
|
|
|
if platform.find('OSX') > -1:
|
|
source = ['source','activate']
|
|
elif 'win' in platform.lower() and bitness == 32:
|
|
source = ['c:\\Miniconda32bit\\Scripts\\activate']
|
|
else:
|
|
source = ['activate']
|
|
|
|
if 'win' in platform.lower():
|
|
if conda_env == 'py27':
|
|
vc = 'vc9'
|
|
else:
|
|
vc = 'vc10'
|
|
options = ['bdist_wheel','--dist-dir','../../install_root/Python','bdist_wininst','--dist-dir','../../install_root/Python', '--cmake-compiler', vc, '--cmake-bitness', str(bitness)]
|
|
elif 'OSX' in platform:
|
|
options = ['bdist_wheel','--dist-dir','../../install_root/Python']
|
|
else:
|
|
raise ValueError()
|
|
|
|
factory.addStep(ShellCommand(command = ' '.join(source + [conda_env,"&&","python", "setup.py"]+options),
|
|
env = cmake_env,
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
|
|
factory.addStep(DirectoryUpload(slavesrc="install_root", masterdest="public_html/binaries", url="binaries", compress="bz2"))
|
|
|
|
return factory
|
|
|
|
def python_source_slave(key, platform, conda_env, cmake_args = [], cmake_env = {}, build_args = [], git_mode = 'incremental'):
|
|
factory = BuildFactory()
|
|
working_folder = "build/build"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
# Check out sources
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
# Remove the temporary folder for installs
|
|
factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir=working_folder, haltOnFailure = True))
|
|
|
|
factory.addStep(ShellCommand(command = ' '.join(['source',"activate",conda_env,"&&","cmake", "..", "-DCOOLPROP_PYTHON_PYPI=ON","&&","cmake","--build",".","--target","CoolProp"]+cmake_args),
|
|
env = cmake_env,
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
factory.addStep(DirectoryUpload(slavesrc="install_root", masterdest="public_html/binaries", url="binaries", compress="bz2"))
|
|
|
|
return factory
|
|
|
|
def deb_slave(git_mode = 'incremental'):
|
|
factory = BuildFactory()
|
|
working_folder = "build/wrappers/DEB"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
# Check out sources
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command = ' '.join(["chmod","+x","package.bsh","&&", "./package.bsh"]),
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir=working_folder+'/DEB/DEB', haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command = ' '.join(["mv","*.deb","DEB/DEB"]),
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
factory.addStep(DirectoryUpload(slavesrc="wrappers/DEB/DEB", masterdest="public_html/binaries", url="binaries/DEB", compress="bz2"))
|
|
|
|
return factory
|
|
|
|
def excel_slave(git_mode = 'incremental'):
|
|
"""
|
|
"""
|
|
factory = BuildFactory()
|
|
working_folder = "build/build"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
# check out the source
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir=working_folder+'/32bitDLL', haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir=working_folder+'/64bitDLL', haltOnFailure = True))
|
|
factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True))
|
|
# Make 32-bit __stdcall DLL
|
|
factory.addStep(ShellCommand(command=["cmake", "../..", "-DCOOLPROP_32BIT_STDCALL_SHARED_LIBRARY=ON","-G", "Visual Studio 10"],
|
|
workdir= working_folder+'/32bitDLL',
|
|
haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["cmake", "--build", ".", "--target", "install"], workdir = working_folder+'/32bitDLL', haltOnFailure = True))
|
|
# Make 64-bit DLL
|
|
factory.addStep(ShellCommand(command=["cmake", "../..", "-DCOOLPROP_64BIT_SHARED_LIBRARY=ON","-G", "Visual Studio 10 Win64"],
|
|
workdir= working_folder+'/64bitDLL',
|
|
haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["cmake", "--build", ".", "--target", "install"], workdir = working_folder+'/64bitDLL', haltOnFailure = True))
|
|
|
|
factory.addStep(MakeDirectory(dir='build\\bin\\MicrosoftExcel', haltOnFailure = True))
|
|
# Copy the created DLL
|
|
factory.addStep(ShellCommand(command=' '.join(["copy", "/Y", "install_root\\shared_library\\Windows\\32bit__stdcall_calling_convention\\*.dll", "bin\\MicrosoftExcel"]), workdir = 'build', haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=' '.join(["move", "CoolProp.dll", "CoolProp_x64.dll"]), workdir = 'build/install_root/shared_library/Windows/64bit', haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=' '.join(["copy", "/Y", "install_root\\shared_library\\Windows\\64bit\\*.dll", "bin\\MicrosoftExcel"]), workdir = 'build', haltOnFailure = True))
|
|
# Copy other files
|
|
factory.addStep(ShellCommand(command=["copy", "wrappers\Excel\CoolProp.xlam", "bin\MicrosoftExcel"], workdir = 'build', haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["copy", "wrappers\Excel\CoolProp.xla", "bin\MicrosoftExcel"], workdir = 'build', haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["copy", "wrappers\Excel\TestExcel.xlsx", "bin\MicrosoftExcel"], workdir = 'build', haltOnFailure = True))
|
|
# Upload the files
|
|
factory.addStep(DirectoryUpload(slavesrc="bin",masterdest="public_html/binaries",url="MicrosoftExcel",compress="bz2"))
|
|
return factory
|
|
|
|
def cmake_slave(mod_name, platform, git_mode = 'incremental', install = True, cmake_args = [], build_args = [], ctest_args = [], cmake_env={}, test = True):
|
|
"""
|
|
Parameters
|
|
----------
|
|
mod_name: string
|
|
The module to be built, one of 'Octave','python','Csharp', etc. - turns on the macro -DCOOLPROP_OCTAVE_MODULE=ON for instance if you pass octave
|
|
git_mode: string
|
|
What mode to use, one of 'incremental' or 'full'
|
|
install: bool
|
|
True for install, False for just build
|
|
cmake_args: list of strings
|
|
List of strings of arguments to be passed to cmake (Makefile generating) step
|
|
cmake_env: dictionary (string->string)
|
|
A dictionary including keys that can be set in the build environment
|
|
build_args: list of strings
|
|
List of strings of arguments to be passed to cmake install or build command depending on value of install
|
|
ctest_args: list of strings
|
|
List of strings of arguments to be passed to ctest
|
|
"""
|
|
factory = BuildFactory()
|
|
working_folder = "build/build"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
|
|
# check out the source
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir=working_folder, haltOnFailure = True))
|
|
factory.addStep(RemoveDirectory(dir="build/install_root", haltOnFailure = True))
|
|
if mod_name.lower() == 'octave' and platform.lower() == 'windows':
|
|
pre = ['set','"PATH=%OCTAVE_ROOT%/bin;%PATH%"','&&']
|
|
else:
|
|
pre = []
|
|
factory.addStep(ShellCommand(command=' '.join(pre+["cmake", "..", "-DCOOLPROP_"+mod_name.upper()+"_MODULE=ON","-DBUILD_TESTING=ON"]+cmake_args),
|
|
env = cmake_env,
|
|
workdir= working_folder,
|
|
haltOnFailure = True))
|
|
if install:
|
|
factory.addStep(ShellCommand(command=' '.join(pre+["cmake", "--build", ".", "--target", "install"]+build_args), workdir = working_folder, haltOnFailure = True))
|
|
else:
|
|
factory.addStep(ShellCommand(command=' '.join(pre+["cmake", "--build", "."]+build_args), workdir = working_folder, haltOnFailure = True))
|
|
if test:
|
|
factory.addStep(ShellCommand(command=["ctest", "--extra-verbose"] + ctest_args, workdir = working_folder, haltOnFailure = True))
|
|
if install:
|
|
factory.addStep(DirectoryUpload(slavesrc="install_root",masterdest="public_html/binaries",url="binaries",compress="bz2"))
|
|
return factory
|
|
|
|
def swig_matlab_pre(git_mode = 'incremental'):
|
|
"""
|
|
Download SWIG+MATLAB version, use it to build _wrap file for MATLAB builder, upload generated file back to master.
|
|
|
|
These generated files are needed for the other swig builders and are cross-platform
|
|
"""
|
|
factory = BuildFactory()
|
|
working_folder = "build/build"
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode=git_mode, submodules = True, progress=True, haltOnFailure = True))
|
|
# Download files from nightly build for swig
|
|
factory.addStep(FileDownload(mastersrc = 'public_html/nightly/swig-MATLAB/swig_MATLAB.7z', slavedest = 'swig_MATLAB.7z', haltOnFailure = True))
|
|
# Directory for build
|
|
factory.addStep(MakeDirectory(dir='build/build', haltOnFailure = True))
|
|
# Unzip
|
|
factory.addStep(ShellCommand(command = '7z -y -obuild x swig_MATLAB.7z', workdir = 'build', haltOnFailure = True))
|
|
|
|
factory.addStep(ShellCommand(command=' '.join(["PATH=swig-matlab-bin/bin:${PATH}","cmake", "..", "-DCOOLPROP_MATLAB_SWIG_MODULE=ON"]),
|
|
workdir= "build/build",
|
|
haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=["cmake", "--build", "."],
|
|
workdir= "build/build",
|
|
haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir='build/bin', haltOnFailure = True))
|
|
# Collect the generated files
|
|
factory.addStep(ShellCommand(command=["cp", "-avr", "+CoolProp", "../bin"], workdir= "build/build", haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=' '.join(["cp", "-avr", "CoolProp*.cxx", "../bin"]), workdir= "build/build", haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=' '.join(["cp", "-avr", "CoolProp*.mex*", "../bin"]), workdir= "build/build", haltOnFailure = True))
|
|
factory.addStep(ShellCommand(command=' '.join(["7z", "a", "../bin/+CoolProp.7z", "+CoolProp"]), workdir= "build/build", haltOnFailure = True))
|
|
|
|
# Upload the files
|
|
factory.addStep(DirectoryUpload(slavesrc="bin",masterdest="public_html/binaries/MATLAB",url="MATLAB",compress="bz2"))
|
|
return factory
|
|
|
|
def SWIG_MATLAB_bin_builder():
|
|
factory = BuildFactory()
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
|
|
# Check out the source
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode='incremental', submodules = False, progress=True, haltOnFailure = True))
|
|
|
|
# Build SWIG with MATLAB
|
|
factory.addStep(ShellCommand(command=' '.join(["python","build_swig_matlab.py"]),
|
|
workdir= "build/dev/scripts",
|
|
haltOnFailure = True))
|
|
factory.addStep(MakeDirectory(dir='build/dev/scripts/swig-MATLAB', haltOnFailure = True))
|
|
# Zip up the directory that was generated using bzip
|
|
factory.addStep(ShellCommand(command=' '.join(["7z","a","../swig-MATLAB/swig_MATLAB.7z","swig-matlab-bin"]),
|
|
workdir= "build/dev/scripts/swig-matlab",
|
|
haltOnFailure = True))
|
|
# Upload swig+MATLAB
|
|
factory.addStep(DirectoryUpload(slavesrc="dev/scripts/swig-MATLAB",
|
|
masterdest="public_html/nightly/swig-MATLAB",
|
|
url="nightly/swig-MATLAB",
|
|
compress="bz2"))
|
|
return factory
|
|
|
|
def nightly_builder():
|
|
factory = BuildFactory()
|
|
|
|
factory.addStep(ShellCommand(command=cleanCommand, description='fullclean?', workdir=""))
|
|
|
|
# Check out the source
|
|
factory.addStep(Git(repourl='git://github.com/CoolProp/CoolProp', mode='incremental', submodules = False, progress=True, haltOnFailure = True))
|
|
# Build the incompressible files
|
|
factory.addStep(ShellCommand(command=' '.join(["chmod", "+x", "nightly_build.bsh","&&","./nightly_build.bsh"]),
|
|
workdir= "build/dev/incompressible_liquids",
|
|
haltOnFailure = True))
|
|
# Upload the incompressible data
|
|
factory.addStep(DirectoryUpload(slavesrc="Web/_static/fluid_properties",
|
|
masterdest="public_html/nightly/fluid_properties",
|
|
url="nightly/fluid_properties",
|
|
compress="bz2"))
|
|
|
|
# Build SWIG with MATLAB
|
|
|
|
# factory.addStep(ShellCommand(command=' '.join(["python", "all_incompressibles.py"]),
|
|
# workdir= "build/dev/incompressibles",
|
|
# haltOnFailure = True))
|
|
return factory
|
|
|
|
|
|
|
|
|
|
from buildbot.config import BuilderConfig
|
|
|
|
c['builders'] = []
|
|
c['builders'].append(
|
|
BuilderConfig(name="Debian package",
|
|
slavenames=["linux-slave"],
|
|
factory = deb_slave()
|
|
)
|
|
)
|
|
|
|
c['builders'].append(
|
|
BuilderConfig(name="Excel",
|
|
slavenames=["windows-slave"],
|
|
factory = excel_slave() ) )
|
|
|
|
|
|
c['builders'].append(
|
|
BuilderConfig(name="Sphinx docs",
|
|
slavenames=["linux-slave"],
|
|
factory = sphinx_slave(platform = 'linux')
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="Javascript-linux",
|
|
slavenames=["linux-slave"],
|
|
factory = javascript_slave(platform = 'linux')
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="Python-sdist",
|
|
slavenames=["OSX-slave"],
|
|
factory = python_source_slave("PYPI", platform = 'OSX', conda_env = 'py27')
|
|
)
|
|
)
|
|
|
|
for conda_env in ['py33','py27','py34']:
|
|
for platform in ['OSX','windows']:
|
|
ctest_args, cmake_args = [], []
|
|
if platform.startswith('windows'):
|
|
ctest_args = ['-C', 'Release']
|
|
cmake_args = ['-G', '"Visual Studio 10 2010 Win64"']
|
|
c['builders'].append(
|
|
BuilderConfig(name="Python-binaries-" + platform + '-' + conda_env,
|
|
slavenames=[platform + "-slave"],
|
|
factory = python_slave("BINARIES",
|
|
platform = platform,
|
|
conda_env = conda_env,
|
|
cmake_args = cmake_args)
|
|
)
|
|
)
|
|
|
|
#Common boring 64-bit modules for windows, linux and OSX
|
|
### OSX
|
|
for platform in ['OSX', 'linux', 'windows']:
|
|
for wrapper in ['Java','MATLAB','Csharp','Octave','PHP','64BIT_SHARED_LIBRARY','STATIC_LIBRARY']:
|
|
if wrapper == 'PHP' and platform != 'linux': continue # only build PHP on linux
|
|
ctest_args, cmake_args = [], []
|
|
if platform.startswith('windows'):
|
|
ctest_args = ['-C', 'Release']
|
|
if wrapper == 'Octave':
|
|
cmake_args = ['-G', '"MinGW Makefiles"']
|
|
else:
|
|
cmake_args = ['-G', '"Visual Studio 10 2010 Win64"']
|
|
c['builders'].append(
|
|
BuilderConfig(name=wrapper + "-" + platform,
|
|
slavenames=[platform + "-slave"],
|
|
factory = cmake_slave(wrapper,
|
|
platform = platform,
|
|
ctest_args = ctest_args,
|
|
cmake_args = cmake_args)
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="Catch-"+platform,
|
|
slavenames=[platform + "-slave"],
|
|
factory = cmake_slave('Catch', platform = platform, install=False)
|
|
)
|
|
)
|
|
|
|
c['builders'].append(
|
|
BuilderConfig(name="32bitCdeclDLL-windows",
|
|
slavenames=["windows-slave"],
|
|
factory = cmake_slave('32BIT_CDECL_SHARED_LIBRARY',
|
|
test = False,
|
|
platform = 'windows',
|
|
cmake_args=['-G','"Visual Studio 10 2010"']
|
|
)
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="32bitStdcallDLL-windows",
|
|
slavenames=["windows-slave"],
|
|
factory = cmake_slave('32BIT_STDCALL_SHARED_LIBRARY',
|
|
test = False,
|
|
platform = 'windows',
|
|
cmake_args=['-G','"Visual Studio 10 2010"']
|
|
)
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="EES-windows",
|
|
slavenames=["windows-slave"],
|
|
factory = cmake_slave('EES',
|
|
platform = 'windows',
|
|
test = False,
|
|
cmake_args = ['-G','"Visual Studio 10 2010"'],
|
|
build_args = ['--config','Release'])
|
|
)
|
|
)
|
|
c['builders'].append(
|
|
BuilderConfig(name="MATLAB32-windows",
|
|
slavenames=["windows-slave"],
|
|
factory = cmake_slave('MATLAB',
|
|
platform = 'windows',
|
|
cmake_env={'MATLAB_ROOT':'c:\Program Files (x86)\MATLAB\R2014a'},
|
|
cmake_args=['-G','"Visual Studio 10 2010"'])
|
|
)
|
|
)
|
|
|
|
for conda_env in ['py33','py27','py34']:
|
|
c['builders'].append(
|
|
BuilderConfig(name="Python-binaries-windows32bit-" + conda_env,
|
|
slavenames=["windows-slave"],
|
|
factory = python_slave("BINARIES",
|
|
platform = 'windows',
|
|
conda_env = conda_env,
|
|
bitness = 32)
|
|
)
|
|
)
|
|
|
|
swig_matlab_pre = BuilderConfig(name="SWIG-MATLAB-pre", slavenames=["linux-slave"], factory = swig_matlab_pre())
|
|
c['builders'].append(swig_matlab_pre)
|
|
|
|
all_builder_names = [builder.name for builder in c['builders']]
|
|
|
|
####### NIGHTLY build ###############
|
|
|
|
c['builders'].append(
|
|
BuilderConfig(name="nightly-build",
|
|
#branch = 'master',
|
|
slavenames=["linux-slave"],
|
|
factory = nightly_builder()
|
|
)
|
|
)
|
|
|
|
c['builders'].append(
|
|
BuilderConfig(name="SWIG-MATLAB-bin",
|
|
#branch = 'master',
|
|
slavenames=["linux-slave"],
|
|
factory = SWIG_MATLAB_bin_builder()
|
|
)
|
|
)
|
|
|
|
####### SCHEDULERS
|
|
|
|
from buildbot.schedulers.basic import SingleBranchScheduler
|
|
from buildbot.schedulers.timed import Nightly
|
|
from buildbot.schedulers.forcesched import *
|
|
from buildbot.changes import filter
|
|
|
|
c['schedulers'] = []
|
|
c['schedulers'].append(SingleBranchScheduler(
|
|
name="all",
|
|
change_filter=filter.ChangeFilter(branch='master'),
|
|
treeStableTimer=None,
|
|
builderNames=all_builder_names))
|
|
c['schedulers'].append(ForceScheduler(
|
|
name="force",
|
|
builderNames=all_builder_names+['nightly-build','SWIG-MATLAB-bin'],
|
|
properties=[
|
|
BooleanParameter(name="fullclean",
|
|
label="Do a full clean", default=False)]))
|
|
|
|
c['schedulers'].append(Nightly(name='nightly',
|
|
branch='master',
|
|
builderNames=['nightly-build','SWIG-MATLAB-bin'],
|
|
hour=[3, 15],
|
|
minute=0))
|
|
|
|
from buildbot.schedulers import basic
|
|
|
|
swig_matlab_pre_scheduler = SingleBranchScheduler(
|
|
name="swig-matlab-scheduler",
|
|
change_filter=filter.ChangeFilter(branch='master'),
|
|
treeStableTimer=None,
|
|
builderNames=['SWIG-MATLAB-pre'])
|
|
c['schedulers'].append(swig_matlab_pre_scheduler)
|
|
|
|
c['schedulers'].append(basic.Dependent(name="swig-matlab-dependency",
|
|
upstream=swig_matlab_pre_scheduler, # <- no quotes!
|
|
builderNames=["MATLAB32-windows"])
|
|
)
|
|
|
|
####### STATUS TARGETS
|
|
|
|
# 'status' is a list of Status Targets. The results of each build will be
|
|
# pushed to these targets. buildbot/status/*.py has a variety to choose from,
|
|
# including web pages, email senders, and IRC bots.
|
|
|
|
c['status'] = []
|
|
|
|
from buildbot.status import html
|
|
from buildbot.status.web import authz, auth
|
|
from buildbot_private import web_auth
|
|
|
|
authz_cfg=authz.Authz(
|
|
# change any of these to True to enable; see the manual for more
|
|
# options
|
|
auth=auth.BasicAuth([(web_auth['user'], web_auth['pass'])]),
|
|
gracefulShutdown = False,
|
|
forceBuild = 'auth', # use this to test your slave once it is set up
|
|
forceAllBuilds = True,
|
|
pingBuilder = False,
|
|
stopBuild = True,
|
|
stopAllBuilds = True,
|
|
cancelPendingBuild = True,
|
|
)
|
|
c['status'].append(html.WebStatus(http_port=8010, authz=authz_cfg))
|
|
|
|
####### PROJECT IDENTITY
|
|
|
|
# the 'title' string will appear at the top of this buildbot
|
|
# installation's html.WebStatus home page (linked to the
|
|
# 'titleURL') and is embedded in the title of the waterfall HTML page.
|
|
|
|
c['title'] = "CoolProp"
|
|
c['titleURL'] = "https://www.coolprop.org"
|
|
|
|
# the 'buildbotURL' string should point to the location where the buildbot's
|
|
# internal web server (usually the html.WebStatus page) is visible. This
|
|
# typically uses the port number set in the Waterfall 'status' entry, but
|
|
# with an externally-visible host name which the buildbot cannot figure out
|
|
# without some help.
|
|
|
|
c['buildbotURL'] = "http://localhost:8010/"
|
|
|
|
####### DB URL
|
|
|
|
c['db'] = {
|
|
# This specifies what database buildbot uses to store its state. You can leave
|
|
# this at its default for all but the largest installations.
|
|
'db_url' : "sqlite:///state.sqlite",
|
|
}
|