diff --git a/contrib/teamcity/install_openjdk8.sh b/contrib/teamcity/install_openjdk8.sh new file mode 100755 index 000000000..3a1d2a489 --- /dev/null +++ b/contrib/teamcity/install_openjdk8.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +export LC_ALL=C.UTF-8 + +set -euxo pipefail + +ADOPTOPENJDK_APT_REPOSITORY=https://adoptopenjdk.jfrog.io/adoptopenjdk/deb +ADOPTOPENJDK8_DEB_FILE=adoptopenjdk-8-hotspot_8u252-b09-2_amd64.deb + +ADOPTOPENJDK8_DEPENDENCIES=( + java-common + libasound2 + libc6 + libx11-6 + libxext6 + libxi6 + libxrender1 + libxtst6 + zlib1g +) + +function join_by() { + local IFS="$1" + shift + echo "$*" +} + +# First install the known dependencies +apt-get update +DEBIAN_FRONTEND=noninteractive apt-get install -y $(join_by ' ' "${ADOPTOPENJDK8_DEPENDENCIES[@]}") + +apt-key add "$(dirname $0)/adoptopenjdk.pub" + +{ + # Try to install from the repo + add-apt-repository --yes "${ADOPTOPENJDK_APT_REPOSITORY}" && + apt-get update && + DEBIAN_FRONTEND=noninteractive apt-get install -y adoptopenjdk-8-hotspot +} || { + # Fallback in case of failure: + # - Remove the faulty repo, make sure we can update the packages + # - Download the deb package and install it using dpkg + add-apt-repository -r "${ADOPTOPENJDK_APT_REPOSITORY}" && + apt-get update && + wget "${ADOPTOPENJDK_APT_REPOSITORY}/pool/main/a/adoptopenjdk-8-hotspot/${ADOPTOPENJDK8_DEB_FILE}" && + dpkg -i "${ADOPTOPENJDK8_DEB_FILE}" +} || { + # Nothing worked, give up + echo "Unable to install adoptopenjdk8, giving up" + exit 1 +} + +ln -s /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64 /usr/lib/jvm/default-java +echo 'JAVA_HOME="/usr/lib/jvm/default-java"' >> /etc/environment diff --git a/contrib/teamcity/setup-debian-buster.sh b/contrib/teamcity/setup-debian-buster.sh index 7c6d8ac12..dab1e9606 100755 --- a/contrib/teamcity/setup-debian-buster.sh +++ b/contrib/teamcity/setup-debian-buster.sh @@ -1,113 +1,108 @@ #!/usr/bin/env bash export LC_ALL=C.UTF-8 set -euxo pipefail dpkg --add-architecture i386 PACKAGES=( arcanist automake autotools-dev binutils bsdmainutils build-essential ccache cmake curl flake8 g++-aarch64-linux-gnu g++-arm-linux-gnueabihf git g++-mingw-w64 gnupg gperf imagemagick jq lcov less lib32stdc++-8-dev libboost-all-dev libbz2-dev libc6-dev:i386 libcap-dev libdb++-dev libdb-dev libevent-dev libjemalloc-dev libminiupnpc-dev libprotobuf-dev libqrencode-dev libqt5core5a libqt5dbus5 libqt5gui5 librsvg2-bin libssl-dev libtiff-tools libtinfo5 libtool libzmq3-dev make ninja-build nsis php-codesniffer pkg-config protobuf-compiler python3 python3-autopep8 python3-setuptools python3-zmq qemu-user-static qttools5-dev qttools5-dev-tools shellcheck software-properties-common tar wget wine ) function join_by() { local IFS="$1" shift echo "$*" } apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y $(join_by ' ' "${PACKAGES[@]}") TEAMCITY_DIR=$(dirname "$0") -# Add the AdoptOpenJDK repo -apt-key add "${TEAMCITY_DIR}"/adoptopenjdk.pub -add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ -apt-get update -DEBIAN_FRONTEND=noninteractive apt-get install -y adoptopenjdk-8-hotspot - -ln -s /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64 /usr/lib/jvm/default-java -echo 'JAVA_HOME="/usr/lib/jvm/default-java"' >> /etc/environment +# FIXME this should no longer be needed starting with Teamcity 2020.1, which +# supports Java 11. +"${TEAMCITY_DIR}/install_openjdk8.sh" # Install llvm-8 and clang-10 apt-key add "${TEAMCITY_DIR}"/llvm.pub add-apt-repository "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" add-apt-repository "deb https://apt.llvm.org/buster/ llvm-toolchain-buster-10 main" apt-get update LLVM_PACKAGES=( clang-8 clang-10 clang-format-8 clang-tidy-8 clang-tools-8 ) DEBIAN_FRONTEND=noninteractive apt-get install -y $(join_by ' ' "${LLVM_PACKAGES[@]}") update-alternatives --install /usr/bin/clang clang "$(command -v clang-8)" 100 update-alternatives --install /usr/bin/clang++ clang++ "$(command -v clang++-8)" 100 # Use a lower priority to keep clang-8 the default update-alternatives --install /usr/bin/clang clang "$(command -v clang-10)" 50 update-alternatives --install /usr/bin/clang++ clang++ "$(command -v clang++-10)" 50 # Use the mingw posix variant update-alternatives --set x86_64-w64-mingw32-g++ $(command -v x86_64-w64-mingw32-g++-posix) update-alternatives --set x86_64-w64-mingw32-gcc $(command -v x86_64-w64-mingw32-gcc-posix)