PARQUET-955: Only look for Arrow pkgconfig if ARROW_HOME is not set in environment

cc @kou

Ran into this when testing out https://github.com/apache/arrow/pull/548

Author: Wes McKinney <wes.mckinney@twosigma.com>

Closes #298 from wesm/PARQUET-955 and squashes the following commits:

ab96f03 [Wes McKinney] Rearrange logic to make more clear
a29cc57 [Wes McKinney] Remove redundant env variable check
1960fb3 [Wes McKinney] Print Arrow include dir in FindArrow.cmake
970f0c5 [Wes McKinney] Move pkgconfig logic into FindArrow.cmake
92e7c70 [Wes McKinney] Only look for Arrow pkgconfig if ARROW_HOME is not set in environment
diff --git a/cmake_modules/FindArrow.cmake b/cmake_modules/FindArrow.cmake
index c3f835b..d5e11d1 100644
--- a/cmake_modules/FindArrow.cmake
+++ b/cmake_modules/FindArrow.cmake
@@ -18,52 +18,78 @@
 # - Find ARROW (arrow/api.h, libarrow.a, libarrow.so)
 # This module defines
 #  ARROW_INCLUDE_DIR, directory containing headers
-#  ARROW_LIBS, directory containing arrow libraries
 #  ARROW_STATIC_LIB, path to libarrow.a
 #  ARROW_SHARED_LIB, path to libarrow's shared library
 #  ARROW_FOUND, whether arrow has been found
 
-if( NOT "$ENV{ARROW_HOME}" STREQUAL "")
+if ("$ENV{ARROW_HOME}" STREQUAL "")
+  # PARQUET-955. If the user has set $ARROW_HOME in the environment, we respect
+  # this, otherwise try to locate the pkgconfig in the system environment
+  pkg_check_modules(ARROW arrow)
+  if (ARROW_FOUND)
+    # We found the pkgconfig
+    set(ARROW_INCLUDE_DIR ${ARROW_INCLUDE_DIRS})
+
+    if (COMMAND pkg_get_variable)
+      pkg_get_variable(ARROW_ABI_VERSION arrow abi_version)
+    else()
+      set(ARROW_ABI_VERSION "")
+    endif()
+    if (ARROW_ABI_VERSION STREQUAL "")
+      set(ARROW_SHARED_LIB_SUFFIX "")
+    else()
+      set(ARROW_SHARED_LIB_SUFFIX ".${ARROW_ABI_VERSION}")
+    endif()
+
+    set(ARROW_LIB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}arrow)
+
+    set(ARROW_SHARED_LIB ${ARROW_LIBDIR}/${ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}${ARROW_SHARED_LIB_SUFFIX})
+    set(ARROW_STATIC_LIB ${ARROW_LIBDIR}/${ARROW_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
+  endif()
+else()
   set(ARROW_HOME "$ENV{ARROW_HOME}")
+
+  set(ARROW_SEARCH_HEADER_PATHS
+    ${ARROW_HOME}/include
+    )
+
+  set(ARROW_SEARCH_LIB_PATH
+    ${ARROW_HOME}/lib
+    )
+
+  find_path(ARROW_INCLUDE_DIR arrow/array.h PATHS
+    ${ARROW_SEARCH_HEADER_PATHS}
+    # make sure we don't accidentally pick up a different version
+    NO_DEFAULT_PATH
+    )
+
+  find_library(ARROW_LIB_PATH NAMES arrow
+    PATHS
+    ${ARROW_SEARCH_LIB_PATH}
+    NO_DEFAULT_PATH)
+
+  if (ARROW_INCLUDE_DIR AND (PARQUET_MINIMAL_DEPENDENCY OR ARROW_LIB_PATH))
+    set(ARROW_FOUND TRUE)
+    set(ARROW_HEADER_NAME arrow/api.h)
+    set(ARROW_HEADER ${ARROW_INCLUDE_DIR}/${ARROW_HEADER_NAME})
+    set(ARROW_LIB_NAME libarrow)
+
+    get_filename_component(ARROW_LIBS ${ARROW_LIB_PATH} DIRECTORY)
+    set(ARROW_STATIC_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}.a)
+    set(ARROW_SHARED_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
+  endif ()
 endif()
 
-set(ARROW_SEARCH_HEADER_PATHS
-  ${ARROW_HOME}/include
-)
-
-set(ARROW_SEARCH_LIB_PATH
-  ${ARROW_HOME}/lib
-)
-
-find_path(ARROW_INCLUDE_DIR arrow/array.h PATHS
-  ${ARROW_SEARCH_HEADER_PATHS}
-  # make sure we don't accidentally pick up a different version
-  NO_DEFAULT_PATH
-)
-
-find_library(ARROW_LIB_PATH NAMES arrow
-  PATHS
-  ${ARROW_SEARCH_LIB_PATH}
-  NO_DEFAULT_PATH)
-
-if (ARROW_INCLUDE_DIR AND (PARQUET_MINIMAL_DEPENDENCY OR ARROW_LIB_PATH))
-  set(ARROW_FOUND TRUE)
-  set(ARROW_HEADER_NAME arrow/api.h)
-  set(ARROW_HEADER ${ARROW_INCLUDE_DIR}/${ARROW_HEADER_NAME})
-  set(ARROW_LIB_NAME libarrow)
-
-  get_filename_component(ARROW_LIBS ${ARROW_LIB_PATH} DIRECTORY)
-  set(ARROW_STATIC_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}.a)
-  set(ARROW_SHARED_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
-
+if (ARROW_FOUND)
   if (NOT Arrow_FIND_QUIETLY)
+    message(STATUS "Arrow include path: ${ARROW_INCLUDE_DIR}")
     if (PARQUET_MINIMAL_DEPENDENCY)
       message(STATUS "Found the Arrow header: ${ARROW_HEADER}")
     else ()
       message(STATUS "Found the Arrow library: ${ARROW_LIB_PATH}")
     endif ()
   endif ()
-else ()
+else()
   if (NOT Arrow_FIND_QUIETLY)
     set(ARROW_ERR_MSG "Could not find the Arrow library. Looked for headers")
     set(ARROW_ERR_MSG "${ARROW_ERR_MSG} in ${ARROW_SEARCH_HEADER_PATHS}, and for libs")
@@ -74,13 +100,11 @@
       message(STATUS "${ARROW_ERR_MSG}")
     endif (Arrow_FIND_REQUIRED)
   endif ()
-  set(ARROW_FOUND FALSE)
-endif ()
+endif()
 
 mark_as_advanced(
   ARROW_FOUND
   ARROW_INCLUDE_DIR
-  ARROW_LIBS
   ARROW_STATIC_LIB
   ARROW_SHARED_LIB
 )
diff --git a/cmake_modules/ThirdpartyToolchain.cmake b/cmake_modules/ThirdpartyToolchain.cmake
index 349be7d..83aa1cc 100644
--- a/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cmake_modules/ThirdpartyToolchain.cmake
@@ -357,29 +357,7 @@
 endif()
 
 ## Apache Arrow
-pkg_check_modules(ARROW arrow)
-if (ARROW_FOUND)
-  set(ARROW_INCLUDE_DIR ${ARROW_INCLUDE_DIRS})
-
-  if (COMMAND pkg_get_variable)
-    pkg_get_variable(ARROW_ABI_VERSION arrow abi_version)
-  else()
-    set(ARROW_ABI_VERSION "")
-  endif()
-  if (ARROW_ABI_VERSION STREQUAL "")
-    set(ARROW_SHARED_LIB_SUFFIX "")
-  else()
-    set(ARROW_SHARED_LIB_SUFFIX ".${ARROW_ABI_VERSION}")
-  endif()
-
-  set(ARROW_LIB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}arrow)
-
-  set(ARROW_SHARED_LIB ${ARROW_LIBDIR}/${ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}${ARROW_SHARED_LIB_SUFFIX})
-  set(ARROW_STATIC_LIB ${ARROW_LIBDIR}/${ARROW_LIB_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX})
-
-else()
-  find_package(Arrow)
-endif()
+find_package(Arrow)
 if (NOT ARROW_FOUND)
   set(ARROW_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/arrow_ep/src/arrow_ep-install")
   set(ARROW_HOME "${ARROW_PREFIX}")