git: cb6731b84d0e - main - games/openttd: update OpenTTD to the latest version 15.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 15 Jan 2026 05:01:10 UTC
The branch main has been updated by danfe:
URL: https://cgit.FreeBSD.org/ports/commit/?id=cb6731b84d0ec3c8c7d52e4e8d599a76a7d6305e
commit cb6731b84d0ec3c8c7d52e4e8d599a76a7d6305e
Author: Alexey Dokuchaev <danfe@FreeBSD.org>
AuthorDate: 2026-01-15 04:57:30 +0000
Commit: Alexey Dokuchaev <danfe@FreeBSD.org>
CommitDate: 2026-01-15 04:57:30 +0000
games/openttd: update OpenTTD to the latest version 15.0
- Companies in multiplayer no longer have passwords, remove the
user-contributed patch to save them between server restarts
which was also raising concerns over storing them clear-text
- Sadly, SDL 1.2 support had been dropped in January 2025
- Added support for sound effects in Ogg Opus format
PR: 278117
---
games/openttd/Makefile | 24 ++---
games/openttd/distinfo | 10 +-
games/openttd/files/extra-patch-save-passwords | 134 -------------------------
games/openttd/files/patch-CMakeLists.txt | 17 +---
games/openttd/pkg-plist | 22 ++--
5 files changed, 24 insertions(+), 183 deletions(-)
diff --git a/games/openttd/Makefile b/games/openttd/Makefile
index 8b9f68d28199..d2c98a85d7d5 100644
--- a/games/openttd/Makefile
+++ b/games/openttd/Makefile
@@ -1,16 +1,11 @@
PORTNAME= openttd
-DISTVERSION= 14.1
-PORTREVISION= 1
+DISTVERSION= 15.0
CATEGORIES= games
MASTER_SITES= https://cdn.openttd.org/openttd-releases/${DISTVERSION}/
DISTNAME= ${PORTNAME}-${DISTVERSION}-source
-PATCH_SITES= https://github.com/OpenTTD/OpenTTD/commit/
-PATCHFILES= db36e61807955c896267d6585de0577efd30465d.patch:-p1 \
- 14fac2ad37bfb9cec56b4f9169d864f6f1c7b96e.patch:-p1
-
MAINTAINER= danfe@FreeBSD.org
-COMMENT= Open source clone of Microprose Transport Tycoon Deluxe
+COMMENT= Open-source clone of Microprose Transport Tycoon Deluxe
WWW= https://www.openttd.org/
LICENSE= GPLv2
@@ -25,28 +20,21 @@ CMAKE_ARGS= -DCMAKE_INSTALL_BINDIR:PATH=bin \
WRKSRC= ${WRKDIR}/${PORTNAME}-${DISTVERSION}
-OPTIONS_DEFINE= DOCS FLUIDSYNTH SAVE_PASSWORDS SDL1 SERVER
+OPTIONS_DEFINE= DOCS FLUIDSYNTH SERVER
SERVER_PREVENTS= FLUIDSYNTH
FLUIDSYNTH_LIB_DEPENDS= libfluidsynth.so:audio/fluidsynth
FLUIDSYNTH_CMAKE_ON= -DWITH_FLUIDSYNTH:BOOL=ON
-SAVE_PASSWORDS_DESC= Save passwords between server restarts
-SAVE_PASSWORDS_EXTRA_PATCHES= ${FILESDIR}/extra-patch-save-passwords
-
-SDL1_DESC= Use SDL v1.2 instead of v2 for GUI
-SDL1_VARS= _SDL_VERSION=sdl
-SDL1_CMAKE_OFF= -DWITH_SDL2:BOOL=ON
-SDL1_VARS_OFF= _SDL_VERSION=sdl2
-
SERVER_DESC= Build dedicated server only (no GUI)
SERVER_USES_OFF= sdl
-SERVER_USE_OFF= SDL=${_SDL_VERSION}
+SERVER_USE_OFF= SDL=sdl2
SERVER_CMAKE_ON= -DOPTION_DEDICATED:BOOL=ON
SERVER_LIB_DEPENDS_OFF= libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libharfbuzz.so:print/harfbuzz \
- libicui18n.so:devel/icu
+ libicui18n.so:devel/icu \
+ libopusfile.so:audio/opusfile
SERVER_VARS= USE_RC_SUBR=${PORTNAME}
post-install-SERVER-on:
diff --git a/games/openttd/distinfo b/games/openttd/distinfo
index e52182bfb34e..7a375fa255fe 100644
--- a/games/openttd/distinfo
+++ b/games/openttd/distinfo
@@ -1,7 +1,3 @@
-TIMESTAMP = 1736018646
-SHA256 (openttd-14.1-source.tar.xz) = 2c14c8f01f44148c4f2c88c169a30abcdb002eb128a92b9adb76baa76b013494
-SIZE (openttd-14.1-source.tar.xz) = 8015032
-SHA256 (db36e61807955c896267d6585de0577efd30465d.patch) = 4faaf0fdc4989194e47512f91288c62aa031fc6449d87b985fb20d1cc27705c9
-SIZE (db36e61807955c896267d6585de0577efd30465d.patch) = 1076
-SHA256 (14fac2ad37bfb9cec56b4f9169d864f6f1c7b96e.patch) = 7ab95cc1719614a9e5470d06001efd27bab9db917eb8456872aa1505440881a6
-SIZE (14fac2ad37bfb9cec56b4f9169d864f6f1c7b96e.patch) = 1089
+TIMESTAMP = 1767288352
+SHA256 (openttd-15.0-source.tar.xz) = 3552d774bb246f360b0a0d35436946007fcd48b2698ef1d7dfa30032ac3135c1
+SIZE (openttd-15.0-source.tar.xz) = 8540368
diff --git a/games/openttd/files/extra-patch-save-passwords b/games/openttd/files/extra-patch-save-passwords
deleted file mode 100644
index ac4fa72b2e5e..000000000000
--- a/games/openttd/files/extra-patch-save-passwords
+++ /dev/null
@@ -1,134 +0,0 @@
---- src/network/network_func.h.orig 2021-10-17 09:31:25 UTC
-+++ src/network/network_func.h
-@@ -73,7 +73,8 @@ void NetworkServerShowStatusToConsole();
- bool NetworkServerStart();
- void NetworkServerNewCompany(const Company *company, NetworkClientInfo *ci);
- bool NetworkServerChangeClientName(ClientID client_id, const std::string &new_name);
--
-+void NetworkSavePassword();
-+void NetworkLoadPassword();
-
- void NetworkServerDoMove(ClientID client_id, CompanyID company_id);
- void NetworkServerSendRcon(ClientID client_id, TextColour colour_code, const std::string &string);
---- src/network/network_server.cpp.orig 2021-10-17 09:31:25 UTC
-+++ src/network/network_server.cpp
-@@ -32,6 +32,7 @@
- #include <mutex>
- #include <condition_variable>
-
-+#include "../fileio_func.h"
- #include "../safeguards.h"
-
-
-@@ -439,6 +440,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Send
- /* Reset 'lag' counters */
- this->last_frame = this->last_frame_server = _frame_counter;
-
-+ Debug( net, 1, "requesting GAME password" );
- auto p = std::make_unique<Packet>(PACKET_SERVER_NEED_GAME_PASSWORD);
- this->SendPacket(std::move(p));
- return NETWORK_RECV_STATUS_OKAY;
-@@ -1563,6 +1565,9 @@ static void NetworkAutoCleanCompanies()
- IConsolePrint(CC_INFO, "Auto-removed protection from company #{}.", c->index + 1);
- _network_company_states[c->index].months_empty = 0;
- NetworkServerUpdateCompanyPassworded(c->index, false);
-+ if (_settings_client.network.save_password) {
-+ NetworkSavePassword( );
-+ }
- }
- /* Is the company empty for autoclean_novehicles-months, and has no vehicles? */
- if (_settings_client.network.autoclean_novehicles != 0 && _network_company_states[c->index].months_empty > _settings_client.network.autoclean_novehicles && vehicles_in_company[c->index] == 0) {
-@@ -1656,6 +1661,9 @@ void NetworkServerSetCompanyPassword(CompanyID company
- }
-
- NetworkServerUpdateCompanyPassworded(company_id, !_network_company_states[company_id].password.empty());
-+ if (_settings_client.network.save_password) {
-+ NetworkSavePassword( );
-+ }
- }
-
- /**
-@@ -2022,6 +2030,49 @@ bool NetworkCompanyHasClients(CompanyID company)
- if (ci->client_playas == company) return true;
- }
- return false;
-+}
-+
-+void NetworkSavePassword( )
-+{
-+ static FILE *file_pointer;
-+ std::string password_file_name;
-+
-+ password_file_name = fmt::format("{}.pwd", _settings_game.game_creation.generation_seed);
-+ Debug( net, 0, "Saving companies password to %s", password_file_name );
-+ file_pointer = FioFOpenFile( password_file_name, "wb", SAVE_DIR );
-+
-+ if (file_pointer != NULL) {
-+ for( CompanyID l_company = (CompanyID)0; l_company < MAX_COMPANIES; l_company++ ) {
-+ if (NetworkCompanyIsPassworded(l_company)) {
-+ fwrite(_network_company_states[l_company].password.c_str(), _network_company_states[l_company].password.size(), 1, file_pointer);
-+ }
-+ fwrite( "\n", 1, 1, file_pointer );
-+ }
-+ fclose(file_pointer);
-+ }
-+}
-+
-+void NetworkLoadPassword( )
-+{
-+ static FILE *file_pointer;
-+ char password[NETWORK_PASSWORD_LENGTH];
-+ std::string password_file_name;
-+
-+ password_file_name = fmt::format("{}.pwd", _settings_game.game_creation.generation_seed);
-+ file_pointer = FioFOpenFile( password_file_name, "rb", SAVE_DIR );
-+ if (file_pointer != NULL) {
-+ Debug( net, 0, "Loading password from %s", password_file_name );
-+ for( CompanyID l_company = (CompanyID)0; l_company < MAX_COMPANIES; l_company++ ) {
-+ fgets( password, sizeof( password), file_pointer);
-+ if (strlen(password)>1) {
-+ fseek( file_pointer, 1L, SEEK_CUR );
-+ _network_company_states[l_company].password = password;
-+ NetworkServerUpdateCompanyPassworded(l_company, !_network_company_states[l_company].password.empty());
-+ }
-+ }
-+ } else {
-+ Debug( net, 0, "Password file %s not found", password_file_name );
-+ }
- }
-
-
---- src/openttd.cpp.orig 2021-10-17 09:31:25 UTC
-+++ src/openttd.cpp
-@@ -1046,6 +1046,10 @@ void SwitchToMode(SwitchMode new_mode)
- OnStartGame(_network_dedicated);
- /* Decrease pause counter (was increased from opening load dialog) */
- Command<CMD_PAUSE>::Post(PM_PAUSED_SAVELOAD, false);
-+ // Try to load password
-+ if (_settings_client.network.save_password) {
-+ NetworkLoadPassword( );
-+ }
- }
- break;
- }
---- src/settings_type.h.orig 2021-10-17 09:31:25 UTC
-+++ src/settings_type.h
-@@ -296,6 +296,7 @@ struct NetworkSettings {
- std::string last_joined; ///< Last joined server
- UseRelayService use_relay_service; ///< Use relay service?
- ParticipateSurvey participate_survey; ///< Participate in the automated survey
-+ bool save_password; ///< If password file is used
- };
-
- /** Settings related to the creation of games. */
---- src/table/settings/network_settings.ini.orig 2021-10-17 09:31:25 UTC
-+++ src/table/settings/network_settings.ini
-@@ -265,3 +265,8 @@ str = STR_CONFIG_SETTING_USE_RELAY_SERVICE
- flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
- def = false
- cat = SC_EXPERT
-+
-+[SDTC_BOOL]
-+var = network.save_password
-+flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
-+def = false
diff --git a/games/openttd/files/patch-CMakeLists.txt b/games/openttd/files/patch-CMakeLists.txt
index 6ad87864e4c0..cdcd99beb8b1 100644
--- a/games/openttd/files/patch-CMakeLists.txt
+++ b/games/openttd/files/patch-CMakeLists.txt
@@ -1,33 +1,22 @@
---- CMakeLists.txt.orig 2024-04-13 12:55:23 UTC
+--- CMakeLists.txt.orig 2025-08-31 18:53:32 UTC
+++ CMakeLists.txt
-@@ -143,11 +143,14 @@ if(NOT OPTION_DEDICATED)
- find_package(Allegro)
+@@ -143,7 +143,9 @@ if(NOT OPTION_DEDICATED)
if(NOT APPLE)
find_package(Freetype)
-+if(WITH_SDL2)
find_package(SDL2)
-- if(NOT SDL2_FOUND)
-+else()
- find_package(SDL)
- endif()
+if(WITH_FLUIDSYNTH)
find_package(Fluidsynth)
+endif()
if(Freetype_FOUND)
find_package(Fontconfig)
endif()
-@@ -323,9 +326,14 @@ if(NOT EMSCRIPTEN)
+@@ -317,7 +319,9 @@ if(NOT EMSCRIPTEN)
endif()
if(NOT OPTION_DEDICATED)
+ if(WITH_FLUIDSYNTH)
link_package(Fluidsynth)
+ endif()
-+ if(NOT WITH_SDL2)
- link_package(SDL)
-+ else()
link_package(SDL2 TARGET SDL2::SDL2)
-+ endif()
link_package(Allegro)
link_package(FREETYPE TARGET Freetype::Freetype)
- link_package(Fontconfig TARGET Fontconfig::Fontconfig)
diff --git a/games/openttd/pkg-plist b/games/openttd/pkg-plist
index 63a33f92e99b..b63fbc5e6f7d 100644
--- a/games/openttd/pkg-plist
+++ b/games/openttd/pkg-plist
@@ -1,15 +1,16 @@
bin/openttd
-share/man/man6/openttd.6.gz
+share/applications/openttd.desktop
%%PORTDOCS%%%%DOCSDIR%%/CONTRIBUTING.md
%%PORTDOCS%%%%DOCSDIR%%/CREDITS.md
%%PORTDOCS%%%%DOCSDIR%%/README.md
-%%PORTDOCS%%%%DOCSDIR%%/changelog.txt
-%%PORTDOCS%%%%DOCSDIR%%/known-bugs.txt
+%%PORTDOCS%%%%DOCSDIR%%/changelog.md
+%%PORTDOCS%%%%DOCSDIR%%/known-bugs.md
%%PORTDOCS%%%%DOCSDIR%%/docs/admin_network.md
%%PORTDOCS%%%%DOCSDIR%%/docs/debugging_desyncs.md
%%PORTDOCS%%%%DOCSDIR%%/docs/desync.md
%%PORTDOCS%%%%DOCSDIR%%/docs/directory_structure.md
%%PORTDOCS%%%%DOCSDIR%%/docs/eints.md
+%%PORTDOCS%%%%DOCSDIR%%/docs/fonts.md
%%PORTDOCS%%%%DOCSDIR%%/docs/game_coordinator.md
%%PORTDOCS%%%%DOCSDIR%%/docs/linkgraph.md
%%PORTDOCS%%%%DOCSDIR%%/docs/logging_and_performance_metrics.md
@@ -19,6 +20,13 @@ share/man/man6/openttd.6.gz
%%PORTDOCS%%%%DOCSDIR%%/docs/obs_format.txt
%%PORTDOCS%%%%DOCSDIR%%/docs/savegame_format.md
%%PORTDOCS%%%%DOCSDIR%%/docs/symbol_server.md
+share/icons/hicolor/16x16/apps/openttd.png
+share/icons/hicolor/32x32/apps/openttd.png
+share/icons/hicolor/48x48/apps/openttd.png
+share/icons/hicolor/64x64/apps/openttd.png
+share/icons/hicolor/128x128/apps/openttd.png
+share/icons/hicolor/256x256/apps/openttd.png
+share/man/man6/openttd.6.gz
%%DATADIR%%/ai/compat_0.7.nut
%%DATADIR%%/ai/compat_1.0.nut
%%DATADIR%%/ai/compat_1.1.nut
@@ -108,6 +116,7 @@ share/man/man6/openttd.6.gz
%%DATADIR%%/lang/macedonian.lng
%%DATADIR%%/lang/malay.lng
%%DATADIR%%/lang/maltese.lng
+%%DATADIR%%/lang/maori.lng
%%DATADIR%%/lang/marathi.lng
%%DATADIR%%/lang/norwegian_bokmal.lng
%%DATADIR%%/lang/norwegian_nynorsk.lng
@@ -140,12 +149,5 @@ share/man/man6/openttd.6.gz
%%DATADIR%%/scripts/pre_dedicated.scr.example
%%DATADIR%%/scripts/pre_server.scr.example
%%DATADIR%%/scripts/readme.txt
-share/applications/openttd.desktop
-share/icons/hicolor/16x16/apps/openttd.png
-share/icons/hicolor/32x32/apps/openttd.png
-share/icons/hicolor/48x48/apps/openttd.png
-share/icons/hicolor/64x64/apps/openttd.png
-share/icons/hicolor/128x128/apps/openttd.png
-share/icons/hicolor/256x256/apps/openttd.png
share/pixmaps/openttd.32.xpm
share/pixmaps/openttd.64.xpm