Skip to content

Commit

Permalink
Add PYARROW_CXXFLAGS option, fix MSVC compiler warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
wesm committed Jul 30, 2017
1 parent c32ee09 commit 5740f00
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 13 deletions.
3 changes: 3 additions & 0 deletions ci/msvc-build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ popd
@rem see PARQUET-1018

pushd python

set PYARROW_CXXFLAGS="/WX"
python setup.py build_ext --inplace --with-parquet --bundle-arrow-cpp bdist_wheel || exit /B
py.test pyarrow -v -s --parquet || exit /B

popd
1 change: 1 addition & 0 deletions ci/travis_script_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ source $TRAVIS_BUILD_DIR/ci/travis_env_common.sh
export ARROW_HOME=$ARROW_CPP_INSTALL
export PARQUET_HOME=$TRAVIS_BUILD_DIR/parquet-env
export LD_LIBRARY_PATH=$ARROW_HOME/lib:$PARQUET_HOME/lib:$LD_LIBRARY_PATH
export PYARROW_CXXFLAGS="-Werror"

build_parquet_cpp() {
export PARQUET_ARROW_VERSION=$(git rev-parse HEAD)
Expand Down
7 changes: 7 additions & 0 deletions python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
option(PYARROW_BUNDLE_ARROW_CPP
"Bundle the Arrow C++ libraries"
OFF)
set(PYARROW_CXXFLAGS "" CACHE STRING
"Compiler flags to append when compiling Arrow")
endif()

find_program(CCACHE_FOUND ccache)
Expand All @@ -75,6 +77,7 @@ include(CompilerInfo)

# Add common flags
set(CMAKE_CXX_FLAGS "${CXX_COMMON_FLAGS} ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PYARROW_CXXFLAGS}")

if (NOT MSVC)
# Enable perf and other tools to work properly
Expand All @@ -85,6 +88,10 @@ if (NOT MSVC)
else()
# MSVC version of -Wno-return-type-c-linkage
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4190")

# Cython generates some bitshift expressions that MSVC does not like in
# __Pyx_PyFloat_DivideObjC
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4293")
endif()

if ("${COMPILER_FAMILY}" STREQUAL "clang")
Expand Down
1 change: 0 additions & 1 deletion python/doc/source/development.rst
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,6 @@ Now, we build and install Arrow C++ libraries
-DCMAKE_INSTALL_PREFIX=%ARROW_HOME% ^
-DCMAKE_BUILD_TYPE=Release ^
-DARROW_BUILD_TESTS=off ^
-DARROW_ZLIB_VENDORED=off ^
-DARROW_PYTHON=on ..
cmake --build . --target INSTALL --config Release
cd ..\..
Expand Down
2 changes: 1 addition & 1 deletion python/pyarrow/_parquet.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ cdef class ParquetWriter:
elif row_group_size == 0:
raise ValueError('Row group size cannot be 0')

cdef int c_row_group_size = row_group_size
cdef int64_t c_row_group_size = row_group_size

with nogil:
check_status(self.writer.get()
Expand Down
2 changes: 1 addition & 1 deletion python/pyarrow/includes/libarrow.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ cdef extern from "arrow/api.h" namespace "arrow" nogil:
shared_ptr[CTable]* table)

int num_columns()
int num_rows()
int64_t num_rows()

c_bool Equals(const CTable& other)

Expand Down
2 changes: 1 addition & 1 deletion python/pyarrow/io.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -923,7 +923,7 @@ cdef class _HdfsClient:
cdef c_string c_path = tobytes(path)
with nogil:
check_status(self.client.get()
.Delete(c_path, recursive))
.Delete(c_path, recursive == 1))

def open(self, path, mode='rb', buffer_size=None, replication=None,
default_block_size=None):
Expand Down
10 changes: 5 additions & 5 deletions python/pyarrow/table.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ cdef int _schema_from_arrays(
c_string c_name
vector[shared_ptr[CField]] fields
shared_ptr[CDataType] type_
int K = len(arrays)
Py_ssize_t K = len(arrays)

fields.resize(K)

Expand Down Expand Up @@ -733,7 +733,7 @@ cdef class Table:
vector[shared_ptr[CColumn]] columns
shared_ptr[CSchema] schema
shared_ptr[CTable] table
size_t K = len(arrays)
int i, K = <int> len(arrays)

_schema_from_arrays(arrays, names, metadata, &schema)

Expand Down Expand Up @@ -841,7 +841,7 @@ cdef class Table:
self._check_nullptr()
return pyarrow_wrap_schema(self.table.schema())

def column(self, int64_t i):
def column(self, int i):
"""
Select a column by its numeric index.
Expand All @@ -855,8 +855,8 @@ cdef class Table:
"""
cdef:
Column column = Column()
int64_t num_columns = self.num_columns
int64_t index
int num_columns = self.num_columns
int index

self._check_nullptr()
if not -num_columns <= i < num_columns:
Expand Down
8 changes: 4 additions & 4 deletions python/pyarrow/types.pxi
Original file line number Diff line number Diff line change
Expand Up @@ -281,12 +281,12 @@ cdef class Schema:
def __len__(self):
return self.schema.num_fields()

def __getitem__(self, int64_t i):
def __getitem__(self, int i):

cdef:
Field result = Field()
int64_t num_fields = self.schema.num_fields()
int64_t index
int num_fields = self.schema.num_fields()
int index

if not -num_fields <= i < num_fields:
raise IndexError(
Expand Down Expand Up @@ -456,7 +456,7 @@ def field(name, DataType type, bint nullable=True, dict metadata=None):
convert_metadata(metadata, &c_meta)

result.sp_field.reset(new CField(tobytes(name), type.sp_type,
nullable, c_meta))
nullable == 1, c_meta))
result.field = result.sp_field.get()
result.type = type
return result
Expand Down
5 changes: 5 additions & 0 deletions python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,8 @@ def initialize_options(self):
self.extra_cmake_args = os.environ.get('PYARROW_CMAKE_OPTIONS', '')
self.build_type = os.environ.get('PYARROW_BUILD_TYPE', 'debug').lower()

self.cmake_cxxflags = os.environ.get('PYARROW_CXXFLAGS', '')

if sys.platform == 'win32':
# Cannot do debug builds in Windows unless Python itself is a debug
# build
Expand Down Expand Up @@ -146,6 +148,9 @@ def _run_cmake(self):
if self.with_plasma:
cmake_options.append('-DPYARROW_BUILD_PLASMA=on')

cmake_options.append('-DPYARROW_CXXFLAGS="{0}"'
.format(self.cmake_cxxflags))

if self.bundle_arrow_cpp:
cmake_options.append('-DPYARROW_BUNDLE_ARROW_CPP=ON')
# ARROW-1090: work around CMake rough edges
Expand Down

0 comments on commit 5740f00

Please sign in to comment.