Skip to content

ports: update openage to 0.6.0 - #5

Merged
ligurio merged 7 commits into
masterfrom
ligurio/gh-xxxx-games-openage
Oct 14, 2026
Merged

ligurio merged 7 commits into
masterfrom
ligurio/gh-xxxx-games-openage

Conversation

@ligurio

@ligurio ligurio commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

@ligurio
ligurio force-pushed the ligurio/gh-xxxx-games-openage branch 13 times, most recently from 281d90c to 4666c54 Compare October 14, 2026 09:31
Some ports install a large number of generated files, so writing their
pkg/PLIST by hand is impractical.  When a port listed in
changed-ports.txt has no committed packing list, run 'make update-plist'
in the VM and publish the result as a ci-packages/<port>/PLIST artifact,
so it can be reviewed and committed afterwards.

update-plist moves the previous packing list aside as pkg/PLIST.orig;
drop that backup again, otherwise portcheck reports it as an extra file.
Factor the log dumping into a show_errors() helper and use it when
'make update-plist' fails, so a broken generated packing list can be
debugged straight from the job output.
The custom shell only syncs VM files back to the runner when the
command it wraps exits successfully.  A failed build therefore left
ci-logs/ and ci-packages/ inside the VM, so the upload-artifact steps
found nothing.  Trigger the sync explicitly (also on failure) before
uploading.
Building openage recompiles a lot of C++ and Cython on every run.  Enable
the ports framework's ccache support (USE_CCACHE=Yes) and keep the cache
inside the workspace (CCACHE_DIR=ci-cache/ccache), so the workflow can
persist it with actions/cache and restore it on the next run; unchanged
translation units are then taken from the cache instead of recompiled.

The cache is capped at 2G and compressed to stay well within the
repository cache limit, and ccache itself is installed from packages in
the VM.

The setup and build steps now sync runner-to-vm only, so the (possibly
large) cache directory is not copied back mid-run; the existing
"Sync VM files back" step pulls everything back once, before the cache is
saved.
toml11 is a C++11 header-only TOML parser and encoder, needed as a
build dependency by games/openage.

The port installs the headers and the CMake package files; tests,
examples and precompilation are disabled.
nyan is the data description language used by the openage engine,
needed as a build and runtime dependency by games/openage.

The package provides libnyan, its C++ headers, the CMake package
config and the nyancat tool.  Doxygen and the CMake user package
registration are disabled.

Patches:
- patches/patch-nyan_CMakeLists_txt: relax 'find_package(FLEX 2.6
  REQUIRED)' to 'find_package(FLEX REQUIRED)', because flex ships with the
  OpenBSD base system as version 2.5.39 and the 2.6 requirement cannot be
  satisfied; and skip '-Wl,--no-undefined' on OpenBSD, where the linker
  does not pull libc into the shared library, so the strict check fails on
  the libc symbols used by the generated flex scanner and error.cpp
  (resolved from libc at load time).
The previous port targeted a 2014 snapshot built with gcc4, python 3.4,
SDL2, FTGL and GLEW; those patches and dependencies no longer match
upstream and the distfile was a rolling master tarball.

Update to the 0.6.0 release: C++20, CMake, Python 3, Cython and Qt6, with
runtime dependencies on nyan, toml11, libepoxy (from Xenocara), harfbuzz,
opus/opusfile/ogg, freetype, fontconfig and eigen3.  Doxygen, Vulkan,
inotify, backtrace and gperftools support are disabled.

Patches:
- patches/patch-buildsystem_codegen_cmake: rename the 'codegen' CMake
  target to 'cppgen'.  CMake 3.31 and later reserve 'codegen' as a target
  name (policy CMP0171), which makes configuration fail.
- patches/patch-libopenage_CMakeLists_txt: follow that rename in
  AUTOGEN_TARGET_DEPENDS ('codegen' -> 'cppgen'), and skip
  'find_library(RT_LIB rt)' on OpenBSD, which provides no librt (upstream
  requires it on every non-Apple, non-Windows system).  Matches upstream
  PR #1783.
- patches/patch-buildsystem_cpp_cmake: do not link libopenage with
  '-Wl,--no-undefined' on OpenBSD.  Shared libraries on OpenBSD are not
  linked against libc, so the strict undefined-symbol check fails on libc
  symbols; the flag setup is reworked so the Apple and other-ELF cases are
  unchanged.
- patches/patch-libopenage_error_handlers_cpp: typedef sig_t as
  sighandler_t on OpenBSD, which has no sighandler_t.
- patches/patch-libopenage_pathfinding_pathfinder_cpp: initialise the
  integer 'entry_sector' with 0 instead of NULL.  OpenBSD defines NULL as
  nullptr, which does not convert to the sector_id_t (size_t) member.
- patches/patch-libopenage_util_os_cpp: implement self_exec_filename() on
  OpenBSD via sysctl(KERN_PROC_ARGS) argv[0].  OpenBSD has neither
  /proc/self/exe nor KERN_PROC_PATHNAME, so the previous code hit a
  static_assert; include <sys/sysctl.h> for it.
- patches/patch-libopenage_util_pty_h: on OpenBSD include <util.h> (for
  forkpty()/openpty(), provided by the already-linked libutil),
  <termios.h>, <sys/types.h> and <sys/ioctl.h> instead of the missing
  <pty.h>.

The packing list was generated with 'make update-plist' and is committed.
@ligurio
ligurio force-pushed the ligurio/gh-xxxx-games-openage branch from 4666c54 to 412a5d8 Compare October 14, 2026 12:16
@ligurio
ligurio merged commit 0e20c12 into master Oct 14, 2026
2 checks passed
@ligurio
ligurio deleted the ligurio/gh-xxxx-games-openage branch October 14, 2026 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant