aboutsummaryrefslogblamecommitdiffstats
path: root/community/crystal/APKBUILD
blob: 1e9ec103f7e6e58be81ae4a28b1a931fb65c56c0 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                               
                                                 
                                              
               
             
        
               
          

                                          
                     
                    
                                                                                
                                                                            
                                                                





                                                                                                     
                                                                                                      
                                                 
                                         
                                 
                                

                                   
 


                                     








                                                                           
                                                 























                                                                                      

                                    
                                                                                           







                                                                    
                                                                 
                                                                     
                                            
                           





                                        

                                                                  







                                                                              

                                                        
 
                             






















                                                                           
                                                                                                                                                                   

                                                                                                                                                                                 
                                                                                                                                                                           
                                                                                                                                                                   
                                                                                                                                                           
                                                                                                                                                           
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Milan P. Stanić <mps@arvanta.net>
# Maintainer: Jakub Jirutka <jakub@jirutka.cz>
pkgname=crystal
pkgver=0.31.1
pkgrel=2
_bootver=0.30.1
_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 libevent-static gcc gmp-dev pcre-dev"
checkdepends="openssl-dev libxml2-dev readline-dev tzdata yaml-dev zlib-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
	disable-specs-using-GB2312-encoding.patch
	fix-spec-std-kernel-spec.cr.patch
	fix-std-xml-spec.cr.patch
	fix-version-string.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" \
		LLVM_CONFIG="llvm5-config" \
		release=1 \
		static=${BUILD_STATIC:-}
}

check() {
	cd "$builddir"

	make spec LLVM_CONFIG="llvm5-config" 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="d44ce5653aa2877d85685bd897888cd7675eb02897363f71627ac19589447889af8e73a1d8acb2108e0356939cd515022fd2b92d019014714428d92666ad0f37  crystal-0.31.1.tar.gz
e9684b0e8687f98569a9ca23e4a77a615e8c95dd0117b9e003882a427f64083becc6146ae83e8290572b5e228b6c7260a1e013b2c2ce59a2c814ba0caa788f43  crystal-0.30.1-x86_64-alpine-linux-musl.tar.gz
f50f1fd9e536d6e54b81610f0f9e010336eb946c6301ad97aa3454e3a54cfec94513fc83856184f6b0ae60c332c1f928c8fbced90414774c3a2aec6d09a8bd79  crystal-0.30.1-aarch64-alpine-linux-musl.tar.gz
269976fbc990dde075769e651c9fac6e7e0b39681e55cbd067c6d2a790c58a096bdc9981f62ae69b5217623025ba768daa63bc5316bd8ddd18192d88839aedcb  disable-specs-using-GB2312-encoding.patch
ee1d81b40a9b15b2abfecbc61a1ef830700cc5613f9d2626722e8393633ed5d40329ac1fc2813b08b66c689876d3bd8a9f949a22beeda572ea3d4753f58417a8  fix-spec-std-kernel-spec.cr.patch
dabfb0ca7859785dd1ed75f5eaea7a7c25b09a61d7c9c81f4cbac4ece7dc475d531ce9fd6d1002db9ec5d7067051ea34fd77ab590c2c733034f430c89229cfa9  fix-std-xml-spec.cr.patch
1bb7d649841a7b0f66fdebbb75647ef8958ce7fb3437f0a6303ad21750af79becdcad87ddcf9353d48d466495a6c5837171b571a46412fd746c741296a67ad93  fix-version-string.patch"