123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #!/usr/bin/env bash
- # 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 -o pipefail
- # Bundle a native library if requested. Exit 1 in case error happens.
- # Usage: bundle_native_lib bundleoption liboption libpattern libdir
- function bundle_native_lib()
- {
- declare bundleoption="$1"
- declare liboption="$2"
- declare libpattern="$3"
- declare libdir="$4"
- echo "Checking to bundle with:"
- echo "bundleoption=${bundleoption}, liboption=${liboption}, pattern=${libpattern} libdir=${libdir}"
- if [[ "${bundleoption}" != "true" ]]; then
- return
- fi
- if [[ -z "${libdir}" ]] || [[ ! -d "${libdir}" ]]; then
- echo "The required option ${liboption} isn't given or invalid. Bundling the lib failed"
- exit 1
- fi
- cd "${libdir}" || exit 1
- ${TAR} ./*"${libpattern}"* | (cd "${TARGET_DIR}"/ || exit 1; ${UNTAR})
- if [[ $? -ne 0 ]]; then
- echo "Bundling library with ${liboption} failed "
- exit 1
- fi
- }
- function bundle_native_bin
- {
- declare bundleoption="$1"
- declare libbundle="$2"
- declare binoption="$3"
- declare binpattern="$4"
- declare libdir="$5"
- echo "Checking to bundle with:"
- echo "bundleoption=${bundleoption}, libbundle=${libbundle}, binoption=${binoption}, libdir=${libdir}, binpattern=${binpattern}"
- if [[ "${bundleoption}" != "true" ]]; then
- return
- fi
- if [[ "${libbundle}" != "true" ]]; then
- return
- fi
- if [[ -z "${libdir}" ]] || [[ ! -d "${libdir}" ]]; then
- echo "The required option ${liboption} isn't given or invalid. Bundling the lib failed"
- exit 1
- fi
- cd "${libdir}" || exit 1
- ${TAR} ./*"${libpattern}"* | (cd "${TARGET_BIN_DIR}"/ || exit 1 ; ${UNTAR})
- if [[ $? -ne 0 ]]; then
- echo "Bundling bin files for ${binoption} failed"
- exit 1
- fi
- }
- for i in "$@"; do
- case "${i}" in
- --version=*)
- VERSION=${i#*=}
- ;;
- --artifactid=*)
- ARTIFACTID=${i#*=}
- ;;
- --builddir=*)
- BUILD_DIR=${i#*=}
- ;;
- --opensslbinbundle=*)
- OPENSSLBINBUNDLE=${i#*=}
- ;;
- --openssllib=*)
- OPENSSLLIB=${i#*=}
- ;;
- --openssllibbundle=*)
- OPENSSLLIBBUNDLE=${i#*=}
- ;;
- --snappybinbundle=*)
- SNAPPYBINBUNDLE=${i#*=}
- ;;
- --snappylib=*)
- SNAPPYLIB=${i#*=}
- ;;
- --snappylibbundle=*)
- SNAPPYLIBBUNDLE=${i#*=}
- ;;
- esac
- done
- TAR='tar cf -'
- UNTAR='tar xfBp -'
- LIB_DIR="${BUILD_DIR}/native/target/usr/local/lib"
- BIN_DIR="${BUILD_DIR}/bin"
- TARGET_DIR="${BUILD_DIR}/${ARTIFACTID}-${VERSION}/lib/native"
- TARGET_BIN_DIR="${BUILD_DIR}/${ARTIFACTID}-${VERSION}/bin"
- # Most systems
- if [[ -d "${LIB_DIR}" ]]; then
- mkdir -p "${TARGET_DIR}"
- cd "${LIB_DIR}" || exit 1
- ${TAR} lib* | (cd "${TARGET_DIR}"/ || exit 1; ${UNTAR})
- if [[ $? -ne 0 ]]; then
- echo "Bundling lib files failed"
- exit 1
- fi
- bundle_native_lib "${SNAPPYLIBBUNDLE}" "snappy.lib" "snappy" "${SNAPPYLIB}"
- bundle_native_lib "${OPENSSLLIBBUNDLE}" "openssl.lib" "crypto" "${OPENSSLLIB}"
- fi
- # Windows
- # Windows doesn't have a LIB_DIR, everything goes into bin
- if [[ -d "${BIN_DIR}" ]] ; then
- mkdir -p "${TARGET_BIN_DIR}"
- cd "${BIN_DIR}" || exit 1
- ${TAR} ./* | (cd "${TARGET_BIN_DIR}"/ || exit 1; ${UNTAR})
- if [[ $? -ne 0 ]]; then
- echo "Bundling bin files failed"
- exit 1
- fi
- bundle_native_bin "${SNAPPYBINBUNDLE}" "${SNAPPYLIBBUNDLE}" "snappy.lib" "snappy" "${SNAPPYLIB}"
- bundle_native_bin "${OPENSSLBINBUNDLE}" "${OPENSSLLIBBUNDLE}" "openssl.lib" "crypto" "${OPENSSLLIB}"
- fi
|