crystal-builder/_attic/setup.sh
2023-10-27 09:01:37 +02:00

65 lines
1.4 KiB
Bash
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
set -e
set -u
PROJECT_NAME=crystal-builder
WORKDIR="/$PROJECT_NAME"
CDATE="$(date --rfc-3339=seconds |head -c19 |sed -e 's/[-:]//g' -e 's/ /-/')"
CNAME=""
CID=""
crun() {
name="$1"
base="$2"
CNAME="$name-$CDATE"
CID="$(docker run -it \
--rm \
--name "$CNAME" \
--detach \
-v "./:$WORKDIR" \
-w "$WORKDIR" \
"$base" \
sleep infinity)"
if [ -z "$CID" ]; then
>&2 echo "ERROR: Unable to run $name container ($CNAME)"
exit 1
fi
}
cclean() {
>&2 printf "INFO: Cleaning containers... "
docker kill "$CID" > /dev/null
echo "done"
}
trap "cclean" EXIT
## 0. Run base image
## 1. Install the latest crystal release
## Ref. https://crystal-lang.org/install/
crun step1 debian:12
docker exec -it "$CID" sh "$WORKDIR/setup/step1.sh"
docker commit "$CID" "$PROJECT_NAME:step1"
cclean
## 2. Make sure a supported LLVM version is present in the path
## (When possible, use the latest supported version)
crun step1 "$PROJECT_NAME:step1"
cclean
## 3. Make sure to install all the required libraries. You might also want to read the contributing guide.
## 4. Clone the repository: git clone https://github.com/crystal-lang/crystal
## 5. Run make to build your own version of the compiler.
## 6. Run make std_spec compiler_spec to ensure all specs pass, and youve installed everything correctly.
## 7. Use bin/crystal to run your crystal files.