You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@orc.apache.org by om...@apache.org on 2019/05/28 20:14:08 UTC

[orc] branch branch-1.5 updated: ORC-334: [C++] Add AppVeyor support for integration on windows

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

omalley pushed a commit to branch branch-1.5
in repository https://gitbox.apache.org/repos/asf/orc.git


The following commit(s) were added to refs/heads/branch-1.5 by this push:
     new 70068c5  ORC-334: [C++] Add AppVeyor support for integration on windows
70068c5 is described below

commit 70068c54f21b06ac6aa69671be61c8f779f462ea
Author: rip-nsk <ri...@gmail.com>
AuthorDate: Thu May 3 16:15:40 2018 -0700

    ORC-334: [C++] Add AppVeyor support for integration on windows
    
    Fixes #265
    
    Change-Id: I8157112165115dda9f4ea4f063e4ea86110cf341
    Signed-off-by: Deepak Majeti <md...@apache.org>
    Signed-off-by: Owen O'Malley <om...@apache.org>
---
 appveyor.yml                            | 45 +++++++++++++++++++++++++++++++++
 c++/include/orc/Common.hh               |  4 +--
 c++/src/Adaptor.hh.in                   |  8 ++++++
 c++/src/Timezone.cc                     |  8 ++++--
 c++/test/CreateTestFiles.cc             |  8 +++---
 c++/test/TestColumnReader.cc            |  2 +-
 c++/test/TestDecompression.cc           |  2 +-
 cmake_modules/ThirdpartyToolchain.cmake | 12 +++++++++
 8 files changed, 79 insertions(+), 10 deletions(-)

diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..ddb66e9
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Operating system (build VM template)
+# os: Visual Studio 2017
+
+environment:
+  matrix:
+    - JOB: Visual Studio 2015
+      CMAKE_GENERATOR: Visual Studio 14 2015
+      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
+
+platform:
+  - x64
+
+configuration:
+  - Debug
+
+build_script:
+  - mkdir build
+  - cd build
+  - if "%platform%"=="x64" set CMAKE_GENERATOR=%CMAKE_GENERATOR% Win64
+  - cmake .. -G "%CMAKE_GENERATOR%"
+      -DCMAKE_BUILD_TYPE=%CONFIGURATION%
+      -DBUILD_CPP_TESTS=ON
+      -DBUILD_LIBHDFSPP=OFF
+      -DBUILD_TOOLS=OFF
+      -DBUILD_JAVA=OFF
+  - set TZDIR=C:/projects/orc/build/tzdata_ep-prefix/src/tzdata_ep/share/zoneinfo
+  - cmake --build . --config %CONFIGURATION%
+  - ctest -VV -C %CONFIGURATION%
diff --git a/c++/include/orc/Common.hh b/c++/include/orc/Common.hh
index 46ba8e2..b23d019 100644
--- a/c++/include/orc/Common.hh
+++ b/c++/include/orc/Common.hh
@@ -76,7 +76,7 @@ namespace orc {
     CompressionKind_LZO = 3,
     CompressionKind_LZ4 = 4,
     CompressionKind_ZSTD = 5,
-    CompressionKind_MAX = INT64_MAX
+    CompressionKind_MAX = INT32_MAX
   };
 
   /**
@@ -92,7 +92,7 @@ namespace orc {
     WriterVersion_HIVE_13083 = 4,
     WriterVersion_ORC_101 = 5,
     WriterVersion_ORC_135 = 6,
-    WriterVersion_MAX = INT64_MAX
+    WriterVersion_MAX = INT32_MAX
   };
 
   /**
diff --git a/c++/src/Adaptor.hh.in b/c++/src/Adaptor.hh.in
index 3f612ef..e14e2af 100644
--- a/c++/src/Adaptor.hh.in
+++ b/c++/src/Adaptor.hh.in
@@ -36,6 +36,14 @@
 #include "orc/orc-config.hh"
 #include <string>
 
+#ifdef _MSC_VER
+#include <BaseTsd.h>
+typedef SSIZE_T ssize_t;
+#define timegm(tm) _mkgmtime(tm)
+#define gmtime_r(timep, result) (gmtime_s(result, timep) ? NULL : result)
+#define asctime_r(tm, buf) (asctime_s(buf, 26, tm) ? NULL : buf)
+#endif
+
 #ifndef HAS_STOLL
   // A poor man's stoll that converts str to a long long int base 10
   namespace std {
diff --git a/c++/src/Timezone.cc b/c++/src/Timezone.cc
index 42e8121..318e5bc 100644
--- a/c++/src/Timezone.cc
+++ b/c++/src/Timezone.cc
@@ -710,7 +710,11 @@ namespace orc {
    * Get the local timezone.
    */
   const Timezone& getLocalTimezone() {
+#ifdef _MSC_VER
+    return getTimezoneByName("UTC");
+#else
     return getTimezoneByFilename(LOCAL_TIMEZONE);
+#endif
   }
 
   /**
@@ -744,8 +748,8 @@ namespace orc {
     for(uint64_t variant=0; variant < variantCount; ++variant) {
       variants[variant].gmtOffset =
         static_cast<int32_t>(decode32(ptr + variantOffset + 6 * variant));
-      variants[variant].isDst = ptr[variantOffset + 6 * variant + 4];
-      uint nameStart = ptr[variantOffset + 6 * variant + 5];
+      variants[variant].isDst = ptr[variantOffset + 6 * variant + 4] != 0;
+      uint64_t nameStart = ptr[variantOffset + 6 * variant + 5];
       if (nameStart >= nameCount) {
         std::stringstream buffer;
         buffer << "name out of range in variant " << variant
diff --git a/c++/test/CreateTestFiles.cc b/c++/test/CreateTestFiles.cc
index 8bd96b0..2550802 100644
--- a/c++/test/CreateTestFiles.cc
+++ b/c++/test/CreateTestFiles.cc
@@ -31,8 +31,8 @@
 void writeCustomOrcFile(const std::string& filename,
                         const orc::proto::Metadata& metadata,
                         const orc::proto::Footer& footer,
-                        const std::vector<uint>& version,
-                        uint writerVersion) {
+                        const std::vector<std::uint32_t>& version,
+                        std::uint32_t writerVersion) {
   std::fstream output(filename.c_str(),
                       std::ios::out | std::ios::trunc | std::ios::binary);
   output << "ORC";
@@ -48,7 +48,7 @@ void writeCustomOrcFile(const std::string& filename,
   ps.set_footerlength(static_cast<uint64_t>(footer.ByteSize()));
   ps.set_compression(orc::proto::NONE);
   ps.set_compressionblocksize(64*1024);
-  for(uint i=0; i < version.size(); ++i) {
+  for(size_t i=0; i < version.size(); ++i) {
     ps.add_version(version[i]);
   }
   ps.set_metadatalength(static_cast<uint64_t>(metadata.ByteSize()));
@@ -76,7 +76,7 @@ void writeVersion1999() {
   orc::proto::ColumnStatistics* stats = footer.add_statistics();
   stats->set_numberofvalues(0);
   stats->set_hasnull(false);
-  std::vector<uint> version;
+  std::vector<std::uint32_t> version;
   version.push_back(19);
   version.push_back(99);
   writeCustomOrcFile("version1999.orc", meta, footer, version, 1);
diff --git a/c++/test/TestColumnReader.cc b/c++/test/TestColumnReader.cc
index 36d168a..c67229a 100644
--- a/c++/test/TestColumnReader.cc
+++ b/c++/test/TestColumnReader.cc
@@ -4302,7 +4302,7 @@ TEST(TestColumnReader, testUnionWithManyVariants) {
   // for variant in range(0, 130):
   //   [variant & 0x3f, (variant & 0x3f) + 1, (variant & 0x3f) + 2]
   unsigned char buffer[3 * 130];
-  for(uint variant = 0; variant < 130; ++variant) {
+  for(size_t variant = 0; variant < 130; ++variant) {
     buffer[3 * variant] = 0x00;
     buffer[3 * variant + 1] = 0x01;
     buffer[3 * variant + 2] = static_cast<unsigned char>((variant * 2) & 0x7f);
diff --git a/c++/test/TestDecompression.cc b/c++/test/TestDecompression.cc
index 5d01bde..c29fa9a 100644
--- a/c++/test/TestDecompression.cc
+++ b/c++/test/TestDecompression.cc
@@ -374,7 +374,7 @@ namespace orc {
   TEST_F(TestDecompression, testLzoLong) {
     // set up a framed lzo buffer with 100,000 'a'
     unsigned char buffer[482];
-    bzero(buffer, ARRAY_SIZE(buffer));
+    memset(buffer, 0, ARRAY_SIZE(buffer));
     // header
     buffer[0] = 190;
     buffer[1] = 3;
diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake
index 8badbee..6e7ca98 100644
--- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -167,6 +167,18 @@ if (LZ4_VENDORED)
 endif ()
 
 # ----------------------------------------------------------------------
+# IANA - Time Zone Database
+
+if (WIN32)
+  ExternalProject_Add(tzdata_ep
+    URL "ftp://cygwin.osuosl.org/pub/cygwin/noarch/release/tzdata/tzdata-2018c-1.tar.xz"
+    URL_HASH MD5=F69FCA5C906FAFF02462D3D06F28267C
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND "")
+endif ()
+
+# ----------------------------------------------------------------------
 # GoogleTest (gtest now includes gmock)
 
 if (BUILD_CPP_TESTS)