From 4f2d7949f03e1c198bc888f2d05f421d35c57e21 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 9 Oct 2017 18:53:29 +0100 Subject: reinit the tree, so we can have metadata --- games-engines/renpy/Manifest | 14 + .../renpy/files/renpy-6.17.7-multiple-abi.patch | 245 ++++++++++++++ .../renpy-6.99.12.4-compat-infinite-loop.patch | 42 +++ .../renpy/files/renpy-6.99.12.4-compat-style.patch | 43 +++ .../files/renpy-6.99.12.4-compat-window.patch | 51 +++ .../renpy/files/renpy-6.99.12.4-multiple-abi.patch | 357 +++++++++++++++++++++ games-engines/renpy/files/renpy.1 | 163 ++++++++++ games-engines/renpy/metadata.xml | 30 ++ games-engines/renpy/renpy-6.17.7.ebuild | 110 +++++++ games-engines/renpy/renpy-6.99.12.4-r1.ebuild | 116 +++++++ games-engines/renpy/renpy-6.99.12.4-r3.ebuild | 108 +++++++ 11 files changed, 1279 insertions(+) create mode 100644 games-engines/renpy/Manifest create mode 100644 games-engines/renpy/files/renpy-6.17.7-multiple-abi.patch create mode 100644 games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch create mode 100644 games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch create mode 100644 games-engines/renpy/files/renpy-6.99.12.4-compat-window.patch create mode 100644 games-engines/renpy/files/renpy-6.99.12.4-multiple-abi.patch create mode 100644 games-engines/renpy/files/renpy.1 create mode 100644 games-engines/renpy/metadata.xml create mode 100644 games-engines/renpy/renpy-6.17.7.ebuild create mode 100644 games-engines/renpy/renpy-6.99.12.4-r1.ebuild create mode 100644 games-engines/renpy/renpy-6.99.12.4-r3.ebuild (limited to 'games-engines/renpy') diff --git a/games-engines/renpy/Manifest b/games-engines/renpy/Manifest new file mode 100644 index 000000000000..ce7821f131a9 --- /dev/null +++ b/games-engines/renpy/Manifest @@ -0,0 +1,14 @@ +AUX renpy-6.17.7-multiple-abi.patch 8291 SHA256 ec919186d61a78aece7b01d15984edd502a9886fdfd7a163f9fa0e26f28f06bf SHA512 fd39773b85a54ca709f412430654cacdc91caaa561ad2e15bb02b08b971997062fa3c1adad5e2b582a2dc7acc9886b717517e0c10c0bab6a36fd05e52e98edf9 WHIRLPOOL ca460eb3129c0c4f429af4f88cdcf0d6e164f89f2019fba2f9e97a690d5b132565cbbbc03f6365a74e901842715b012cbff03e67c1c17ca01ccfecae9be501e3 +AUX renpy-6.99.12.4-compat-infinite-loop.patch 1612 SHA256 b10e112a342720c8e5d30d59379310c2f516bfd7e5cd280879de9551c3cf91d1 SHA512 86cdba778680b46434c49bba345c37d626888d85c24c4f801396fed160d05607ae6c761cd9930b054e09f8a2d107a4ca05f1e5eed0dc4f51ea4ac2625f8cc77a WHIRLPOOL 88ceb6f5f82f819ed3c34b36a928c8882918b1142c3406c26a066ca851f8f82f870b128a3e255e50943d522f69b4e256a1ea5fc33193a33af90fd21f7cfc785e +AUX renpy-6.99.12.4-compat-style.patch 1964 SHA256 0204cffce4df3a34f6a90d0caffc04b72bb5b04ba974caba01fd3d30722d0968 SHA512 199297d0841dd0212708bfbf3aa1950a6c7ba623da156994f09b73f3e797662ad92f85d40c896169d3643be2f20e2deb91357ed8f8c668ad06140b0f582650a5 WHIRLPOOL 06e054ff230f12410c518e41f2e1d6eb269f1186a813e6abd8102b99d253eaf05012ab05a854ddd220c62a1f9e8190dd524af915ce050e8ce674f5f3e48ea3af +AUX renpy-6.99.12.4-compat-window.patch 2488 SHA256 8139af8ef11ebb39b618277723a66447e93b4edd9706391594c59134ea53a9eb SHA512 238d727750b114bd9e68b8d144adab0c470defcd386bd934d2c830f15947718d7dfa5001ef92733a0c3a7ac4b40ca459243b0c68ff8239b960290840d3d7dbf2 WHIRLPOOL 4eeeba3648c7e082dd0c0eff745ee31875cc1231d6c999ee50219d278b2592f3ac08b695cbdb6c934e4648aa53bb8d83eef45e4a00eaebc4ddc945bfdcdaf721 +AUX renpy-6.99.12.4-multiple-abi.patch 11945 SHA256 fcb3a2a9b1ff8a70388df214bd5a027973b486ce30913f3cf590cda2804f9546 SHA512 4ff4926ba5e92b2e72e206093a770b5d334a0c25fd4ace48c54b0ec6d8dfcb64a137f97238793703af927906d2df0723d2e36920ed50c6686fe8ba3602880759 WHIRLPOOL ca7d1b8a9d9db1c400cfbc5b056a05876a95e0a9275db9af379ec33644972caa76653ccd074ddc836f1e852ff52cd8719feae3052b803e6bc6747f2e70b847d2 +AUX renpy.1 4642 SHA256 249fb33053da00de6a8156b33b8d29df2536238016e353f4e69d8eb5d8bf851b SHA512 2727a6ff9675a2b82a979faf5d75e7b3b96915f4c7382d22bba35d74674e613f45d4e8437e24edb410aac45cd8d219cc68e118387e538aafb32b0c312443b066 WHIRLPOOL 1319d4587c2cecb2563aeb198e9aa98bd31733899e275bce137e12e0e806c9bc396e9ac6f2180c993acb2174c4bfc221c79d568a4ba051f5e6558e3bfb042bb3 +DIST renpy-6.17.7-source.tar.bz2 17932988 SHA256 fef01de9e482b73d9d409de7a43bada6dd3e2a0549b99dd487306371190ed038 SHA512 22b0e08b18ee35317b11451205233cbd8a29617d9c3d298bbdcfc5757f67c2f0e4c8a748aa83d5c8b43786c062ffca109d07e981efa750fcee26f45f08a33ea2 WHIRLPOOL fef82eb6c958a2525797e5d8bfae3488fba606b70eeed5c94f7afcab4fa46e7a7eb43d91b4bd55f553b65a72b12236e02ecdee55e8852c1fafc055332f9d131d +DIST renpy-6.99.12.4-source.tar.bz2 18192453 SHA256 65d8c97acfce7a8025ad0f6a1a3d5ef88d4319ece02370f33cf7a791b320a30c SHA512 375b67e15630fc21915136e70bc93db6da7c2da192d39b1256822513ae44974124522c85f1976f2af62df27b5fa11493af488b02abcf0081eeae03e1a69dfca5 WHIRLPOOL 3044bcd5e241e95c8313a16da4049f71621def4669b9d76aa6892191443456e2c388f7a7aaa16a01e073311a83d1bde5452fc3e57f956571bfca2edc1db93ca9 +EBUILD renpy-6.17.7.ebuild 2521 SHA256 126b76d2bbbc369f0de27d0269fb88e84e6850875341b02bdb89a6394593342d SHA512 8dcee437ea8a1b9853d90d1c559988e0ea4206f5dbf2fb70e77231c2ba18999ff64f51ce0bf16dd4404bb20465a9fa266bb2855bdfe3db6ccb628a422791993c WHIRLPOOL 8e8cd8705b5c75bd830ec2053eff67b3527a3abfaa24184dec8c67b40bf50f21d75fd682000522f7c47e25c9917e6701db19424d87f7c27ced08a5828aa0bea2 +EBUILD renpy-6.99.12.4-r1.ebuild 2685 SHA256 44c780b41a5488f1cc87a1f86336919f6aeec5a3591a306b432d802ff117cb56 SHA512 fc38cbdc2a119de3c393ae2c07ad31c4b922cc7e0c50e285b48cae428712d5ea484b1efe48128ed4c9a4eebca61ae75dc8b3eaf25ae997bbf7454be58d03a27c WHIRLPOOL 362574bb1a42915b512a2834d3be7716769b9393e46846159dcc189689ba0ce8e828886294b7c769a6b0d4e5f7eecb3093d1e496d50dce78e6034feefe96d578 +EBUILD renpy-6.99.12.4-r3.ebuild 2598 SHA256 420178f30c7b6995bbed9276da41a5f62155953fc181f0a30a323a4143a1ca45 SHA512 afe651513c3064949af87eec4135574a950eaf7928bd93b8edbccb88cd4a14e45205f061ebd30f8ca37c90625ad31ca3712b46c415d436e7df6a251c5554bb93 WHIRLPOOL a7097cd7567a4c74fb146216ce547380139e53e1486a5ec51f8f7207665ecabac3f4afab15ba5d6e3d8345fa3259e5d8d12017a69dba7231348f6df4d811dd3b +MISC ChangeLog 5360 SHA256 ac5de69fb729579c9670739ebe10c565ea4b95c342ee085381c60d2ae0c8e6e9 SHA512 86a4348b428cd50e596bf1de9f355496762df2014e9ab8d998b98482b7c0a2c57cdca34e8d1fb9f29bf73157fe9f4d8fac71c517a159da16d324cc7014af0605 WHIRLPOOL 568d1328d738504f377a65827d187dbd10aad28d2bc4fe12460f6731373a6b6e6165f636279f63e57fa98f990b571a807969c6a45cfb3342bdfd07014adeb409 +MISC ChangeLog-2015 9189 SHA256 acbb24bf21ff9bb29bc0f384d15d186cd60bb5fd0978642da75ebe178dcbbb14 SHA512 3ce6a44b3e5076ac4f320fbfcbd80705bb2911894978798220c2c3e135d714b2a16e52d3fa238ff6ba85ce0a85c2e9d14ccd4e25bd738212f7d778f9cbc1db7d WHIRLPOOL 0bc9a9b06b1b09100d02eeac293a522deb4dec1486a00d2c992b1ecbea7ffebf519d9e9743fa5f7b3a7beb5ce110e3bb01b2060645b1ad462fbf5ace08ed2877 +MISC metadata.xml 1063 SHA256 9ea1615655712ef79aec4a064e15e0a4fefee45307a4a135ec02efeedea25ae2 SHA512 801640d22f7d54fa918564d14aa0bfbd63c6f106dd1ff690740b93bb7da51012c42b4b75431e3741c47049121bcfb908c3a1cde6b41091b51079c5f0cacc0753 WHIRLPOOL 2b795441fd98bd77a863be94d0e2f043f2f39c433b7f566f1204f83a7eb3f4f717d9aeb23d508fdf9d0d8bcfe29031e2d3971a8b378a44b9c656c15dd72ea86f diff --git a/games-engines/renpy/files/renpy-6.17.7-multiple-abi.patch b/games-engines/renpy/files/renpy-6.17.7-multiple-abi.patch new file mode 100644 index 000000000000..335af4e9b8d1 --- /dev/null +++ b/games-engines/renpy/files/renpy-6.17.7-multiple-abi.patch @@ -0,0 +1,245 @@ +commit 7451ba936ca2f3358ca51ab562371774199c7052 +Author: hasufell +Date: Tue Jan 21 01:02:00 2014 +0100 + + fix multiple abi support + +diff --git a/renpy.py b/renpy.py +index 9f2977f..394e4e1 100644 +--- a/renpy.py ++++ b/renpy.py +@@ -28,82 +28,9 @@ + import os + import sys + import warnings +- +-# Functions to be customized by distributors. ################################ +- +-# Given the Ren'Py base directory (usually the directory containing +-# this file), this is expected to return the path to the common directory. +-def path_to_common(renpy_base): +- return renpy_base + "/renpy/common" +- +-# Given a directory holding a Ren'Py game, this is expected to return +-# the path to a directory that will hold save files. +-def path_to_saves(gamedir): +- import renpy #@UnresolvedImport +- +- # Android. +- if renpy.android: +- paths = [ +- os.path.join(os.environ["ANDROID_OLD_PUBLIC"], "game/saves"), +- os.path.join(os.environ["ANDROID_PRIVATE"], "saves"), +- os.path.join(os.environ["ANDROID_PUBLIC"], "saves"), +- ] +- +- for rv in paths: +- if os.path.isdir(rv): +- break +- +- print "Using savedir", rv +- +- # We return the last path as the default. +- +- return rv +- +- +- # No save directory given. +- if not renpy.config.save_directory: +- return gamedir + "/saves" +- +- # Search the path above Ren'Py for a directory named "Ren'Py Data". +- # If it exists, then use that for our save directory. +- path = renpy.config.renpy_base +- +- while True: +- if os.path.isdir(path + "/Ren'Py Data"): +- return path + "/Ren'Py Data/" + renpy.config.save_directory +- +- newpath = os.path.dirname(path) +- if path == newpath: +- break +- path = newpath +- +- # Otherwise, put the saves in a platform-specific location. +- if renpy.macintosh: +- rv = "~/Library/RenPy/" + renpy.config.save_directory +- return os.path.expanduser(rv) +- +- elif renpy.windows: +- if 'APPDATA' in os.environ: +- return os.environ['APPDATA'] + "/RenPy/" + renpy.config.save_directory +- else: +- rv = "~/RenPy/" + renpy.config.save_directory +- return os.path.expanduser(rv) +- +- else: +- rv = "~/.renpy/" + renpy.config.save_directory +- return os.path.expanduser(rv) +- +- +-# Returns the path to the Ren'Py base directory (containing common and +-# the launcher, usually.) +-def path_to_renpy_base(): +- renpy_base = os.path.dirname(os.path.realpath(sys.argv[0])) +- renpy_base = os.environ.get('RENPY_BASE', renpy_base) +- renpy_base = os.path.abspath(renpy_base) +- +- return renpy_base +- +-############################################################################## ++from distutils.sysconfig import get_python_lib ++sys.path.append(get_python_lib() + "/renpy@SLOT@") ++import renpy.common as common + + # The version of the Mac Launcher and py4renpy that we require. + macos_version = (6, 14, 0) +@@ -131,7 +58,7 @@ if android: + + def main(): + +- renpy_base = path_to_renpy_base() ++ renpy_base = common.path_to_renpy_base() + + # Add paths. + if os.path.exists(renpy_base + "/module"): +diff --git a/renpy/common.py b/renpy/common.py +new file mode 100644 +index 0000000..1f15b3c +--- /dev/null ++++ b/renpy/common.py +@@ -0,0 +1,103 @@ ++# This file is part of Ren'Py. The license below applies to Ren'Py only. ++# Games and other projects that use Ren'Py may use a different license. ++ ++# Copyright 2004-2014 Tom Rothamel ++# ++# Permission is hereby granted, free of charge, to any person ++# obtaining a copy of this software and associated documentation files ++# (the "Software"), to deal in the Software without restriction, ++# including without limitation the rights to use, copy, modify, merge, ++# publish, distribute, sublicense, and/or sell copies of the Software, ++# and to permit persons to whom the Software is furnished to do so, ++# subject to the following conditions: ++# ++# The above copyright notice and this permission notice shall be ++# included in all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++import os ++import sys ++import warnings ++from distutils.sysconfig import get_python_lib ++ ++# Functions to be customized by distributors. ################################ ++ ++# Given the Ren'Py base directory (usually the directory containing ++# this file), this is expected to return the path to the common directory. ++def path_to_common(renpy_base): ++ return renpy_base + "/renpy/common" ++ ++# Given a directory holding a Ren'Py game, this is expected to return ++# the path to a directory that will hold save files. ++def path_to_saves(gamedir): ++ import renpy #@UnresolvedImport ++ ++ # Android. ++ if renpy.android: ++ paths = [ ++ os.path.join(os.environ["ANDROID_OLD_PUBLIC"], "game/saves"), ++ os.path.join(os.environ["ANDROID_PRIVATE"], "saves"), ++ os.path.join(os.environ["ANDROID_PUBLIC"], "saves"), ++ ] ++ ++ for rv in paths: ++ if os.path.isdir(rv): ++ break ++ ++ print "Using savedir", rv ++ ++ # We return the last path as the default. ++ ++ return rv ++ ++ ++ # No save directory given. ++ if not renpy.config.save_directory: ++ return gamedir + "/saves" ++ ++ # Search the path above Ren'Py for a directory named "Ren'Py Data". ++ # If it exists, then use that for our save directory. ++ path = renpy.config.renpy_base ++ ++ while True: ++ if os.path.isdir(path + "/Ren'Py Data"): ++ return path + "/Ren'Py Data/" + renpy.config.save_directory ++ ++ newpath = os.path.dirname(path) ++ if path == newpath: ++ break ++ path = newpath ++ ++ # Otherwise, put the saves in a platform-specific location. ++ if renpy.macintosh: ++ rv = "~/Library/RenPy/" + renpy.config.save_directory ++ return os.path.expanduser(rv) ++ ++ elif renpy.windows: ++ if 'APPDATA' in os.environ: ++ return os.environ['APPDATA'] + "/RenPy/" + renpy.config.save_directory ++ else: ++ rv = "~/RenPy/" + renpy.config.save_directory ++ return os.path.expanduser(rv) ++ ++ else: ++ rv = "~/.renpy/" + renpy.config.save_directory ++ return os.path.expanduser(rv) ++ ++ ++# Returns the path to the Ren'Py base directory (containing common and ++# the launcher, usually.) ++def path_to_renpy_base(): ++ renpy_base = os.path.dirname(os.path.realpath(sys.argv[0])) ++ renpy_base = get_python_lib() + "/renpy@SLOT@" ++ renpy_base = os.environ.get('RENPY_BASE', renpy_base) ++ renpy_base = os.path.abspath(renpy_base) ++ ++ return renpy_base +diff --git a/renpy/main.py b/renpy/main.py +index 143007d..6c55bbc 100644 +--- a/renpy/main.py ++++ b/renpy/main.py +@@ -25,7 +25,7 @@ import os + import sys + import time + import zipfile +-import __main__ ++import renpy.common as common + + + def run(restart): +@@ -167,7 +167,7 @@ def main(): + renpy.config.searchpath = [ renpy.config.gamedir ] + + # Find the common directory. +- commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable ++ commondir = common.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable + + if os.path.isdir(commondir): + renpy.config.searchpath.append(commondir) +@@ -230,7 +230,7 @@ def main(): + + # Find the save directory. + if renpy.config.savedir is None: +- renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable ++ renpy.config.savedir = common.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable + + if renpy.game.args.savedir: #@UndefinedVariable + renpy.config.savedir = renpy.game.args.savedir #@UndefinedVariable diff --git a/games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch b/games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch new file mode 100644 index 000000000000..3a2942cb04fd --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch @@ -0,0 +1,42 @@ +Adapted from git HEAD: +commit ff308191a190bf7c5c2118a31f3d8569a0904c04 +Author: Andrew Savchenko +Date: Mon Jul 17 08:00:07 2017 +0300 + + Increase infinite loop hardcoded values + + On many old hardware, e.g on my Atom netbook games hit this limit, + but otherwise work fine. Increasing the limit helps. People are + also reporting this issue in many cases (old laptops, stow tablets, + etc where games fail due to this issue and work otherwise): + + https://translationprojectvisualnovels.blogspot.ru/2016/09/monster-girl-quest-android-15092016.html + https://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=30521&start=90 + https://steamcommunity.com/app/356530/discussions/0/365163686036650662/ + (and many more, just google) + +index 00c7562..a7e361c 100644 +--- a/renpy/display/core.py ++++ b/renpy/display/core.py +@@ -2845,7 +2845,7 @@ class Interface(object): + + while rv is None: + +- renpy.execution.not_infinite_loop(10) ++ renpy.execution.not_infinite_loop(50) + + # Check for a change in fullscreen preference. + if ((self.fullscreen != renpy.game.preferences.fullscreen) or +diff --git a/renpy/main.py b/renpy/main.py +index 6f14d77..960d2fd 100644 +--- a/renpy/main.py ++++ b/renpy/main.py +@@ -318,7 +318,7 @@ def main(): + game.contexts = [ renpy.execution.Context(False) ] + game.contexts[0].init_phase = True + +- renpy.execution.not_infinite_loop(60) ++ renpy.execution.not_infinite_loop(300) + + # Load the script. + renpy.game.exception_info = 'While loading the script.' diff --git a/games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch b/games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch new file mode 100644 index 000000000000..122ebf1e43e6 --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch @@ -0,0 +1,43 @@ +commit 1d350d993d2b51df7880e92b48ed103e059ec385 +Author: Andrew Savchenko +Date: Sun Jul 16 17:07:27 2017 +0300 + + Fix compatibility problem With ElvenRelations-1.2: + + When starting game: + + Full traceback: + File "/home/andrew/src/_compat/styles.rpymc", line 22, in script + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/ast.py", line 814, in execute + renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/python.py", line 1719, in py_exec_bytecode + exec bytecode in globals, locals + File "renpy/common/_compat/styles.rpym", line 374, in + style.selected_button = _SelectedCompat('button') + File "renpy/common/_compat/styles.rpym", line 347, in __init__ + self.target = target + File "renpy/style.pyx", line 378, in renpy.style.StyleCore.__setattr__ (gen/renpy.style.c:6236) + raise Exception("Style property {} is not known.".format(name)) + Exception: Style property target is not known. + + "button*" properties are no longer present in RenPy, so relevant + code is removed. + +diff --git a/renpy/common/_compat/styles.rpym b/renpy/common/_compat/styles.rpym +index d83eeb0..174f0b6 100644 +--- a/renpy/common/_compat/styles.rpym ++++ b/renpy/common/_compat/styles.rpym +@@ -371,13 +371,6 @@ init python: + self.property_updates = [ ] + + +- style.selected_button = _SelectedCompat('button') +- style.selected_button_text = _SelectedCompat('button_text') +- style.gm_nav_selected_button = _SelectedCompat('gm_nav_button') +- style.gm_nav_selected_button_text = _SelectedCompat('gm_nav_button_text') +- style.prefs_selected_button = _SelectedCompat('prefs_button') +- style.prefs_selected_button_text = _SelectedCompat('prefs_button_text') +- + def _apply_selected_compat(): + for scs in _selected_compat: + scs.apply() diff --git a/games-engines/renpy/files/renpy-6.99.12.4-compat-window.patch b/games-engines/renpy/files/renpy-6.99.12.4-compat-window.patch new file mode 100644 index 000000000000..8c8bd21b4f65 --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-compat-window.patch @@ -0,0 +1,51 @@ +commit cf3f7fd4cb69c154f43a5e00c7501463a6d63ff5 +Author: Andrew Savchenko +Date: Sun Jul 16 16:59:14 2017 +0300 + + Fix compatibility problem with Katawa Shoujo 1.3.1 + + The game fails to start with renpy-6.99.12.4: + + I'm sorry, but an uncaught exception occurred. + + While running game code: + File "game/ui_settings.rpy", line 21, in + File "renpy/common/00compat.rpy", line 134, in _set_script_version + config.window_auto_hide.remove("call screen") + ValueError: list.remove(x): x not in list + + -- Full Traceback ------------------------------------------------------------ + + Full traceback: + File "/home/rondo/ui_settings.rpyc", line 2, in script + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/ast.py", line 814, in execute + renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store) + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/python.py", line 1695, in py_exec_bytecode + exec bytecode in globals, locals + File "game/ui_settings.rpy", line 21, in + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/defaultstore.py", line 92, in __setattr__ + renpy.store._set_script_version(value) # E1101 @UndefinedVariable + File "renpy/common/00compat.rpy", line 134, in _set_script_version + config.window_auto_hide.remove("call screen") + File "/usr/lib64/python2.7/site-packages/renpy699/renpy/python.py", line 610, in do_mutation + return method(self, *args, **kwargs) + ValueError: list.remove(x): x not in list + + This happens because "call screen" element is being unconditionally + removed from config.window_auto_hide list, though it is not always + present there. A simple if check fixes this. + +diff --git a/renpy/common/00compat.rpy b/renpy/common/00compat.rpy +index c16ad1d..eefb8e0 100644 +--- a/renpy/common/00compat.rpy ++++ b/renpy/common/00compat.rpy +@@ -131,7 +131,8 @@ init -1900 python: + if version <= (6, 99, 10): + config.new_translate_order = False + config.old_say_args = True +- config.window_auto_hide.remove("call screen") ++ if "call screen" in config.window_auto_hide: ++ config.window_auto_hide.remove("call screen") + config.quit_action = ui.gamemenus("_quit_prompt") + config.enforce_window_max_size = False + config.splashscreen_suppress_overlay = False diff --git a/games-engines/renpy/files/renpy-6.99.12.4-multiple-abi.patch b/games-engines/renpy/files/renpy-6.99.12.4-multiple-abi.patch new file mode 100644 index 000000000000..3a7355e60bed --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-multiple-abi.patch @@ -0,0 +1,357 @@ +From 7aa51dae5eb2f2123fee9bca23a2ce2f1b1c3f10 Mon Sep 17 00:00:00 2001 +From: hasufell +Date: Thu, 20 Aug 2015 01:10:58 +0200 +Subject: [PATCH] Fix multiple abi support + +--- + renpy.py | 128 ++-------------------------------------------------- + renpy/common.py | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + renpy/main.py | 6 +-- + 3 files changed, 144 insertions(+), 127 deletions(-) + create mode 100644 renpy/common.py + +diff --git a/renpy.py b/renpy.py +index 7548cf6..8ec7353 100644 +--- a/renpy.py ++++ b/renpy.py +@@ -28,122 +28,9 @@ + import os + import sys + import warnings +- +-# Functions to be customized by distributors. ################################ +- +-# Given the Ren'Py base directory (usually the directory containing +-# this file), this is expected to return the path to the common directory. +- +- +-def path_to_common(renpy_base): +- return renpy_base + "/renpy/common" +- +-# Given a directory holding a Ren'Py game, this is expected to return +-# the path to a directory that will hold save files. +- +- +-def path_to_saves(gamedir, save_directory=None): +- import renpy # @UnresolvedImport +- +- if save_directory is None: +- save_directory = renpy.config.save_directory +- save_directory = renpy.exports.fsencode(save_directory) +- +- # Makes sure the permissions are right on the save directory. +- def test_writable(d): +- try: +- fn = os.path.join(d, "test.txt") +- open(fn, "w").close() +- open(fn, "r").close() +- os.unlink(fn) +- return True +- except: +- return False +- +- # Android. +- if renpy.android: +- paths = [ +- os.path.join(os.environ["ANDROID_OLD_PUBLIC"], "game/saves"), +- os.path.join(os.environ["ANDROID_PRIVATE"], "saves"), +- os.path.join(os.environ["ANDROID_PUBLIC"], "saves"), +- ] +- +- for rv in paths: +- if os.path.isdir(rv) and test_writable(rv): +- break +- +- print("Saving to", rv) +- +- # We return the last path as the default. +- +- return rv +- +- if renpy.ios: +- from pyobjus import autoclass +- from pyobjus.objc_py_types import enum +- +- NSSearchPathDirectory = enum("NSSearchPathDirectory", NSDocumentDirectory=9) +- NSSearchPathDomainMask = enum("NSSearchPathDomainMask", NSUserDomainMask=1) +- +- NSFileManager = autoclass('NSFileManager') +- manager = NSFileManager.defaultManager() +- url = manager.URLsForDirectory_inDomains_( +- NSSearchPathDirectory.NSDocumentDirectory, +- NSSearchPathDomainMask.NSUserDomainMask, +- ).lastObject() +- +- # url.path seems to change type based on iOS version, for some reason. +- try: +- rv = url.path().UTF8String().decode("utf-8") +- except: +- rv = url.path.UTF8String().decode("utf-8") +- +- print("Saving to", rv) +- return rv +- +- # No save directory given. +- if not save_directory: +- return gamedir + "/saves" +- +- # Search the path above Ren'Py for a directory named "Ren'Py Data". +- # If it exists, then use that for our save directory. +- path = renpy.config.renpy_base +- +- while True: +- if os.path.isdir(path + "/Ren'Py Data"): +- return path + "/Ren'Py Data/" + save_directory +- +- newpath = os.path.dirname(path) +- if path == newpath: +- break +- path = newpath +- +- # Otherwise, put the saves in a platform-specific location. +- if renpy.macintosh: +- rv = "~/Library/RenPy/" + save_directory +- return os.path.expanduser(rv) +- +- elif renpy.windows: +- if 'APPDATA' in os.environ: +- return os.environ['APPDATA'] + "/RenPy/" + save_directory +- else: +- rv = "~/RenPy/" + renpy.config.save_directory +- return os.path.expanduser(rv) +- +- else: +- rv = "~/.renpy/" + save_directory +- return os.path.expanduser(rv) +- +- +-# Returns the path to the Ren'Py base directory (containing common and +-# the launcher, usually.) +-def path_to_renpy_base(): +- renpy_base = os.path.dirname(os.path.realpath(sys.argv[0])) +- renpy_base = os.path.abspath(renpy_base) +- +- return renpy_base +- +-############################################################################## ++from distutils.sysconfig import get_python_lib ++sys.path.append(get_python_lib() + "/renpy@SLOT@") ++import renpy.common as common + + # The version of the Mac Launcher and py4renpy that we require. + macos_version = (6, 14, 0) +@@ -154,21 +45,9 @@ except: + print("Ren'Py requires at least python 2.6.") + sys.exit(0) + +-android = ("ANDROID_PRIVATE" in os.environ) +- +-# Android requires us to add code to the main module, and to command some +-# renderers. +-if android: +- __main__ = sys.modules["__main__"] +- __main__.path_to_renpy_base = path_to_renpy_base +- __main__.path_to_common = path_to_common +- __main__.path_to_saves = path_to_saves +- os.environ["RENPY_RENDERER"] = "gl" +- +- + def main(): + +- renpy_base = path_to_renpy_base() ++ renpy_base = common.path_to_renpy_base() + + # Add paths. + if os.path.exists(renpy_base + "/module"): +diff --git a/renpy/common.py b/renpy/common.py +new file mode 100644 +index 0000000..0d60e36 +--- /dev/null ++++ b/renpy/common.py +@@ -0,0 +1,137 @@ ++# This file is part of Ren'Py. The license below applies to Ren'Py only. ++# Games and other projects that use Ren'Py may use a different license. ++ ++# Copyright 2004-2015 Tom Rothamel ++# ++# Permission is hereby granted, free of charge, to any person ++# obtaining a copy of this software and associated documentation files ++# (the "Software"), to deal in the Software without restriction, ++# including without limitation the rights to use, copy, modify, merge, ++# publish, distribute, sublicense, and/or sell copies of the Software, ++# and to permit persons to whom the Software is furnished to do so, ++# subject to the following conditions: ++# ++# The above copyright notice and this permission notice shall be ++# included in all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE ++# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION ++# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ++ ++import os ++import sys ++import warnings ++from distutils.sysconfig import get_python_lib ++ ++# Given the Ren'Py base directory (usually the directory containing ++# this file), this is expected to return the path to the common directory. ++def path_to_common(renpy_base): ++ return renpy_base + "/renpy/common" ++ ++# Given a directory holding a Ren'Py game, this is expected to return ++# the path to a directory that will hold save files. ++def path_to_saves(gamedir, save_directory=None): ++ import renpy #@UnresolvedImport ++ ++ if save_directory is None: ++ save_directory = renpy.config.save_directory ++ ++ # Makes sure the permissions are right on the save directory. ++ def test_writable(d): ++ try: ++ fn = os.path.join(d, "test.txt") ++ open(fn, "w").close() ++ open(fn, "r").close() ++ os.unlink(fn) ++ return True ++ except: ++ return False ++ ++ ++ # Android. ++ if renpy.android: ++ paths = [ ++ os.path.join(os.environ["ANDROID_OLD_PUBLIC"], "game/saves"), ++ os.path.join(os.environ["ANDROID_PRIVATE"], "saves"), ++ os.path.join(os.environ["ANDROID_PUBLIC"], "saves"), ++ ] ++ ++ for rv in paths: ++ if os.path.isdir(rv) and test_writable(rv): ++ break ++ ++ print "Saving to", rv ++ ++ # We return the last path as the default. ++ ++ return rv ++ ++ if renpy.ios: ++ from pyobjus import autoclass ++ from pyobjus.objc_py_types import enum ++ ++ NSSearchPathDirectory = enum("NSSearchPathDirectory", NSDocumentDirectory=9) ++ NSSearchPathDomainMask = enum("NSSearchPathDomainMask", NSUserDomainMask=1) ++ ++ NSFileManager = autoclass('NSFileManager') ++ manager = NSFileManager.defaultManager() ++ url = manager.URLsForDirectory_inDomains_( ++ NSSearchPathDirectory.NSDocumentDirectory, ++ NSSearchPathDomainMask.NSUserDomainMask, ++ ).lastObject() ++ ++ # url.path seems to change type based on iOS version, for some reason. ++ try: ++ rv = url.path().UTF8String().decode("utf-8") ++ except: ++ rv = url.path.UTF8String().decode("utf-8") ++ ++ print "Saving to", rv ++ return rv ++ ++ # No save directory given. ++ if not save_directory: ++ return gamedir + "/saves" ++ ++ # Search the path above Ren'Py for a directory named "Ren'Py Data". ++ # If it exists, then use that for our save directory. ++ path = renpy.config.renpy_base ++ ++ while True: ++ if os.path.isdir(path + "/Ren'Py Data"): ++ return path + "/Ren'Py Data/" + save_directory ++ ++ newpath = os.path.dirname(path) ++ if path == newpath: ++ break ++ path = newpath ++ ++ # Otherwise, put the saves in a platform-specific location. ++ if renpy.macintosh: ++ rv = "~/Library/RenPy/" + save_directory ++ return os.path.expanduser(rv) ++ ++ elif renpy.windows: ++ if 'APPDATA' in os.environ: ++ return os.environ['APPDATA'] + "/RenPy/" + save_directory ++ else: ++ rv = "~/RenPy/" + renpy.config.save_directory ++ return os.path.expanduser(rv) ++ ++ else: ++ rv = "~/.renpy/" + save_directory ++ return os.path.expanduser(rv) ++ ++ ++# Returns the path to the Ren'Py base directory (containing common and ++# the launcher, usually.) ++def path_to_renpy_base(): ++ renpy_base = os.path.dirname(os.path.realpath(sys.argv[0])) ++ renpy_base = get_python_lib() + "/renpy@SLOT@" ++ renpy_base = os.path.abspath(renpy_base) ++ ++ return renpy_base +diff --git a/renpy/main.py b/renpy/main.py +index 73e7239..6807ba1 100644 +--- a/renpy/main.py ++++ b/renpy/main.py +@@ -27,7 +27,7 @@ import os + import sys + import time + import zipfile +-import __main__ ++import renpy.common as common + + + last_clock = time.time() +@@ -273,7 +273,7 @@ def main(): + renpy.config.searchpath = [ renpy.config.gamedir ] + + # Find the common directory. +- commondir = __main__.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable ++ commondir = common.path_to_common(renpy.config.renpy_base) # E1101 @UndefinedVariable + + if os.path.isdir(commondir): + renpy.config.searchpath.append(commondir) +@@ -371,7 +371,7 @@ def main(): + + # Find the save directory. + if renpy.config.savedir is None: +- renpy.config.savedir = __main__.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable ++ renpy.config.savedir = common.path_to_saves(renpy.config.gamedir) # E1101 @UndefinedVariable + + if renpy.game.args.savedir: # @UndefinedVariable + renpy.config.savedir = renpy.game.args.savedir # @UndefinedVariable +diff --git a/renpy/script.py b/renpy/script.py +index 73e7239..6807ba1 100644 +--- a/renpy/script.py ++++ b/renpy/script.py +@@ -150,8 +150,8 @@ import os + if renpy.loader.loadable(i): + return None + +- import __main__ +- backups = __main__.path_to_saves(renpy.config.gamedir, "backups") # @UndefinedVariable ++ import renpy.common as common ++ backups = common.path_to_saves(renpy.config.gamedir, "backups") # @UndefinedVariable + + if backups is None: + return +-- +2.5.0 + diff --git a/games-engines/renpy/files/renpy.1 b/games-engines/renpy/files/renpy.1 new file mode 100644 index 000000000000..e8b7a2b61958 --- /dev/null +++ b/games-engines/renpy/files/renpy.1 @@ -0,0 +1,163 @@ +.\" Copyright © 2015 Andrew Savchenko +.\" Distributed under the terms of GNU FDL-1.3+ license, +.\" based on original Ren'Py documentation licensed under MIT. +.TH renpy 1 "31 May 2015" "Ren'Py" "Ren'Py Gentoo's manual" +.SH NAME +renpy \- a visual novel engine + +.SH SYNOPSIS +.BI renpy " game_directory" +.\" **************************************************************** +.SH DESCRIPTION + +.B renpy +(Ren'Py) is a visual novel engine \- used by hundreds of creators +from around the world \- that helps you use words, images, and +sounds to tell interactive stories that run on computers and mobile +devices. These can be both visual novels and life simulation games. +The easy to learn script language allows anyone to efficiently +write large visual novels, while its +.BR python (1) +scripting is enough for complex simulation games. +.\" **************************************************************** +.SH RUNNING A GAME + +In order to run a game, provide +.I game_directory +as an argument to +.BR renpy . +Exact directory name may vary depending or a game, but usually +this path corresponds to +.I */game +wildcard and contains +.I script_version.rpy* +file within. Game directory usually contains other +.IR *.rpy* " and " *.rpa " files." + +One may use +.BR find (1) +tool to locate required directory within unpacked game top +directory: +.RS + +find -O3 +.I top_directory +-type f -iname "script_version.rpy*" + +.RE +A directory one level above may be provided as an argument as well. +.\" **************************************************************** +.SH PORTABILITY + +All +.B renpy +games are written in +.BR python (1), +so one can run then on any platform and architecture. + +As you may have noticed, Ren'Py games are often distributed in +different archives for different architectures. This happens due to +bundling of +.BR python (1) +interpreter and required libraries in a game's tarball. Since you +are using OS native +.B renpy +setup, you should be able to run any of these games. +.\" **************************************************************** +.SH GAMES CATALOGUE + +A large catalogue of Ren'Py powered games is available at +.IR http://games.renpy.org/ . +.\" **************************************************************** +.SH TROUBLESHOOTING + +In some cases game may fail to run with current +.B renpy +version due to various errors. + +In such case please try to use the closest +.B renpy +version to one used by game developer. Most games contain +.IR script_version.rpy " file in the " game " directory." +This file actually contains +.B renpy +version used during a game build. +You may install multiple slots of +.B renpy +in Gentoo and use +.BI eselect " renpy" +module to switch between various versions. + +If +.I game +directory contains both +.IR *.rpyc " (or " *.rpyo ") and " *.rpy " files, delete" +.IR *.rpyc " (or " *.rpyo ") files, they will be regenerated by" +the interpreter. +Another solution will be to switch between version of +.BR python (1) +using +.IR eselect (1) +tool in order to find one suitable to interpret game's +.IR *.rpyc " files." + +Some games may lack general media files, e.g. +.I click.ogg +sound, so you should create or download one and place in the +.I game +directory. + +Also please pay attention to +.I problems.html +page from +.B renpy +html documentation, see +.B FURTHER READING +section. +.\" **************************************************************** +.SH ENVIRONMENT VARIABLES + +.B renpy +supports a number of environment variables to control its +behaviour. Please refer to html docs for further details +(see +.B FURTHER READING +section). +.\" **************************************************************** +.SH FURTHER READING + +.B renpy +comes with extensive html documentation. To use it install +.B renpy +with +.I USE="doc" +and go to +.I /usr/share/doc/renpy-*/html/doc/index.html + +Alternatively one may refer to online documentation: +.IR http://www.renpy.org/doc/html/ . +Be warned that online docs maybe different from your current active +version, so it recommended to use shipped documentation instead. +.\" **************************************************************** +.SH BUGS + +Any bugs related to Gentoo packaging (e.g. omitted dependencies) +please report on bugzilla: +.IR https://bugs.gentoo.org . + +For bugs in the Ren'Py engine itself, please contact upstream: +.I https://github.com/renpy/renpy/issues +and add a Gentoo bug if you feel it necessary. + +For issues with games themselves please contact corresponding +authors. +.\" **************************************************************** +.SH SEE ALSO + +.BR python (1) +\- an interpreter used by Ren'Py engine. + +.BR unrpa (1) +\- a tool to unpack +.I *.rpa +data files (Ren'Py Archives). diff --git a/games-engines/renpy/metadata.xml b/games-engines/renpy/metadata.xml new file mode 100644 index 000000000000..98b754cf6590 --- /dev/null +++ b/games-engines/renpy/metadata.xml @@ -0,0 +1,30 @@ + + + + + bircoph@gentoo.org + Andrew Savchenko + + + Ren'Py is a free and cross-platform visual novel engine that + helps you use words, + pictures, and sounds to tell stories with the computer. + It`s easy and efficient script language makes it possible for + non-programmers to make visual novels, + while its Python support allows for complex simulation games. + + + Install IDE for game developers and + an empty game template + + + + pytom@bishoujo.us + Tom Rothamel + + http://www.renpy.org/latest.html + https://github.com/renpy/renpy/issues + http://renpy.org/wiki/renpy/doc + renpy/renpy + + diff --git a/games-engines/renpy/renpy-6.17.7.ebuild b/games-engines/renpy/renpy-6.17.7.ebuild new file mode 100644 index 000000000000..adc56df50743 --- /dev/null +++ b/games-engines/renpy/renpy-6.17.7.ebuild @@ -0,0 +1,110 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 +PYTHON_COMPAT=( python2_7 ) +DISTUTILS_IN_SOURCE_BUILD=1 +inherit eutils toolchain-funcs python-r1 versionator gnome2-utils games distutils-r1 + +DESCRIPTION="Visual novel engine written in python" +HOMEPAGE="http://www.renpy.org" +SRC_URI="http://www.renpy.org/dl/${PV}/${P}-source.tar.bz2" + +LICENSE="MIT" +SLOT="$(get_version_component_range 1-2)" +MYSLOT=$(delete_all_version_separators ${SLOT}) +KEYWORDS="amd64 x86" +IUSE="development doc examples" +REQUIRED_USE="examples? ( development )" + +RDEPEND=" + >=app-eselect/eselect-renpy-0.4 + dev-libs/fribidi + dev-python/pygame[X,${PYTHON_USEDEP}] + >=dev-lang/python-exec-0.3[${PYTHON_USEDEP}] + media-libs/glew:0 + media-libs/libpng:0 + media-libs/libsdl[X,video] + media-libs/freetype:2 + sys-libs/zlib + virtual/ffmpeg" +DEPEND="${RDEPEND} + dev-python/cython[${PYTHON_USEDEP}] + virtual/pkgconfig" + +S=${WORKDIR}/${P}-source + +pkg_setup() { + games_pkg_setup + export CFLAGS="${CFLAGS} $($(tc-getPKG_CONFIG) --cflags fribidi)" +} + +python_prepare_all() { + # wooosh! this should fix multiple abi + epatch "${FILESDIR}"/${P}-multiple-abi.patch + + einfo "Deleting precompiled python files" + find . -name '*.py[co]' -print -delete || die + + sed -i \ + -e "s/@SLOT@/${MYSLOT}/" \ + renpy.py renpy/common.py || die "setting slot failed!" + + distutils-r1_python_prepare_all +} + +python_compile() { + cd "${S}"/module || die + distutils-r1_python_compile +} + +python_install() { + cd "${S}"/module || die + distutils-r1_python_install --install-lib="$(python_get_sitedir)/renpy${MYSLOT}" + + cd "${S}" || die + python_scriptinto "${GAMES_BINDIR}" + python_newscript renpy.py ${PN}-${SLOT} + + python_moduleinto renpy${MYSLOT} + python_domodule renpy + if use development ; then + python_domodule launcher templates + fi + if use examples ; then + python_domodule the_question tutorial + fi +} + +python_install_all() { + if use development; then + newicon -s 32 launcher/game/images/logo32.png ${P}.png + make_desktop_entry ${PN}-${SLOT} "Ren'Py ${PV}" ${P} + fi + + if use doc; then + dohtml -r doc + fi + + prepgamesdirs +} + +pkg_preinst() { + games_pkg_preinst + use development && gnome2_icon_savelist +} + +pkg_postinst() { + games_pkg_postinst + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} + +pkg_postrm() { + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} diff --git a/games-engines/renpy/renpy-6.99.12.4-r1.ebuild b/games-engines/renpy/renpy-6.99.12.4-r1.ebuild new file mode 100644 index 000000000000..8c969e13c6bf --- /dev/null +++ b/games-engines/renpy/renpy-6.99.12.4-r1.ebuild @@ -0,0 +1,116 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=5 +PYTHON_COMPAT=( python2_7 ) +DISTUTILS_IN_SOURCE_BUILD=1 +inherit eutils games gnome2-utils toolchain-funcs versionator distutils-r1 + +DESCRIPTION="Visual novel engine written in python" +HOMEPAGE="http://www.renpy.org" +SRC_URI="http://www.renpy.org/dl/${PV}/${P}-source.tar.bz2" + +LICENSE="MIT" +SLOT="$(get_version_component_range 1-2)" +MYSLOT=$(delete_all_version_separators ${SLOT}) +KEYWORDS="~amd64 ~x86" +IUSE="development doc examples" +REQUIRED_USE="examples? ( development )" + +RDEPEND=" + >=app-eselect/eselect-renpy-0.6 + dev-libs/fribidi + ~dev-python/pygame_sdl2-${PV}[${PYTHON_USEDEP}] + >=dev-lang/python-exec-0.3[${PYTHON_USEDEP}] + media-libs/glew:0 + media-libs/libpng:0 + media-libs/libsdl2[video] + media-libs/freetype:2 + sys-libs/zlib + virtual/ffmpeg" +DEPEND="${RDEPEND} + dev-python/cython[${PYTHON_USEDEP}] + virtual/pkgconfig" + +S=${WORKDIR}/${P}-source + +PATCHES=( + "${FILESDIR}"/${P}-multiple-abi.patch + "${FILESDIR}"/${P}-compat-window.patch #601200 + "${FILESDIR}"/${P}-compat-style.patch +) + +pkg_setup() { + games_pkg_setup + export CFLAGS="${CFLAGS} $($(tc-getPKG_CONFIG) --cflags fribidi)" +} + +python_prepare_all() { + distutils-r1_python_prepare_all + + einfo "Deleting precompiled python files" + find . -name '*.py[co]' -print -delete || die + + sed -i \ + -e "s/@SLOT@/${MYSLOT}/" \ + renpy.py renpy/common.py || die "setting slot failed!" +} + +python_compile() { + cd "${S}"/module || die + distutils-r1_python_compile +} + +python_install() { + cd "${S}"/module || die + distutils-r1_python_install --install-lib="$(python_get_sitedir)/renpy${MYSLOT}" + + cd "${S}" || die + python_scriptinto "${GAMES_BINDIR}" + python_newscript renpy.py ${PN}-${SLOT} + + python_moduleinto renpy${MYSLOT} + python_domodule renpy + if use development ; then + python_domodule launcher templates + fi + if use examples ; then + python_domodule the_question tutorial + fi +} + +python_install_all() { + distutils-r1_python_install_all + if use development; then + newicon -s 32 launcher/game/images/logo32.png ${P}.png + make_desktop_entry ${PN}-${SLOT} "Ren'Py ${PV}" ${P} + fi + + if use doc; then + insinto "/usr/share/doc/${PF}/html" + doins -r doc/* + fi + newman "${FILESDIR}/${PN}.1" "${P}.1" + + prepgamesdirs +} + +pkg_preinst() { + games_pkg_preinst + use development && gnome2_icon_savelist +} + +pkg_postinst() { + games_pkg_postinst + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} + +pkg_postrm() { + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} diff --git a/games-engines/renpy/renpy-6.99.12.4-r3.ebuild b/games-engines/renpy/renpy-6.99.12.4-r3.ebuild new file mode 100644 index 000000000000..27a1a8b3f14e --- /dev/null +++ b/games-engines/renpy/renpy-6.99.12.4-r3.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python2_7 ) +DISTUTILS_IN_SOURCE_BUILD=1 +inherit eutils gnome2-utils toolchain-funcs versionator distutils-r1 + +DESCRIPTION="Visual novel engine written in python" +HOMEPAGE="http://www.renpy.org" +SRC_URI="http://www.renpy.org/dl/${PV}/${P}-source.tar.bz2" + +LICENSE="MIT" +SLOT="$(get_version_component_range 1-2)" +MYSLOT=$(delete_all_version_separators ${SLOT}) +KEYWORDS="amd64 x86" +IUSE="development doc examples" +REQUIRED_USE="examples? ( development )" + +RDEPEND=" + >=app-eselect/eselect-renpy-0.7 + dev-libs/fribidi + ~dev-python/pygame_sdl2-${PV}[${PYTHON_USEDEP}] + >=dev-lang/python-exec-0.3[${PYTHON_USEDEP}] + media-libs/glew:0 + media-libs/libpng:0 + media-libs/libsdl2[video] + media-libs/freetype:2 + sys-libs/zlib + virtual/ffmpeg" +DEPEND="${RDEPEND} + dev-python/cython[${PYTHON_USEDEP}] + virtual/pkgconfig" + +S=${WORKDIR}/${P}-source + +PATCHES=( + "${FILESDIR}"/${P}-multiple-abi.patch + "${FILESDIR}"/${P}-compat-window.patch #601200 + "${FILESDIR}"/${P}-compat-style.patch + "${FILESDIR}"/${P}-compat-infinite-loop.patch +) + +python_prepare_all() { + export CFLAGS="${CFLAGS} $($(tc-getPKG_CONFIG) --cflags fribidi)" + distutils-r1_python_prepare_all + + einfo "Deleting precompiled python files" + find . -name '*.py[co]' -print -delete || die + + sed -i \ + -e "s/@SLOT@/${MYSLOT}/" \ + renpy.py renpy/common.py || die "setting slot failed!" +} + +python_compile() { + cd "${S}"/module || die + distutils-r1_python_compile +} + +python_install() { + cd "${S}"/module || die + distutils-r1_python_install --install-lib="$(python_get_sitedir)/renpy${MYSLOT}" + + cd "${S}" || die + python_newscript renpy.py ${PN}-${SLOT} + + python_moduleinto renpy${MYSLOT} + python_domodule renpy + if use development ; then + python_domodule launcher templates + fi + if use examples ; then + python_domodule the_question tutorial + fi +} + +python_install_all() { + distutils-r1_python_install_all + if use development; then + newicon -s 32 launcher/game/images/logo32.png ${P}.png + make_desktop_entry ${PN}-${SLOT} "Ren'Py ${PV}" ${P} + fi + + if use doc; then + insinto "/usr/share/doc/${PF}/html" + doins -r doc/* + fi + newman "${FILESDIR}/${PN}.1" "${P}.1" +} + +pkg_preinst() { + use development && gnome2_icon_savelist +} + +pkg_postinst() { + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} + +pkg_postrm() { + use development && gnome2_icon_cache_update + + einfo "running: eselect renpy update --if-unset" + eselect renpy update --if-unset +} -- cgit v1.2.3