summaryrefslogtreecommitdiff
blob: 3320f7d64c495a807d3aa953294fb51282c4382d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI="2"

inherit eutils games

DESCRIPTION="A first-person survival-horror adventure game"
HOMEPAGE="http://www.penumbra-overture.com/"
MY_PN="PenumbraOverture"
MY_P="${P/-bin/}"
SRC_URI="${MY_P//-/_}.sh"

LICENSE="PENUMBRA-EULA"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
IUSE="alut fltk +ogg +openal +sdl +system-libs"
RESTRICT="fetch strip"

DEPEND="app-arch/xz-utils"
RDEPEND="sys-libs/glibc
	x11-libs/libX11

	system-libs? (
		media-libs/mesa

		alut? ( >=media-libs/freealut-1.1.0 )
		fltk? ( x11-libs/fltk:1.1 )
		openal? ( >=media-libs/openal-1.8.466 )
		sdl? (
			>=media-libs/libsdl-1.2.11
			>=media-libs/sdl-image-1.2.5
			>=media-libs/sdl-ttf-2.0.8
		)
		ogg? (
			>=media-libs/libvorbis-1.1.0
			>=media-libs/libogg-1.1.2
		)
	)"

S="${WORKDIR}/${MY_PN}"

src_unpack() {
	cd "${WORKDIR}"

	# makeself gzip archive
	local a="${DISTDIR}/${A}"
	# makeself archive script offset
	local offset=$(head -n 439 "$a" | wc -c | tr -d " ")

	einfo "The game is a tar.lzma inside a tar.lzma inside a makeself archive."
	einfo "This will take some time (and RAM) to extract. Go get some coffee."

	ebegin "Extracting ${MY_PN}"
	dd if=$a ibs=$offset skip=1 obs=1024 2>/dev/null | tar xz ./subarch -O | \
		lzmadec | tar x instarchive_all -O | lzmadec | tar x || \
		die "Extracting archive failed!"
	eend
}

src_install() {
	local dir=${GAMES_PREFIX_OPT}/${MY_PN}

	if use system-libs; then
		ebegin "Removing bundled libraries"

		# Use system GLU, aka mesa
		rm ./lib/libGLU* || die "Removing GLU failed"

		use alut && { rm ./lib/libalut* || die "Removing alut failed"; }
		use fltk && { rm ./lib/libfltk* || die "Removing fltk failed"; }
		use ogg && { rm ./lib/lib{ogg,vorbis}* || die "Removing ogg failed"; }
		use openal && { rm ./lib/libopenal* || die "Removing openal failed"; }
		use sdl && { rm ./lib/libSDL* || die "Removing SDL failed"; }

		eend
	fi

	insinto "${GAMES_PREFIX_OPT}"
	doins -r "${S}" || die "doins failed"

	dodoc *.txt README.* Manual.pdf || die "dodoc failed"

	exeinto "${dir}"
	doexe penumbra || die "doexe failed"
	doexe penumbra.bin || die "doexe failed"

	games_make_wrapper penumbra-bin ./penumbra "${dir}" "${dir}"

	mv penumbra.png penumbra-bin.png || die "Rename png failed"
	doicon penumbra-bin.png || die "doicon failed"
	make_desktop_entry penumbra-bin "Penumbra: Overture" penumbra-bin

	prepgamesdirs
}

pkg_postinst() {
	if use system-libs; then
		elog "We remove the bundled penumbra libs in favour of system libraries."
		elog "If you face problems with penumbra, try USE=-system-libs"
	fi
}