mirror of
https://github.com/apache/impala.git
synced 2025-12-19 09:58:28 -05:00
IMPALA-12362: (part-4/4) Refactor linux packaging related cmake files.
Independent linux packaging related content to package/CMakeLists.txt to make it more clearly. This patch also add LICENSE and NOTICE file in the final package. Testing: - Manually deploy package on Ubuntu22.04 and verify it. Change-Id: If3914dcda69f81a735cdf70d76c59fa09454777b Reviewed-on: http://gerrit.cloudera.org:8080/20263 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
committed by
Impala Public Jenkins
parent
0334f83704
commit
050805d21b
3
.gitignore
vendored
3
.gitignore
vendored
@@ -39,6 +39,9 @@ build.ninja
|
||||
rules.ninja
|
||||
CMakeDoxyfile.in
|
||||
CMakeDoxygenDefaults.cmake
|
||||
CPackConfig.cmake
|
||||
CPackSourceConfig.cmake
|
||||
_CPack_Packages
|
||||
|
||||
# Build timestamp files
|
||||
.*timestamp
|
||||
|
||||
107
CMakeLists.txt
107
CMakeLists.txt
@@ -24,8 +24,6 @@ set(NO_TESTS 1)
|
||||
# initialized.
|
||||
project(Impala)
|
||||
|
||||
option(BUILD_PACKAGES "Build deployment packages")
|
||||
|
||||
include(cmake_modules/kudu_cmake_fns.txt)
|
||||
|
||||
if (NOT DEFINED BUILD_SHARED_LIBS)
|
||||
@@ -497,11 +495,6 @@ else()
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_CUSTOM ${JUNITXML_WRAPPER})
|
||||
endif()
|
||||
|
||||
cmake_host_system_information(RESULT OS_DISTRIB_ID QUERY DISTRIB_ID)
|
||||
cmake_host_system_information(RESULT OS_DISTRIB_VERSION_ID QUERY DISTRIB_VERSION_ID)
|
||||
message(STATUS "DISTRIB_ID: ${OS_DISTRIB_ID}")
|
||||
message(STATUS "DISTRIB_VERSION_ID: ${OS_DISTRIB_VERSION_ID}")
|
||||
|
||||
## installation path
|
||||
set(CMAKE_INSTALL_PREFIX "/opt")
|
||||
set(IMPALA_INSTALLDIR "impala" CACHE INTERNAL "")
|
||||
@@ -515,42 +508,7 @@ add_subdirectory(be)
|
||||
add_subdirectory(docker)
|
||||
add_subdirectory(java)
|
||||
add_subdirectory(shell)
|
||||
|
||||
install(DIRECTORY "www/" DESTINATION ${IMPALA_INSTALLDIR}/www)
|
||||
install(FILES fe/target/impala-frontend-$ENV{IMPALA_VERSION}.jar
|
||||
DESTINATION ${IMPALA_INSTALLDIR}/lib/jars)
|
||||
|
||||
set(IMPALA_GCC_HOME $ENV{IMPALA_TOOLCHAIN_PACKAGES_HOME}/gcc-$ENV{IMPALA_GCC_VERSION})
|
||||
FILE(GLOB gcc_lib ${IMPALA_GCC_HOME}/lib64/libgcc_s.so.1*)
|
||||
install(FILES ${gcc_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
FILE(GLOB cpp_lib ${IMPALA_GCC_HOME}/lib64/libstdc++.so.6*)
|
||||
install(FILES ${cpp_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
set(KUDU_HOME $ENV{IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-$ENV{IMPALA_KUDU_VERSION}/release)
|
||||
# The parent folder is lib64 on centos/redhat, while on ubuntu it's lib.
|
||||
FILE(GLOB kudu_lib ${KUDU_HOME}/lib*/libkudu_client.so*)
|
||||
install(FILES ${kudu_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
FILE(GLOB hadoop_lib $ENV{HADOOP_LIB_DIR}/native/libhadoop.so*)
|
||||
install(FILES ${hadoop_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
install(DIRECTORY fe/target/dependency/ DESTINATION ${IMPALA_INSTALLDIR}/lib/jars
|
||||
FILES_MATCHING PATTERN "*.jar")
|
||||
|
||||
string(TOLOWER ${OS_DISTRIB_ID} OS_DISTRIB_ID)
|
||||
if (${OS_DISTRIB_ID} STREQUAL "rhel" AND ${OS_DISTRIB_VERSION_ID} VERSION_GREATER_EQUAL 8)
|
||||
# TODO: remove this after resolving IMPALA-12255
|
||||
message(STATUS "Not packaging impala-shell on redhat8+ due to ambiguous python shebang")
|
||||
else()
|
||||
install(DIRECTORY shell/build/impala-shell-$ENV{IMPALA_VERSION}/
|
||||
DESTINATION ${IMPALA_INSTALLDIR}/shell
|
||||
USE_SOURCE_PERMISSIONS PATTERN "*.pyc" EXCLUDE)
|
||||
endif()
|
||||
|
||||
install(DIRECTORY package/bin/ DESTINATION ${IMPALA_INSTALLDIR}/bin
|
||||
USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.sh")
|
||||
install(DIRECTORY package/conf/ DESTINATION ${IMPALA_INSTALLDIR}/conf)
|
||||
add_subdirectory(package)
|
||||
|
||||
# Build target for all generated files which most backend code depends on
|
||||
add_custom_target(gen-deps ALL DEPENDS thrift-deps proto-deps fb-deps
|
||||
@@ -600,66 +558,3 @@ if (DUMP_INCLUDE_PATHS)
|
||||
endif(DUMP_INCLUDE_PATHS)
|
||||
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libstdc++")
|
||||
|
||||
# packaging
|
||||
if (BUILD_PACKAGES)
|
||||
|
||||
if (${OS_DISTRIB_ID} MATCHES "(rhel|centos)")
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
elseif (${OS_DISTRIB_ID} MATCHES "ubuntu")
|
||||
set(CPACK_GENERATOR "DEB")
|
||||
else()
|
||||
message(WARNING "OS is ${OS_DISTRIB_ID}. No packages will be generated.")
|
||||
endif()
|
||||
|
||||
if (CPACK_GENERATOR)
|
||||
message(STATUS "Packaging enabled: ${CPACK_GENERATOR}")
|
||||
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
|
||||
set(CPACK_PACKAGE_VENDOR "Apache")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An open source massively parallel processing SQL query engine.")
|
||||
set(CPACK_PACKAGE_CONTACT "dev@impala.apache.org")
|
||||
set(CPACK_PACKAGE_HOMEPAGE_URL "https://impala.apache.org")
|
||||
set(CPACK_PACKAGE_VERSION "$ENV{IMPALA_VERSION}")
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "ASL-2.0")
|
||||
# Set a meaningful package name, e.g. Impala-4.3.0-SNAPSHOT_hive-3.1.3000.7.2.18.0-41-x86_64.el7
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_hive-$ENV{IMPALA_HIVE_VERSION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if (${CPACK_GENERATOR} MATCHES "RPM")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.el${OS_DISTRIB_VERSION_ID}")
|
||||
elseif (${CPACK_GENERATOR} MATCHES "DEB")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.ubuntu-${OS_DISTRIB_VERSION_ID}")
|
||||
endif()
|
||||
message(STATUS "Package name: ${CPACK_PACKAGE_FILE_NAME}")
|
||||
|
||||
if ($ENV{STRIP_DEPLOYMENT_IMPALAD})
|
||||
set(CPACK_STRIP_FILES ${IMPALA_INSTALLDIR}/bin/impalad)
|
||||
message("Binaries in the package will be stripped")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "impala")
|
||||
|
||||
execute_process(
|
||||
COMMAND bash -c "${CMAKE_SOURCE_DIR}/docker/install_os_packages.sh --dry-run | tail -n1"
|
||||
OUTPUT_VARIABLE PKG_LIST
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if ("${PKG_LIST}" STREQUAL "")
|
||||
message(FATAL_ERROR "Package list is empty: '${PKG_LIST}'")
|
||||
else()
|
||||
message(STATUS "Get required package list: '${PKG_LIST}'")
|
||||
endif()
|
||||
|
||||
if (${CPACK_GENERATOR} MATCHES "RPM")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
||||
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES ${PKG_LIST})
|
||||
else()
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PKG_LIST})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
|
||||
endif()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Apache Impala
|
||||
Copyright 2019 The Apache Software Foundation
|
||||
Copyright 2024 The Apache Software Foundation
|
||||
|
||||
This product includes software developed at
|
||||
The Apache Software Foundation (http://www.apache.org/).
|
||||
|
||||
136
package/CMakeLists.txt
Normal file
136
package/CMakeLists.txt
Normal file
@@ -0,0 +1,136 @@
|
||||
# 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.
|
||||
|
||||
project(Impala_packaging)
|
||||
|
||||
cmake_host_system_information(RESULT OS_DISTRIB_ID QUERY DISTRIB_ID)
|
||||
cmake_host_system_information(RESULT OS_DISTRIB_VERSION_ID QUERY DISTRIB_VERSION_ID)
|
||||
message(STATUS "DISTRIB_ID: ${OS_DISTRIB_ID}")
|
||||
message(STATUS "DISTRIB_VERSION_ID: ${OS_DISTRIB_VERSION_ID}")
|
||||
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.txt DESTINATION ${IMPALA_INSTALLDIR} RENAME LICENSE)
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/NOTICE.txt DESTINATION ${IMPALA_INSTALLDIR} RENAME NOTICE)
|
||||
install(DIRECTORY "${CMAKE_SOURCE_DIR}/www/" DESTINATION ${IMPALA_INSTALLDIR}/www)
|
||||
install(FILES ${CMAKE_SOURCE_DIR}/fe/target/impala-frontend-$ENV{IMPALA_VERSION}.jar
|
||||
DESTINATION ${IMPALA_INSTALLDIR}/lib/jars)
|
||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/fe/target/dependency/
|
||||
DESTINATION ${IMPALA_INSTALLDIR}/lib/jars
|
||||
FILES_MATCHING PATTERN "*.jar")
|
||||
|
||||
set(IMPALA_GCC_HOME $ENV{IMPALA_TOOLCHAIN_PACKAGES_HOME}/gcc-$ENV{IMPALA_GCC_VERSION})
|
||||
FILE(GLOB gcc_lib ${IMPALA_GCC_HOME}/lib64/libgcc_s.so.1*)
|
||||
if("${gcc_lib}" STREQUAL "")
|
||||
message(FATAL_ERROR "libgcc_s.so.1 was not found in '${IMPALA_GCC_HOME}/lib64'!")
|
||||
endif()
|
||||
install(FILES ${gcc_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
FILE(GLOB cpp_lib ${IMPALA_GCC_HOME}/lib64/libstdc++.so.6*)
|
||||
if("${cpp_lib}" STREQUAL "")
|
||||
message(FATAL_ERROR "libstdc++.so.6 was not found in '${IMPALA_GCC_HOME}/lib64'!")
|
||||
endif()
|
||||
install(FILES ${cpp_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
set(KUDU_HOME $ENV{IMPALA_TOOLCHAIN_PACKAGES_HOME}/kudu-$ENV{IMPALA_KUDU_VERSION}/release)
|
||||
# The parent folder is lib64 on centos/redhat, while on ubuntu it's lib.
|
||||
FILE(GLOB kudu_lib ${KUDU_HOME}/lib*/libkudu_client.so*)
|
||||
if("${kudu_lib}" STREQUAL "")
|
||||
message(FATAL_ERROR "libkudu_client.so was not found in '${KUDU_HOME}/lib'!")
|
||||
endif()
|
||||
install(FILES ${kudu_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
FILE(GLOB hadoop_lib $ENV{HADOOP_LIB_DIR}/native/libhadoop.so*)
|
||||
if("${hadoop_lib}" STREQUAL "")
|
||||
message(FATAL_ERROR "libhadoop.so was not found in '$ENV{HADOOP_LIB_DIR}/native'!")
|
||||
endif()
|
||||
install(FILES ${hadoop_lib} DESTINATION ${IMPALA_INSTALLDIR}/lib/native)
|
||||
|
||||
string(TOLOWER ${OS_DISTRIB_ID} OS_DISTRIB_ID)
|
||||
if (${OS_DISTRIB_ID} STREQUAL "rhel" AND ${OS_DISTRIB_VERSION_ID} VERSION_GREATER_EQUAL 8)
|
||||
# TODO: remove this after resolving IMPALA-12255
|
||||
message(STATUS "Not packaging impala-shell on redhat8+ due to ambiguous python shebang")
|
||||
else()
|
||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/shell/build/impala-shell-$ENV{IMPALA_VERSION}/
|
||||
DESTINATION ${IMPALA_INSTALLDIR}/shell
|
||||
USE_SOURCE_PERMISSIONS PATTERN "*.pyc" EXCLUDE)
|
||||
endif()
|
||||
|
||||
install(DIRECTORY bin/ DESTINATION ${IMPALA_INSTALLDIR}/bin
|
||||
USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.sh")
|
||||
install(DIRECTORY conf/ DESTINATION ${IMPALA_INSTALLDIR}/conf)
|
||||
|
||||
# packaging
|
||||
option(BUILD_PACKAGES "Build deployment packages")
|
||||
if (NOT BUILD_PACKAGES)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (${OS_DISTRIB_ID} MATCHES "(rhel|centos)")
|
||||
set(CPACK_GENERATOR "RPM")
|
||||
elseif (${OS_DISTRIB_ID} MATCHES "ubuntu")
|
||||
set(CPACK_GENERATOR "DEB")
|
||||
else()
|
||||
message(FATAL_ERROR "OS is ${OS_DISTRIB_ID}. No packages will be generated.")
|
||||
endif()
|
||||
|
||||
message(STATUS "Packaging enabled: ${CPACK_GENERATOR}")
|
||||
set(CPACK_PACKAGE_NAME ${CMAKE_PROJECT_NAME})
|
||||
set(CPACK_PACKAGE_VENDOR "Apache")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "An open source massively parallel processing SQL query engine.")
|
||||
set(CPACK_PACKAGE_CONTACT "dev@impala.apache.org")
|
||||
set(CPACK_PACKAGE_HOMEPAGE_URL "https://impala.apache.org")
|
||||
set(CPACK_PACKAGE_VERSION "$ENV{IMPALA_VERSION}")
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "ASL-2.0")
|
||||
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build)
|
||||
# Set a meaningful package name, e.g. apache-impala-4.4.0_hive-3.1.3-x86_64.el7
|
||||
set(CPACK_PACKAGE_FILE_NAME "apache-impala-${CPACK_PACKAGE_VERSION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}_hive-$ENV{IMPALA_HIVE_VERSION}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if (${CPACK_GENERATOR} MATCHES "RPM")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.el${OS_DISTRIB_VERSION_ID}")
|
||||
elseif (${CPACK_GENERATOR} MATCHES "DEB")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}.ubuntu-${OS_DISTRIB_VERSION_ID}")
|
||||
endif()
|
||||
message(STATUS "Package name: ${CPACK_PACKAGE_FILE_NAME}")
|
||||
|
||||
if ($ENV{STRIP_DEPLOYMENT_IMPALAD})
|
||||
set(CPACK_STRIP_FILES ${IMPALA_INSTALLDIR}/sbin/impalad)
|
||||
message("Binaries in the package will be stripped")
|
||||
endif()
|
||||
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt")
|
||||
set(CPACK_PACKAGE_INSTALL_DIRECTORY "impala")
|
||||
|
||||
execute_process(
|
||||
COMMAND bash -c "${CMAKE_SOURCE_DIR}/docker/install_os_packages.sh --dry-run | tail -n1"
|
||||
OUTPUT_VARIABLE PKG_LIST
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
if ("${PKG_LIST}" STREQUAL "")
|
||||
message(FATAL_ERROR "Package list is empty: '${PKG_LIST}'")
|
||||
else()
|
||||
message(STATUS "Get required package list: '${PKG_LIST}'")
|
||||
endif()
|
||||
|
||||
if (${CPACK_GENERATOR} MATCHES "RPM")
|
||||
set(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
||||
set(CPACK_RPM_PACKAGE_RELOCATABLE TRUE)
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES ${PKG_LIST})
|
||||
else()
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PKG_LIST})
|
||||
endif()
|
||||
|
||||
include(CPack)
|
||||
Reference in New Issue
Block a user