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