diff --git a/.travis.yml b/.travis.yml index d949eaf5be7..ef0e9b6d60d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,23 +40,39 @@ jobs: ARCH: arm64v8 ARROW_CI_MODULES: "CPP" DOCKER_IMAGE_ID: ubuntu-cpp + # ARROW_USE_GLOG=OFF is needed to avoid build error caused by + # glog and CMAKE_UNITY_BUILD=ON. + DOCKER_RUN_ARGS: >- + " + -e ARROW_BUILD_STATIC=OFF + -e ARROW_ORC=OFF + -e ARROW_USE_GLOG=OFF + -e CMAKE_UNITY_BUILD=ON + " UBUNTU: "20.04" + - name: "C++ on s390x" os: linux arch: s390x env: ARCH: s390x ARROW_CI_MODULES: "CPP" - ARROW_FLIGHT: "ON" - ARROW_PARQUET: "OFF" - CMAKE_UNITY_BUILD: "OFF" # Avoid compiler crash DOCKER_IMAGE_ID: ubuntu-cpp - PARQUET_BUILD_EXAMPLES: "OFF" - PARQUET_BUILD_EXECUTABLES: "OFF" - Protobuf_SOURCE: "BUNDLED" + # Can't use CMAKE_UNITIFY_BUILD=ON because of compiler crash + DOCKER_RUN_ARGS: >- + " + -e ARROW_BUILD_STATIC=OFF + -e ARROW_FLIGHT=ON + -e ARROW_ORC=OFF + -e ARROW_PARQUET=OFF + -e PARQUET_BUILD_EXAMPLES=OFF + -e PARQUET_BUILD_EXECUTABLES=OFF + -e Protobuf_SOURCE=BUNDLED + -e cares_SOURCE=BUNDLED + -e gRPC_SOURCE=BUNDLED + " UBUNTU: "20.04" - cares_SOURCE: "BUNDLED" - gRPC_SOURCE: "BUNDLED" + - name: "Go on s390x" os: linux arch: s390x @@ -64,6 +80,16 @@ jobs: ARCH: s390x ARROW_CI_MODULES: "GO" DOCKER_IMAGE_ID: debian-go + + - name: "Java on s390x" + os: linux + arch: s390x + env: + ARCH: s390x + ARROW_CI_MODULES: "JAVA" + DOCKER_IMAGE_ID: debian-java + JDK: 11 + allow_failures: - arch: s390x @@ -97,17 +123,7 @@ script: ulimit -c unlimited || : - | archery docker run \ - -e ARROW_BUILD_STATIC=${ARROW_BUILD_STATIC:-OFF} \ - -e ARROW_FLIGHT=${ARROW_FLIGHT:-OFF} \ - -e ARROW_ORC=${ARROW_ORC:-OFF} \ - -e ARROW_PARQUET=${ARROW_PARQUET:-ON} \ - -e ARROW_USE_GLOG=${ARROW_USE_GLOG:-OFF} \ - -e CMAKE_UNITY_BUILD=${CMAKE_UNITY_BUILD:-ON} \ - -e PARQUET_BUILD_EXAMPLES=${PARQUET_BUILD_EXAMPLES:-ON} \ - -e PARQUET_BUILD_EXECUTABLES=${PARQUET_BUILD_EXECUTABLES:-ON} \ - -e Protobuf_SOURCE=${Protobuf_SOURCE:-} \ - -e cares_SOURCE=${cares_SOURCE:-} \ - -e gRPC_SOURCE=${gRPC_SOURCE:-} \ + ${DOCKER_RUN_ARGS} \ --volume ${PWD}/build:/build \ ${DOCKER_IMAGE_ID} diff --git a/ci/scripts/java_build.sh b/ci/scripts/java_build.sh index b5643f77840..46b2a11a2fb 100755 --- a/ci/scripts/java_build.sh +++ b/ci/scripts/java_build.sh @@ -23,6 +23,61 @@ source_dir=${1}/java cpp_build_dir=${2}/cpp/${ARROW_BUILD_TYPE:-debug} with_docs=${3:-false} +if [[ "$(uname -s)" == "Linux" ]] && [[ "$(uname -m)" == "s390x" ]]; then + # Since some files for s390_64 are not available at maven central, + # download pre-build files from bintray and install them explicitly + mvn_install="mvn install:install-file" + wget="wget" + bintray_base_url="https://dl.bintray.com/apache/arrow" + + bintray_dir="flatc-binary" + group="com.github.icexelloss" + artifact="flatc-linux-s390_64" + ver="1.9.0" + extension="exe" + target=${artifact}-${ver}.${extension} + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/${target} + ${mvn_install} -DgroupId=${group} -DartifactId=${artifact} -Dversion=${ver} -Dpackaging=${extension} -Dfile=$(pwd)/${target} + + bintray_dir="protoc-binary" + group="com.google.protobuf" + artifact="protoc" + ver="3.7.1" + classifier="linux-s390_64" + extension="exe" + target=${artifact}-${ver}-${classifier}.${extension} + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/${target} + ${mvn_install} -DgroupId=${group} -DartifactId=${artifact} -Dversion=${ver} -Dclassifier=${classifier} -Dpackaging=${extension} -Dfile=$(pwd)/${target} + # protoc requires libprotoc.so.18 + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/libprotoc.so.18 + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(pwd) + + bintray_dir="protoc-gen-grpc-java-binary" + group="io.grpc" + artifact="protoc-gen-grpc-java" + ver="1.30.2" + classifier="linux-s390_64" + extension="exe" + target=${artifact}-${ver}-${classifier}.${extension} + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/${target} + ${mvn_install} -DgroupId=${group} -DartifactId=${artifact} -Dversion=${ver} -Dclassifier=${classifier} -Dpackaging=${extension} -Dfile=$(pwd)/${target} + + bintray_dir="netty-binary" + group="io.netty" + artifact="netty-transport-native-unix-common" + ver="4.1.48.Final" + classifier="linux-s390_64" + extension="jar" + target=${artifact}-${ver}-${classifier}.${extension} + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/${target} + ${mvn_install} -DgroupId=${group} -DartifactId=${artifact} -Dversion=${ver} -Dclassifier=${classifier} -Dpackaging=${extension} -Dfile=$(pwd)/${target} + artifact="netty-transport-native-epoll" + extension="jar" + target=${artifact}-${ver}-${classifier}.${extension} + ${wget} ${bintray_base_url}/${bintray_dir}/${ver}/${target} + ${mvn_install} -DgroupId=${group} -DartifactId=${artifact} -Dversion=${ver} -Dclassifier=${classifier} -Dpackaging=${extension} -Dfile=$(pwd)/${target} +fi + mvn="mvn -B -DskipTests -Drat.skip=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn" # Use `2 * ncores` threads mvn="${mvn} -T 2C"