From 2ab19a2a822111a0667e54ec3849be685e3d8a05 Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Thu, 19 Nov 2015 16:28:11 -0800 Subject: [PATCH] HBASE-14852 Update build env --- hbase-native-client/CMakeLists.txt | 157 ---------------------- hbase-native-client/Dockerfile | 1 + hbase-native-client/bin/build-all.sh | 41 ------ hbase-native-client/bin/build-thirdparty.sh | 64 --------- hbase-native-client/bin/download-thirdparty.sh | 70 ---------- hbase-native-client/bin/hbase-client-env.sh | 47 ------- hbase-native-client/bin/start-docker.sh | 3 + hbase-native-client/cmake_modules/FindGTest.cmake | 53 -------- hbase-native-client/cmake_modules/FindLibEv.cmake | 47 ------- 9 files changed, 4 insertions(+), 479 deletions(-) delete mode 100644 hbase-native-client/CMakeLists.txt create mode 100644 hbase-native-client/Dockerfile delete mode 100755 hbase-native-client/bin/build-all.sh delete mode 100755 hbase-native-client/bin/build-thirdparty.sh delete mode 100755 hbase-native-client/bin/download-thirdparty.sh delete mode 100644 hbase-native-client/bin/hbase-client-env.sh create mode 100755 hbase-native-client/bin/start-docker.sh delete mode 100644 hbase-native-client/cmake_modules/FindGTest.cmake delete mode 100644 hbase-native-client/cmake_modules/FindLibEv.cmake diff --git a/hbase-native-client/CMakeLists.txt b/hbase-native-client/CMakeLists.txt deleted file mode 100644 index 819f178..0000000 --- a/hbase-native-client/CMakeLists.txt +++ /dev/null @@ -1,157 +0,0 @@ -# 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. - -cmake_minimum_required(VERSION 2.6) - -# generate CTest input files -enable_testing() - -# where to find cmake modules -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules") - -# if no build build type is specified, default to debug builds -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) -endif(NOT CMAKE_BUILD_TYPE) - -STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) - -set(CXX_COMMON_FLAGS "-Wall -Wextra -std=c++11") -set(C_COMMON_FLAGS "-Wall -Wextra -std=c11") - -set(CXX_FLAGS_DEBUG "-ggdb -g") -set(C_FLAGS_DEBUG "-ggdb") - -set(CXX_FLAGS_FASTDEBUG "-ggdb -O1") -set(C_FLAGS_FASTDEBUG "-ggdb -O1") - -set(CXX_FLAGS_RELEASE "-O3 -g -DNDEBUG -Wno-strict-aliasing") -set(C_FLAGS_RELEASE "-O3 -g -DNDEBUG -Wno-strict-aliasing") - -# if no build build type is specified, default to debug builds -if (NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE Debug) -endif(NOT CMAKE_BUILD_TYPE) - -string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) - -# Set compile flags based on the build type. -message("Configured for ${CMAKE_BUILD_TYPE} build (set with cmake -DCMAKE_BUILD_TYPE={release,debug,...})") -if ("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG") - set(CMAKE_CXX_FLAGS ${CXX_FLAGS_DEBUG}) - set(CMAKE_C_FLAGS ${C_FLAGS_DEBUG}) -elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "FASTDEBUG") - set(CMAKE_CXX_FLAGS ${CXX_FLAGS_FASTDEBUG}) - set(CMAKE_C_FLAGS ${C_FLAGS_FASTDEBUG}) -elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RELEASE") - set(CMAKE_CXX_FLAGS ${CXX_FLAGS_RELEASE}) - set(CMAKE_C_FLAGS ${C_FLAGS_RELEASE}) -else() - message(FATAL_ERROR "Unknown build type: ${CMAKE_BUILD_TYPE}") -endif () - -set(CMAKE_CXX_FLAGS "${CXX_COMMON_FLAGS} ${CMAKE_CXX_FLAGS}") -set(CMAKE_C_FLAGS "${C_COMMON_FLAGS} ${CMAKE_C_FLAGS}") - - -# set compile output directory -string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_LOWERCASE) -set(BUILD_OUTPUT_ROOT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/build/${CMAKE_BUILD_TYPE_LOWERCASE}/") - -# Link build/latest to the current build directory, to avoid developers -# accidentally running the latest debug build when in fact they're building -# release builds. -file(MAKE_DIRECTORY ${BUILD_OUTPUT_ROOT_DIRECTORY}) -execute_process(COMMAND rm -f ${CMAKE_CURRENT_SOURCE_DIR}/build/latest) -execute_process(COMMAND ln -sf ${BUILD_OUTPUT_ROOT_DIRECTORY} - ${CMAKE_CURRENT_SOURCE_DIR}/build/latest) - -# where to put generated libraries -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}") -set(ARCHIVE_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${BUILD_OUTPUT_ROOT_DIRECTORY}") - -# where to put generated binaries -set(EXECUTABLE_OUTPUT_PATH "${BUILD_OUTPUT_ROOT_DIRECTORY}") - -include_directories(src) - -##################### -# Third Party -##################### - -# find boost headers and libs -set(Boost_DEBUG TRUE) -set(Boost_USE_MULTITHREADED ON) -find_package(Boost REQUIRED COMPONENTS thread system-mt) -include_directories(${Boost_INCLUDE_DIRS}) - -find_package(Protobuf REQUIRED) -include_directories(${PROTOBUF_INCLUDE_DIRS}) -add_library(protobuf STATIC IMPORTED) -set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION "${PROTOBUF_STATIC_LIBRARY}") - -find_package(LibEv REQUIRED) -include_directories(${LIBEV_INCLUDE_DIR}) -add_library(libev STATIC IMPORTED) - - -set(HBASE_LIBS - ${PROTOBUF} - ${LIBEV} - ${Boost_LIBRARIES} -) -######### -# Testing Config -######### - -# find GTest headers and libs -find_package(GTest REQUIRED) -include_directories(${GTEST_INCLUDE_DIR}) -add_library(gtest STATIC IMPORTED) -set_target_properties(gtest PROPERTIES IMPORTED_LOCATION "${GTEST_LIBS}") - -set(HBASE_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS}) -set(HBASE_ASYNC_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS} hbase-async) -set(HBASE_SYNC_TEST_LIBS ${HBASE_LIBS} ${GTEST_LIBS} hbase-sync) - -function(ADD_HBASE_ASYNC_TEST TEST_NAME) - add_executable(${TEST_NAME} ${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} ${HBASE_ASYNC_TEST_LIBS}) - add_test(${TEST_NAME} "${EXECUTABLE_OUTPUT_PATH}/${TEST_NAME}") -endfunction() - - -function(ADD_HBASE_SYNC_TEST TEST_NAME) - add_executable(${TEST_NAME} ${TEST_NAME}.cc) - target_link_libraries(${TEST_NAME} ${HBASE_ASYNC_TEST_LIBS}) - add_test(${TEST_NAME} "${EXECUTABLE_OUTPUT_PATH}/${TEST_NAME}") -endfunction() - - -##### -# Actual project definition -##### -add_subdirectory(src/async) -add_subdirectory(src/sync) - -add_subdirectory(src/core) -add_subdirectory(src/rpc) - - -add_library(hbase-async SHARED $ $) -add_library(hbase-sync SHARED $ $) diff --git a/hbase-native-client/Dockerfile b/hbase-native-client/Dockerfile new file mode 100644 index 0000000..567dbca --- /dev/null +++ b/hbase-native-client/Dockerfile @@ -0,0 +1 @@ +FROM pjameson/buck-folly-watchman diff --git a/hbase-native-client/bin/build-all.sh b/hbase-native-client/bin/build-all.sh deleted file mode 100755 index a3e45de..0000000 --- a/hbase-native-client/bin/build-all.sh +++ /dev/null @@ -1,41 +0,0 @@ -#! /usr/bin/env bash -# -#/** -# * Copyright The Apache Software Foundation -# * -# * 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. -# */ - -set -e -set -x - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - -source ${DIR}/hbase-client-env.sh - -${DIR}/download-thirdparty.sh -${DIR}/build-thirdparty.sh -cd ${HBASE_DIR} -cmake . -make clean all -make test diff --git a/hbase-native-client/bin/build-thirdparty.sh b/hbase-native-client/bin/build-thirdparty.sh deleted file mode 100755 index 097c1a4..0000000 --- a/hbase-native-client/bin/build-thirdparty.sh +++ /dev/null @@ -1,64 +0,0 @@ -#! /usr/bin/env bash -# -#/** -# * Copyright The Apache Software Foundation -# * -# * 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. -# */ - -set -x -set -e - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - -source ${DIR}/../bin/hbase-client-env.sh - -# On some systems, autotools installs libraries to lib64 rather than lib. Fix -# this by setting up lib64 as a symlink to lib. We have to do this step first -# to handle cases where one third-party library depends on another. -mkdir -p "${HBASE_PREFIX}/lib" -cd ${HBASE_PREFIX} -ln -sf lib "${HBASE_PREFIX}/lib64" - -if [ ! -f gtest ]; then - cd ${HBASE_GTEST_DIR} - cmake . - make -j4 - cd .. - ln -sf ${HBASE_GTEST_DIR} gtest -fi - -if [ ! -f ${HBASE_PREFIX}/lib/libprotobuf.a ]; then - cd ${HBASE_PROTOBUF_DIR} - ./configure --with-pic --disable-shared --prefix=${HBASE_PREFIX} - make -j4 install -fi - -if [ ! -f ${HBASE_PREFIX}/lib/libev.a ]; then - cd ${HBASE_LIBEV_DIR} - ./configure --with-pic --disable-shared --prefix=${HBASE_PREFIX} - make -j4 install -fi - -echo "---------------------" -echo "Thirdparty dependencies built and installed into $HBASE_PREFIX successfully" diff --git a/hbase-native-client/bin/download-thirdparty.sh b/hbase-native-client/bin/download-thirdparty.sh deleted file mode 100755 index db98aae..0000000 --- a/hbase-native-client/bin/download-thirdparty.sh +++ /dev/null @@ -1,70 +0,0 @@ -#! /usr/bin/env bash -# -#/** -# * Copyright The Apache Software Foundation -# * -# * 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. -# */ - -set -x -set -e - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - -source ${DIR}/../bin/hbase-client-env.sh - -mkdir -p ${HBASE_TP_DIR} -cd ${HBASE_TP_DIR} - - -if [ ! -d ${HBASE_GTEST_DIR} ]; then - echo "Fetching gtest" - wget -c http://googletest.googlecode.com/files/gtest-${HBASE_GTEST_VERSION}.zip - unzip gtest-${HBASE_GTEST_VERSION}.zip - rm gtest-${HBASE_GTEST_VERSION}.zip -fi - -if [ ! -d ${HBASE_PROTOBUF_DIR} ]; then - echo "Fetching protobuf" - wget -c http://protobuf.googlecode.com/files/protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz - tar xzf protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz - rm protobuf-${HBASE_PROTOBUF_VERSION}.tar.gz -fi - -if [ ! -d $HBASE_LIBEV_DIR ]; then - echo "Fetching libev" - wget -c http://dist.schmorp.de/libev/libev-${HBASE_LIBEV_VERSION}.tar.gz - tar zxf libev-${HBASE_LIBEV_VERSION}.tar.gz - rm -rf libev-${HBASE_LIBEV_VERSION}.tar.gz -fi - -if [ ! -d $HBASE_PREFIX/bin/cpplint.py ]; then - echo "Fetching cpplint" - mkdir -p $HBASE_PREFIX/bin/ - wget -O $HBASE_PREFIX/bin/cpplint.py http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py - chmod +x $HBASE_PREFIX/bin/cpplint.py -fi - - -echo "---------------" -echo "Thirdparty dependencies downloaded successfully" diff --git a/hbase-native-client/bin/hbase-client-env.sh b/hbase-native-client/bin/hbase-client-env.sh deleted file mode 100644 index 96763da..0000000 --- a/hbase-native-client/bin/hbase-client-env.sh +++ /dev/null @@ -1,47 +0,0 @@ -#! /usr/bin/env bash -# -#/** -# * Copyright The Apache Software Foundation -# * -# * 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. -# */ - -SOURCE="${BASH_SOURCE[0]}" -while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink - DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" - SOURCE="$(readlink "$SOURCE")" - [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to - # resolve it relative to the path where - # the symlink file was located -done -DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" -HBASE_DIR="${DIR}/../" -HBASE_TP_DIR="${HBASE_DIR}/thirdparty/" - -HBASE_PREFIX=$HBASE_TP_DIR/installed - -HBASE_GTEST_VERSION=1.7.0 -HBASE_GTEST_DIR=$HBASE_TP_DIR/gtest-$HBASE_GTEST_VERSION - -HBASE_PROTOBUF_VERSION=2.5.0 -HBASE_PROTOBUF_DIR=$HBASE_TP_DIR/protobuf-$HBASE_PROTOBUF_VERSION - -HBASE_LIBEV_VERSION=4.15 -HBASE_LIBEV_DIR=$HBASE_TP_DIR/libev-$HBASE_LIBEV_VERSION - -# use the compiled tools -export PATH=$HBASE_PREFIX/bin:$PATH diff --git a/hbase-native-client/bin/start-docker.sh b/hbase-native-client/bin/start-docker.sh new file mode 100755 index 0000000..8d0f944 --- /dev/null +++ b/hbase-native-client/bin/start-docker.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +docker build -t hbase_native . +docker run -v ${PWD}/..:/usr/local/src/hbase -it hbase_native /bin/bash diff --git a/hbase-native-client/cmake_modules/FindGTest.cmake b/hbase-native-client/cmake_modules/FindGTest.cmake deleted file mode 100644 index 8d27876..0000000 --- a/hbase-native-client/cmake_modules/FindGTest.cmake +++ /dev/null @@ -1,53 +0,0 @@ -# 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. - -set( GTEST_INCLUDE_SEARCH - ${CMAKE_SOURCE_DIR}/thirdparty/gtest/include -) - -set( GTEST_LIB_SEARCH - ${CMAKE_SOURCE_DIR}/thirdparty/gtest -) - -find_path(GTEST_INCLUDE - NAMES gtest/gtest.h - PATHS ${GTEST_INCLUDE_SEARCH} - NO_DEFAULT_PATH -) - -find_library(GTEST_LIBRARY - NAMES gtest - PATHS ${GTEST_LIB_SEARCH} - NO_DEFAULT_PATH -) - -find_library(GTEST_LIBRARY_MAIN - NAMES gtest_main - PATHS ${GTEST_LIB_SEARCH} - NO_DEFAULT_PATH -) - -if (GTEST_INCLUDE AND GTEST_LIBRARY AND GTEST_LIBRARY_MAIN) - set(GTEST_LIBS ${GTEST_LIBRARY} ${GTEST_LIBRARY_MAIN}) - set(GTEST_INCLUDE_DIR ${GTEST_INCLUDE}) - set(GTEST_FOUND TRUE) -endif() - -mark_as_advanced( - GTEST_INCLUDE_DIR - GTEST_LIBS -) diff --git a/hbase-native-client/cmake_modules/FindLibEv.cmake b/hbase-native-client/cmake_modules/FindLibEv.cmake deleted file mode 100644 index 5fd3e86..0000000 --- a/hbase-native-client/cmake_modules/FindLibEv.cmake +++ /dev/null @@ -1,47 +0,0 @@ -# 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. - -set( LIBEV_INCLUDE_SEARCH - ${CMAKE_SOURCE_DIR}/thirdparty/installed/include -) - -set( LIBEV_LIB_SEARCH - ${CMAKE_SOURCE_DIR}/thirdparty/installed/include -) - -find_path(LIBEV_INCLUDE - NAMES ev++.h - PATHS ${LIBEV_INCLUDE_SEARCH} - NO_DEFAULT_PATH -) - -find_library(LIBEV_LIBRARY - NAMES ev - PATHS ${LIBEV_LIB_SEARCH} - NO_DEFAULT_PATH -) - -if (LIBEV_INCLUDE_PATH AND LIBEV_LIBRARY) - set(LIBEV_LIBS ${LIBEV_LIBRARY}) - set(LIBEV_INCLUDE_DIR ${LIBEV_INCLUDE}) - set(LIBEV_FOUND TRUE) -endif() - -mark_as_advanced( - LIBEV_INCLUDE_DIR - LIBEV_LIBS -) -- 2.6.1