aboutsummaryrefslogtreecommitdiffstats
path: root/testing/crystal/APKBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'testing/crystal/APKBUILD')
-rw-r--r--testing/crystal/APKBUILD127
1 files changed, 127 insertions, 0 deletions
diff --git a/testing/crystal/APKBUILD b/testing/crystal/APKBUILD
new file mode 100644
index 0000000000..0ca756427d
--- /dev/null
+++ b/testing/crystal/APKBUILD
@@ -0,0 +1,127 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
+# TODO: Fix SSL bindings for LibreSSL (it's probably broken).
+pkgname=crystal
+pkgver=0.24.2
+pkgrel=1
+_bootver=0.24.2
+_llvmver=5
+pkgdesc="The Crystal Programming Language"
+url="https://crystal-lang.org/"
+arch="x86_64"
+license="Apache-2.0"
+depends="gc-dev libatomic_ops libevent-dev libressl-dev libxml2-dev
+ gcc gmp-dev pcre-dev yaml-dev"
+checkdepends="readline-dev zlib-dev"
+makedepends="llvm$_llvmver-dev ${BUILD_STATIC:+"llvm$_llvmver-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
+ makefile-shell.patch
+ fix-makefile-stderr-redirect.patch
+ makefile-allow-extra-flags.patch
+ "
+builddir="$srcdir/$pkgname-$pkgver"
+options="!check" # FIXME
+
+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-$CHOST"
+
+ 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
+ release = 1
+ threads = ${JOBS:-2}
+ verbose = 1
+ EXTRA_FLAGS = --target $CTARGET ${BUILD_STATIC:+"--link-flags=-no-pie"}
+ CFLAGS = $CFLAGS
+ CXXFLAGS = $CXXFLAGS
+ LLVM_CONFIG = /usr/lib/llvm$_llvmver/bin/llvm-config
+ EOF
+}
+
+build() {
+ cd "$builddir"
+
+ make crystal \
+ CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal" \
+ PATH="$srcdir/$pkgname-$_bootver-$CHOST/bin:$PATH" \
+ static=${BUILD_STATIC:-}
+}
+
+check() {
+ cd "$builddir"
+
+ make spec PATH=".build:$PATH"
+}
+
+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
+
+ # XXX: Move to /usr/share...?
+ mkdir -p "$pkgdir"/usr/lib
+ cp -r src "$pkgdir"/usr/lib/$pkgname
+
+ cd "$pkgdir"/usr/lib/$pkgname
+ 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="db9fb973eeb2bc72ef91bb894b7c5aea73e727ff46e739aa431d68e556238f346a688a7a43de284afb4667b49366afce3ca423a523bea521180fa8f19ba6862d crystal-0.24.2.tar.gz
+6d7ee01ff5bfaaf79fa80c15575ae4496e17629ed18cb0577db6734266c2dbf5b0bf0a554c7c153e1b81f4c71e62bb803fd4b6513e3d039571ee4f953d85ecf4 crystal-0.24.2-x86_64-alpine-linux-musl.tar.gz
+2a81b6eaeb934ef5d4435a80a346425a760a602d04bccc89068dde7ed48a6099c4ea59a291f444127e91e81acde0ee42d857481041869cf6094a2e29f0de184a makefile-shell.patch
+2f995903093da9af4263bf2d7fde75715a114b02b74ba26c8290d7b20042be8a2db305a2ea144925f054354f6f6a430750d19fa036bf764562dedb56da12866a fix-makefile-stderr-redirect.patch
+d1641f538cb1ae9f817b57e19800b0af91e3723c752fba38b2644b8acc66d80862c6bef22194f1f4c64ae7d8393c2772f0a0ea0a76a199151ef8c74c686ea49f makefile-allow-extra-flags.patch"