diff options
Diffstat (limited to 'pcr/xonotic-git/PKGBUILD')
-rw-r--r-- | pcr/xonotic-git/PKGBUILD | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/pcr/xonotic-git/PKGBUILD b/pcr/xonotic-git/PKGBUILD new file mode 100644 index 000000000..2a032cd4a --- /dev/null +++ b/pcr/xonotic-git/PKGBUILD @@ -0,0 +1,197 @@ +# Maintainer: MrBougo <bougospam at gmail dot com> +# Contributor: wido <widomaker2k7@gmail.com> +# Contributor: Alexander Suhoverhov <cy at ngs dot ru> + +pkgname=xonotic-git +pkgver=20120718 +pkgrel=1 +pkgdesc="A free, fast-paced crossplatform first-person shooter" +arch=('i686' 'x86_64') +url="http://xonotic.org" +license=('GPL') +depends=( + 'd0_blind_id-git' + 'libxpm' + 'libjpeg>=8' + 'libpng>=1.4.0' + 'libmodplug' + 'libvorbis' + 'libxxf86dga' + 'libxxf86vm' + 'alsa-lib' + 'sdl' + 'curl' +) +makedepends=('git' 'p7zip' 'zip' 'unzip' 'vorbis-tools' 'sdl' 'mesa' 'imagemagick') +optdepends=( + 'libtheora: recording in ogv' + #'d0_blind_id-git: crypto libraries for player authentification' +) +provides=('xonotic' 'xonotic-data') +conflicts=('xonotic' 'xonotic-data') + +_gitroot="git://git.xonotic.org/xonotic/xonotic.git" +_gitname="xonotic" +_releasename="git-AUR" +_compression=5 + +# the jpeg and ogg variables can be modified, the function may also be skipped for raw data +# the values here are also used in the official -low builds +_compress() { + find $1 -type f -print0 | + git_src_repo=$2 \ + CACHEDIR="$srcdir"/datacache \ + do_jpeg=true \ + jpeg_qual_rgb=80 \ + jpeg_qual_a=97 \ + do_dds=false \ + do_ogg=true \ + ogg_qual=1 \ + del_src=true \ + xargs -0 "$srcdir"/$_gitname/misc/tools/cached-converter.sh +} + +_git_extract() { + _from=$1 + _to=$2 + shift 2 + { cd "$_from"; git archive --format=tar HEAD -- "$@"; } \ + | { + cd "$_to" + tar xvf - + } +} + +# 7z compresses nicely but can't deal with flags and symlinks +_mkzip() { + _archive=$1 + shift + _ziplist=`mktemp` + find "$@" -xtype f \( -executable -or -type l \) -print > "$_ziplist" + 7za a -tzip -mx=$_compression -x@"$_ziplist" "$_archive" "$@" || true + zip -$_compression -y -@<"$_ziplist" "$_archive" || true + rm -f "$_ziplist" +} + +#credit goes to omgwizard for the shallow clone idea +_update() { + cd "$srcdir"/$_gitname + sed 's/git clone/git clone --depth 1/g' --in-place=".PKGBUILD_BU" ./all + ./all update + mv -f ./all.PKGBUILD_BU ./all + cd "$OLDPWD" +} + +build() { + cd "$srcdir" + msg "Connecting to GIT server...." + + if [ -d $_gitname ] ; then + #future updates might introduce new subrepos, use shallow cloning anyway + cd $_gitname && _update + msg "The local files are updated." + else + git clone --depth 1 $_gitroot $_gitname + cd $_gitname + touch d0_blind_id.no + touch netradiant.no + _update + fi + + msg "GIT checkout done or server timeout" + + # BUILD + + msg "Copying sources..." + + rm -rf "$srcdir"/src + mkdir -p "$srcdir"/src/darkplaces "$srcdir"/src/fteqcc + _git_extract "$srcdir"/$_gitname/fteqcc "$srcdir"/src/fteqcc + _git_extract "$srcdir"/$_gitname/darkplaces "$srcdir"/src/darkplaces + _git_extract "$srcdir"/$_gitname/data/xonotic-data.pk3dir "$srcdir"/src \ + qcsrc Makefile check-cvars.sh + + msg "Fetching map binaries..." + cd "$srcdir"/$_gitname + ./all update-maps + + msg "Compiling the engine..." + cd "$srcdir"/src/darkplaces + CC="${CC:-gcc} -g -DSUPPORTIPV6" make release + + msg "Compiling fteqcc..." + cd "$srcdir"/src/fteqcc + make all + + msg "Compiling the game code" + cd "$srcdir"/src/ + make FTEQCC="../../fteqcc/fteqcc.bin" # relative to the directories containing progs.src + + msg "Building data pk3's..." + rm -rf "$srcdir"/temp # just in case it was interrupted previously + mkdir "$srcdir"/temp + cd "$srcdir"/temp + for _subrepo in font-nimbussansl font-xolonium xonotic-data xonotic-music xonotic-maps; do + mkdir $_subrepo + _git_extract "$srcdir"/$_gitname/data/$_subrepo.pk3dir "$srcdir"/temp/$_subrepo + done + + rm -rf "$srcdir"/temp/xonotic-data/qcsrc + mv "$srcdir"/src/progs.dat "$srcdir"/src/csprogs.dat "$srcdir"/src/menu.dat "$srcdir"/temp/xonotic-data + + cd "$srcdir"/temp/xonotic-maps + #2x40 question marks. That's as many as eight tens. And that's terrible. + for X in "$srcdir"/$_gitname/data/*-????????????????????????????????????????-????????????????????????????????????????.pk3; do + if [ -f "$X" ]; then + unzip "$X" + rm -f maps/*.log maps/*.irc maps/*.lin + fi + done + + msg "Compressing data..." + cd "$srcdir"/temp/ + # don't compress the font files + for _subrepo in xonotic-data xonotic-music xonotic-maps; do + _compress $_subrepo "$srcdir"/$_gitname/data/$_subrepo.pk3dir + done + + msg "Packing data..." + for _subrepo in font-nimbussansl font-xolonium xonotic-data xonotic-music xonotic-maps; do + cd "$srcdir"/temp/$_subrepo + _mkzip "$srcdir"/$_subrepo.pk3 * # this wildcard excludes dot files + done + + msg "Removing temporary files..." + rm -rf "$srcdir"/temp +} + +package() { + msg "Installing..." + mkdir -p "$pkgdir"/opt/$pkgname/ + _git_extract "$srcdir"/$_gitname/ "$pkgdir"/opt/$pkgname \ + Docs \ + server \ + xonotic-linux-glx.sh xonotic-linux-sdl.sh \ + key_0.d0pk + chmod 755 "$pkgdir"/opt/$pkgname/xonotic-linux-glx.sh \ + "$pkgdir"/opt/$pkgname/xonotic-linux-sdl.sh + + # Binaries -- those names are needed by the launcher script + case "$CARCH" in + x86_64) _arch="linux64" ;; + *) _arch="linux32" ;; + esac + install -m755 "$srcdir"/src/darkplaces/darkplaces-glx "$pkgdir"/opt/$pkgname/xonotic-$_arch-glx + install -m755 "$srcdir"/src/darkplaces/darkplaces-glx "$pkgdir"/opt/$pkgname/xonotic-$_arch-sdl + install -m755 "$srcdir"/src/darkplaces/darkplaces-dedicated "$pkgdir"/opt/$pkgname/xonotic-$_arch-dedicated + + mkdir -p "$pkgdir"/opt/$pkgname/data/ + mv -f "$srcdir"/*.pk3 "$pkgdir"/opt/$pkgname/data || true # those files are too big to be copied + + # Launch scripts + mkdir -p "$pkgdir"/usr/bin + mv -f "$pkgdir"/opt/$pkgname/server/server_linux.sh "$pkgdir"/opt/$pkgname/ + ln -sf /opt/$pkgname/xonotic-linux-glx.sh "$pkgdir"/usr/bin/xonotic-glx + ln -sf /opt/$pkgname/xonotic-linux-sdl.sh "$pkgdir"/usr/bin/xonotic-sdl + ln -sf /opt/$pkgname/server_linux.sh "$pkgdir"/usr/bin/xonotic-dedicated +} |