2.35.0 feature release
Deprecation notices:
* Game scripts targeting a compatibility level ≥ 2.35 should no longer use APP_xxx_PREFIX_TYPE
as it conflicts with the improved implicit applications list, cf. "Launchers" below.
The variable APPLICATIONS_PREFIX_TYPE should be used instead.
* Drop multiple obsolete compatibility wrappers:
- build_pkg
- dependencies_list_native_libraries
- icons_inclusion
- launcher_prefix_symlinks_build
- launchers_write
- prefix_generate_links_farm
- write_metadata
* Drop legacy variable PRELOAD_HACKS_LIST.
This preload hack system should be replaced with the one relying on LD_PRELOAD_SOURCE, introduced with ./play.it 2.33.0.
* Drop legacy variable target_version.
The variable PLAYIT_COMPATIBILITY_LEVEL, introduced with ./play.it 2.26, must be used instead.
* Drop legacy variable PKG.
The package context should be set with set_current_package, introduced with ./play.it 2.27.
* Drop legacy variable ARCHIVE_xxx.
It should be replaced with ARCHIVE_xxx_NAME or ARCHIVE_xxx_PATH, introduced with ./play.it 2.26.
* Drop legacy variable SOURCE_ARCHIVE.
Calls to `archive_extraction 'SOURCE_ARCHIVE'` should be replaced with archive_extraction_default, introduced with ./play.it 2.26.
* Game scripts relying on tolower or toupper must set an explicit requirement on convmv, through REQUIREMENTS_LIST.
* Unreal Engine 4 games (WINE only): vcrun2019 is no longer installed by default with compatibility levels ≥ 2.35.
New install path for ./play.it:
* The library default install path is now ${prefix}/lib/play.it/libplayit.sh.2
(with ${prefix} defaulting to /usr for install as root, or ${HOME}/.local otherwise)
* A compatibility link is installed at ${prefix}/share/play.it/libplayit2.sh
* No compatibility link is installed at ${prefix}/share/games/play.it/libplayit2.sh
* The "play.it" command is installed in ${prefix}/bin instead of ${prefix}/games
Options:
* Library revision is appended to --version output.
* New command line option --list-archives
Called from a game script, it lists the archives supported by that script.
Called from the play.it wrapper, it lists the archives supported by all available game scripts on the system.
Example output:
$ ./play-alpha-centauri.sh --list-archives
6c9bd7e1cf88fdbfa0e75f694bf8b0e5 | setup_sid_meiers_alpha_centauri_2.0.2.23.exe
d401431ff9c1c7526c3104194409bd6e | setup_sid_meiers_alpha_centauri_planetary_pack_1.1_pracx_ddraw_(77244).exe
Archives:
* New function: archive_url - Get the URL to the download page for a given archive.
USAGE: archive_url $archive
* New function: path_archive_contents - Print full path to extracted archive content.
A content identifier can be passed as a single optional argument, then the path leading to that content is printed.
Otherwise the default content path is printed.
USAGE: path_archive_contents [content_id]
* New variables for the archive passed on the command line:
- PLAYIT_BASE_ARCHIVE_NAME
- PLAYIT_BASE_ARCHIVE_PATH
More globally, the SOURCE_ARCHIVE identifier is dropped in favour of PLAYIT_BASE_ARCHIVE.
Game scripts are not expected to rely on PLAYIT_BASE_ARCHIVE anyway, they should use current_archive instead.
* When extracting files from InnoSetup installers, they are no longer implicitly converted to lower case.
The conversion to lower case still happens for compatibility level ≤ 2.34,
to prevent breakages for game scripts relying on this implicit conversion.
Icons:
* Do not enforce a .exe extension on icon containers handled by wrestool.
* Ensure full support for package-specific CONTENT_PATH_DEFAULT values.
Such values are uncommon, but at least Divinity: Original Sin 2 relies on these.
* Mono games: Use the game binary as the default icon source.
Launchers:
* New tweak: launcher_tweak_sdl_force_x11 - Force use of SDL x11 video backend.
This should be called in pre-run actions for games not working with SDL wayland backend.
USAGE: launcher_tweak_sdl_force_x11
* Improve the implicit applications list by detecting identifiers with multiple underscores.
* Paths diversion to persistent storage from the volatile prefix is reworked, leading to less dead code in generated launchers.
* Visionaire games: Prevent crashes of the shipped SDL library.
* Visionaire games: Only set dependencies on native libraries for native games.
Packages:
* Implicitly set expansion packages dependency on the base game.
The following variables no longer need to be explicitly set:
- PKG_xxx_DEPENDENCIES_SIBLINGS
- PKG_PARENT_ID
* WINE games: Dependencies on architecture-specific packages are improved,
in a way that should make it easier to install i386 games on an amd64 host.