-
Notifications
You must be signed in to change notification settings - Fork 143
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* package(docker): update to clang-19 * ci: update github actions * ci: update build to clang-19 * ci: disable clang to stop double linking?
- Loading branch information
Showing
9 changed files
with
157 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,16 @@ | ||
./docker | ||
./build | ||
* | ||
!.git | ||
!cmake/ | ||
!config/ | ||
!include/ | ||
!lib/ | ||
!test/ | ||
!tools/ | ||
!unittests/ | ||
!utils/*.sh | ||
!utils/*.py | ||
|
||
!.gitmodules | ||
!CMakeLists.txt | ||
!Config.cmake.in | ||
!config.h.in |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,61 +1,32 @@ | ||
FROM ubuntu:22.04 | ||
ARG LLVM_INSTALL_DIR="/usr/local/llvm-14" | ||
LABEL Name=phasar Version=2403 | ||
|
||
RUN apt -y update && apt install bash sudo -y | ||
|
||
|
||
WORKDIR /usr/src/phasar | ||
RUN mkdir -p /usr/src/phasar/utils | ||
|
||
COPY ./utils/InitializeEnvironment.sh /usr/src/phasar/utils/ | ||
RUN ./utils/InitializeEnvironment.sh | ||
|
||
RUN apt-get -y install --no-install-recommends \ | ||
cmake \ | ||
ninja-build \ | ||
libstdc++6 \ | ||
libboost-graph-dev | ||
|
||
COPY ./utils/InstallAptDependencies.sh /usr/src/phasar/utils/ | ||
RUN ./utils/InstallAptDependencies.sh | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y software-properties-common | ||
|
||
RUN apt-key adv --fetch-keys https://apt.llvm.org/llvm-snapshot.gpg.key && \ | ||
add-apt-repository -y 'deb http://apt.llvm.org/focal/ llvm-toolchain-focal-14 main' && \ | ||
apt-get update && \ | ||
apt-get -y install --no-install-recommends \ | ||
clang-14 \ | ||
llvm-14-dev \ | ||
libllvm14 \ | ||
libclang-common-14-dev \ | ||
libclang-14-dev \ | ||
libclang-cpp14-dev \ | ||
clang-tidy-14 \ | ||
libclang-rt-14-dev | ||
|
||
RUN pip3 install Pygments pyyaml | ||
|
||
|
||
|
||
# installing wllvm | ||
RUN pip3 install wllvm | ||
|
||
ENV CC=/usr/bin/clang-14 | ||
ENV CXX=/usr/bin/clang++-14 | ||
|
||
COPY . /usr/src/phasar | ||
|
||
RUN git submodule init | ||
RUN git submodule update | ||
RUN mkdir -p build && cd build && \ | ||
cmake .. \ | ||
-DCMAKE_BUILD_TYPE=Release \ | ||
-DPHASAR_TARGET_ARCH="" \ | ||
-DCMAKE_CXX_COMPILER=$CXX \ | ||
-G Ninja && \ | ||
cmake --build . | ||
|
||
ENTRYPOINT [ "./build/tools/phasar-cli/phasar-cli" ] | ||
ARG baseimage="ubuntu:24.04" | ||
FROM "$baseimage" as build | ||
|
||
RUN --mount=type=bind,source=./utils/InstallAptDependencies.sh,target=/InstallAptDependencies.sh \ | ||
set -eux; \ | ||
./InstallAptDependencies.sh --noninteractive tzdata clang-19 libclang-rt-19-dev | ||
|
||
ENV CC=/usr/bin/clang-19 \ | ||
CXX=/usr/bin/clang++-19 | ||
|
||
FROM build | ||
|
||
ARG RUN_TESTS=OFF | ||
RUN --mount=type=bind,source=.,target=/usr/src/phasar,rw \ | ||
set -eux; \ | ||
cd /usr/src/phasar; \ | ||
git submodule update --init; \ | ||
cmake -S . -B cmake-build/Release \ | ||
-DCMAKE_BUILD_TYPE=Release \ | ||
-DPHASAR_TARGET_ARCH="" \ | ||
-DPHASAR_ENABLE_SANITIZERS=ON \ | ||
-DBUILD_PHASAR_CLANG=ON \ | ||
-DPHASAR_USE_Z3=ON \ | ||
-DPHASAR_ALLOW_LTO_IN_RELEASE_BUILD=ON \ | ||
-DPHASAR_BUILD_UNITTESTS=$RUN_TESTS \ | ||
-DPHASAR_BUILD_OPENSSL_TS_UNITTESTS=OFF \ | ||
-G Ninja; \ | ||
ninja -C cmake-build/Release install; \ | ||
[ "${RUN_TESTS}" = "ON" ] && ctest --test-dir cmake-build/Release --output-on-failure || true; \ | ||
phasar-cli --version | ||
|
||
ENTRYPOINT [ "phasar-cli" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,85 @@ | ||
#!/bin/bash | ||
set -e | ||
set -euo pipefail | ||
|
||
sudo apt-get update | ||
sudo apt-get install git -y | ||
sudo apt-get install zlib1g-dev python3 python3-pip g++ ninja-build cmake -y | ||
if printf "%s\n" "$@" | grep -Eqe '^--noninteractive|-ni$'; then | ||
readonly noninteractive="true" | ||
shift | ||
else | ||
readonly noninteractive="false" | ||
fi | ||
readonly LLVM_IR_VERSION=14 | ||
additional_dependencies=("$@") | ||
|
||
( | ||
source /etc/os-release | ||
distro="$ID" # ubuntu / debian / alpine / centos / rocky | ||
codename="${VERSION_CODENAME:-}" # focal / stretch / - / - / - | ||
distro_version="$VERSION_ID" # 22.04 / 12 / 3.21.2 / 8 / 9.3 | ||
# can be used to adapt to different distros / version | ||
|
||
if "$noninteractive"; then | ||
export DEBIAN_FRONTEND=noninteractive | ||
fi | ||
|
||
packages=("${additional_dependencies[@]}") | ||
packages+=( | ||
git ca-certificates build-essential cmake ninja-build # build | ||
binutils # LTO | ||
"clang-$LLVM_IR_VERSION" # compiler for IR | ||
"libclang-rt-$LLVM_IR_VERSION-dev" # ASAN | ||
libboost-graph-dev libsqlite3-dev libssl-dev zlib1g-dev "libclang-$LLVM_IR_VERSION-dev" "llvm-$LLVM_IR_VERSION-dev" "libclang-common-$LLVM_IR_VERSION-dev" # build deps | ||
) | ||
|
||
|
||
pkg_mgr=() | ||
privileged=() | ||
if which sudo >/dev/null 2>&1; then | ||
privileged+=("sudo") | ||
fi | ||
|
||
|
||
if which apt-get >/dev/null 2>&1; then | ||
pkg_mgr+=("${privileged[@]}" "apt-get") | ||
else | ||
echo "Couldn't determine package manager, sry." | ||
exit 1 | ||
fi | ||
|
||
function check_if_llvm_apt_is_required() { | ||
# probe if llvm apt repositories are required | ||
mapfile -t llvm_deps < <(printf "%s\n" "${packages[@]}" | grep -E 'clang-|llvm-') | ||
mapfile -t llvm_versions < <(printf "%s\n" "${llvm_deps[@]}" | grep -Eo '[0-9]+' | sort | uniq) | ||
|
||
required_versions=() | ||
for llvm_version in "${llvm_versions[@]}"; do | ||
mapfile -t current_llvm_deps < <(printf "%s\n" "${llvm_deps[@]}" | grep -E "$llvm_version") | ||
for dep in "${current_llvm_deps[@]}"; do | ||
if ! apt search "^$dep$" 2>&1 | grep -qe "$dep"; then | ||
echo "warning: couldn't find $dep via apt" | ||
required_versions+=("$llvm_version") | ||
break | ||
fi | ||
done | ||
done | ||
|
||
if [ "${#required_versions[@]}" -gt 0 ]; then | ||
if ! "$noninteractive"; then | ||
echo "It seems I need additional apt repositories for:" | ||
printf "missing llvm version %s\n" "${required_versions[@]}" | ||
read -p "Should I add them? (y/n)" choice | ||
fi | ||
if "$noninteractive" || echo "$choice" | grep -Eqie '^y|yes$'; then | ||
"${privileged[@]}" apt-get install -y gnupg ca-certificates | ||
"${privileged[@]}" apt-key adv -v --fetch-keys https://apt.llvm.org/llvm-snapshot.gpg.key | ||
for required_version in "${required_versions[@]}"; do | ||
echo "deb http://apt.llvm.org/${codename}/ llvm-toolchain-${codename}-$required_version main" | "${privileged[@]}" tee "/etc/apt/sources.list.d/llvm-$required_version-$codename.list" | ||
done | ||
"${pkg_mgr[@]}" update | ||
fi | ||
fi | ||
} | ||
|
||
"${pkg_mgr[@]}" update | ||
check_if_llvm_apt_is_required | ||
"${pkg_mgr[@]}" install --no-install-recommends -y "${packages[@]}" | ||
) |