Skip to content
2.22.0 feature release

Deprecation notices:

* Multiple options are dropped, here are the replacements that should be used:
  - --icons yes (no replacement, this is the default behaviour)
  - --icons no → --no-icons
  - --skip-free-space-check → --no-free-space-check
  - -c → --config-file
  - -h → --help
  - -v → --version
* Functions used to fetch packages metadata have been renamed:
  - packages_get_maintainer → package_maintainer
  - packages_get_version → package_version (a compatibility alias is provided)
  - package_get_architecture → package_architecture
  - package_get_architecture_string → package_architecture_string
  - package_get_description → package_description
  - package_get_id → package_id
* "launcher_write_script_wine_run" is obsolete, "wine_launcher_run" should be used instead. A compatibility wrapper is provided for game scripts targeting ./play.it < 2.22.
* Legacy environment variables (usually "OPTION_xxx") are still exported only for game scripts targeting ./play.it ≤ 2.22. See "Options system rework" below for more details.
* The legacy values for --compression are still valid only for game scripts targeting ./play.it ≤ 2.22. See "Compression methods rework" below for more details.
* "unity3d" is no longer a full blown application type, but a variant of the application type "native". See "New application type variant system" below for more details.
* The internal test "variable_is_set" is dropped. "get_value" no longer throws an error when trying to query an unset variable, it returns an empty value instead.

Options system rework:

* A new function is provided to fetch the current value of a given option:
  option_value $option_name
  As an example, instead of a direct use of the value of the deprecated variable $OPTION_COMPRESSION, the following function call should be used:
  option_value 'compression'
* The game archive is no longer the first mandatory argument when calling the "play.it" command. It can now be provided anywhere on the command line.
* All options can be set using environment variables, here is the full list of command line arguments and for each one the equivalent environment variable:
  - --checksum → PLAYIT_OPTION_CHECKSUM
  - --compression → PLAYIT_OPTION_COMPRESSION
  - --config-file → PLAYIT_OPTION_CONFIG_FILE
  - --debug → PLAYIT_OPTION_DEBUG
  - --help → PLAYIT_OPTION_HELP
  - --list-packages → PLAYIT_OPTION_LIST_PACKAGES
  - --list-requirements → PLAYIT_OPTION_LIST_REQUIREMENTS
  - --no-free-space-check → PLAYIT_OPTION_FREE_SPACE_CHECK
  - --no-icons → PLAYIT_OPTION_ICONS
  - --no-mtree → PLAYIT_OPTION_MTREE
  - --overwrite → PLAYIT_OPTION_OVERWRITE
  - --output-dir → PLAYIT_OPTION_OUTPUT_DIR
  - --package → PLAYIT_OPTION_PACKAGE
  - --prefix → PLAYIT_OPTION_PREFIX
  - --show-game-script → PLAYIT_OPTION_SHOW_GAME_SCRIPT
  - --tmpdir → PLAYIT_OPTION_TMPDIR
  - --version → PLAYIT_OPTION_VERSION
  If a same option is set using both an environment variable and a command line argument, the command line argument is ignored.

Compression methods rework:

* Compression options are no longer specific to the target package format, the same four values are available:
  - "none":  no compression (default value)
  - "speed": compression method focusing on compression speed
  - "size":  compression method focusing on size reduction
  - "auto":  use the current defaults for the packages generation tool (not supported when building packages for Arch Linux)
  The legacy values are still available for game scripts targeting ./play.it ≤ 2.22, but their use triggers a deprecation warning. For game scripts targeting ./play.it > 2.22, an error is thrown.

New application type variant system:

* The application type variant can be set from a game script using the variable "APP_xxx_TYPE_VARIANT". There is only one accepted value for now: "unity3d".
* Unity3D games for Windows are no longer wrongly identified as native Linux games if they set "UNITY3D_NAME" but not "APP_xxx_TYPE".
* A dedicated per-session log file is used for Unity3D games running through WINE.

Changes related to packages:

* Environment variables set for Debian tools are followed when trying to get the maintainer name and e-mail.

Changes specific to Debian:

* The generation of the DEBIAN/control file is moved to a dedicated function.
* The package metadata generation is updated to no longer rely on implicit variable inheritance.

Dead code removals:

* Support is dropped for unused compatibility wrappers:
  - package_get_current
* Support is dropped for unused messages:
  - error_archive_unset
  - error_context_invalid
  - error_no_valid_temp_dir_found
  - error_obsolete_function
  - print_ok
  - warning_missing_library
* Support is dropped for unused generic dependency keywords:
  - bzip2
  - gconf
  - libcurl
  - libcurl-gnutls
  - sdl1.2
  - sdl2_image
  - sdl2_mixer
  - theora
  - vorbis
  - wine-staging / wine32-staging / wine64-staging
  - xft