git: 8904f97734e9 - main - games/taisei: Update to 1.4.6
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 01 Nov 2026 18:14:49 UTC
The branch main has been updated by eduardo:
URL: https://cgit.FreeBSD.org/ports/commit/?id=8904f97734e9448478e56284fbf81e1913e14243
commit 8904f97734e9448478e56284fbf81e1913e14243
Author: Nuno Teixeira <eduardo@FreeBSD.org>
AuthorDate: 2026-11-01 17:48:49 +0000
Commit: Nuno Teixeira <eduardo@FreeBSD.org>
CommitDate: 2026-11-01 18:14:37 +0000
games/taisei: Update to 1.4.6
- Switch to SDL3 and to the release tarball (includes submodules)
- Add libunibreak, zstd and gettext-tools dependencies; drop libzip
and shaderc
- Detect libcrypto via pkg-config, drop the OPENSSLLIB hack
- Remove all local patches in favour of meson options
- Add GLES option (shader transpiler, GLES 3.0 and SDL GPU renderers)
- Install game data as loose files (package_data=disabled)
- Assign maintainership to submitter
ChangeLog: https://taisei-project.org/news
PR: 297480
Co-authored-by: Shamaz Mazum <shamaz.mazum@gmail.com>
---
games/taisei/Makefile | 87 +++++++++++++++-------
games/taisei/distinfo | 8 +-
games/taisei/files/patch-doc_meson.build | 24 ------
games/taisei/files/patch-meson.build | 42 -----------
games/taisei/files/patch-meson__options.txt | 8 --
.../files/patch-scripts_taiseilib_version.py | 11 ---
games/taisei/files/patch-src_meson.build | 10 ---
games/taisei/pkg-descr | 10 +--
games/taisei/pkg-plist | 25 ++++++-
9 files changed, 89 insertions(+), 136 deletions(-)
diff --git a/games/taisei/Makefile b/games/taisei/Makefile
index 96d958bee3e3..fda773b2df6a 100644
--- a/games/taisei/Makefile
+++ b/games/taisei/Makefile
@@ -1,47 +1,78 @@
PORTNAME= taisei
-PORTVERSION= 1.3.2
-DISTVERSIONPREFIX= v
-PORTREVISION= 2
+DISTVERSION= 1.4.6
CATEGORIES= games
+MASTER_SITES= https://github.com/taisei-project/taisei/releases/download/v${DISTVERSION}/
-MAINTAINER= ports@FreeBSD.org
-COMMENT= Open source Touhou clone
+MAINTAINER= shamaz.mazum@gmail.com
+COMMENT= Open source Touhou Project fan game (bullet hell shoot'em up)
WWW= https://taisei-project.org/ \
https://github.com/taisei-project/taisei
-LICENSE= MIT CC0-1.0 PD
+LICENSE= CC-BY-4.0 CC0-1.0 MIT PD
LICENSE_COMB= multi
-LICENSE_FILE= ${WRKSRC}/COPYING
+LICENSE_FILE_MIT= ${WRKSRC}/COPYING.txt
-LIB_DEPENDS= libpng.so:graphics/png \
- libzip.so:archivers/libzip \
- libwebp.so:graphics/webp \
- libfreetype.so:print/freetype2 \
+BUILD_DEPENDS= cglm>0:math/cglm
+LIB_DEPENDS= libfreetype.so:print/freetype2 \
libopusfile.so:audio/opusfile \
- libcglm.so:math/cglm
-BUILD_DEPENDS= glslc:graphics/shaderc
+ libpng16.so:graphics/png \
+ libunibreak.so:textproc/libunibreak \
+ libwebpdecoder.so:graphics/webp \
+ libzstd.so:archivers/zstd
-USE_GITHUB= yes
-GH_ACCOUNT= taisei-project
-GH_TUPLE= taisei-project:SDL_GameControllerDB:74e31d7:gamecontrollerdb/external/gamecontrollerdb
+USES= compiler:c11 desktop-file-utils gettext-tools:build meson \
+ pkgconfig python:build sdl shared-mime-info shebangfix ssl \
+ tar:xz
+USE_SDL= sdl3
-USES= compiler:c11 desktop-file-utils meson pkgconfig \
- python:build sdl ssl shebangfix shared-mime-info
SHEBANG_FILES= scripts/*.py
-MESON_ARGS= -Dversion_fallback=${PORTVERSION} -Db_lto=false
-MESON_ARGS+= --wrap-mode=nofallback
-MESON_ARGS+= -DOPENSSLLIB="${OPENSSLLIB}"
-USE_SDL= sdl2 ttf2 mixer2
-PORTDOCS= *
+# - package_data=disabled installs the game data as loose files under
+# DATADIR instead of a zstd-compressed zip, so py-backports.zstd is
+# not needed at build time
+# - LTO causes a crash during the stage 3 boss fight:
+# https://github.com/taisei-project/taisei/issues/378
+# - shader_transpiler_dxbc is Windows only, but must be disabled
+# explicitly because USES=meson sets auto_features=enabled
+# - allocator=libc: use jemalloc from libc instead of mimalloc
+MESON_ARGS= --wrap-mode=nofallback \
+ -Dallocator=libc \
+ -Db_lto=false \
+ -Db_pch=false \
+ -Ddefault_library=shared \
+ -Ddeveloper=false \
+ -Dforce_vendored_shader_tools=false \
+ -Dgamemode=disabled \
+ -Dinstall_freedesktop=enabled \
+ -Dinstall_macos_bundle=disabled \
+ -Dinstall_relocatable=disabled \
+ -Dkoishi:default_library=static \
+ -Dpackage_data=disabled \
+ -Dshader_transpiler_dxbc=disabled \
+ -Dtests=disabled \
+ -Duse_libcrypto=enabled \
+ -Duse_libpng=enabled \
+ -Dvalidate_glsl=disabled
+
PORTDATA= *
+PORTDOCS= *
+
+OPTIONS_DEFINE= DOCS GLES
+OPTIONS_DEFAULT= GLES
+
+GLES_DESC= OpenGL ES 3.0 and SDL GPU renderers (shader transpiler)
-OPTIONS_DEFINE= DOCS
+DOCS_BUILD_DEPENDS= rst2html5:textproc/py-docutils@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pygments>0:textproc/py-pygments@${PY_FLAVOR}
+DOCS_MESON_ENABLED= docs
-DOCS_BUILD_DEPENDS= rst2html5:textproc/py-docutils
-DOCS_MESON_TRUE= docs
+GLES_BUILD_DEPENDS= glslang>0:graphics/glslang
+GLES_LIB_DEPENDS= libspirv-cross-c-shared.so:graphics/spirv-cross
-post-install:
- @${RM} ${STAGEDIR}${DOCSDIR}/COPYING.txt
+# glslang is located via its CMake package config
+GLES_USES= cmake:indirect
+GLES_MESON_ENABLED= shader_transpiler
+GLES_MESON_ON= -Dr_gles30=enabled -Dr_sdlgpu=enabled
+GLES_MESON_OFF= -Dr_gles30=disabled -Dr_sdlgpu=disabled
.include <bsd.port.mk>
diff --git a/games/taisei/distinfo b/games/taisei/distinfo
index c89a9762d09f..1d5562d921f3 100644
--- a/games/taisei/distinfo
+++ b/games/taisei/distinfo
@@ -1,5 +1,3 @@
-TIMESTAMP = 1620672730
-SHA256 (taisei-project-taisei-v1.3.2_GH0.tar.gz) = bee5710d5aefcdf99e334909ce18eb22f9b2f73f4b5bd3ec3e5daad3aadc8479
-SIZE (taisei-project-taisei-v1.3.2_GH0.tar.gz) = 70827325
-SHA256 (taisei-project-SDL_GameControllerDB-74e31d7_GH0.tar.gz) = 79ccf0472162c9c1b44aeb0e3b2c122fbaaaed2f5b33c653d29b293f3121068f
-SIZE (taisei-project-SDL_GameControllerDB-74e31d7_GH0.tar.gz) = 23577
+TIMESTAMP = 1793484755
+SHA256 (taisei-1.4.6.tar.xz) = 18d03c67dcc8c7faff22e8defdafc3a734b46c591618d1a678e6e914846889d9
+SIZE (taisei-1.4.6.tar.xz) = 307144568
diff --git a/games/taisei/files/patch-doc_meson.build b/games/taisei/files/patch-doc_meson.build
deleted file mode 100644
index 3e5e83fc2468..000000000000
--- a/games/taisei/files/patch-doc_meson.build
+++ /dev/null
@@ -1,24 +0,0 @@
---- doc/meson.build.orig 2019-09-28 18:31:40 UTC
-+++ doc/meson.build
-@@ -1,20 +1,7 @@
-
- if install_docs
-- rst2html_variants = []
--
-- # This is *completely* ridiculous, but apparently this thing has THAT many faces.
-- basenames = ['rst2html5', 'rst2html', 'rst2html4']
-- suffixes = ['', '-3', '3', '-docutils']
--
-- foreach basename : basenames
-- foreach suffix : suffixes
-- variant = '@0@@1@'.format(basename, suffix)
-- rst2html_variants += [variant, '@0@.py'.format(variant)]
-- endforeach
-- endforeach
--
- rst2html5 = find_program(
-- rst2html_variants,
-+ 'rst2html5',
- required : false
- )
-
diff --git a/games/taisei/files/patch-meson.build b/games/taisei/files/patch-meson.build
deleted file mode 100644
index 0b0cfd60cf7a..000000000000
--- a/games/taisei/files/patch-meson.build
+++ /dev/null
@@ -1,42 +0,0 @@
-* Make all depends required, thus deterministic.
-
-* Redefine libcrypto dependency - there are no means of detection for
-system OpenSSL on FreeBSD (e.g. no pkgconfig file), so we need to
-point the build right to the library. Additionally, since OpenSSL
-may also come from ports, respect OPENSSLLIB passed from the framework
-to pick the right library. This works with system OpenSSL, _may_
-work with OpenSSL from ports and will probably _not_ work with
-OpenSSL form ports where OPENSSL_DEFAULT is set to base, as it will
-still pick includes from /usr/local.
-
-* Make sure to never detect gamemode which is missing on FreeBSD anyway.
-
---- meson.build.orig 2021-04-30 18:54:50 UTC
-+++ meson.build
-@@ -142,19 +142,19 @@ endif
- static = get_option('static') or ['emscripten', 'nx'].contains(host_machine.system())
-
- dep_freetype = dependency('freetype2', required : true, static : static, fallback : ['freetype', 'freetype_dep'])
--dep_opusfile = dependency('opusfile', required : false, static : static, fallback : ['opusfile', 'opusfile_dep'])
-+dep_opusfile = dependency('opusfile', required : true, static : static, fallback : ['opusfile', 'opusfile_dep'])
- dep_png = dependency('libpng', version : '>=1.5', required : true, static : static, fallback : ['libpng', 'png_dep'])
- dep_sdl2 = dependency('sdl2', version : '>=2.0.6', required : true, static : static, fallback : ['sdl2', 'sdl2_dep'])
--dep_sdl2_mixer = dependency('SDL2_mixer', version : '>=2.0.4', required : false, static : static, fallback : ['sdl2_mixer', 'sdl2_mixer_dep'])
-+dep_sdl2_mixer = dependency('SDL2_mixer', version : '>=2.0.4', required : true, static : static, fallback : ['sdl2_mixer', 'sdl2_mixer_dep'])
- dep_webp = dependency('libwebp', version : '>=0.5', required : true, static : static, fallback : ['libwebp', 'webpdecoder_dep'])
--dep_webpdecoder = dependency('libwebpdecoder', version : '>=0.5', required : false, static : static)
--dep_zip = dependency('libzip', version : '>=1.2', required : false, static : static, fallback : ['libzip', 'libzip_dep'])
-+dep_webpdecoder = dependency('libwebpdecoder', version : '>=0.5', required : true, static : static)
-+dep_zip = dependency('libzip', version : '>=1.2', required : true, static : static, fallback : ['libzip', 'libzip_dep'])
- dep_zlib = dependency('zlib', required : true, static : static, fallback : ['zlib', 'zlib_dep'])
- dep_cglm = dependency('cglm', version : '>=0.7.8', required : true, static : static, fallback : ['cglm', 'cglm_dep'])
--dep_crypto = dependency('libcrypto', required : false, static : static)
--dep_gamemode = dependency('gamemode', required : false, static : static)
-+dep_crypto = cc.find_library('crypto', dirs : get_option('OPENSSLLIB'), required : true)
-+dep_gamemode = dependency('', required : false)
-
--dep_m = cc.find_library('m', required : false)
-+dep_m = cc.find_library('m', required : true)
-
- dep_glad = subproject('glad').get_variable('glad_dep')
-
diff --git a/games/taisei/files/patch-meson__options.txt b/games/taisei/files/patch-meson__options.txt
deleted file mode 100644
index a558ef8a612c..000000000000
--- a/games/taisei/files/patch-meson__options.txt
+++ /dev/null
@@ -1,8 +0,0 @@
---- meson_options.txt.orig 2021-04-30 18:54:50 UTC
-+++ meson_options.txt
-@@ -197,3 +197,5 @@ option(
- value : true,
- description : 'Allow use of some GNU C extensions (if supported by compiler)'
- )
-+
-+option('OPENSSLLIB', type : 'string')
diff --git a/games/taisei/files/patch-scripts_taiseilib_version.py b/games/taisei/files/patch-scripts_taiseilib_version.py
deleted file mode 100644
index 4ccdff9f20c2..000000000000
--- a/games/taisei/files/patch-scripts_taiseilib_version.py
+++ /dev/null
@@ -1,11 +0,0 @@
---- scripts/taiseilib/version.py.orig 2021-04-30 18:54:50 UTC
-+++ scripts/taiseilib/version.py
-@@ -57,6 +57,8 @@ def get(*, rootdir=None, fallback=None, args=common.de
- rootdir = rootdir if rootdir is not None else args.rootdir
- fallback = fallback if fallback is not None else args.fallback_version
-
-+ return Version(fallback)
-+
- if rootdir is None:
- import pathlib
- rootdir = pathlib.Path(__file__).parent
diff --git a/games/taisei/files/patch-src_meson.build b/games/taisei/files/patch-src_meson.build
deleted file mode 100644
index 9d4f262f6b1e..000000000000
--- a/games/taisei/files/patch-src_meson.build
+++ /dev/null
@@ -1,10 +0,0 @@
---- src/meson.build.orig 2021-04-30 18:54:50 UTC
-+++ src/meson.build
-@@ -305,7 +305,6 @@ else
- taisei = executable(taisei_basename, taisei_src, version_deps,
- dependencies : taisei_deps,
- c_args : taisei_c_args,
-- c_pch : 'pch/taisei_pch.h',
- gui_app : not get_option('win_console'),
- install : true,
- install_dir : bindir,
diff --git a/games/taisei/pkg-descr b/games/taisei/pkg-descr
index 66c97c325bad..b7778bb04314 100644
--- a/games/taisei/pkg-descr
+++ b/games/taisei/pkg-descr
@@ -1,6 +1,6 @@
-Taisei (lit. Occident) is a fan-made Open Source clone of the Touhou
-series, written in C using SDL/OpenGL.
+Taisei Project is a free and open-source fan game set in the world of
+the Touhou Project series. It is a top-down vertical-scrolling curtain
+fire shooting game (STG), also known as "bullet hell" or "danmaku".
-Basically, it is a shoot'em up game with lots of bullets (the genre
-is literally called bullet hell). The game is mostly done and very
-playable, so feel free to give it a try!
+It is not a clone of Touhou: it tells an original story with its own
+music, art, gameplay mechanics and codebase.
diff --git a/games/taisei/pkg-plist b/games/taisei/pkg-plist
index fad367a0e6b4..5fe75dca57b0 100644
--- a/games/taisei/pkg-plist
+++ b/games/taisei/pkg-plist
@@ -1,6 +1,25 @@
bin/taisei
-share/applications/taisei-replay-viewer.desktop
-share/applications/taisei.desktop
+share/applications/org.taisei_project.Taisei.desktop
+share/applications/org.taisei_project.Taisei.tsr.desktop
+share/icons/hicolor/128x128/apps/org.taisei_project.Taisei.png
share/icons/hicolor/128x128/apps/taisei.png
+share/icons/hicolor/128x128/mimetypes/org.taisei_project.Taisei.tsr.png
+share/icons/hicolor/128x128/mimetypes/taisei-replay.png
+share/icons/hicolor/256x256/apps/org.taisei_project.Taisei.png
+share/icons/hicolor/256x256/apps/taisei.png
+share/icons/hicolor/256x256/mimetypes/org.taisei_project.Taisei.tsr.png
share/icons/hicolor/256x256/mimetypes/taisei-replay.png
-share/mime/packages/taisei.xml
+share/icons/hicolor/32x32/apps/org.taisei_project.Taisei.png
+share/icons/hicolor/32x32/apps/taisei.png
+share/icons/hicolor/32x32/mimetypes/org.taisei_project.Taisei.tsr.png
+share/icons/hicolor/32x32/mimetypes/taisei-replay.png
+share/icons/hicolor/512x512/apps/org.taisei_project.Taisei.png
+share/icons/hicolor/512x512/apps/taisei.png
+share/icons/hicolor/512x512/mimetypes/org.taisei_project.Taisei.tsr.png
+share/icons/hicolor/512x512/mimetypes/taisei-replay.png
+share/icons/hicolor/64x64/apps/org.taisei_project.Taisei.png
+share/icons/hicolor/64x64/apps/taisei.png
+share/icons/hicolor/64x64/mimetypes/org.taisei_project.Taisei.tsr.png
+share/icons/hicolor/64x64/mimetypes/taisei-replay.png
+share/metainfo/org.taisei_project.Taisei.appdata.xml
+share/mime/packages/org.taisei_project.Taisei.xml