2.26.0 feature release
* Deprecation notices:
* ./play.it can no longer be run by the root account, unless PLAYIT_OPTION_RUN_AS_ROOT=1 is set.
* ${PLAYIT_WORKDIR}/gamedata is deleted automatically at the end of the content_inclusion_default execution for game
cripts targeting a compatibility level ≥ 2.26, so a manual deletion attempt after that would fail.
* target_version should no longer be set for game scripts targeting ./play.it ≥ 2.26. See "New way to set the compat
ility level from a game script".
* The legacy variable SOURCE_ARCHIVE should no longer be used from game scripts. See "Improvements to archives conte
extraction".
* The legacy variable ARCHIVE_xxx should no longer be used to set neither the archive name nor the archive path. See
New archives properties".
* New way to set the compatibility level from a game script:
* Setting the compatibility level should be done using a new variable: PLAYIT_COMPATIBILITY_LEVEL.
* Setting a compatibility level is no longer required. It is still very strongly recommended. Game scripts with no c
patibility level set will break.
* New functions are provided to work with the compatibility level:
- compatibility_level: Get the compatibility level that has been requested.
- compatibility_level_is_at_least: Check the compatibility level against a given version.
* Improvements to archives content extraction:
* A new function is provided to extract content from the current archive: archive_extraction_default. Unlike archive
xtraction, it does not take any argument and will automatically pick the current archive (the one passed on the comman
line or found in the current directory).
* New archives properties:
* A new variable is exposed to set an archive name: ARCHIVE_xxx_NAME.
* A new variable is exposed to set an archive path: ARCHIVE_xxx_PATH.
* The presence of archive extra parts is checked automatically up to ARCHIVE_xxx_PART99.
* Support for obsolete native libraries provided through downloadable archives:
* Support for the following native libraries is added:
- libcurl.so.4+CURL_OPENSSL_3 (libcurl.so.3 and libcurl.so.4 including the CURL_OPENSSL_3 symbol)
- libFLAC.so.8
- libidn.so.11
- libpng12.so.0
- libssl.so.1.0.0
- libssl.so.1.1
* Adding a dependency on one of these libraries is done by including it in PKG_xxx_DEPENDENCIES_LIBRARIES, like it i
done for system-provided packages.
* The extra archive is required only when building packages for a system that does not provided the expected library
rom its repositories.
* To be able to use these dependencies, the new function "archive_extraction_default" must be used. See "Improvement
to archives content extraction".
* Provide the ability to use a fake $HOME path, to prevent cluttering of the real $HOME:
* The fake $HOME path is automatically enabled if FAKE_HOME_PERSISTENT_DIRECTORIES is set by the game script. Paths
sted in this variable are diverted to persistent storage. The default fake $HOME path is ${XDG_CACHE_HOME}/play.it/hom
${GAME_ID}, this path can be overridden at runtime by exporting the variable PLAYIT_FAKE_HOME_PATH.
* XDG basedir paths from the fake $HOME are automatically diverted to the same paths in the real $HOME.
* Support for LD_PRELOAD hacks:
* A list of hacks can be provided by PRELOAD_HACKS_LIST, one per line.
* Each hack must set the following properties:
- HACK_xxx_NAME
- HACK_xxx_DESCRIPTION
- HACK_xxx_PACKAGE (can be omitted, probably not a good idea)
- HACK_xxx_SOURCE
* The following new function should be called from the game script to build and include the hacks: hacks_inclusion_d
ault.
* Improvements to the handling of packages metadata:
* The "package_description" function now only returns the value of PKG_xxx_DESCRIPTION, without extra formatting. In
ddition, it triggers an error if this description includes line breaks.
* Expansion of the context system:
* The following variables got support for contextual values:
- APPLICATIONS_PREFIX_TYPE
- APP_xxx_PREFIX_TYPE
- APP_xxx_PRERUN
- APP_xxx_POSTRUN
- USER_PERSISTENT_FILES
- USER_PERSISTENT_DIRECTORIES
* Rework packages post-installation and pre-removal actions:
* A new variable can be set to a list of warnings that are displayed post-installation, one per line: PKG_xxx_POSTINST_WARNINGS.