Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/llvm/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"id": "llvm",
"name": "LLVM",
"version": "1.0.0",
"options": {
"version": {
"description": "LLVM version",
"type": "string",
"default": "latest"
}
}
}
26 changes: 26 additions & 0 deletions src/llvm/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/bin/bash
set -e
source utils/ensure_apt_packages.sh
source utils/clear_local_apt_index.sh

ensure_apt_packages curl ca-certificates jq

if [[ -z $VERSION || $VERSION == latest ]]; then
echo "🟪 Fetching latest LLVM release..."
curl -fsSLo latest-release.json https://api.github.com/repos/llvm/llvm-project/releases/latest
version=$(jq -r .tag_name latest-release.json | sed 's/^llvmorg-//')
echo "🟦 Using latest LLVM release: v$version"
else
version="$VERSION"
echo "🟦 Using LLVM release: v$version"
fi

ensure_apt_packages lsb-release wget software-properties-common gnupg

echo "🟪 Installing LLVM v$version..."
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh "$version"
echo "🟩 Installed LLVM v$version"

clear_local_apt_index
8 changes: 8 additions & 0 deletions src/llvm/utils/clear_local_apt_index.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# shellcheck shell=bash

clear_local_apt_index() (
set -e

rm -rf /var/lib/apt/lists/*
echo '🟩 Cleared local apt index'
)
19 changes: 19 additions & 0 deletions src/llvm/utils/ensure_apt_packages.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# shellcheck shell=bash

ensure_apt_packages() (
set -e

export DEBIAN_FRONTEND=noninteractive
if dpkg -s "$@" &>/dev/null; then
echo "🟦 $@ is already installed"
else
if [[ $(find /var/lib/apt/lists/* | wc -l) == 0 ]]; then
echo '🟪 Updating local apt index...'
apt-get update -y
echo '🟩 Updated local apt index'
fi
echo "🟪 Installing $@..."
apt-get install -y --no-install-recommends "$@"
echo "🟩 Installed $@"
fi
)
8 changes: 8 additions & 0 deletions test/llvm/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash
set -e
source dev-container-features-test-lib

check 'Clang exists' clang --version
check 'Clang-Format exists' clang-format --version

reportResults