Skip to content
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.