Newer
Older
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Milan P. Stanić <mps@arvanta.net>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=crystal
pkgver=1.2.0
pkgrel=0
_bootver=1.1.1
pkgdesc="The Crystal Programming Language"
url="https://crystal-lang.org/"
options="!check" # disable for now till it fixed upstream
depends="
gc-dev
gcc
gmp-dev
libatomic_ops
libevent-dev
libevent-static
pcre-dev
"
checkdepends="
libxml2-dev
makedepends="llvm$_llvmver-dev llvm$_llvmver-static zlib-static"
subpackages="$pkgname-doc
$pkgname-bash-completion:bashcomp:noarch
$pkgname-zsh-completion:zshcomp:noarch
"
source="$pkgname-$pkgver.tar.gz::https://github.com/crystal-lang/$pkgname/archive/$pkgver.tar.gz
https://dev.alpinelinux.org/archive/crystal/crystal-$_bootver-x86_64-alpine-linux-musl.tar.gz
https://dev.alpinelinux.org/archive/crystal/crystal-$_bootver-aarch64-alpine-linux-musl.tar.gz
_coredir="/usr/lib/$pkgname/core"
_shardsdir="/usr/lib/$pkgname/shards"
export CRYSTAL_CONFIG_VERSION="$pkgver"
export CRYSTAL_CACHE_DIR="$srcdir/.cache"
# Build static crystal binary and upload it to dev.a.o, so it can be used
# for building crystal next time (needed for bootstrapping).
# NOTE: After https://github.com/crystal-lang/crystal/issues/5689 is fixed,
# we can also use prebuilt binary from upstream if needed.
snapshot() {
local binary="$builddir/.build/crystal"
local tarname="$pkgname-$pkgver-$CTARGET"
if [ ! -f "$binary" ] || ! file "$binary" | grep -qw 'statically linked'; then
msg "Building statically linked crystal..."
BUILD_STATIC=1 abuild clean deps unpack prepare build
fi
cd "$srcdir"
strip "$builddir"/.build/crystal
install -D -m 755 "$builddir"/.build/crystal "$tarname"/bin/crystal
tar -czf "$tarname.tar.gz" "$tarname"
msg "Uploading $tarname.tar.gz to dev.alpinelinux.org"
scp "$tarname.tar.gz" dev.alpinelinux.org:/archive/$pkgname/
APKBUILD="../APKBUILD" abuild undeps
}
prepare() {
default_prepare
cat > Makefile.local <<-EOF
progress = 1
threads = ${JOBS:-2}
verbose = 1
FLAGS = --verbose --target $CTARGET ${BUILD_STATIC:+"--link-flags=-no-pie"}
LLVM_CONFIG = /usr/lib/llvm$_llvmver/bin/llvm-config
EOF
}
build() {
make crystal \
CRYSTAL_CONFIG_PATH="lib:$_shardsdir:$_coredir" \
PATH="$srcdir/$pkgname-$_bootver-$CBUILD/bin:$PATH" \
LLVM_CONFIG="/usr/lib/llvm$_llvmver/bin/llvm-config" \
release=1 \
make spec LLVM_CONFIG="llvm-config" PATH=".build:$PATH" \
SPEC_FLAGS="--no-color --verbose"
}
package() {
install -D -m 755 .build/crystal "$pkgdir"/usr/bin/crystal
install -D -m 644 man/crystal.1 "$pkgdir"/usr/share/man/man1/crystal.1
mkdir -p "$pkgdir$_coredir" "$pkgdir$_shardsdir"
cp -r src/* "$pkgdir$_coredir"/
cd "$pkgdir$_coredir"
}
bashcomp() {
pkgdesc="Bash completions for $pkgname"
depends=""
install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
cd "$builddir"
install -D -m 644 etc/completion.bash \
"$subpkgdir"/usr/share/bash-completion/completions/$pkgname
}
zshcomp() {
pkgdesc="ZSH completions for $pkgname"
depends=""
install_if="$pkgname=$pkgver-r$pkgrel zsh"
cd "$builddir"
install -D -m 644 etc/completion.zsh \
"$subpkgdir"/usr/share/zsh/site-functions/_$pkgname
}
305aee00d8b59cc004785b69d2b044e388fc0e68b3da1f2a385473eff63bab7eb191d56aa4761e7a969509d8c5ede1c6d696847fde609fbfcfb46e13af193422 crystal-1.2.0.tar.gz
4c47961882a68485450b7b001ffc844d150b534bafec5f95c782d4a5bf33422f7b0a0be8be153e779bf2200da540aa1505e8345b07e9e8ef779b08e1b21a76b3 crystal-1.1.1-x86_64-alpine-linux-musl.tar.gz
de33f8f51355e8091cc67ef9d3f29b2422311fd420c33968f9e95729c0367134d19aaeae603123306ed768bb3d098d9ab367f601ebd9c4e9fe265bae9f77489a crystal-1.1.1-aarch64-alpine-linux-musl.tar.gz