mirror of
https://github.com/denoland/deno.git
synced 2025-01-20 20:42:19 -05:00
Compare commits
2 commits
8f52dda4a5
...
086dab496a
Author | SHA1 | Date | |
---|---|---|---|
|
086dab496a | ||
|
d69a1ce9b1 |
3 changed files with 120 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -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
|
||||
|
|
29
tools/buildtools/Dockerfile
Normal file
29
tools/buildtools/Dockerfile
Normal 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
90
tools/buildtools/denobuild
Executable 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
|
||||
|
||||
|
||||
|
Loading…
Add table
Reference in a new issue