Skip to content

Commit

Permalink
Enable ubuntu:mantic and remove limitation of libclang version 11.
Browse files Browse the repository at this point in the history
  • Loading branch information
viferga committed Mar 4, 2024
1 parent 6006be5 commit c040fd8
Show file tree
Hide file tree
Showing 8 changed files with 16 additions and 91 deletions.
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ COMPOSE_PROJECT_NAME='metacall'
# Configure default variables
METACALL_PATH=/usr/local/metacall
METACALL_BUILD_TYPE=relwithdebinfo
METACALL_BASE_IMAGE=debian:trixie-slim # debian:bookworm-slim # ubuntu:jammy # alpine:3.17
METACALL_BASE_IMAGE=debian:trixie-slim # debian:bookworm-slim # ubuntu:jammy # ubuntu:mantic # alpine:3.17
2 changes: 1 addition & 1 deletion .github/workflows/linux-sanitizer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
strategy:
fail-fast: false
matrix:
image: ["debian:trixie-slim", "debian:bookworm-slim", "ubuntu:jammy"]
image: ["debian:trixie-slim", "debian:bookworm-slim", "ubuntu:jammy", "ubuntu:mantic"]
sanitizer: [address-sanitizer, thread-sanitizer] # TODO: memory-sanitizer not supported by GCC

env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
fail-fast: false
matrix:
build: [debug, release]
image: ["debian:trixie-slim", "debian:bookworm-slim", "ubuntu:jammy"] # TODO: "alpine:3.17"
image: ["debian:trixie-slim", "debian:bookworm-slim", "ubuntu:jammy", "ubuntu:mantic"] # TODO: "alpine:3.17"

steps:
- name: Check out the repository
Expand Down
2 changes: 1 addition & 1 deletion source/loaders/c_loader/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ if(NOT LIBTCC_FOUND)
endif()
endif()

find_package(LibClang 11)
find_package(LibClang)

if(NOT LibClang_FOUND)
message(SEND_ERROR "Clang C API library not found")
Expand Down
2 changes: 1 addition & 1 deletion source/ports/rs_port/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ FROM metacall/core:dev AS develop
# Install dependencies
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
clang-11 clang-format-11 libclang-11-dev libtcc-dev valgrind libdw-dev libbfd-dev libdwarf-dev libffi-dev \
clang libclang-dev libtcc-dev valgrind libdw-dev libbfd-dev libdwarf-dev libffi-dev \
&& curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
&& . "/root/.cargo/env" \
&& rustup component add rustfmt \
Expand Down
2 changes: 1 addition & 1 deletion source/tests/sanitizer/tsan.supp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ called_from_lib:libwasmtime*
# C
#
mutex:clang_install_aborting_llvm_fatal_error_handler
mutex:libclang-11*
mutex:libclang-*
#
# Rust
#
Expand Down
50 changes: 6 additions & 44 deletions tools/metacall-environment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -585,58 +585,20 @@ sub_c(){
echo "configure c"

if [ "${OPERATIVE_SYSTEM}" = "Linux" ]; then
if [ "${LINUX_DISTRO}" = "debian" ]; then
LLVM_VERSION_STRING=11
UBUNTU_CODENAME=""
CODENAME_FROM_ARGUMENTS=""

# Obtain VERSION_CODENAME and UBUNTU_CODENAME (for Ubuntu and its derivatives)
. /etc/os-release

case ${LINUX_DISTRO} in
debian)
if [ "${VERSION:-}" = "unstable" ] || [ "${VERSION:-}" = "testing" ] || [ "${VERSION_CODENAME}" = "bookworm" ] || [ "${VERSION_CODENAME}" = "trixie" ]; then
# TODO: For now, bookworm || trixie == sid, change when bookworm || trixie is released
CODENAME="unstable"
LINKNAME=""
else
# "stable" Debian release
CODENAME="${VERSION_CODENAME}"
LINKNAME="-${CODENAME}"
fi
;;
*)
# Ubuntu and its derivatives
if [ -n "${UBUNTU_CODENAME}" ]; then
CODENAME="${UBUNTU_CODENAME}"
if [ -n "${CODENAME}" ]; then
LINKNAME="-${CODENAME}"
fi
fi
;;
esac

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | $SUDO_CMD apt-key add
$SUDO_CMD sh -c "echo \"deb http://apt.llvm.org/${CODENAME}/ llvm-toolchain${LINKNAME}-${LLVM_VERSION_STRING} main\" >> /etc/apt/sources.list"
$SUDO_CMD sh -c "echo \"deb-src http://apt.llvm.org/${CODENAME}/ llvm-toolchain${LINKNAME}-${LLVM_VERSION_STRING} main\" >> /etc/apt/sources.list"
$SUDO_CMD apt-get update
$SUDO_CMD apt-get install -y --no-install-recommends libffi-dev libclang-${LLVM_VERSION_STRING}-dev
elif [ "${LINUX_DISTRO}" = "ubuntu" ]; then
# LLVM 11 is available on Ubuntu
LLVM_VERSION_STRING=11
$SUDO_CMD apt-get install -y --no-install-recommends libffi-dev libclang-${LLVM_VERSION_STRING}-dev
if [ "${LINUX_DISTRO}" = "debian" ] || [ "${LINUX_DISTRO}" = "ubuntu" ]; then
$SUDO_CMD apt-get install -y --no-install-recommends libffi-dev libclang-dev
elif [ "${LINUX_DISTRO}" = "alpine" ]; then
$SUDO_CMD apk add --no-cache libffi-dev
$SUDO_CMD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/edge/testing tcc
$SUDO_CMD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/v3.14/main clang-libs=11.1.0-r1 clang-dev=11.1.0-r1
$SUDO_CMD apk add --no-cache --repository=https://dl-cdn.alpinelinux.org/alpine/v3.14/main clang-libs clang-dev
fi
elif [ "${OPERATIVE_SYSTEM}" = "Darwin" ]; then
brew install libffi
brew install llvm@11
brew link llvm@11 --force --overwrite
brew install llvm@16
brew link llvm@16 --force --overwrite
mkdir -p build
CMAKE_CONFIG_PATH="$ROOT_DIR/build/CMakeConfig.txt"
LIBCLANG_PREFIX=$(brew --prefix llvm@11)
LIBCLANG_PREFIX=$(brew --prefix llvm@16)
echo "-DLibClang_INCLUDE_DIR=${LIBCLANG_PREFIX}/include" >> $CMAKE_CONFIG_PATH
echo "-DLibClang_LIBRARY=${LIBCLANG_PREFIX}/lib/libclang.dylib" >> $CMAKE_CONFIG_PATH
fi
Expand Down
45 changes: 4 additions & 41 deletions tools/metacall-runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -219,48 +219,11 @@ sub_c(){
echo "configure c"

if [ "${OPERATIVE_SYSTEM}" = "Linux" ]; then
LLVM_VERSION_STRING=11

if [ "${LINUX_DISTRO}" = "debian" ]; then
UBUNTU_CODENAME=""
CODENAME_FROM_ARGUMENTS=""

# Obtain VERSION_CODENAME and UBUNTU_CODENAME (for Ubuntu and its derivatives)
. /etc/os-release

case ${LINUX_DISTRO} in
debian)
if [ "${VERSION:-}" = "unstable" ] || [ "${VERSION:-}" = "testing" ] || [ "${VERSION_CODENAME}" = "bookworm" ] || [ "${VERSION_CODENAME}" = "trixie" ]; then
# TODO: For now, bookworm || trixie == sid, change when bookworm || trixie is released
CODENAME="unstable"
LINKNAME=""
else
# "stable" Debian release
CODENAME="${VERSION_CODENAME}"
LINKNAME="-${CODENAME}"
fi
;;
*)
# ubuntu and its derivatives
if [ -n "${UBUNTU_CODENAME}" ]; then
CODENAME="${UBUNTU_CODENAME}"
if [ -n "${CODENAME}" ]; then
LINKNAME="-${CODENAME}"
fi
fi
;;
esac

wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | $SUDO_CMD apt-key add
$SUDO_CMD sh -c "echo \"deb http://apt.llvm.org/${CODENAME}/ llvm-toolchain${LINKNAME}-${LLVM_VERSION_STRING} main\" >> /etc/apt/sources.list"
$SUDO_CMD sh -c "echo \"deb-src http://apt.llvm.org/${CODENAME}/ llvm-toolchain${LINKNAME}-${LLVM_VERSION_STRING} main\" >> /etc/apt/sources.list"
$SUDO_CMD apt-get update
sub_apt_install_hold libffi libclang-${LLVM_VERSION_STRING}
elif [ "${LINUX_DISTRO}" = "ubuntu" ]; then
# LLVM 11 is available on Ubuntu
LLVM_VERSION_STRING=11
sub_apt_install_hold libffi libclang-${LLVM_VERSION_STRING}
if [ "${LINUX_DISTRO}" = "debian" ] || [ "${LINUX_DISTRO}" = "ubuntu" ]; then
sub_apt_install_hold libffi libclang
fi

# TODO: Implement Alpine and Darwin
fi
}

Expand Down

0 comments on commit c040fd8

Please sign in to comment.