blob: be2fd20fdeef8c8da12b83a86e4491ee46339d6b [file] [log] [blame]
#!/bin/bash
DRY_RUN=""
if [ $# -gt 0 ]; then
if [ "$1" == "--dry-run" ]; then
DRY_RUN="echo "
fi
fi
echo "Checking for dependencies..."
REQUIRED="git cargo"
for name in $(echo ${REQUIRED});
do
type -P "$name" &>/dev/null || { echo "Install '$name'" >&2; exit 1;}
done
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PARENT_DIR="$(echo ${SCRIPT_DIR} | rev | cut -d '/' -f 2- | rev )"
TMP_DIR=$(mktemp -d)
OUT_DIR="${TMP_DIR}/out"
trap ctrl_c INT
function ctrl_c() {
rm -rf "${TMP_DIR}"
exit 1
}
# Check dependencies
# libchrome requires modp_b64
APT_REQUIRED="flatbuffers-compiler flex g++-multilib gcc-multilib generate-ninja \
gnupg gperf libc++-dev libdbus-1-dev libevent-dev libevent-dev libflatbuffers-dev libflatbuffers1 \
libgl1-mesa-dev libglib2.0-dev liblz4-tool libncurses5 libnss3-dev libprotobuf-dev libre2-9 \
libssl-dev libtinyxml2-dev libx11-dev libxml2-utils ninja-build openssl protobuf-compiler unzip \
x11proto-core-dev xsltproc zip zlib1g-dev debmake ninja-build modp-b64 libchrome"
APT_MISSING=()
for name in $(echo ${APT_REQUIRED});
do
R="$(apt -qq list "${name}" 2>/dev/null | grep "installed")"
if [ "${R}" == "" ]; then
echo "Need to install '${name}'" >&2;
if [ "${name}" == "modp-b64" ]; then
echo "${name} source is available to build in this repository"
# dir name is different than package name :'(
${DRY_RUN} pushd "${PARENT_DIR}/modp_b64/"
${DRY_RUN} ./gen-src-pkg.sh "${OUT_DIR}"
${DRY_RUN} sudo dpkg -i "${OUT_DIR}"/${name}*.deb || ctrl_c
${DRY_RUN} popd
elif [ "${name}" == "libchrome" ]; then
echo "${name} source is available to build in this repository"
${DRY_RUN} pushd "${PARENT_DIR}/${name}/"
${DRY_RUN} ./gen-src-pkg.sh "${OUT_DIR}"
${DRY_RUN} sudo dpkg -i "${OUT_DIR}"/${name}*.deb || ctrl_c
${DRY_RUN} popd
else
APT_MISSING+=("${name}")
fi
fi
done
APT_MISSING_LEN="${#APT_MISSING[@]}"
if [ $APT_MISSING_LEN -gt 0 ]; then
echo "Missing Packages:"
echo " ${APT_MISSING[*]}"
${DRY_RUN} sudo apt install "${APT_MISSING[*]}" || ctrl_c
else
rm -rf "${TMP_DIR}"
exit 0
fi
echo Generating missing packages in "${TMP_DIR}"
# Check cargo for cxxbridge-cmd
HAS_CXX="$(cargo install --list | grep cxxbridge-cmd)"
if [ "$HAS_CXX" == "" ]; then
echo "Missing cxxbridge-cmd cargo package"
echo "Installing 'cxxbridge-cmd'" >&2
${DRY_RUN} cargo install cxxbridge-cmd || ctrl_c
fi
HAS_CXX="$(cargo install --list | grep cargo-proc-macro)"
if [ "$HAS_CXX" == "" ]; then
echo "Missing cargo-proc-macro cargo package"
echo "Installing 'cxxbridge-cmd'" >&2
${DRY_RUN} cargo install cargo-proc-macro || ctrl_c
fi
rm -rf "${TMP_DIR}"
echo "DONE"