| #!/bin/bash |
| # |
| # Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved. |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| # |
| # This code is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License version 2 only, as |
| # published by the Free Software Foundation. Oracle designates this |
| # particular file as subject to the "Classpath" exception as provided |
| # by Oracle in the LICENSE file that accompanied this code. |
| # |
| # This code is distributed in the hope that it will be useful, but WITHOUT |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| # version 2 for more details (a copy is included in the LICENSE file that |
| # accompanied this code). |
| # |
| # You should have received a copy of the GNU General Public License version |
| # 2 along with this work; if not, write to the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| # |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| # or visit www.oracle.com if you need additional information or have any |
| # questions. |
| # |
| # Create a bundle in the current directory, containing what's needed to run |
| # the 'dot' program from the graphviz suite by the OpenJDK build. |
| |
| set -eux |
| |
| mydir="$(cd -- $(dirname ${BASH_SOURCE[0]}) && pwd)" |
| me="${mydir}/$(basename ${BASH_SOURCE[0]})" |
| |
| EXPAT_VERSION="2.6.0" |
| EXPAT_URL="https://github.com/libexpat/libexpat/releases/download/R_${EXPAT_VERSION//./_}/expat-${EXPAT_VERSION}.tar.gz" |
| EXPAT_SHA256="a13447b9aa67d7c860783fdf6820f33ebdea996900d6d8bbc50a628f55f099f7" |
| |
| GRAPHVIZ_VERSION="9.0.0" |
| GRAPHVIZ_URL="https://gitlab.com/api/v4/projects/4207231/packages/generic/graphviz-releases/${GRAPHVIZ_VERSION}/graphviz-${GRAPHVIZ_VERSION}.tar.xz" |
| GRAPHVIZ_SHA256="6c9afda06a732af7658c2619ee713d2545818c3ff19b7b8fd48effcd06d57bf6" |
| |
| uname_s="$(uname -s)" |
| case ${uname_s} in |
| Linux) |
| bundle_os="linux" |
| shacmd="sha256sum --strict --check -" |
| lib_path_var="LD_LIBRARY_PATH" |
| ;; |
| Darwin) |
| bundle_os="macosx" |
| shacmd="shasum -a 256 --strict --check -" |
| lib_path_var="DYLD_LIBRARY_PATH" |
| ;; |
| *) |
| echo "Unknown OS: ${uname_s}" |
| exit 1 |
| ;; |
| esac |
| uname_m="$(uname -m)" |
| case ${uname_m} in |
| aarch64|arm64) |
| bundle_cpu="aarch64" |
| ;; |
| x86_64) |
| bundle_cpu="x64" |
| ;; |
| esac |
| bundle_platform="${bundle_os}_${bundle_cpu}" |
| |
| build_dir="${mydir}/../../build/graphviz" |
| download_dir="${build_dir}/download" |
| install_dir="${build_dir}/result/graphviz-${bundle_platform}-${GRAPHVIZ_VERSION}" |
| bundle_file="${install_dir}.tar.gz" |
| |
| expat_dir="${build_dir}/expat" |
| expat_src_dir="${expat_dir}/src" |
| |
| graphviz_dir="${build_dir}/graphviz" |
| graphviz_src_dir="${graphviz_dir}/src" |
| graphviz_doc_dir="${install_dir}/doc" |
| |
| mkdir -p "${build_dir}" |
| cd "${build_dir}" |
| |
| download_and_unpack() { |
| local url="$1" |
| local sha256="$2" |
| local file="$3" |
| local dir="$4" |
| |
| mkdir -p "$(dirname "${file}")" |
| if [ ! -f "${file}" ]; then |
| curl -L -o "${file}" "${url}" |
| fi |
| echo "${sha256} ${file}" | ${shacmd} |
| if [ ! -d "${dir}" ]; then |
| mkdir -p "${dir}" |
| tar --extract --file "${file}" --directory "${dir}" --strip-components 1 |
| fi |
| } |
| |
| download_and_unpack "${EXPAT_URL}" "${EXPAT_SHA256}" "${download_dir}/expat.tar.gz" "${expat_src_dir}" |
| download_and_unpack "${GRAPHVIZ_URL}" "${GRAPHVIZ_SHA256}" "${download_dir}/graphviz.tar.gz" "${graphviz_src_dir}" |
| |
| ( |
| cd "${expat_src_dir}" |
| ./configure --prefix="${install_dir}" |
| make -j install |
| ) |
| |
| ( |
| cd "${graphviz_src_dir}" |
| ./configure --prefix="${install_dir}" EXPAT_CFLAGS="-I${install_dir}/include" EXPAT_LIBS="-L${install_dir}/lib -lexpat" |
| make -j install |
| ) |
| |
| cat > "${install_dir}/dot" << EOF |
| #!/bin/bash |
| # Get an absolute path to this script |
| this_script_dir="\$(dirname \$0)" |
| this_script_dir="\$(cd \${this_script_dir} > /dev/null && pwd)" |
| export ${lib_path_var}="\${this_script_dir}/lib:\${this_script_dir}/lib/graphviz" |
| exec "\${this_script_dir}/bin/dot" "\$@" |
| EOF |
| chmod +x "${install_dir}/dot" |
| # create config file |
| "${install_dir}/dot" -c |
| |
| cp "${me}" "${install_dir}" |
| |
| tar --create --gzip --file "${bundle_file}" -C "${install_dir}" . |