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.