void-packages/srcpkgs/crystal/template

103 lines
3.7 KiB
Bash

# Template file for 'crystal'
pkgname=crystal
version=0.33.0
revision=3
archs="x86_64* i686* aarch64* arm*"
_shardsversion=0.9.0
_bootstrapversion=0.33.0
_bootstraprevision=1
hostmakedepends="which tar git llvm9 pkg-config"
makedepends="gc-devel libatomic_ops pcre-devel libevent-devel libyaml-devel
libxml2-devel"
depends="gc-devel libatomic_ops pcre-devel libevent-devel libyaml-devel
libxml2-devel gmp-devel libressl-devel llvm9 gcc pkg-config"
checkdepends="readline-devel libyaml-devel gmp-devel libressl-devel"
short_desc="Crystal Programming Language"
maintainer="lvmbdv <ata.kuyumcu@protonmail.com>"
license="Apache-2.0"
homepage="https://crystal-lang.org/"
distfiles="
https://github.com/crystal-lang/crystal/archive/${version}.tar.gz
https://github.com/crystal-lang/shards/archive/v${_shardsversion}.tar.gz"
checksum="88f08685f172e98f01f93f1a83fc3548c6d28df19a39c91859b167a796730289
90f230c87cc7b94ca845e6fe34f2523edcadb562d715daaf98603edfa2a94d65"
nocross="FIXME: someone needs to sort out the llvm --cxxflags for cross building"
_crystalflags="--release --no-debug --progress"
build_options="binary_bootstrap"
build_options_default="binary_bootstrap"
desc_option_binary_bootstrap="Bootstrap using precompiled binaries"
if [ "$build_option_binary_bootstrap" ]; then
case "$XBPS_MACHINE" in
x86_64)
distfiles+=" https://github.com/crystal-lang/crystal/releases/download/${_bootstrapversion}/crystal-${_bootstrapversion}-${_bootstraprevision}-linux-x86_64.tar.gz"
checksum+=" 9b9e078e9ba24fb97ee591d5f0a57c88cd018bd85ed6bdde9a30e5834b158128"
;;
i686)
distfiles+=" https://github.com/crystal-lang/crystal/releases/download/${_bootstrapversion}/crystal-${_bootstrapversion}-${_bootstraprevision}-linux-i686.tar.gz"
checksum+=" 7b5b4a9356993503b5c517be24d574d473abf2abc8b0dc5aff74bc93955ba187"
;;
*)
broken="cannot be built on $XBPS_MACHINE"
;;
esac
else
hostmakedepends+=" crystal"
fi
do_extract() {
mkdir -p ${wrksrc}/{shards,$(vopt_if binary_bootstrap bootstrap)}
tar xfz ${XBPS_SRCDISTDIR}/${pkgname}-${version}/${version}.tar.gz --strip-components=1 -C ${wrksrc}
tar xfz ${XBPS_SRCDISTDIR}/${pkgname}-${version}/v${_shardsversion}.tar.gz --strip-components=1 -C ${wrksrc}/shards
if [ "$build_option_binary_bootstrap" ]; then
tar xf ${XBPS_SRCDISTDIR}/${pkgname}-${version}/crystal-${_bootstrapversion}-${_bootstraprevision}-linux-${XBPS_TARGET_MACHINE}.tar.gz \
--strip-components=1 -C ${wrksrc}/bootstrap
fi
}
do_build() {
if [ -z ${disable_parallel_build} ] && [ ${XBPS_MAKEJOBS} ]; then
_crystalflags="${_crystalflags} --threads ${makejobs:2:4}"
fi
make ${makejobs} release=1 FLAGS="${_crystalflags}" \
CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal" \
CRYSTAL_CONFIG_VERSION="${version}" \
CRYSTAL_CACHE_DIR="/tmp/crystal" \
$(vopt_if binary_bootstrap PATH="${wrksrc}/bootstrap/bin:$PATH")
make ${makejobs} docs CRYSTAL_CACHE_DIR="/tmp/crystal"
cd shards
${wrksrc}/bin/crystal build ${_crystalflags} -o bin/shards src/shards.cr
}
do_check() {
make ${makejobs} spec \
CRYSTAL_CONFIG_VERSION="${version}" \
CRYSTAL_CACHE_DIR="/tmp/crystal" \
PATH=".build:$PATH"
cd shards
make test CRYSTAL_BIN="${wrksrc}/bin/crystal"
}
do_install() {
vmkdir /usr/bin
vmkdir /usr/lib/crystal
vmkdir /usr/share/doc/crystal
vmkdir /usr/share/doc/crystal/api
vmkdir /usr/share/licenses/shards
vinstall etc/completion.bash 644 \
usr/share/bash-completion/completions crystal
vinstall etc/completion.zsh 644 usr/share/zsh/site-functions _crystal
vcopy samples /usr/share/doc/crystal
vcopy docs/* /usr/share/doc/crystal/api
vcopy src/* /usr/lib/crystal
vbin .build/crystal crystal
vman man/crystal.1
vbin shards/bin/shards
cp shards/LICENSE ${DESTDIR}/usr/share/licenses/shards
}