diff options
Diffstat (limited to 'system/alacritty/alacritty.SlackBuild')
-rw-r--r-- | system/alacritty/alacritty.SlackBuild | 349 |
1 files changed, 349 insertions, 0 deletions
diff --git a/system/alacritty/alacritty.SlackBuild b/system/alacritty/alacritty.SlackBuild new file mode 100644 index 0000000000..8bc9d3df8f --- /dev/null +++ b/system/alacritty/alacritty.SlackBuild @@ -0,0 +1,349 @@ +#!/bin/sh + +# Slackware build script for alacritty + +# Copyright 2017 Andrew Clemons, Wellington New Zealand +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=alacritty +GITREV=${GITREV:-245a80078180acc2a0a1addc569c15b77991c1c3} +VERSION=${VERSION:-git$(echo "$GITREV" | sed 's/^\(.\{7\}\).*$/\1/')} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" + CARGOTARGET="--target i586-unknown-linux-gnu" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" + CARGOTARGET="--target i686-unknown-linux-gnu" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" + CARGOTARGET="--target x86_64-unknown-linux-gnu" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" + CARGOTARGET="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$GITREV +tar xvf $CWD/$PRGNAM-$GITREV.tar.gz +cd $PRGNAM-$GITREV + +# force offline for git crate dependencies +patch -p1 < $CWD/patch_crate_deps.diff + +# build offline +# configuration tells cargo to use the configured directory +# for dependencies instead of downloading from crates.io +mkdir .cargo +cat << EOF >> .cargo/config +[source.crates-io] +registry = 'https://github.com/rust-lang/crates.io-index' +replace-with = 'vendored-sources' + +[source.vendored-sources] +directory = '$(pwd)/vendor' +EOF + +# deps and versions come from Cargo.lock +# cargo vender can be used to generate the checksums +mkdir vendor +( + cd vendor + + for dependency in aho-corasick=0.6.3 \ + android_glue=0.2.3 \ + ansi_term=0.9.0 \ + approx=0.1.1 \ + arraydeque=0.2.3 \ + atty=0.2.2 \ + bitflags=0.4.0 \ + bitflags=0.7.0 \ + bitflags=0.8.2 \ + bitflags=0.9.1 \ + block=0.1.6 \ + built=0.2.0 \ + byteorder=1.1.0 \ + bytes=0.3.0 \ + cargo_metadata=0.2.3 \ + cc=1.0.3 \ + cfg-if=0.1.2 \ + cgl=0.2.1 \ + cgmath=0.15.0 \ + clap=2.27.1 \ + clippy=0.0.164 \ + clippy_lints=0.0.164 \ + cmake=0.1.25 \ + cocoa=0.9.2 \ + conv=0.3.3 \ + core-foundation=0.3.0 \ + core-foundation=0.4.4 \ + core-foundation-sys=0.3.1 \ + core-foundation-sys=0.4.4 \ + core-graphics=0.8.2 \ + core-text=6.1.2 \ + custom_derive=0.1.7 \ + dlib=0.3.1 \ + dtoa=0.4.2 \ + dwmapi-sys=0.1.0 \ + either=1.1.0 \ + env_logger=0.4.3 \ + errno=0.2.3 \ + euclid=0.12.0 \ + expat-sys=2.1.5 \ + filetime=0.1.10 \ + fnv=1.0.5 \ + foreign-types=0.2.0 \ + freetype-rs=0.13.0 \ + freetype-sys=0.4.0 \ + fs2=0.2.5 \ + fsevent=0.2.16 \ + fsevent-sys=0.1.6 \ + gcc=0.3.53 \ + gdi32-sys=0.1.1 \ + getopts=0.2.15 \ + git2=0.6.8 \ + gl_generator=0.5.5 \ + gleam=0.4.8 \ + glutin=0.9.2 \ + heapsize=0.3.9 \ + idna=0.1.4 \ + inotify=0.3.0 \ + iovec=0.1.0 \ + itertools=0.6.3 \ + itoa=0.3.3 \ + kernel32-sys=0.2.2 \ + khronos_api=1.0.1 \ + lazy_static=0.2.8 \ + lazycell=0.4.0 \ + lazycell=0.5.1 \ + libc=0.2.30 \ + libgit2-sys=0.6.16 \ + libloading=0.3.4 \ + libz-sys=1.0.16 \ + linked-hash-map=0.3.0 \ + linked-hash-map=0.4.2 \ + log=0.3.8 \ + magenta=0.1.1 \ + magenta-sys=0.1.1 \ + malloc_buf=0.0.6 \ + matches=0.1.6 \ + memchr=1.0.1 \ + memmap=0.4.0 \ + mio=0.5.1 \ + mio=0.6.10 \ + mio-more=0.1.0 \ + miow=0.1.5 \ + miow=0.2.1 \ + net2=0.2.31 \ + nix=0.5.1 \ + nodrop=0.1.9 \ + notify=4.0.1 \ + num-traits=0.1.40 \ + objc=0.2.2 \ + objc-foundation=0.1.1 \ + objc_id=0.1.0 \ + odds=0.2.25 \ + osmesa-sys=0.1.2 \ + owning_ref=0.3.3 \ + parking_lot=0.4.5 \ + parking_lot_core=0.2.4 \ + percent-encoding=1.0.0 \ + phf=0.7.21 \ + phf_codegen=0.7.21 \ + phf_generator=0.7.21 \ + phf_shared=0.7.21 \ + pkg-config=0.3.9 \ + pulldown-cmark=0.0.15 \ + quine-mc_cluskey=0.2.4 \ + quote=0.3.15 \ + rand=0.3.16 \ + redox_syscall=0.1.31 \ + regex=0.2.2 \ + regex-syntax=0.4.1 \ + rustc-serialize=0.3.24 \ + semver=0.6.0 \ + semver-parser=0.7.0 \ + serde=0.9.15 \ + serde=1.0.11 \ + serde_derive=1.0.11 \ + serde_derive_internals=0.15.1 \ + serde_json=0.9.10 \ + serde_json=1.0.2 \ + serde_yaml=0.7.1 \ + shared_library=0.1.7 \ + shell32-sys=0.1.1 \ + siphasher=0.2.2 \ + slab=0.1.3 \ + slab=0.3.0 \ + smallvec=0.4.3 \ + stable_deref_trait=1.0.0 \ + strsim=0.6.0 \ + syn=0.11.11 \ + synom=0.11.3 \ + target_build_utils=0.3.1 \ + tempfile=2.1.6 \ + textwrap=0.9.0 \ + thread_local=0.3.4 \ + time=0.1.38 \ + toml=0.2.1 \ + toml=0.4.5 \ + unicode-bidi=0.3.4 \ + unicode-normalization=0.1.5 \ + unicode-width=0.1.4 \ + unicode-xid=0.0.4 \ + unreachable=1.0.0 \ + url=1.6.0 \ + user32-sys=0.1.2 \ + utf8-ranges=1.0.0 \ + utf8parse=0.1.0 \ + vcpkg=0.2.2 \ + vec_map=0.8.0 \ + void=1.0.2 \ + vte=0.3.2 \ + walkdir=0.1.8 \ + wayland-client=0.9.9 \ + wayland-kbd=0.9.1 \ + wayland-protocols=0.9.9 \ + wayland-scanner=0.9.9 \ + wayland-sys=0.9.9 \ + wayland-window=0.7.0 \ + winapi=0.2.8 \ + winapi-build=0.1.1 \ + winit=0.7.6 \ + ws2_32-sys=0.2.1 \ + x11-dl=2.15.0 \ + xdg=2.1.0 \ + xml-rs=0.3.6 \ + xml-rs=0.6.1 \ + yaml-rust=0.3.5 \ + servo-fontconfig=0.4.0 \ + servo-fontconfig-sys=4.0.3 ; do + dep="$(echo "$dependency" | cut -d= -f1)" + ver="$(echo "$dependency" | cut -d= -f2)" + + if [ "$dep" = "servo-fontconfig" ] || [ "$dep" = "servo-fontconfig-sys" ] ; then + if [ "$dep" = "servo-fontconfig" ] ; then + srcnam="rust-fontconfig" + sha1="be2b94de833ec69cf767186262a5fb8360fa5b45" + else + srcnam="libfontconfig" + sha1="5c1845e1bffa11cf4d3e6fb27f456bf5c814ce1b" + fi + + crate="$CWD/$srcnam-$sha1.tar.gz" + tar xvf "$crate" + mv "$srcnam-$sha1" "$dep-$ver" + + if [ "$dep" = "servo-fontconfig" ] ; then + ( + cd "$dep-$ver" + sed -i 's/^servo-fontconfig-sys =.*/servo-fontconfig-sys = "4.0.3"/' Cargo.toml + ) + fi + else + crate="$CWD/$dep-$ver.crate" + tar xvf "$crate" + fi + + touch $dep-$ver/.cargo-ok + + # generate checksum + { + printf "{\n" + printf ' "files": {\n' + + ( + cd $dep-$ver + find . -type f -print0 | xargs -0 sha256sum | sed -n '/\.cargo-checksum\.json/!p' | sed 's/\.\///;s/^\([^ ]*\)[[:space:]][[:space:]]*\(.*\)$/"\2":"\1",/' + ) | sed '$ s/,$//' + + printf " },\n" + printf ' "package": "' + + if [ "$dep" = "servo-fontconfig" ] || [ "$dep" = "servo-fontconfig-sys" ] ; then + checksum="$(tar cz $dep-$ver | sha256sum | cut -f1 -d' ')" + sed -i "s/^\(\"checksum $dep [^=]*\)= \".*$/\1= \"$checksum\"/" ../Cargo.lock + + printf "%s\"\n" "$checksum" + else + sha256sum "$crate" | cut -f1 -d' ' | sed 's/$/"/' + fi + + printf "}\n" + } | python -c "import sys, json; data = sys.stdin.read(); print json.dumps(json.loads(data), sort_keys=True, indent=4, separators=(',', ' : '))" > $dep-$ver/.cargo-checksum.json + done +) + +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +cargo build --release $CARGOTARGET + +mkdir -p $PKG/usr/bin/ + +find target -name $PRGNAM -exec install -m 755 {} $PKG/usr/bin/$PRGNAM \; + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/share/terminfo +tic -o $PKG/usr/share/terminfo alacritty.info + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a LICENSE-APACHE README.md TASKS.md alacritty.yml $PKG/usr/doc/$PRGNAM-$VERSION +mkdir -p $PKG/usr/share/applications +install -m 644 Alacritty.desktop $PKG/usr/share/applications +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} |