Skip to content
Tags give the ability to mark specific points in history as being important
  • 2.29.0
    b7f36efd · 2.29.0 feature release ·
    2.29.0 feature release
    
    Deprecation notices:
    
    * The obsolete function package_architecture_string has been dropped.
    * Support for the legacy PKG_xxx_PATH variables is dropped.
      Game scripts should rely on the package_path function instead.
    * The special behaviour of APP_xxx_PRERUN / APP_xxx_POSTRUN for DOSBox is dropped.
      The actions listed in these variables are now always executed before/after calling DOSBox.
    * The following variables are no longer exported:
      - PATH_BIN
      - PATH_DESK
      - PATH_DOC
      - PATH_GAME
      - PATH_ICON_BASE
      The following functions should be used instead:
      - path_binaries
      - path_xdg_desktop
      - path_documentation
      - path_game_data
      - path_icons
    * The following compatibility wrappers are no longer in use by game scripts, and have been removed:
      - archive_get_type
      - context_archive_suffix
      - context_package
      - packages_get_list
    
    Codebase improvements:
    
    * APPLICATIONS_LIST can now be omitted if APP_xxx_TYPE is set.
    * hacks_inclusion_default no longer relies on the package context.
      It loops over the full list of packages, then build and include the hacks for all relevant packages.
    * launcher_write_desktop is updated to no longer rely on the package context.
      The launcher_write_desktop function now expects two arguments:
      USAGE: launcher_write_desktop $package $application
    * Some tar decompression options are explicitly set based on the archive type.
      This prevents tar from failing to extract the content of archives using a non-standard extension.
      The following archive types are included:
      - "tar.bz2" → add "--bunzip2"
      - "tar.gz"  → add "--gzip"
      - "tar.xz"  → add "--xz"
    * A new function is provided to clean-up snippets: snippet_clean.
      The following operation is done on the function input:
      - convert the series of 4 spaces to tabulations.
    * A new function is provided to clean-up lists: list_clean.
      The following operations are done on the function input:
      - remove leading and trailing spaces (including tabs);
      - sort the list and merge duplicate entries;
      - remove empty lines.
    
    Optional icons archives:
    
    * An optional archive providing icons for the current game can be included in a game script by setting the following variables:
      - ARCHIVE_OPTIONAL_ICONS_NAME
      - ARCHIVE_OPTIONAL_ICONS_MD5
      - ARCHIVE_OPTIONAL_ICONS_URL
      - CONTENT_ICONS_PATH
      - CONTENT_ICONS_FILES
      The inclusion is done from the archive, if provided, when the icons inclusion function is called: content_inclusion_icons.
      If the archive is not provided, the inclusion is done from the icon shipped in the game installer (if such an icon is available).
    
    Better integration of shipped fonts:
    
    * A new function is provided to print the install path for TrueType fonts: path_fonts_ttf.
    * A list of TTF font files to include can be set using CONTENT_FONTS_xxx_PATH + CONTENT_FONTS_xxx_FILES.
    
    Improved Ren'Py support:
    
    * Game scripts can rely on system-provided Ren'Py by setting:
      APP_xxx_TYPE='renpy'
      Such game scripts do not rely on APP_xxx_EXE.
      The game content should be available at the root of the game install path. Shipped binaries and libraries should all be excluded from the package.
    
    Improved support for custom launchers:
    
    * Custom launchers can be generated by setting:
      APP_xxx_TYPE='custom'
      and a "custom_launcher" function.
      This function should output the full content of the launcher script that is to be included in the package.
    
    More supported dependencies:
    
    * Support is added for "audioconvert" GStreamer decoder.
    
    Changes specific to DOSBox games:
    
    * The detection of DOS binaries is improved to include .com files in addition to .exe ones.
    
    Changes specific to WINE games:
    
    * Game scripts can require the installation of Mono in the WINE prefix by setting:
      WINE_WINEPREFIX_TWEAKS='mono'
      When Mono is to be installed, the "wine-mono-8.0.0-x86.msi" archive downloadable from the following URL is required:
      https://dl.winehq.org/wine/wine-mono/8.0.0/
    
    Changes specific to Debian:
    
    * The generation of the following metadata files has been reworked:
      - DEBIAN/control
      - DEBIAN/postinst
      - DEBIAN/prerm
    * The fields in DEBIAN/control are now all filled using dedicated functions.
    
    Changes specific to Arch Linux:
    
    * The generation of the following metadata files has been reworked:
      - .PKGINFO
      - .INSTALL
    * The fields in .PKGINFO are now all filled using dedicated functions.
    
    Changes specific to Gentoo:
    
    * The generation of the ebuild has been reworked, and most of it is now filled using dedicated functions.
      This change has been done for both the "gentoo" variant (binary packages) and the "egentoo" variant (source packages).
    
  • 2.28.1
    cab92e46 · 2.28.1 bugfix release ·
    2.28.1 bugfix release
    
    * Check the validity of game scripts compatibility level declaration.
    * Fix typos in several messages.
    * Display an explicit error when no .ico file is extracted from a given .exe.
    * Fix icons inclusion using legacy functions.
      The following functions should no longer trigger an error:
      - icons_get_from_package
      - icons_get_from_workdir
    
  • 2.28.0
    d178746d · 2.28.0 feature release ·
    2.28.0 feature update
    
    * Deprecation notices:
      * The function icons_inclusion is deprecated, content_inclusion_icons should be used instead.
        cf. "Icons system" below.
      * The functions launchers_write and launcher_write are deprecated, launchers_generation should be used instead.
        cf. "Launchers system" below.
      * The function launcher_desktop_exec is deprecated, desktop_field_exec should be used instead.
        cf. "Launchers system" below.
      * Support for the following deprecated archive types is dropped:
        - mojosetup_unzip
        - zip_unclean
      * Support for the following deprecated functions is dropped:
        - archive_find_path
        - get_context_specific_value
        - launcher_native_libraries_paths
        - launcher_write_script_headers
        - package_get_path
        - packages_get_version
      * Support for the following deprecated variables is dropped:
        - APP_xxx_ICON_ID
        - APP_xxx_LIBS
        - OPTION_xxx
      * Declaring dependencies on the following native libraries is no longer supported:
        - libavcodec.so.58
        - libavformat.so.58
        - libavutil.so.56
    
    * Codebase improvements:
      * A package-specific contextual value can now be set for GAME_ID.
      * The environment language detection now honours LC_ALL and LC_MESSAGES, in addition to LANG.
    
    * Icons system:
      * A new function is provided to include game icons: content_inclusion_icons
        USAGE: content_inclusion_icons [$package [$application…]]
    
    * Launchers system:
      * The game execution command-line can now be overridden from game scripts by redefining the function game_exec_line.
      * New functions are provided to easily fetch or override the value of fields in XDG desktop files:
        - desktop_field_exec
        - desktop_field_icon
      * A new function is provided to generate launchers: launchers_generation
        USAGE: launchers_generation [$package [$application…]]
    
    * Dependencies system:
      * Support for the following native library is updated to rely on a downloadable archive:
        - libgconf-2.so.4
    
    * Changes specific to game engines:
      * Unity3D: A more targeted list of libraries is included for Windows builds.
      * ScummVM: Hyphen-minus is now allowed in ScummVM ids, like in the following valid example: "ags:gobliiins5-1".
      * WINE: A virtual desktop can be set from game scripts, using the following variable: WINE_VIRTUAL_DESKTOP.
        WINE_VIRTUAL_DESKTOP can take the following values:
        - none (default if no value is set)
        - auto (use the current screen resolution when the game is launched for the first time)
        - some specific resolution (example: 1280x1024)
    
    * Changes specific to Debian:
      * dpkg-deb ≥ 1.19.0 is required.
      * fakeroot is no longer required.
    
    * Changes specific to Gentoo:
      * Several use flags are added to scummvm.
    
  • 2.27.4
    852521e8 · 2.27.4 bugfix release ·
    2.27.4 bugfix release
    
    * An explicit error message is shown if the compilation of a preload shim failed.
    * Support for dependencies on several native libraries is added:
      - libboost_locale.so.1.74.0
      - libdbus-glib-1.so.2
      - libnotify.so.4
      - libtheoraenc.so.1
    
  • 2.27.3
    1c158f9d · 2.27.3 bugfix release ·
    2.27.3 bugfix release
    
    * Prevent the current umask value to mess with permissions on packaged paths.
    * Ensure the package context is always set when fetching the path to install libraries into.
    * Debian - Drop the chmod calls made obsolete by the explicit umask setting.
    * Gentoo - Drop an obsolete check that would always fail.
    * Gentoo - Prevent a call to egentoo_package_name when using the gentoo variant.
    * Gentoo - Fix copying of symbolic links during installation.
    
  • 2.27.2
    624a8d10 · 2.27.2 bugfix release ·
    2.27.2 bugfix release
    
    * application_type - Ensure errors always stop the execution.
    * error_archive_not_found - Improve the message shown when a required archive is missing.
    * gentoo_package_build_single - Display an explicit error if the `ebuild (…) manifest` call failed.
    * package_archlinux_create_mtree - Fix the message severity level.
    * path_libraries - Ensure the value is always coherent with the package architecture.
    * temporary_directory_checks - Skip all checks if no file operation is going to take place.
    * Add support for dependencies on several commands:
      - corsix-th
      - sed
      - setxkbmap
    * Add support for dependencies on several native libraries:
      - libEGL.so.1
      - libfribidi.so.0
      - libminizip.so.1
      - libtcmalloc_minimal.so.4
      - libwayland-client.so.0
    
  • 2.27.1
    e70a5dc7 · 2.27.1 bugfix release ·
    2.27.1 bugfix release
    
    * Ensure that a missing required extra archive stops the script execution.
    * error_icon_path_empty - Fix showing the error message when LANG is not set to "fr_*" or "en_*".
    * launcher_target_presence_check - Ensure that the script execution stops if the binary path is not set.
    * unity3d_icon_path - Throw an error if no application type is found.
    * unity3d_application_exe_default - Throw an error if no binary could be found.
    
  • 2.27.0
    8cfce3ff · 2.27.0 feature release ·
    2.27.0 feature release
    
    * Deprecation notices:
      * Support for the following deprecated functions is dropped:
        - context_specific_value
        - icons_linking_postinst
        - organize_data
        - use_archive_specific_value
      * Support for the following message functions is dropped:
        - print_warning
        - print_error
        See "New wrapper for messages display" for more details.
      * archive_get_type is deprecated, archive_type should be used instead. See "Changes related to archives" for more details.
      * The legacy global variables ARCHIVE and PKG should no longer be used. See "Improvements of the context system" for more details.
      * The functions context_archive and context_package are deprecated. See "Improvements of the context system" for more details.
      * The variable APP_xxx_TYPE_VARIANT is no longer supported, GAME_ENGINE should be used instead. It can usually be omitted, like with APP_xxx_TYPE_VARIANT.
      * The packages_get_list function is deprecated, packages_list should be used instead.
    
    * New wrapper for messages display:
      * A new function is provided to display all messages: print_message
        It expects a priority level as its first argument:
        - `print_message 'error' $message` replaces `print_error ; printf $message`
        - `print_message 'warning' $message` replaces `print_warning ; printf $message`
        - `print_message 'info' $message` replaces `printf $message`
    
    * Changes related to archives:
      * The presence of an optional archive can be checked using a dedicated function: archive_is_available
      * The type of an archive is retrieved using a new function: archive_type
        Unlike the previous function (archive_get_type), this will not trigger an error if no type is set for the given archive.
    
    * Improvements related to icons extraction:
      * A new function is provided to get the full path to an icon file: icon_full_path
      * Most functions related to icons extraction now take an icon identifier instead of the path to an icon file.
      * Reliance on the global variable WRESTOOL_OPTIONS is dropped.
    
    * Improvements of the context system:
      * A new function is provided to set the current archive: set_current_archive
      * A new function is provided to set the current package: set_current_package
      * The functions used to get the current context have been renamed:
        - context_archive → current_archive
        - context_package → current_package
    
    * Support for Visionaire engine:
      * A game script can rely on Visionaire engine support by setting GAME_ENGINE='visionaire' or by setting a value to
    IONAIRE_NAME. Since the engine value falls back to "visionaire" when VISIONAIRE_NAME is set, GAME_ENGINE can usually
    omitted.
      * Default values are set for multiple variables:
        - APPLICATIONS_LIST
        - APP_xxx_EXE
        - CONTENT_LIBS_BIN_PATH
        - CONTENT_LIBS_BIN_FILES
        - CONTENT_GAME_BIN_FILES
        - CONTENT_GAME_DATA_FILES
        - CONTENT_DOC_DATA_PATH
        - CONTENT_DOC_DATA_FILES
        - PACKAGES_LIST
        - PKG_DATA_ID
        - PKG_DATA_DESCRIPTION
        - PKG_BIN_DEPS
        - PKG_BIN_DEPENDENCIES_LIBRARIES
      * For native Linux games, the used of system SDL is forced.
      * For WINE games, SDL_VIDEODRIVER is prevented from taking the value "wayland".
    
    * Improvements specific to WINE games:
      * A new compatibility link is added in the WINE user directory: "Local Settings/Application Data" → "AppData/Local".
    
    * Improvements specific to Unity3D games:
      * For native Linux games, the use of system SDL is forced.
    
  • 2.26.3
    52524871 · 2.26.3 bugfix release ·
    2.26.3 bugfix release
    
    * archive_path - Ensure that the output is always empty when the archive is not set.
    * icon_application - Print an explicit error if no application identifier could be found for the given icon.
    * launcher_target_presence_check - Do not display an error when no application type is set.
    * launcher_write_script - Check for the binary presence early.
    * Arch Linux: Fix .INSTALL metadata file generation when post-installation messages are set.
    
  • 2.26.2
    93e1c1fb · 2.26.2 bugfix release ·
    2.26.2 bugfix release
    
    * archive_dependencies_check - Ensure that a failure to get the archive type triggers a fatal error.
    * archive_name - Add ability to compute the archive name from ARCHIVE_xxx_PATH.
    * archives_integrity_check_md5 - Prevent an unexpected hashsum mismatch error for archives with no expected MD5 hash set.
    * icon_application - Prevent a mix up between applications sharing a similar prefix.
    * Arch Linux - Fix broken .PKGINFO "conflict" / "provides" fields.
    
  • 2.26.1
    286eede0 · 2.26.1 bugfix release ·
    2.26.1 bugfix release
    
    * Fix archive integrity check when using extra archives providing native libraries.
    * Always use an absolute path for the archive path.
    * Store a cached value of the archive path the first time it is computed.
    * Ensure that archive content extraction using unzip overwrites files.
    * Debian - Ensure that dpkg-deb follows the custom TMPDIR value.
    
  • 2.26.0
    0a564acb · 2.26.0 feature release ·
    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.
    
  • 2.25.6
    9f69cdea · 2.25.6 bugfix release ·
    2.25.6 bugfix release
    
    * content_inclusion_chunk_single - Fix behaviour when PACKAGES_LIST has a contextual value set.
    * error_package_does_not_exist - Fix French translation.
    * Gentoo - Fix the definition of the postinst/prerm package scripts.
    
  • 2.25.5
    4058b94f · 2.25.5 bugfix release ·
    2.25.5 release
    
    * Gentoo - Fix the function call used to fill the DESCRIPTION ebuild field.
    * Gentoo - Fix the function call used to fill the RDEPEND ebuild field.
    * Gentoo - Drop unwanted "$" at the beginning of the version string.
    * Gentoo - Fix a typo in the variable setting the compression command.
    * Gentoo - Fix ebuild settings through environment variables.
    * Gentoo - Drop broken support for --compression none.
    * Gentoo - Move the generated packages to the output directory, instead of deleting them.
    
  • 2.25.4
    7011d895 · 2.25.4 bugfix release ·
    2.25.4 bugfix release
    
    * Add support for extra native libraries.
    * Trigger a warning if APP_xxx_LIBS is set from a game script targeting a compatibility level ≥ 2.19.
    * content_path - Prevent a failure if CONTENT_PATH_DEFAULT is empty.
    * games_find_script_for_archive - Prevent a broken pipe non-blocking error.
    
  • 2.25.3
    1dd4127c · 2.25.3 bugfix release ·
    2.25.3 bugfix release
    
    * application_type_guess_from_file - Prevent failure when APP_xxx_EXE is not set.
    * archive_extraction_makeself - Decrease the time spent on files extraction.
    * archive_extraction_mojosetup - Decrease the time spent on files extraction.
    * content_path_default - Throw an explicit error if no path is set.
    
  • 2.25.2
    cb4aced0 · 2.25.2 bugfix release ·
    2.25.2 bugfix release
    
    * persistent_list_directories / persistent_list_files - Reduce reliance on variable_is_empty.
    
  • 2.25.1
    61856ab1 · 2.25.1 bugfix release ·
    2.25.1 bugfix release
    
    * archive_get_type - Fix archive type detection using file headers.
    * debian_package_build_single - Fix usage of $dpkg_options variable.
    
  • 2.25.0
    120645b0 · 2.25.0 feature release ·
    2.25.0 feature release
    
    * Deprecation notices:
      * Support for the legacy compression options is dropped. See "Compression methods rework" in 2.22.0 release notes for more details.
      * The variable APP_WINETRICKS is deprecated, and will be ignored for game scripts targeting ./play.it ≥ 2.26. See "Improvements to support for WINE games" below for more details.
    
    * New command line options:
      * --list-available-scripts — Print the list of game scripts available on this system.
      * --list-supported-games — Print the list of supported games. The output of this option can take up to several minutes to be generated, depending on the number of available game scripts.
    
    * New make actions:
      * make shunit2 - Run a series of unit tests based on shUnit2.
      * make shunit2-coverage - Display a coverage report for shUnit2 tests.
      * make check - This command is extended to include the shUnit2 tests and their coverage report.
    
    * New dependencies system for commands required at runtime:
      * A new variable is exposed to game scripts: PKG_xxx_DEPENDENCIES_COMMANDS
        It can be set to a list of commands that are required by the game at runtime, one per line.
    
    * Improvements to support for WINE games:
      * Add ability to set the default value for WINEDLLOVERRIDES, using a new variables: WINE_DLLOVERRIDES_DEFAULT.
        If this variable is not set, the generic default value is used:
        WINEDLLOVERRIDES='winemenubuilder.exe,mscoree,mshtml='
      * A new variable is exposed for listing required winetricks verbs: WINE_WINETRICKS_VERBS.
        The old variable name APP_WINETRICKS is still supported for game scripts targeting ./play.it < 2.26.
    
    * Improved support for Unity3D games, the following variables can be omitted and will fall back on default values:
      - APP_MAIN_EXE (including for Windows games)
      - CONTENT_GAME_BIN_FILES
      - CONTENT_GAME_BIN32_FILES
      - CONTENT_GAME_BIN64_FILES
      - CONTENT_GAME_DATA_FILES
    
    * Improved support for Unreal Engine 4, the following variables can be omitted and will fall back on default values:
      - APP_MAIN_ICON_WRESTOOL_OPTIONS
      - CONTENT_GAME_BIN_FILES
      - CONTENT_GAME_DATA_FILES
      - PKG_BIN_DEPENDENCIES_GSTREAMER_PLUGINS
      - WINE_DIRECT3D_RENDERER
      - WINE_PERSISTENT_DIRECTORIES
      - WINE_WINETRICKS_VERBS
    
  • 2.24.1
    2f417d82 · 2.24.1 bugfix release ·
    2.24.1 bugfix release
    
    * application_options - Fix test preventing line breaks in application options string.
    * archive_guess_type_from_name - Ensure that an empty string is returned if no type could be guessed.
    * content_inclusion - Check that the given package identifier is valid.
    * content_inclusion_chunks - Drop declaration of unused variable.
    * Prevent incompatibility between old .deb format 0.939000 and xz compression.
    * Do not tweak shell options from inside functions.
    * Add support for extra native libraries.