1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-01-20 20:42:19 -05:00
This commit is contained in:
Muthuraj Ramalingakumar 2025-01-20 23:27:15 +01:00 committed by GitHub
commit 8f52dda4a5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 120 additions and 0 deletions

1
.gitignore vendored
View file

@ -15,6 +15,7 @@ gclient_config.py_entries
/tests/napi/node_modules
/tests/napi/build
/tests/napi/third_party_tests/node_modules
.buildtool
# MacOS generated files
.DS_Store

View file

@ -0,0 +1,29 @@
# Use Ubuntu 24.04 LTS as the base image
FROM ubuntu:24.04
WORKDIR /mnt
RUN apt-get update && apt-get install -y \
curl \
build-essential \
libssl-dev \
pkg-config \
wget \
cmake \
libglib2.0-dev \
lsb-release \
software-properties-common \
gnupg \
&& rm -rf /var/lib/apt/lists/*
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# Add the Cargo and Rust binaries to the PATH
ENV PATH="/root/.cargo/bin:${PATH}"
# Verify the installation
RUN rustc --version && cargo --version
RUN wget https://apt.llvm.org/llvm.sh && \
chmod +x llvm.sh && \
./llvm.sh 17 && \
apt-get install --install-recommends -y cmake libglib2.0-dev

90
tools/buildtools/denobuild Executable file
View file

@ -0,0 +1,90 @@
#!/bin/bash
is_debian_based() {
if [ -f /etc/os-release ]; then
source /etc/os-release
if [[ "$ID_LIKE" == *debian* || "$ID" == *debian* ]]; then
return 0
fi
fi
return 1
}
if ! is_debian_based; then
echo "Only works on debian based systems"
exit 1
fi
buildtools_folder="$(realpath $(dirname "$0"))"
deno_root="$(realpath "$buildtools_folder/../..")"
if command -v docker &> /dev/null
then
echo "Docker is installed."
docker --version
else
echo "Docker is not installed."
exit 1
fi
DOCKERFILE="$buildtools_folder/Dockerfile"
IMAGE_NAME="denobuildtool"
IMAGE_TAG="current"
BUILD_TOOL_WORKING_DIR="$deno_root/.buildtool"
STORED_DOCKER_FILE_CHECKSUM_FILE="$BUILD_TOOL_WORKING_DIR/dockerfile_check_sum"
if [ ! -d "$BUILD_TOOL_WORKING_DIR" ]; then
mkdir -p "$BUILD_TOOL_WORKING_DIR"
fi
DOCKERFILE_CHECKSUM=$(sha256sum "$DOCKERFILE" | awk '{ print $1 }')
run_with_docker() {
if [[ $# != 0 ]]; then
args=("$@")
else
args=(/bin/bash -i)
fi
docker_args=()
if [ "$PWD" != "$deno_root" ]; then
docker_args+=(-v "$deno_root:$deno_root")
fi
image="$IMAGE_NAME:$IMAGE_TAG"
docker_args+=(
--network host \
--privileged \
-v "$PWD:$PWD" \
-v /etc/localtime:/etc/localtime:ro \
--env CARGO_HOME \
-v "${CARGO_HOME}:${CARGO_HOME}" \
-w "$PWD" \
-e HOME="$HOME" \
"$image" \
"${args[@]}"
)
docker run --rm "${docker_args[@]}"
}
if [ -f "$STORED_DOCKER_FILE_CHECKSUM_FILE" ]; then
STORED_DOCKERFILE_CHECKSUM=$(cat "$STORED_DOCKER_FILE_CHECKSUM_FILE")
# Compare the current checksums with the stored checksums
if [ "$DOCKERFILE_CHECKSUM" == "$STORED_DOCKERFILE_CHECKSUM" ]; then
echo "Dockerfile not changed, no need to rebuild"
run_with_docker "$@"
else
echo "Dockerfile changed Proceeding with building docker image..."
docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" "$buildtools_folder" &&
echo "$DOCKERFILE_CHECKSUM" > "$STORED_DOCKER_FILE_CHECKSUM_FILE"
fi
else
echo "No previous checksum found. Building the image..."
docker buildx build -t "$IMAGE_NAME:$IMAGE_TAG" "$buildtools_folder" &&
echo "$DOCKERFILE_CHECKSUM" > "$STORED_DOCKER_FILE_CHECKSUM_FILE"
fi