Rev 161 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
157 | kardasa | 1 | # Copyright 1999-2012 Gentoo Foundation |
2 | # Distributed under the terms of the GNU General Public License v2 |
||
3 | # $Header: $ |
||
4 | |||
5 | EAPI=4 |
||
6 | |||
7 | inherit check-reqs eutils games unpacker |
||
8 | |||
9 | MY_PN="${PN//-/_}" |
||
162 | kardasa | 10 | #MY_REV="-2" |
157 | kardasa | 11 | MY_ARCH="${ARCH/amd64/x86_64}" |
12 | |||
13 | DESCRIPTION="Amnesia: The Dark Descent is a first person survival horror. A game about immersion, discovery and living through a nightmare." |
||
14 | HOMEPAGE="http://www.amnesiagame.com/" |
||
162 | kardasa | 15 | SRC_URI="${MY_PN}_${PV}.sh" |
157 | kardasa | 16 | |
17 | RESTRICT="fetch strip" |
||
18 | LICENSE="Frictional_Games-EULA" |
||
19 | |||
20 | SLOT="0" |
||
21 | KEYWORDS="~amd64 ~x86" |
||
22 | IUSE="doc linguas_de linguas_es linguas_fr linguas_it linguas_ru" |
||
23 | |||
24 | DEPEND="app-arch/xz-utils" |
||
25 | RDEPEND="media-libs/freealut |
||
26 | >=media-libs/glew-1.5 |
||
27 | media-libs/jpeg:62 |
||
28 | media-libs/libpng:1.2 |
||
29 | media-libs/libtheora |
||
30 | media-libs/libvorbis |
||
31 | media-libs/openal |
||
32 | media-libs/sdl-image |
||
33 | media-libs/sdl-ttf |
||
34 | sys-libs/zlib |
||
35 | x11-libs/libxcb |
||
36 | x11-libs/libXext |
||
37 | virtual/glu |
||
38 | virtual/opengl" |
||
39 | |||
40 | CHECKREQS_DISK_BUILD="3500M" |
||
41 | |||
42 | S="${WORKDIR}/${PN}" |
||
43 | |||
44 | GAMEDIR="${GAMES_PREFIX_OPT}/${PN}" |
||
45 | |||
46 | pkg_nofetch() { |
||
47 | einfo "" |
||
48 | einfo "Please buy and download \"${SRC_URI}\" from:" |
||
49 | einfo " ${HOMEPAGE}" |
||
50 | einfo "and move/link it to \"${DISTDIR}\"" |
||
51 | einfo "" |
||
52 | } |
||
53 | |||
54 | pkg_setup() { |
||
55 | games_pkg_setup |
||
56 | } |
||
57 | |||
58 | src_unpack() { |
||
59 | einfo "\nUnpacking files. This will take several minutes.\n" |
||
60 | mkdir "${S}" || die "mkdir "${S}" failed" |
||
61 | cd "${S}" || die "cd '${S}' failed" |
||
159 | kardasa | 62 | |
160 | kardasa | 63 | unpack_makeself || die "unpack_makeself failed" |
64 | |||
159 | kardasa | 65 | mv "subarch" "installer.tar.lzma" || die "move \"subarch\" failed" |
66 | unpack "./installer.tar.lzma" || die "unpack \"installer.tar.lzma\" failed" |
||
157 | kardasa | 67 | |
68 | mv "instarchive_all" "../${P}.tar.lzma" || die "move 'instarchive_all' failed" |
||
69 | mv "instarchive_all_${MY_ARCH}" "../${P}-${MY_ARCH}.tar.lzma" || die "move 'instarchive_all_${MY_ARCH}' failed" |
||
70 | |||
71 | cd "${WORKDIR}" || die "cd '${WORKDIR}' failed" |
||
72 | |||
73 | echo ">>> Unpacking ./${P}.tar.lzma to ${WORKDIR}" |
||
74 | #Standard unpack fails due to poor quality of archive |
||
75 | xz -F lzma -d -c "./${P}.tar.lzma" 2>/dev/null | tar xf - || die "unpacking '${P}.tar.lzma' failed" |
||
76 | rm "./${P}.tar.lzma" |
||
77 | |||
78 | unpack "./${P}-${MY_ARCH}.tar.lzma" || die "unpack '${P}-${MY_ARCH}.tar.lzma' failed" |
||
79 | rm "./${P}-${MY_ARCH}.tar.lzma" |
||
80 | } |
||
81 | |||
82 | src_prepare() { |
||
83 | # libfltk.so.1.1 is needed because it's no longer in portage |
||
84 | mv "${WORKDIR}"/Amnesia/libs*/all/libfltk* "${WORKDIR}"/Amnesia/libs*/ || die "libfltk extraction failed" |
||
85 | |||
86 | #reset ${S} for outprocessing |
||
87 | rm -rf "${S}" |
||
88 | mv "${WORKDIR}/Amnesia" "${S}" || die "mv 'Amnesia' failed" |
||
89 | cd ${S} |
||
90 | |||
91 | # Files to remove. |
||
92 | REMOVE="libs*/* |
||
93 | |||
94 | *.rtf |
||
95 | *.sh" |
||
96 | |||
97 | # Files to keep. |
||
98 | # Bundled LibIL (media-libs/devil) isn't in portage as too old |
||
99 | KEEP="libs*/libIL* |
||
100 | libs*/libfltk*" |
||
101 | |||
102 | # Collect infos about languages... |
||
103 | LINGUAS_ARRAY=() # Linguas - string: E.g.: "linguas_en" |
||
104 | LANG_ARRAY=() # Lang - string: E.g.: "en" |
||
105 | LANGUAGE_ARRAY=() # Language - string: E.g.: "english" |
||
106 | LANGUAGE_SHORT_ARRAY=() # Language Short - string: E.g.: "eng" |
||
107 | USE_ARRAY=() # Used - bool (0,1) |
||
108 | |||
109 | local linguas_in_use="0" |
||
110 | for use in ${IUSE} |
||
111 | do |
||
112 | if [[ "${use%%_*}" == "linguas" ]] |
||
113 | then |
||
114 | local tmp="${use}" |
||
115 | LINGUAS_ARRAY=(${LINGUAS_ARRAY[@]} "${tmp}") |
||
116 | |||
117 | tmp="${tmp##linguas_}" |
||
118 | LANG_ARRAY=(${LANG_ARRAY[@]} "${tmp}") |
||
119 | |||
120 | case "${tmp}" in |
||
121 | "de") tmp="german";; |
||
122 | "es") tmp="spanish";; |
||
123 | "fr") tmp="french";; |
||
124 | "it") tmp="italian";; |
||
125 | "ru") tmp="russian";; |
||
126 | *) tmp="";; |
||
127 | esac |
||
128 | LANGUAGE_ARRAY=(${LANGUAGE_ARRAY[@]} "${tmp}") |
||
129 | LANGUAGE_SHORT_ARRAY=(${LANGUAGE_SHORT_ARRAY[@]} "${tmp:0:3}") |
||
130 | |||
131 | if use ${use} |
||
132 | then |
||
133 | USE_ARRAY=(${USE_ARRAY[@]} "1") |
||
134 | linguas_in_use="$(( ${linguas_in_use} + 1 ))" |
||
135 | else |
||
136 | USE_ARRAY=(${USE_ARRAY[@]} "0") |
||
137 | fi |
||
138 | fi |
||
139 | done |
||
140 | |||
141 | # ...then process them. |
||
142 | local n="0" |
||
143 | local docs_eng="0" |
||
144 | while [[ "${n}" -lt "${#LINGUAS_ARRAY[@]}" ]] |
||
145 | do |
||
146 | if [[ "${USE_ARRAY[${n}]}" -gt "0" ]] |
||
147 | then |
||
148 | # If only one lang is selected, use it as default. |
||
149 | if [[ "${linguas_in_use}" == "1" ]] |
||
150 | then |
||
151 | sed -e "s#english.lang#${LANGUAGE_ARRAY[${n}]}.lang#g" \ |
||
152 | -i config/*main_init.cfg || die "sed \"config/*main_init.cfg\" failed" |
||
153 | fi |
||
154 | else |
||
155 | REMOVE="${REMOVE} $(find config -type f -name "*${LANGUAGE_ARRAY[${n}]}.lang")" |
||
156 | if [[ -d "lang/${LANGUAGE_SHORT_ARRAY[${n}]}" ]] |
||
157 | then |
||
158 | REMOVE="${REMOVE} lang/${LANGUAGE_SHORT_ARRAY[${n}]}" |
||
159 | fi |
||
160 | fi |
||
161 | |||
162 | if use doc |
||
163 | then |
||
164 | if [[ -f "EULA_${LANG_ARRAY[${n}]}.rtf" && -f "Manual_${LANG_ARRAY[${n}]}.pdf" ]] |
||
165 | then |
||
166 | KEEP="${KEEP} EULA_${LANG_ARRAY[${n}]}.rtf Manual_${LANG_ARRAY[${n}]}.pdf" |
||
167 | else |
||
168 | local docs_eng="1" |
||
169 | fi |
||
170 | fi |
||
171 | |||
172 | n="$(( ${n} + 1 ))" |
||
173 | done |
||
174 | |||
175 | if use doc && [[ ( "${linguas_in_use}" == "0" || "${docs_eng}" != "0" ) ]] |
||
176 | then |
||
177 | KEEP="${KEEP} EULA_en.rtf Manual_en.pdf Remember*.pdf" |
||
178 | fi |
||
179 | |||
180 | einfo " Removing useless files ..." |
||
181 | for remove in ${REMOVE} |
||
182 | do |
||
183 | local removable="1" |
||
184 | for keep in ${KEEP} |
||
185 | do |
||
186 | if [[ "${remove}" == "${keep}" && "${removable}" == "1" ]] |
||
187 | then |
||
188 | local removable="0" |
||
189 | fi |
||
190 | done |
||
191 | |||
192 | if [[ "${removable}" == "1" ]] |
||
193 | then |
||
194 | rm -r "${S}/"${remove} &> /dev/null |
||
195 | fi |
||
196 | done |
||
197 | |||
198 | if use amd64 |
||
199 | then |
||
200 | mv "Amnesia.bin64" "Amnesia.bin" || die "mv \"Amnesia.bin64\" failed" |
||
201 | mv "Launcher.bin64" "Launcher.bin" || die "mv \"Launcher.bin64\" failed" |
||
202 | fi |
||
203 | } |
||
204 | |||
205 | src_install() { |
||
206 | # Install data |
||
207 | insinto "${GAMEDIR}" |
||
208 | |||
209 | einfo " Installing game data files ..." |
||
210 | for directory in $(find * -maxdepth 0 -type d ! -name "libs*") |
||
211 | do |
||
212 | doins -r ${directory} || die "doins game data files failed" |
||
213 | done |
||
214 | |||
215 | # Other files |
||
216 | find . -maxdepth 1 -type f ! -name "*.bin" \ |
||
217 | ! -name "*.pdf" \ |
||
218 | ! -name "*.png" \ |
||
219 | ! -name "*.rtf" \ |
||
220 | ! -name "*.sh" \ |
||
221 | -exec doins '{}' \; || die "doins other files failed" |
||
222 | |||
223 | |||
224 | # Install libraries and executables |
||
225 | einfo " Installing libraries and executables ..." |
||
226 | |||
227 | if use amd64 |
||
228 | then |
||
229 | local libsdir="${GAMEDIR}/libs64" |
||
230 | else |
||
231 | local libsdir="${GAMEDIR}/libs" |
||
232 | fi |
||
233 | |||
234 | exeinto "${libsdir}" |
||
235 | doexe libs*/* || die "doexe \"libs\" failed" |
||
236 | dosym "/usr/$(get_libdir)/libGLEW.so" "${libsdir}/libGLEW.so.1.5" |
||
237 | |||
238 | exeinto "${GAMEDIR}" |
||
239 | doexe *.bin || die "doexe \".bin\" binaries failed" |
||
240 | |||
241 | # Make game wrapper |
||
242 | local wrapper="${S}/${PN}" |
||
243 | local ext="${PN}-justine" |
||
244 | |||
245 | cat << EOF > "${wrapper}" || die "echo failed" |
||
246 | #!/bin/sh |
||
161 | kardasa | 247 | cd "${GAMEDIR}" |
157 | kardasa | 248 | if [[ "\$(basename "\${0}")" == "${ext}" ]] |
249 | then |
||
250 | params="ptest \${@}" |
||
251 | fi |
||
252 | |||
253 | if [[ -w "\${HOME}/.frictionalgames/Amnesia/Main/main_settings.cfg" ]] |
||
254 | then |
||
255 | exec ./Amnesia.bin \${params:-"\${@}"} |
||
256 | else |
||
257 | exec ./Launcher.bin "\${@}" |
||
258 | fi |
||
259 | EOF |
||
260 | |||
261 | # Install wrapper |
||
262 | dogamesbin "${wrapper}" || die "dogamesbin ${wrapper} failed" |
||
263 | dosym "${PN}" "${GAMES_BINDIR}/${ext}" |
||
264 | |||
265 | # Install icon and desktop file |
||
266 | newicon "Amnesia.png" "${PN}.png" || die "newicon failed" |
||
267 | make_desktop_entry "${PN}" "Amnesia: The Dark Descent" "/usr/share/pixmaps/${PN}.png" || die "make_desktop_entry failed" |
||
268 | make_desktop_entry "${ext}" "Amnesia: The Dark Descent - Justine" "/usr/share/pixmaps/${PN}.png" || die "make_desktop_entry failed" |
||
269 | |||
270 | # Install documentation |
||
271 | if use doc |
||
272 | then |
||
273 | dodoc *.rtf *.pdf || die "dodoc failed" |
||
274 | fi |
||
275 | |||
276 | # Setting permissions. |
||
277 | einfo " Setting permissions ..." |
||
278 | prepgamesdirs |
||
279 | } |
||
280 | |||
281 | pkg_postinst() { |
||
282 | ewarn "" |
||
283 | ewarn "Amnesia: The Dark Descent needs video drivers that provide a complete". |
||
284 | ewarn "GLSL 1.20 implementation. For more information, please visit:" |
||
285 | ewarn "http://www.frictionalgames.com/forum/thread-3760.html" |
||
286 | ewarn "" |
||
287 | ewarn "--------------------------------------------------------------------" |
||
288 | ewarn "" |
||
289 | ewarn "Saved games from previous versions may not be fully compatible." |
||
290 | ewarn "" |
||
291 | } |