diff options
author | Haelwenn (lanodan) Monnier <contact@hacktivis.me> | 2023-08-07 12:24:16 +0200 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-12-21 12:43:25 +0000 |
commit | e75018a21019f09adfa3ae6e03aaf67bebbb8425 (patch) | |
tree | 66dde146e038d5c33fe5a5610b36d5a80e717fad /games-engines | |
parent | dev-python/pygame_sdl2: add 8.1.3 (diff) | |
download | gentoo-e75018a21019f09adfa3ae6e03aaf67bebbb8425.tar.gz gentoo-e75018a21019f09adfa3ae6e03aaf67bebbb8425.tar.bz2 gentoo-e75018a21019f09adfa3ae6e03aaf67bebbb8425.zip |
games-engines/renpy: new package, add 8.1.3
Signed-off-by: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Closes: https://github.com/gentoo/gentoo/pull/29795
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'games-engines')
-rw-r--r-- | games-engines/renpy/Manifest | 1 | ||||
-rw-r--r-- | games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch | 44 | ||||
-rw-r--r-- | games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch | 45 | ||||
-rw-r--r-- | games-engines/renpy/files/renpy-8.1.0-ignore_rpyc_errors.patch | 23 | ||||
-rw-r--r-- | games-engines/renpy/files/renpy-8.1.3-system-path.patch | 19 | ||||
-rw-r--r-- | games-engines/renpy/files/renpy.1 | 163 | ||||
-rw-r--r-- | games-engines/renpy/metadata.xml | 33 | ||||
-rw-r--r-- | games-engines/renpy/renpy-8.1.3.ebuild | 110 |
8 files changed, 438 insertions, 0 deletions
diff --git a/games-engines/renpy/Manifest b/games-engines/renpy/Manifest new file mode 100644 index 000000000000..c68fa9f0242a --- /dev/null +++ b/games-engines/renpy/Manifest @@ -0,0 +1 @@ +DIST renpy-8.1.3-source.tar.bz2 69220231 BLAKE2B fe9295da7081dda77c2a720138cdd63b744d40844ce5a0bb4164720cf34f828cbf25ac77e1aa57e95585ad6eab644cd0fff2a3a818e6b86482e589a28f40affa SHA512 22304cf8e7328c50ff897761ec0a504e8618d53484491f4196ad93015656dd08c2197c11adea83069682912a5b8d05d3223e3ad34fa68881abdad5f73e51884b 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..81ed644363ac --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch @@ -0,0 +1,44 @@ +https://github.com/renpy/renpy/pull/1216 +https://github.com/bircoph/renpy/commit/ff308191a190bf7c5c2118a31f3d8569a0904c04 + +commit ff308191a190bf7c5c2118a31f3d8569a0904c04 +Author: Andrew Savchenko <bircoph@gmail.com> +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..2c514027ea23 --- /dev/null +++ b/games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch @@ -0,0 +1,45 @@ +https://github.com/bircoph/renpy/commit/1d350d993d2b51df7880e92b48ed103e059ec385 + +commit 1d350d993d2b51df7880e92b48ed103e059ec385 +Author: Andrew Savchenko <bircoph@gmail.com> +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 <module> + 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-8.1.0-ignore_rpyc_errors.patch b/games-engines/renpy/files/renpy-8.1.0-ignore_rpyc_errors.patch new file mode 100644 index 000000000000..50c333ea4971 --- /dev/null +++ b/games-engines/renpy/files/renpy-8.1.0-ignore_rpyc_errors.patch @@ -0,0 +1,23 @@ +Better way would probably be to have renpy not even try to write to system paths in the first place. + +13: EACCES (no write permission) +30: EROFS (read-only filesystem) + +diff --git a/renpy/script.py b/renpy/script.py +index 3e5dae8..8f103c1 100644 +--- a/renpy/script.py ++++ b/renpy/script.py +@@ -656,6 +656,10 @@ class Script(object): + rpydigest = hashlib.md5(fullf.read()).digest() + + self.write_rpyc_md5(f, rpydigest) ++ except OSError as e: ++ if e.errno not in [13, 30]: ++ import traceback ++ traceback.print_exc() + except Exception: + import traceback + traceback.print_exc() +-- +2.37.1 + diff --git a/games-engines/renpy/files/renpy-8.1.3-system-path.patch b/games-engines/renpy/files/renpy-8.1.3-system-path.patch new file mode 100644 index 000000000000..c3e3c9beccb8 --- /dev/null +++ b/games-engines/renpy/files/renpy-8.1.3-system-path.patch @@ -0,0 +1,19 @@ +--- a/renpy.py ++++ b/renpy.py +@@ -30,6 +30,7 @@ from __future__ import print_function, absolute_import + import os + import sys + import warnings ++import sysconfig + + # Functions to be customized by distributors. ################################ + +@@ -209,7 +209,7 @@ def path_to_renpy_base(): + Returns the absolute path to thew Ren'Py base directory. + """ + +- renpy_base = os.path.dirname(os.path.abspath(__file__)) ++ renpy_base = sysconfig.get_path('platlib') + renpy_base = os.path.abspath(renpy_base) + + return renpy_base 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..a3bdbf876916 --- /dev/null +++ b/games-engines/renpy/metadata.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <longdescription> + 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. + </longdescription> + <use> + <flag name="development">Install IDE for game developers and an empty game template</flag> + </use> + <maintainer type="person" proxied="yes"> + <email>contact@hacktivis.me</email> + <name>Haelwenn (lanodan) Monnier</name> + </maintainer> + <maintainer type="project" proxied="proxy"> + <email>proxy-maint@gentoo.org</email> + <name>Proxy Maintainers</name> + </maintainer> + <upstream> + <maintainer status="active"> + <email>pytom@bishoujo.us</email> + <name>Tom Rothamel</name> + </maintainer> + <changelog>http://www.renpy.org/latest.html</changelog> + <bugs-to>https://github.com/renpy/renpy/issues</bugs-to> + <doc>http://renpy.org/wiki/renpy/doc</doc> + <remote-id type="github">renpy/renpy</remote-id> + </upstream> +</pkgmetadata> diff --git a/games-engines/renpy/renpy-8.1.3.ebuild b/games-engines/renpy/renpy-8.1.3.ebuild new file mode 100644 index 000000000000..6877ee69d65f --- /dev/null +++ b/games-engines/renpy/renpy-8.1.3.ebuild @@ -0,0 +1,110 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_{10..11} ) +DISTUTILS_SINGLE_IMPL=1 +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +inherit gnome2-utils distutils-r1 + +DESCRIPTION="Visual novel engine written in python" +HOMEPAGE="https://www.renpy.org" +SRC_URI="https://www.renpy.org/dl/${PV}/${P}-source.tar.bz2" +S="${WORKDIR}/${P}-source" + +LICENSE="MIT" +SLOT=0 +KEYWORDS="~amd64 ~x86" +IUSE="development doc examples" +REQUIRED_USE="examples? ( development )" + +BDEPEND=" + $(python_gen_cond_dep '<dev-python/cython-3[${PYTHON_USEDEP}]') + virtual/pkgconfig" +DEPEND=" + dev-libs/fribidi + $(python_gen_cond_dep ' + >=dev-python/pygame_sdl2-8.1.1[${PYTHON_USEDEP}] + >=dev-lang/python-exec-0.3[${PYTHON_USEDEP}] + dev-python/ecdsa[${PYTHON_USEDEP}] + ') + media-libs/glew:0 + media-libs/libpng:0 + media-libs/libsdl2[video] + media-libs/freetype:2 + sys-libs/zlib + media-video/ffmpeg:= +" +RDEPEND="${DEPEND} + !app-eselect/eselect-renpy" + +PATCHES=( + "${FILESDIR}/renpy-6.99.12.4-compat-style.patch" + "${FILESDIR}/renpy-6.99.12.4-compat-infinite-loop.patch" + "${FILESDIR}/renpy-8.1.0-ignore_rpyc_errors.patch" + "${FILESDIR}/renpy-8.1.3-system-path.patch" +) + +python_prepare_all() { + einfo "Deleting precompiled python files" + find . -name '*.py[co]' -print -delete || die + + 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 + + cd "${S}" || die + python_newscript renpy.py ${PN} + + python_domodule renpy + if use development ; then + python_domodule launcher + 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} "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 + + local v + for v in ${REPLACING_VERSIONS}; do + ver_test "${v}" -ge 7 && continue + einfo "Starting from ${PN}-7 slots are dropped." + einfo "RenPy natively supports compatibility with games made for older versions." + einfo "Report bugs upstream on such problems, usually they are easy to fix." + break + done +} + +pkg_postrm() { + use development && gnome2_icon_cache_update +} |