summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>2023-08-07 12:24:16 +0200
committerSam James <sam@gentoo.org>2023-12-21 12:43:25 +0000
commite75018a21019f09adfa3ae6e03aaf67bebbb8425 (patch)
tree66dde146e038d5c33fe5a5610b36d5a80e717fad /games-engines
parentdev-python/pygame_sdl2: add 8.1.3 (diff)
downloadgentoo-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/Manifest1
-rw-r--r--games-engines/renpy/files/renpy-6.99.12.4-compat-infinite-loop.patch44
-rw-r--r--games-engines/renpy/files/renpy-6.99.12.4-compat-style.patch45
-rw-r--r--games-engines/renpy/files/renpy-8.1.0-ignore_rpyc_errors.patch23
-rw-r--r--games-engines/renpy/files/renpy-8.1.3-system-path.patch19
-rw-r--r--games-engines/renpy/files/renpy.1163
-rw-r--r--games-engines/renpy/metadata.xml33
-rw-r--r--games-engines/renpy/renpy-8.1.3.ebuild110
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
+}