Skip to content

Packaging

Remy Marquis edited this page Oct 7, 2021 · 7 revisions

All about Linux distribution packaging with the FreeDesktop specifications and AppStream metadata.

Important information for package maintainers

To guarantee platform independency of clients connecting to one server, the mod files have to be synchronized.

  • This ensure users don't have to download files twice.
  • This ensure users don't have issues when creating servers and connecting with different distribution installations.

Therefore, Linux distributions should only distribute mod binary and data files from our official releases.

If there are any good reasons not to do so, let us know the reason!

Package creation

It is highly recommended to read Path and File Structure.

  • Build the engine on your distribution
  • Download the official release for the mod part

Therefore, the package should be split into 2 sub-packages:

  • Engine package: etlegacy
  • Mod package: etlegacy-mod

We don't deliver the game assets. See game assets below.

Engine package files

All files of fs_basepath content except legacy path.

Start options

There are 2 shell scripts provided in the release files to start Omni-Bots for the game. Omni-Bot isn't enabled by default.

Man pages

Man pages for binaries are provided in /docs/linux/man/man6:

  • etl, installed in /usr/share/man/man6/
  • etlded, installed in /usr/share/man/man6/

Icon and connection protocol

Menu icon and registration for et:// protocol association.

Three files are provided in /misc:

  • etl.svg, installed in /usr/share/icons/hicolor/scalable/apps/
  • etlegacy.desktop, installed in /usr/share/applications/
  • etlegacy.xml, installed in /usr/share/mime/packages/
  • com.etlegacy.ETLegacy.metainfo.xml, installed in /usr/share/metainfo/

Additionally, the icon, desktop and mime cache need to be updated to correctly display the icon and register the et:// protocol:

# xdg-icon-resource forceupdate --theme hicolor
# update-desktop-database
# update-mime-database /usr/share/mime

Metainfo metadata

Upstream metadata for AppStream.

One file is provided in /misc:

  • com.etlegacy.ETLegacy.metainfo.xml, installed in /usr/share/metainfo/

Systemd service and config files

Systemd service files are provided, allowing to easily set up a dedicated server in /var/lib/etlegacy-server with the default configuration.

Two files are provided in /misc:

  • etlegacy.service, installed in /usr/lib/systemd/system/
  • etlegacy.conf, installed in /etc/xdg/etlegacy/conf/

In addition, etlegacy configuration files need to be moved to /etc/xdg/etlegacy/etmain, with respective symlink placed in /usr/lib/etlegacy/etmain/.

To start the dedicated server:

# systemctl start etlegacy

Mod package files

All files of downloaded official release from 'legacy’ path which you did exclude from your build.

Game assets

ET: Legacy is not entirely stand-alone as it still relies on the original game assets. These can't be packaged with our official release because of restriction imposed by the original EULA. See FAQ.

In order to run ET: Legacy, you'll need to copy assets from an original Wolfenstein: Enemy Territory installation.

You can manually download them legally and for free from the official Splash Damage website.

You need pak0.pk3, pak1.pk3 and pak2.pk3 and these files must be placed either in ~/.etlegacy/etmain or in the /usr/lib/etlegacy/etmain/ directory.

Note:: Only the pak0.pk3 is technically required for a server running Legacy mod, but other third-party mods might require pak1.pk3 and pak2.pk3 as well.

Package testing

Run the game:

  • The first time, fs_homepath has to be empty or not created.
  • After the first run, there are 2 folders created in fs_homepath path: etmain and legacy.

Important: The etmain directory of fs_homepath path shouldn't contain any profile, .so file or ET: Legacy specific files. If you connect to online servers only maps are stored here.

Your install is fine when profile path, hunkusage.dat and .so files are in legacy directory of fs_homepath path.