This is an automated email from the ASF dual-hosted git repository.

uwe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new acb6980  ARROW-4353: [CI] Add MinGW builds
acb6980 is described below

commit acb698038c390b1c9cb899d05e1d6625b0bcf207
Author: Kouhei Sutou <[email protected]>
AuthorDate: Thu Jan 24 10:25:22 2019 +0100

    ARROW-4353: [CI] Add MinGW builds
    
    32-bit MinGW build isn't available for now:
    https://issues.apache.org/jira/browse/ARROW-4297
    
    So it's listed in allow_failures.
    
    Author: Kouhei Sutou <[email protected]>
    
    Closes #3471 from kou/appveyor-msys and squashes the following commits:
    
    3964c3d1 <Kouhei Sutou>  Add MinGW builds
---
 appveyor.yml                                       | 21 +++++++-
 ci/appveyor-build.bat                              |  4 +-
 ci/appveyor-cpp-build-mingw.bat                    | 61 ++++++++++++++++++++++
 ...eyor-build.bat => appveyor-cpp-setup-mingw.bat} | 28 ++++++----
 ci/appveyor-filter-changes.bat                     |  7 +++
 ci/appveyor-install.bat                            |  4 ++
 6 files changed, 111 insertions(+), 14 deletions(-)

diff --git a/appveyor.yml b/appveyor.yml
index 18ad9f5..dbf13ff 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -22,6 +22,7 @@ only_commits:
   # Skip commits not related to Python, C++ or Rust
   files:
     - appveyor.yml
+    - c_glib/
     - ci/
     - cpp/
     - format/
@@ -34,6 +35,14 @@ cache:
 
 matrix:
   fast_finish: true
+  allow_failures:
+    # Can't build with 32-bit MinGW for now.
+    # See https://issues.apache.org/jira/browse/ARROW-4297
+    - JOB: "MinGW32"
+      MINGW_PACKAGE_PREFIX: mingw-w64-i686
+      MINGW_PREFIX: c:\msys64\mingw32
+      MSYSTEM: MINGW32
+      USE_CLCACHE: false
 
 environment:
   global:
@@ -60,13 +69,21 @@ environment:
       GENERATOR: Ninja
       CONFIGURATION: "Release"
       BUILD_SCRIPT: "CMake_Build_Script"
+    - JOB: "MinGW32"
+      MINGW_PACKAGE_PREFIX: mingw-w64-i686
+      MINGW_PREFIX: c:\msys64\mingw32
+      MSYSTEM: MINGW32
+      USE_CLCACHE: false
+    - JOB: "MinGW64"
+      MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
+      MINGW_PREFIX: c:\msys64\mingw64
+      MSYSTEM: MINGW64
+      USE_CLCACHE: false
     - JOB: "Rust"
       TARGET: x86_64-pc-windows-msvc
       USE_CLCACHE: false
 
   MSVC_DEFAULT_OPTIONS: ON
-  BOOST_ROOT: C:\Libraries\boost_1_67_0
-  BOOST_LIBRARYDIR: C:\Libraries\boost_1_67_0\lib64-msvc-14.0
   APPVEYOR_SAVE_CACHE_ON_ERROR: true
 
 install:
diff --git a/ci/appveyor-build.bat b/ci/appveyor-build.bat
index cfd451c..6e55419 100644
--- a/ci/appveyor-build.bat
+++ b/ci/appveyor-build.bat
@@ -22,7 +22,9 @@ if "%JOB%" == "Rust" (
 ) else (
     git config core.symlinks true
     git reset --hard
-    if "%JOB%"=="Cmake_Script_Tests" (
+    if "%JOB:~,5%" == "MinGW" (
+        call ci\appveyor-cpp-build-mingw.bat
+    ) else if "%JOB%" == "Cmake_Script_Tests" (
         call ci\appveyor-cpp-test-cmake-script.bat
     ) else (
         call ci\appveyor-cpp-build.bat
diff --git a/ci/appveyor-cpp-build-mingw.bat b/ci/appveyor-cpp-build-mingw.bat
new file mode 100644
index 0000000..4d39927
--- /dev/null
+++ b/ci/appveyor-cpp-build-mingw.bat
@@ -0,0 +1,61 @@
+@rem Licensed to the Apache Software Foundation (ASF) under one
+@rem or more contributor license agreements.  See the NOTICE file
+@rem distributed with this work for additional information
+@rem regarding copyright ownership.  The ASF licenses this file
+@rem to you under the Apache License, Version 2.0 (the
+@rem "License"); you may not use this file except in compliance
+@rem with the License.  You may obtain a copy of the License at
+@rem
+@rem   http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing,
+@rem software distributed under the License is distributed on an
+@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@rem KIND, either express or implied.  See the License for the
+@rem specific language governing permissions and limitations
+@rem under the License.
+
+@echo on
+
+set CMAKE_BUILD_TYPE=release
+set MESON_BUILD_TYPE=release
+
+set INSTALL_DIR=%HOMEDRIVE%%HOMEPATH%\install
+set PATH=%INSTALL_DIR%\bin;%PATH%
+set PKG_CONFIG_PATH=%INSTALL_DIR%\lib\pkgconfig
+
+set CPP_BUILD_DIR=cpp\build
+mkdir %CPP_BUILD_DIR%
+pushd %CPP_BUILD_DIR%
+
+set BOOST_ROOT=%MINGW_PREFIX%
+set LZ4_HOME=%MINGW_PREFIX%
+set ZSTD_HOME=%MINGW_PREFIX%
+set SNAPPY_HOME=%MINGW_PREFIX%
+set BROTLI_HOME=%MINGW_PREFIX%
+set FLATBUFFERS_HOME=%MINGW_PREFIX%
+cmake ^
+    -G "MSYS Makefiles" ^
+    -DCMAKE_INSTALL_PREFIX=%INSTALL_DIR% ^
+    -DCMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
+    -DARROW_VERBOSE_THIRDPARTY_BUILD=OFF ^
+    -DARROW_JEMALLOC=OFF ^
+    -DARROW_USE_GLOG=OFF ^
+    -DARROW_PYTHON=ON ^
+    -DPythonInterp_FIND_VERSION=ON ^
+    -DPythonInterp_FIND_VERSION_MAJOR=3 ^
+    .. || exit /B
+make -j4 || exit /B
+make install || exit /B
+popd
+
+set C_GLIB_BUILD_DIR=c_glib\build
+meson ^
+    setup ^
+    --prefix=%INSTALL_DIR% ^
+    --buildtype=%MESON_BUILD_TYPE% ^
+    %C_GLIB_BUILD_DIR% ^
+    c_glib || exit /B
+sed -i'' -s 's/\r//g' %C_GLIB_BUILD_DIR%/arrow-glib/version.h || exit /B
+ninja -C %C_GLIB_BUILD_DIR% || exit /B
+ninja -C %C_GLIB_BUILD_DIR% install || exit /B
diff --git a/ci/appveyor-build.bat b/ci/appveyor-cpp-setup-mingw.bat
similarity index 57%
copy from ci/appveyor-build.bat
copy to ci/appveyor-cpp-setup-mingw.bat
index cfd451c..471e742 100644
--- a/ci/appveyor-build.bat
+++ b/ci/appveyor-cpp-setup-mingw.bat
@@ -17,14 +17,20 @@
 
 @echo on
 
-if "%JOB%" == "Rust" (
-    call ci\rust-build-main.bat
-) else (
-    git config core.symlinks true
-    git reset --hard
-    if "%JOB%"=="Cmake_Script_Tests" (
-        call ci\appveyor-cpp-test-cmake-script.bat
-    ) else (
-        call ci\appveyor-cpp-build.bat
-    )
-)
+set PATH=%MINGW_PREFIX%\bin;C:\msys64\usr\bin;%PATH%
+
+pacman -S --noconfirm ^
+    "%MINGW_PACKAGE_PREFIX%-boost" ^
+    "%MINGW_PACKAGE_PREFIX%-brotli" ^
+    "%MINGW_PACKAGE_PREFIX%-cmake" ^
+    "%MINGW_PACKAGE_PREFIX%-flatbuffers" ^
+    "%MINGW_PACKAGE_PREFIX%-gcc" ^
+    "%MINGW_PACKAGE_PREFIX%-gobject-introspection" ^
+    "%MINGW_PACKAGE_PREFIX%-gtk-doc" ^
+    "%MINGW_PACKAGE_PREFIX%-lz4" ^
+    "%MINGW_PACKAGE_PREFIX%-meson" ^
+    "%MINGW_PACKAGE_PREFIX%-protobuf" ^
+    "%MINGW_PACKAGE_PREFIX%-python3-numpy" ^
+    "%MINGW_PACKAGE_PREFIX%-snappy" ^
+    "%MINGW_PACKAGE_PREFIX%-zlib" ^
+    "%MINGW_PACKAGE_PREFIX%-zstd" || exit /B
diff --git a/ci/appveyor-filter-changes.bat b/ci/appveyor-filter-changes.bat
index e6f008f..e78f91f 100644
--- a/ci/appveyor-filter-changes.bat
+++ b/ci/appveyor-filter-changes.bat
@@ -22,6 +22,13 @@ if "%JOB%" == "Rust" (
         echo ===
         appveyor exit
     )
+) else if "%JOB%" == "MinGW" (
+    if "%ARROW_CI_GLIB_AFFECTED%" == "0" (
+        echo ===
+        echo === No C++, or GLib changes, exiting job
+        echo ===
+        appveyor exit
+    )
 ) else (
     if "%ARROW_CI_PYTHON_AFFECTED%" == "0" (
         echo ===
diff --git a/ci/appveyor-install.bat b/ci/appveyor-install.bat
index 483f262..3ab8f38 100644
--- a/ci/appveyor-install.bat
+++ b/ci/appveyor-install.bat
@@ -25,7 +25,11 @@ if "%JOB%" == "Rust" (
     rustup install nightly
     rustc -Vv
     cargo -V
+) else if "%JOB:~,5%" == "MinGW" (
+    call ci\appveyor-cpp-setup-mingw.bat
 ) else (
     set 
"PATH=C:\Miniconda36-x64;C:\Miniconda36-x64\Scripts;C:\Miniconda36-x64\Library\bin;%PATH%"
+    set BOOST_ROOT=C:\Libraries\boost_1_67_0
+    set BOOST_LIBRARYDIR=C:\Libraries\boost_1_67_0\lib64-msvc-14.0
     call ci\appveyor-cpp-setup.bat
 )

Reply via email to