slackbuilds/d/crystal/SlackBuild
2022-01-22 19:52:02 +01:00

97 lines
3.1 KiB
Bash
Executable file

#!/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
git pull --all
cp -R $REPOSITORY $TMP/
cd $TMP/$PRGNAM/
[ "x$VERSION" == "xlatest" ] && VERSION=$(git for-each-ref --sort=taggerdate --format '%(tag)' | tail -n1)
[ "x$VERSION" == "x" ] && VERSION=trunk
[ "x$VERSION" == "xtrunk" ] && VERSION="git_$(git log -1 --format=%h_%ad --date=format:%Y.%m.%d)" || git checkout $VERSION
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
git pull --all
cp -R $SHARDS_REPOSITORY $TMP/
cd $TMP/$SHARDS_PRGNAM/
[ "x$SHARDS_VERSION" == "xlatest" ] && SHARDS_VERSION=$(git for-each-ref --sort=taggerdate --format '%(tag)' | tail -n1)
[ "x$SHARDS_VERSION" == "x" ] && SHARDS_VERSION=trunk
[ "x$SHARDS_VERSION" == "xtrunk" ] && SHARDS_VERSION="git_$(git log -1 --format=%h_%ad --date=format:%Y.%m.%d)" || git checkout $SHARDS_VERSION
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
mkdir install
cat <<EOF > 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 -l y -c n $OUTPUT/$PRGNAM-${VERSION}_${SHARDS_VERSION}-$ARCH-$BUILD$TAG.txz