# Contributor: Jakub Jirutka # Maintainer: Jakub Jirutka pkgname=crystal pkgver=0.27.0 pkgrel=0 _bootver=0.26.0 _llvmver=5 pkgdesc="The Crystal Programming Language" url="https://crystal-lang.org/" arch="x86_64 aarch64" license="Apache-2.0" depends="gc-dev libatomic_ops libevent-dev gcc gmp-dev pcre-dev" checkdepends="openssl-dev libxml2-dev readline-dev tzdata yaml-dev zlib-dev" makedepends="llvm5-dev llvm5-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 disable-specs-using-GB2312-encoding.patch fix-spec-http-server.patch fix-spec-socket-tcp_server.cr.patch fix-spec-socket-tcp_socket.cr.patch " builddir="$srcdir/$pkgname-$pkgver" _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 cd "$builddir" 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() { cd "$builddir" make crystal \ CRYSTAL_CONFIG_PATH="lib:$_shardsdir:$_coredir" \ PATH="$srcdir/$pkgname-$_bootver-$CBUILD/bin:$PATH" \ release=1 \ static=${BUILD_STATIC:-} } check() { cd "$builddir" make spec PATH=".build:$PATH" SPEC_FLAGS="--no-color --verbose" } package() { cd "$builddir" 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" rm ext/sigfault.* llvm/ext/llvm_ext.o } 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 } sha512sums="02b0e1d43d699d1dd91f4b979c8ab8909264e5f1fcc344f6110bebb808c0ee764a943368cce9d33a258adb9631ed4f445e1f771d5a9e50fcd337fc8b319616cf crystal-0.27.0.tar.gz c3f2a27189214af8b7882e3356053beddd21b7ec9f6d3b9e083c0b1a15125f4986141798f26086fe27221ec4be88faf920d60fac44d291a5f8510a404498dd7a crystal-0.26.0-x86_64-alpine-linux-musl.tar.gz 2aafaaae0f8a1563b3cb27b351c0de49b6e9f5928e15c2af6f2a57d040369da92afa64ab120265d54dc40604c6a84c0d62188fbc2fbb2582534278fad8afddcb crystal-0.26.0-aarch64-alpine-linux-musl.tar.gz 269976fbc990dde075769e651c9fac6e7e0b39681e55cbd067c6d2a790c58a096bdc9981f62ae69b5217623025ba768daa63bc5316bd8ddd18192d88839aedcb disable-specs-using-GB2312-encoding.patch 1c58cfd03b89d55ab38d0073161a4fbe9b5dd71c6ccb01a5b2085c6f737a999b75c44b0485f372403c97fc77bcdcc50808adede901ab0e20705f70221b3f97ee fix-spec-http-server.patch c628c02e7b827b80dd530e4885205dc08ebfc1b037cda441b1f15000a3756efd5b965d6a86e993c4c557a1f9bf70002a9f37ffad1676704b8995564c83b58af5 fix-spec-socket-tcp_server.cr.patch 058a9ae98c89953ad4154b4fed04318378da8b3a0f69df17c7eb3c2f004f347400d3a77ac9836d99089059e5bd964bd24cb04176bf8ab542509706a362f21f6d fix-spec-socket-tcp_socket.cr.patch"