11#! /usr/bin/env groovy
22
3- def doJavaBindings (buildType = Release ) {
3+ def doJavaBindings (os , buildType = Release ) {
44 def currentPath = sh(script : " pwd" , returnStdout : true ). trim()
55 def commit = env. GIT_COMMIT
6- def artifactsPath = sprintf (' %1$s/java-bindings-%2$s-%3$s-%4$s.zip' ,
7- [currentPath, buildType, sh(script : ' date "+%Y%m%d"' , returnStdout : true ). trim(), commit. substring(0 ,6 )])
6+ def artifactsPath = sprintf (' %1$s/java-bindings-%2$s-%3$s-%4$s-%5$s.zip' ,
7+ [currentPath, buildType, os, sh(script : ' date "+%Y%m%d"' , returnStdout : true ). trim(), commit. substring(0 ,6 )])
8+ def cmakeOptions = " "
9+ if (os == ' windows' ) {
10+ sh " mkdir -p /tmp/${ env.GIT_COMMIT} /bindings-artifact"
11+ cmakeOptions = ' -DCMAKE_TOOLCHAIN_FILE=/c/Users/Administrator/Downloads/vcpkg-master/vcpkg-master/scripts/buildsystems/vcpkg.cmake -G "NMake Makefiles"'
12+ }
13+ if (os == ' linux' ) {
14+ // do not use preinstalled libed25519
15+ sh " rm -rf /usr/local/include/ed25519*; unlink /usr/local/lib/libed25519.so; rm -f /usr/local/lib/libed25519.so.1.2.2"
16+ }
817 sh """
918 cmake \
10- -H. \
19+ -Hshared_model \
1120 -Bbuild \
1221 -DCMAKE_BUILD_TYPE=$buildType \
13- -DSWIG_JAVA=ON
22+ -DSWIG_JAVA=ON \
23+ ${ cmakeOptions}
1424 """
15- sh " cd build; make -j${ params.PARALLELISM} irohajava"
16- sh " zip -j $artifactsPath build/shared_model/bindings/*.java build/shared_model/bindings/libirohajava.so"
17- sh " cp $artifactsPath /tmp/bindings-artifact"
25+ def parallelismParam = (os == ' windows' ) ? ' ' : " -j${ params.PARALLELISM} "
26+ sh " cmake --build build --target irohajava -- ${ parallelismParam} "
27+ // TODO 29.05.18 @bakhtin Java tests never finishes on Windows Server 2016. IR-1380
28+ sh " zip -j $artifactsPath build/bindings/*.java build/bindings/*.dll build/bindings/libirohajava.so"
29+ if (os == ' windows' ) {
30+ sh " cp $artifactsPath /tmp/${ env.GIT_COMMIT} /bindings-artifact"
31+ }
32+ else {
33+ sh " cp $artifactsPath /tmp/bindings-artifact"
34+ }
1835 return artifactsPath
1936}
2037
21- def doPythonBindings (buildType = Release ) {
38+ def doPythonBindings (os , buildType = Release ) {
2239 def currentPath = sh(script : " pwd" , returnStdout : true ). trim()
2340 def commit = env. GIT_COMMIT
2441 def supportPython2 = " OFF"
25- def artifactsPath = sprintf (' %1$s/python-bindings-%2$s-%3$s-%4$s-%5$s.zip' ,
26- [currentPath, env.PBVersion , buildType, sh(script : ' date "+%Y%m%d"' , returnStdout : true ). trim(), commit. substring(0 ,6 )])
27- // do not use preinstalled libed25519
28- sh " rm -rf /usr/local/include/ed25519*; unlink /usr/local/lib/libed25519.so; rm -f /usr/local/lib/libed25519.so.1.2.2"
42+ def artifactsPath = sprintf (' %1$s/python-bindings-%2$s-%3$s-%4$s-%5$s-%6$s.zip' ,
43+ [currentPath, env.PBVersion , buildType, os, sh(script : ' date "+%Y%m%d"' , returnStdout : true ). trim(), commit. substring(0 ,6 )])
44+ def cmakeOptions = " "
45+ if (os == ' windows' ) {
46+ sh " mkdir -p /tmp/${ env.GIT_COMMIT} /bindings-artifact"
47+ cmakeOptions = ' -DCMAKE_TOOLCHAIN_FILE=/c/Users/Administrator/Downloads/vcpkg-master/vcpkg-master/scripts/buildsystems/vcpkg.cmake -G "NMake Makefiles"'
48+ }
49+ if (os == ' linux' ) {
50+ // do not use preinstalled libed25519
51+ sh " rm -rf /usr/local/include/ed25519*; unlink /usr/local/lib/libed25519.so; rm -f /usr/local/lib/libed25519.so.1.2.2"
52+ }
2953 if (env.PBVersion == " python2" ) { supportPython2 = " ON" }
3054 sh """
3155 cmake \
32- -H. \
56+ -Hshared_model \
3357 -Bbuild \
3458 -DCMAKE_BUILD_TYPE=$buildType \
3559 -DSWIG_PYTHON=ON \
36- -DSUPPORT_PYTHON2=$supportPython2
60+ -DSUPPORT_PYTHON2=$supportPython2 \
61+ ${ cmakeOptions}
3762 """
63+ def parallelismParam = (os == ' windows' ) ? ' ' : " -j${ params.PARALLELISM} "
64+ sh " cmake --build build --target irohapy -- ${ parallelismParam} "
3865 sh " cmake --build build --target python_tests"
39- sh " cd build; make -j${ params.PARALLELISM} irohapy"
40- sh " protoc --proto_path=schema --python_out=build/shared_model/bindings block.proto primitive.proto commands.proto queries.proto responses.proto endpoint.proto"
41- sh " ${ env.PBVersion} -m grpc_tools.protoc --proto_path=schema --python_out=build/shared_model/bindings --grpc_python_out=build/shared_model/bindings endpoint.proto yac.proto ordering.proto loader.proto"
42- sh " zip -j $artifactsPath build/shared_model/bindings/*.py build/shared_model/bindings/*.so"
43- sh " cp $artifactsPath /tmp/bindings-artifact"
66+ sh " cd build; ctest -R python --output-on-failure"
67+ if (os == ' linux' ) {
68+ sh """
69+ protoc --proto_path=schema \
70+ --python_out=build/bindings \
71+ block.proto primitive.proto commands.proto queries.proto responses.proto endpoint.proto
72+ """
73+ sh """
74+ ${ env.PBVersion} -m grpc_tools.protoc --proto_path=schema --python_out=build/bindings \
75+ --grpc_python_out=build/bindings endpoint.proto yac.proto ordering.proto loader.proto
76+ """
77+ }
78+ else if (os == ' windows' ) {
79+ sh """
80+ protoc --proto_path=schema \
81+ --proto_path=/c/Users/Administrator/Downloads/vcpkg-master/vcpkg-master/buildtrees/protobuf/src/protobuf-3.5.1-win32/include \
82+ --python_out=build/bindings \
83+ block.proto primitive.proto commands.proto queries.proto responses.proto endpoint.proto
84+ """
85+ sh """
86+ ${ env.PBVersion} -m grpc_tools.protoc \
87+ --proto_path=/c/Users/Administrator/Downloads/vcpkg-master/vcpkg-master/buildtrees/protobuf/src/protobuf-3.5.1-win32/include \
88+ --proto_path=schema --python_out=build/bindings --grpc_python_out=build/bindings \
89+ endpoint.proto yac.proto ordering.proto loader.proto
90+ """
91+ }
92+ sh """
93+ zip -j $artifactsPath build/bindings/*.py build/bindings/*.dll build/bindings/*.so \
94+ build/bindings/*.py build/bindings/*.pyd build/bindings/*.lib build/bindings/*.dll \
95+ build/bindings/*.exp build/bindings/*.manifest
96+ """
97+ if (os == ' windows' ) {
98+ sh " cp $artifactsPath /tmp/${ env.GIT_COMMIT} /bindings-artifact"
99+ }
100+ else {
101+ sh " cp $artifactsPath /tmp/bindings-artifact"
102+ }
44103 return artifactsPath
45104}
46105
47106def doAndroidBindings (abiVersion ) {
48107 def currentPath = sh(script : " pwd" , returnStdout : true ). trim()
49108 def commit = env. GIT_COMMIT
50- def artifactsPath = sprintf (' %1$s/android-bindings-%2$s-%3$s-%4$s-%5$s-%6$s.zip' ,
109+ def artifactsPath = sprintf (' %1$s/android-bindings-%2$s-%3$s-%4$s-%5$s-%6$s.zip' ,
51110 [currentPath, " \$ PLATFORM" , abiVersion, " \$ BUILD_TYPE_A" , sh(script : ' date "+%Y%m%d"' , returnStdout : true ). trim(), commit. substring(0 ,6 )])
52111 sh """
53112 (cd /iroha; git init; git remote add origin https://github.com/hyperledger/iroha.git; \
54- git fetch --depth 1 origin develop ; git checkout -t origin/develop )
113+ git fetch origin ${ GIT_COMMIT } ; git checkout FETCH_HEAD )
55114 """
56115 sh """
57116 . /entrypoint.sh; \
@@ -63,7 +122,7 @@ def doAndroidBindings(abiVersion) {
63122 sed -i.bak "s~find_program(protoc_EXECUTABLE protoc~set(protoc_EXECUTABLE \" /protobuf/host_build/protoc\" ~" /iroha/cmake/Modules/Findprotobuf.cmake; \
64123 cmake -H/iroha/shared_model -B/iroha/shared_model/build -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=$abiVersion -DCMAKE_ANDROID_ARCH_ABI=\$ PLATFORM \
65124 -DANDROID_NDK=\$ NDK_PATH -DCMAKE_ANDROID_STL_TYPE=c++_static -DCMAKE_BUILD_TYPE=\$ BUILD_TYPE_A -DTESTING=OFF \
66- -DSHARED_MODEL_DISABLE_COMPATIBILITY=ON - DSWIG_JAVA=ON -DCMAKE_PREFIX_PATH=\$ DEPS_DIR
125+ -DSWIG_JAVA=ON -DCMAKE_PREFIX_PATH=\$ DEPS_DIR
67126 """
68127 sh " cmake --build /iroha/shared_model/build --target irohajava -- -j${ params.PARALLELISM} "
69128 sh " zip -j $artifactsPath /iroha/shared_model/build/bindings/*.java /iroha/shared_model/build/bindings/libirohajava.so"
0 commit comments