crystal-builder/_attic/setup.sh

66 lines
1.4 KiB
Bash
Raw Normal View History

2023-10-27 07:01:37 +00:00
#!/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.