You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2017/04/07 14:08:14 UTC

arrow git commit: ARROW-758: [C++] Build with /WX in Appveyor, fix MSVC compiler warnings

Repository: arrow
Updated Branches:
  refs/heads/master e53357cd6 -> 1c6609746


ARROW-758: [C++] Build with /WX in Appveyor, fix MSVC compiler warnings

This will help keep the build clean.

cc @MaxRis

Author: Wes McKinney <we...@twosigma.com>

Closes #502 from wesm/ARROW-758 and squashes the following commits:

054c185 [Wes McKinney] Build with /WX in Appveyor, fix MSVC compiler warnings


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/1c660974
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/1c660974
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/1c660974

Branch: refs/heads/master
Commit: 1c6609746aeb9584fc83284f2587fa97bdbac47a
Parents: e53357c
Author: Wes McKinney <we...@twosigma.com>
Authored: Fri Apr 7 10:08:08 2017 -0400
Committer: Wes McKinney <we...@twosigma.com>
Committed: Fri Apr 7 10:08:08 2017 -0400

----------------------------------------------------------------------
 appveyor.yml                          |  6 +-----
 cpp/cmake_modules/SetupCxxFlags.cmake |  4 ++++
 cpp/src/arrow/array-test.cc           | 14 +++++++-------
 cpp/src/arrow/builder.h               |  4 ++++
 cpp/src/arrow/io/file.cc              |  6 +++---
 cpp/src/arrow/io/io-hdfs-test.cc      |  2 +-
 cpp/src/arrow/ipc/json-internal.cc    |  2 +-
 cpp/src/arrow/ipc/test-common.h       |  2 +-
 cpp/src/arrow/tensor.cc               |  2 +-
 9 files changed, 23 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/appveyor.yml
----------------------------------------------------------------------
diff --git a/appveyor.yml b/appveyor.yml
index 9f35949..b8c26e6 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -30,12 +30,8 @@ build_script:
  - cd cpp
  - mkdir build
  - cd build
- # A lot of features are still deactivated as they do not build on Windows
- #  * gbenchmark doesn't build with MSVC
- - cmake -G "%GENERATOR%" -DARROW_BOOST_USE_SHARED=OFF -DARROW_BUILD_BENCHMARKS=OFF -DARROW_JEMALLOC=OFF -DCMAKE_BUILD_TYPE=Release ..
+ - cmake -G "%GENERATOR%" -DARROW_CXXFLAGS="/WX" -DARROW_BOOST_USE_SHARED=OFF -DCMAKE_BUILD_TYPE=Release ..
  - cmake --build . --config Release
 
 # test_script:
  - ctest -VV
-
-

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/cmake_modules/SetupCxxFlags.cmake
----------------------------------------------------------------------
diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake b/cpp/cmake_modules/SetupCxxFlags.cmake
index 09a662e..694e5a3 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -26,6 +26,10 @@ CHECK_CXX_COMPILER_FLAG("-maltivec" CXX_SUPPORTS_ALTIVEC)
 # compiler flags that are common across debug/release builds
 
 if (MSVC)
+  # TODO(wesm): Change usages of C runtime functions that MSVC says are
+  # insecure, like std::getenv
+  add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+
   if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
     # clang-cl
     set(CXX_COMMON_FLAGS "-EHsc")

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/array-test.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/array-test.cc b/cpp/src/arrow/array-test.cc
index 68b9864..e50f4fd 100644
--- a/cpp/src/arrow/array-test.cc
+++ b/cpp/src/arrow/array-test.cc
@@ -124,10 +124,10 @@ TEST_F(TestArray, SliceRecomputeNullCount) {
 TEST_F(TestArray, TestIsNull) {
   // clang-format off
   vector<uint8_t> null_bitmap = {1, 0, 1, 1, 0, 1, 0, 0,
-                                      1, 0, 1, 1, 0, 1, 0, 0,
-                                      1, 0, 1, 1, 0, 1, 0, 0,
-                                      1, 0, 1, 1, 0, 1, 0, 0,
-                                      1, 0, 0, 1};
+                                 1, 0, 1, 1, 0, 1, 0, 0,
+                                 1, 0, 1, 1, 0, 1, 0, 0,
+                                 1, 0, 1, 1, 0, 1, 0, 0,
+                                 1, 0, 0, 1};
   // clang-format on
   int64_t null_count = 0;
   for (uint8_t x : null_bitmap) {
@@ -144,7 +144,7 @@ TEST_F(TestArray, TestIsNull) {
   ASSERT_TRUE(arr->null_bitmap()->Equals(*null_buf.get()));
 
   for (size_t i = 0; i < null_bitmap.size(); ++i) {
-    EXPECT_EQ(null_bitmap[i], !arr->IsNull(i)) << i;
+    EXPECT_EQ(null_bitmap[i] != 0, !arr->IsNull(i)) << i;
   }
 }
 
@@ -334,7 +334,7 @@ void TestPrimitiveBuilder<PBoolean>::Check(
   for (int64_t i = 0; i < result->length(); ++i) {
     if (nullable) { ASSERT_EQ(valid_bytes_[i] == 0, result->IsNull(i)) << i; }
     bool actual = BitUtil::GetBit(result->data()->data(), i);
-    ASSERT_EQ(static_cast<bool>(draws_[i]), actual) << i;
+    ASSERT_EQ(draws_[i] != 0, actual) << i;
   }
   ASSERT_TRUE(result->Equals(*expected));
 }
@@ -1379,7 +1379,7 @@ void ValidateBasicListArray(const ListArray* result, const vector<int32_t>& valu
   }
 
   for (int i = 0; i < result->length(); ++i) {
-    ASSERT_EQ(!static_cast<bool>(is_valid[i]), result->IsNull(i));
+    ASSERT_EQ(is_valid[i] == 0, result->IsNull(i));
   }
 
   ASSERT_EQ(7, result->values()->length());

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/builder.h
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/builder.h b/cpp/src/arrow/builder.h
index 61207a3..60cdc4c 100644
--- a/cpp/src/arrow/builder.h
+++ b/cpp/src/arrow/builder.h
@@ -275,6 +275,10 @@ class ARROW_EXPORT BooleanBuilder : public ArrayBuilder {
     return Status::OK();
   }
 
+  Status Append(uint8_t val) {
+    return Append(val != 0);
+  }
+
   /// Vector append
   ///
   /// If passed, valid_bytes is of equal length to values, and any zero byte

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/io/file.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/io/file.cc b/cpp/src/arrow/io/file.cc
index 720be3d..eb4b9fc 100644
--- a/cpp/src/arrow/io/file.cc
+++ b/cpp/src/arrow/io/file.cc
@@ -250,9 +250,9 @@ static inline Status FileRead(
     int fd, uint8_t* buffer, int64_t nbytes, int64_t* bytes_read) {
 #if defined(_MSC_VER)
   if (nbytes > INT32_MAX) { return Status::IOError("Unable to read > 2GB blocks yet"); }
-  *bytes_read = _read(fd, buffer, static_cast<size_t>(nbytes));
+  *bytes_read = static_cast<int64_t>(_read(fd, buffer, static_cast<uint32_t>(nbytes)));
 #else
-  *bytes_read = read(fd, buffer, static_cast<size_t>(nbytes));
+  *bytes_read = static_cast<int64_t>(read(fd, buffer, static_cast<size_t>(nbytes)));
 #endif
 
   if (*bytes_read == -1) {
@@ -269,7 +269,7 @@ static inline Status FileWrite(int fd, const uint8_t* buffer, int64_t nbytes) {
   if (nbytes > INT32_MAX) {
     return Status::IOError("Unable to write > 2GB blocks to file yet");
   }
-  ret = static_cast<int>(_write(fd, buffer, static_cast<size_t>(nbytes)));
+  ret = static_cast<int>(_write(fd, buffer, static_cast<uint32_t>(nbytes)));
 #else
   ret = static_cast<int>(write(fd, buffer, static_cast<size_t>(nbytes)));
 #endif

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/io/io-hdfs-test.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/io/io-hdfs-test.cc b/cpp/src/arrow/io/io-hdfs-test.cc
index f3140be..a2c9c52 100644
--- a/cpp/src/arrow/io/io-hdfs-test.cc
+++ b/cpp/src/arrow/io/io-hdfs-test.cc
@@ -107,7 +107,7 @@ class TestHdfsClient : public ::testing::Test {
     const char* port = std::getenv("ARROW_HDFS_TEST_PORT");
     const char* user = std::getenv("ARROW_HDFS_TEST_USER");
 
-    ASSERT_TRUE(user) << "Set ARROW_HDFS_TEST_USER";
+    ASSERT_TRUE(user != nullptr) << "Set ARROW_HDFS_TEST_USER";
 
     conf_.host = host == nullptr ? "localhost" : host;
     conf_.user = user;

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/ipc/json-internal.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/ipc/json-internal.cc b/cpp/src/arrow/ipc/json-internal.cc
index 124c21b..fe0a7c9 100644
--- a/cpp/src/arrow/ipc/json-internal.cc
+++ b/cpp/src/arrow/ipc/json-internal.cc
@@ -1102,7 +1102,7 @@ class JsonArrayReader {
     std::vector<bool> is_valid;
     for (const rj::Value& val : json_validity) {
       DCHECK(val.IsInt());
-      is_valid.push_back(static_cast<bool>(val.GetInt()));
+      is_valid.push_back(val.GetInt() != 0);
     }
 
 #define TYPE_CASE(TYPE) \

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/ipc/test-common.h
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/ipc/test-common.h b/cpp/src/arrow/ipc/test-common.h
index d113531..9e0480d 100644
--- a/cpp/src/arrow/ipc/test-common.h
+++ b/cpp/src/arrow/ipc/test-common.h
@@ -125,7 +125,7 @@ Status MakeRandomListArray(const std::shared_ptr<Array>& child_array, int num_li
     std::partial_sum(list_sizes.begin(), list_sizes.end(), ++offsets.begin());
 
     // Force invariants
-    const int64_t child_length = child_array->length();
+    const int32_t child_length = static_cast<int32_t>(child_array->length());
     offsets[0] = 0;
     std::replace_if(offsets.begin(), offsets.end(),
         [child_length](int32_t offset) { return offset > child_length; }, child_length);

http://git-wip-us.apache.org/repos/asf/arrow/blob/1c660974/cpp/src/arrow/tensor.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/tensor.cc b/cpp/src/arrow/tensor.cc
index 8bbb97b..d1c4083 100644
--- a/cpp/src/arrow/tensor.cc
+++ b/cpp/src/arrow/tensor.cc
@@ -86,7 +86,7 @@ const std::string& Tensor::dim_name(int i) const {
 }
 
 int64_t Tensor::size() const {
-  return std::accumulate(shape_.begin(), shape_.end(), 1, std::multiplies<int64_t>());
+  return std::accumulate(shape_.begin(), shape_.end(), 1LL, std::multiplies<int64_t>());
 }
 
 bool Tensor::is_contiguous() const {