#!/bin/bash set -x -e CWD=$(pwd) PRGNAM=$(basename "$CWD") ARCH=$(uname -m) GITHUB_REPO=crystal-lang/crystal VERSION=${VERSION:-latest} REPOSITORY=${REPOSITORY:-/home/installs/SlackBuilds/_repositories/$PRGNAM} BUILD=1 TAG=gwh OUTPUT=/tmp TMP=/tmp/$TAG PKG=$TMP/pkg-$PRGNAM PREFIX=/usr # cleaning rm -fr "$PKG" "${TMP:?}/$PRGNAM/" mkdir -p $TMP/ # mise en place [ ! -e "$REPOSITORY" ] && git clone https://github.com/${GITHUB_REPO} "$REPOSITORY" cd "$REPOSITORY" || exit git pull --all cp -R "$REPOSITORY" $TMP/ cd "$TMP/$PRGNAM/" || exit [ "$VERSION" == "latest" ] && VERSION=$(git tag --sort=-version:refname | head -n1) [ "$VERSION" == "" ] && VERSION=trunk if [ "$VERSION" == "trunk" ]; then VERSION="git_r$(git rev-list --count HEAD)_$(git log -1 --format=%h)" else git checkout "$VERSION" fi make -j"$(nproc)" interpreter=1 release=1 # installation make install PREFIX=$PREFIX MANDIR="$PKG$PREFIX/man" LIBDIR="$PKG$PREFIX/lib$(uname -m | grep -o 64)" DESTDIR="$PKG" [ -d "$PKG/usr/man" ] && find "$PKG/usr/man" -type f -name "*.?" -exec gzip -9f {} \; ######## # shards # ######## SHARDS_PRGNAM=shards SHARDS_GITHUB_REPO=crystal-lang/shards SHARDS_VERSION=${SHARDS_VERSION:-$(curl -s https://api.github.com/repos/${SHARDS_GITHUB_REPO}/releases/latest | jq -r .tag_name | sed 's|^null$|trunk|')} # or VERSION=trunk SHARDS_REPOSITORY=${SHARDS_REPOSITORY:-/home/installs/SlackBuilds/_repositories/$SHARDS_PRGNAM} SHARDS_PKG=$TMP/pkg-$SHARDS_PRGNAM # cleaning rm -fr "$SHARDS_PKG" "${TMP:?}/$SHARDS_PRGNAM/" # mise en place [ ! -e "$SHARDS_REPOSITORY" ] && git clone https://github.com/${SHARDS_GITHUB_REPO} "$SHARDS_REPOSITORY" cd "$SHARDS_REPOSITORY" || exit git pull --all cp -R "$SHARDS_REPOSITORY" "$TMP/" cd $TMP/$SHARDS_PRGNAM/ [ "$SHARDS_VERSION" == "latest" ] && SHARDS_VERSION=$(git tag --sort=-version:refname | head -n1) [ "$SHARDS_VERSION" == "" ] && SHARDS_VERSION=trunk if [ "$SHARDS_VERSION" == "trunk" ]; then SHARDS_VERSION="git_r$(git rev-list --count HEAD)_$(git log -1 --format=%h)" else git checkout "$SHARDS_VERSION" fi make -j"$(nproc)" release=1 # installation make install PREFIX=$PREFIX MANDIR=$SHARDS_PKG$PREFIX/man LIBDIR="$SHARDS_PKG$PREFIX/lib$(uname -m | grep -o 64)" DESTDIR=$SHARDS_PKG [ -d $SHARDS_PKG/usr/man ] && find $SHARDS_PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; ################ # merge both PKG # ################ cp -R $SHARDS_PKG/* "$PKG" # packaging cd "$PKG" || exit mkdir install cat < install/slack-desc $PRGNAM: $PRGNAM (The Crystal Programming Language) $PRGNAM: $PRGNAM: Crystal is a programming language with the following goals: $PRGNAM: .Have the same syntax as Ruby, or at least as similar as possible. $PRGNAM: .Statically type-checked but without having to specify the type of variables or $PRGNAM: method arguments. $PRGNAM: .Be able to call C code by writing bindings to it in Crystal. $PRGNAM: .Have compile-time evaluation and generation of code, to avoid boilerplate code. $PRGNAM: .Compile to efficient native code. $PRGNAM: $PRGNAM: http://crystal-lang.org/ EOF rm -f "$PKG/{,usr/}lib$(uname -m | grep -o 64)/*.la" /sbin/makepkg --linkadd y --chown n --prepend "$OUTPUT/$PRGNAM-${VERSION}_${SHARDS_VERSION}-$ARCH-$BUILD$TAG.txz"