7c6971239d
Reviewed-by: erikj, pminborg, ihse, mchung, iris
132 lines
4.2 KiB
Bash
132 lines
4.2 KiB
Bash
#!/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}" .
|