Merge "builders: add cmakebuilder plugin support"
This commit is contained in:
commit
c492c0b99b
@ -1511,3 +1511,131 @@ def managed_script(parser, xml_parent, data):
|
|||||||
args = XML.SubElement(ms, 'buildStepArgs')
|
args = XML.SubElement(ms, 'buildStepArgs')
|
||||||
for arg in data.get('args', []):
|
for arg in data.get('args', []):
|
||||||
XML.SubElement(args, 'string').text = arg
|
XML.SubElement(args, 'string').text = arg
|
||||||
|
|
||||||
|
|
||||||
|
def cmake(parser, xml_parent, data):
|
||||||
|
"""yaml: cmake
|
||||||
|
Execute a CMake target. Requires the Hudson `cmakebuilder Plugin.
|
||||||
|
<http://wiki.hudson-ci.org/display/HUDSON/cmakebuilder+Plugin>`_
|
||||||
|
|
||||||
|
:arg str source-dir: the source code directory relative to the workspace
|
||||||
|
directory. (required)
|
||||||
|
:arg str build-dir: The directory where the project will be built in.
|
||||||
|
Relative to the workspace directory. (optional)
|
||||||
|
:arg list install-dir: The directory where the project will be installed
|
||||||
|
in, relative to the workspace directory. (optional)
|
||||||
|
:arg list build-type: Sets the "build type" option. A custom type different
|
||||||
|
than the default ones specified on the CMake plugin can also be set,
|
||||||
|
which will be automatically used in the "Other Build Type" option of
|
||||||
|
the plugin. (default: Debug)
|
||||||
|
|
||||||
|
:type Default types present in the CMake plugin:
|
||||||
|
* **Debug**
|
||||||
|
* **Release**
|
||||||
|
* **RelWithDebInfo**
|
||||||
|
* **MinSizeRel**
|
||||||
|
|
||||||
|
:arg list generator: The makefile generator (default: "Unix Makefiles").
|
||||||
|
|
||||||
|
:type Possible generators:
|
||||||
|
* **Borland Makefiles**
|
||||||
|
* **CodeBlocks - MinGW Makefiles**
|
||||||
|
* **CodeBlocks - Unix Makefiles**
|
||||||
|
* **Eclipse CDT4 - MinGW Makefiles**
|
||||||
|
* **Eclipse CDT4 - NMake Makefiles**
|
||||||
|
* **Eclipse CDT4 - Unix Makefiles**
|
||||||
|
* **MSYS Makefiles**
|
||||||
|
* **MinGW Makefiles**
|
||||||
|
* **NMake Makefiles**
|
||||||
|
* **Unix Makefiles**
|
||||||
|
* **Visual Studio 6**
|
||||||
|
* **Visual Studio 7 .NET 2003**
|
||||||
|
* **Visual Studio 8 2005**
|
||||||
|
* **Visual Studio 8 2005 Win64**
|
||||||
|
* **Visual Studio 9 2008**
|
||||||
|
* **Visual Studio 9 2008 Win64**
|
||||||
|
* **Watcom WMake**
|
||||||
|
|
||||||
|
:arg str make-command: The make command (default: "make").
|
||||||
|
:arg str install-command: The install command (default: "make install").
|
||||||
|
:arg str preload-script: Path to a CMake preload script file. (optional)
|
||||||
|
:arg str other-arguments: Other arguments to be added to the CMake
|
||||||
|
call. (optional)
|
||||||
|
:arg str custom-cmake-path: Path to cmake executable. (optional)
|
||||||
|
:arg bool clean-build-dir: If true, delete the build directory before each
|
||||||
|
build (default: false).
|
||||||
|
:arg bool clean-install-dir: If true, delete the install dir before each
|
||||||
|
build (default: false).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
.. literalinclude:: ../../tests/builders/fixtures/cmake-common.yaml
|
||||||
|
:language: yaml
|
||||||
|
"""
|
||||||
|
|
||||||
|
BUILD_TYPES = ['Debug', 'Release', 'RelWithDebInfo', 'MinSizeRel']
|
||||||
|
|
||||||
|
cmake = XML.SubElement(xml_parent, 'hudson.plugins.cmake.CmakeBuilder')
|
||||||
|
|
||||||
|
source_dir = XML.SubElement(cmake, 'sourceDir')
|
||||||
|
try:
|
||||||
|
source_dir.text = data['source-dir']
|
||||||
|
except KeyError:
|
||||||
|
raise JenkinsJobsException("'source-dir' must be set for CMake "
|
||||||
|
"builder")
|
||||||
|
|
||||||
|
build_dir = XML.SubElement(cmake, 'buildDir')
|
||||||
|
build_dir.text = data.get('build-dir', '')
|
||||||
|
|
||||||
|
install_dir = XML.SubElement(cmake, 'installDir')
|
||||||
|
install_dir.text = data.get('install-dir', '')
|
||||||
|
|
||||||
|
# The options buildType and otherBuildType work together on the CMake
|
||||||
|
# plugin:
|
||||||
|
# * If the passed value is one of the predefined values, set buildType to
|
||||||
|
# it and otherBuildType to blank;
|
||||||
|
# * Otherwise, set otherBuildType to the value, and buildType to
|
||||||
|
# "Debug". The CMake plugin will ignore the buildType option.
|
||||||
|
#
|
||||||
|
# It is strange and confusing that the plugin author chose to do something
|
||||||
|
# like that instead of simply passing a string "buildType" option, so this
|
||||||
|
# was done to simplify it for the JJB user.
|
||||||
|
build_type = XML.SubElement(cmake, 'buildType')
|
||||||
|
build_type.text = data.get('build-type', BUILD_TYPES[0])
|
||||||
|
|
||||||
|
other_build_type = XML.SubElement(cmake, 'otherBuildType')
|
||||||
|
|
||||||
|
if(build_type.text not in BUILD_TYPES):
|
||||||
|
other_build_type.text = build_type.text
|
||||||
|
build_type.text = BUILD_TYPES[0]
|
||||||
|
else:
|
||||||
|
other_build_type.text = ''
|
||||||
|
|
||||||
|
generator = XML.SubElement(cmake, 'generator')
|
||||||
|
generator.text = data.get('generator', "Unix Makefiles")
|
||||||
|
|
||||||
|
make_command = XML.SubElement(cmake, 'makeCommand')
|
||||||
|
make_command.text = data.get('make-command', 'make')
|
||||||
|
|
||||||
|
install_command = XML.SubElement(cmake, 'installCommand')
|
||||||
|
install_command.text = data.get('install-command', 'make install')
|
||||||
|
|
||||||
|
preload_script = XML.SubElement(cmake, 'preloadScript')
|
||||||
|
preload_script.text = data.get('preload-script', '')
|
||||||
|
|
||||||
|
other_cmake_args = XML.SubElement(cmake, 'cmakeArgs')
|
||||||
|
other_cmake_args.text = data.get('other-arguments', '')
|
||||||
|
|
||||||
|
custom_cmake_path = XML.SubElement(cmake, 'projectCmakePath')
|
||||||
|
custom_cmake_path.text = data.get('custom-cmake-path', '')
|
||||||
|
|
||||||
|
clean_build_dir = XML.SubElement(cmake, 'cleanBuild')
|
||||||
|
clean_build_dir.text = str(data.get('clean-build-dir', False)).lower()
|
||||||
|
|
||||||
|
clean_install_dir = XML.SubElement(cmake, 'cleanInstallDir')
|
||||||
|
clean_install_dir.text = str(data.get('clean-install-dir',
|
||||||
|
False)).lower()
|
||||||
|
|
||||||
|
# The plugin generates this tag, but there doesn't seem to be anything
|
||||||
|
# that can be configurable by it. Let's keep it to mantain compatibility:
|
||||||
|
XML.SubElement(cmake, 'builderImpl')
|
||||||
|
@ -48,6 +48,7 @@ jenkins_jobs.builders =
|
|||||||
batch=jenkins_jobs.modules.builders:batch
|
batch=jenkins_jobs.modules.builders:batch
|
||||||
builders-from=jenkins_jobs.modules.builders:builders_from
|
builders-from=jenkins_jobs.modules.builders:builders_from
|
||||||
change-assembly-version=jenkins_jobs.modules.builders:change_assembly_version
|
change-assembly-version=jenkins_jobs.modules.builders:change_assembly_version
|
||||||
|
cmake=jenkins_jobs.modules.builders:cmake
|
||||||
conditional-step=jenkins_jobs.modules.builders:conditional_step
|
conditional-step=jenkins_jobs.modules.builders:conditional_step
|
||||||
copyartifact=jenkins_jobs.modules.builders:copyartifact
|
copyartifact=jenkins_jobs.modules.builders:copyartifact
|
||||||
critical-block-start=jenkins_jobs.modules.builders:critical_block_start
|
critical-block-start=jenkins_jobs.modules.builders:critical_block_start
|
||||||
|
21
tests/builders/fixtures/cmake-common.xml
Normal file
21
tests/builders/fixtures/cmake-common.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<builders>
|
||||||
|
<hudson.plugins.cmake.CmakeBuilder>
|
||||||
|
<sourceDir>path/to/source</sourceDir>
|
||||||
|
<buildDir>path/to/build</buildDir>
|
||||||
|
<installDir>path/to/install</installDir>
|
||||||
|
<buildType>Debug</buildType>
|
||||||
|
<otherBuildType/>
|
||||||
|
<generator>Unix Makefiles</generator>
|
||||||
|
<makeCommand>make</makeCommand>
|
||||||
|
<installCommand>make install</installCommand>
|
||||||
|
<preloadScript/>
|
||||||
|
<cmakeArgs/>
|
||||||
|
<projectCmakePath/>
|
||||||
|
<cleanBuild>false</cleanBuild>
|
||||||
|
<cleanInstallDir>false</cleanInstallDir>
|
||||||
|
<builderImpl/>
|
||||||
|
</hudson.plugins.cmake.CmakeBuilder>
|
||||||
|
</builders>
|
||||||
|
</project>
|
8
tests/builders/fixtures/cmake-common.yaml
Normal file
8
tests/builders/fixtures/cmake-common.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
builders:
|
||||||
|
- cmake:
|
||||||
|
source-dir: 'path/to/source'
|
||||||
|
build-dir: 'path/to/build'
|
||||||
|
install-dir: 'path/to/install'
|
||||||
|
build-type: 'Debug'
|
||||||
|
clean-build-dir: false
|
||||||
|
clean-install-dir: false
|
21
tests/builders/fixtures/cmake-complete.xml
Normal file
21
tests/builders/fixtures/cmake-complete.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<project>
|
||||||
|
<builders>
|
||||||
|
<hudson.plugins.cmake.CmakeBuilder>
|
||||||
|
<sourceDir>path/to/source</sourceDir>
|
||||||
|
<buildDir>path/to/build</buildDir>
|
||||||
|
<installDir>path/to/install</installDir>
|
||||||
|
<buildType>Debug</buildType>
|
||||||
|
<otherBuildType>CustomReleaseType</otherBuildType>
|
||||||
|
<generator>NMake Makefiles</generator>
|
||||||
|
<makeCommand>/usr/bin/make</makeCommand>
|
||||||
|
<installCommand>make new-install</installCommand>
|
||||||
|
<preloadScript>path/to/source/cmake.preload</preloadScript>
|
||||||
|
<cmakeArgs>-DCMAKE_FIND_ROOT_PATH="path/to/something/else"</cmakeArgs>
|
||||||
|
<projectCmakePath>/usr/bin/cmake</projectCmakePath>
|
||||||
|
<cleanBuild>true</cleanBuild>
|
||||||
|
<cleanInstallDir>true</cleanInstallDir>
|
||||||
|
<builderImpl/>
|
||||||
|
</hudson.plugins.cmake.CmakeBuilder>
|
||||||
|
</builders>
|
||||||
|
</project>
|
14
tests/builders/fixtures/cmake-complete.yaml
Normal file
14
tests/builders/fixtures/cmake-complete.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
builders:
|
||||||
|
- cmake:
|
||||||
|
source-dir: 'path/to/source'
|
||||||
|
build-dir: 'path/to/build'
|
||||||
|
install-dir: 'path/to/install'
|
||||||
|
build-type: 'CustomReleaseType'
|
||||||
|
generator: 'NMake Makefiles'
|
||||||
|
make-command: '/usr/bin/make'
|
||||||
|
install-command: 'make new-install'
|
||||||
|
preload-script: 'path/to/source/cmake.preload'
|
||||||
|
other-arguments: '-DCMAKE_FIND_ROOT_PATH="path/to/something/else"'
|
||||||
|
custom-cmake-path: '/usr/bin/cmake'
|
||||||
|
clean-build-dir: true
|
||||||
|
clean-install-dir: true
|
Loading…
Reference in New Issue
Block a user