Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: py3.14
To:
Theo Buehler <tb@openbsd.org>
Cc:
ports <ports@openbsd.org>, Daniel Dickman <didickman@gmail.com>, Kurt Mosiejczuk <kurt@cranky.work>, Landry Breuil <landry@rhaalovely.net>, thfr@openbsd.org
Date:
Fri, 1 May 2026 17:06:09 +0100

Download raw body.

Thread
    • Theo Buehler:

      py3.14

  • Theo Buehler:

    py3.14

    • Stuart Henderson:

      py3.14

      • Theo Buehler:

        py3.14

  • On 2026/05/01 17:43, Theo Buehler wrote:
    > +thfr
    > 
    > On Mon, Apr 27, 2026 at 02:38:53PM +0100, Stuart Henderson wrote:
    > > I'm keen to move Python to 3.14 fairly soon after we're unlocked and
    > > building -current packages again, to give us a decent amount of time to
    > > fix any runtime issues that we run into.
    > > 
    > > My bulk was reasonably clean - other than the usual s/313/314/ in
    > > various ports (boost etc), I ran into failures in:
    > 
    > Works for me. Tested on amd64 in a bulk and on sparc64 with a build and
    > running regress (which looks reasonable).
    > 
    > ok tb
    > 
    > In addition to theharvester these two ports broke in my amd64 bulk:
    > 
    > - www/seamonkey
    > 
    > Similar to the other mozillas + some additional contortions due to its
    > build system. I will land the diff with the rust 1.95 build fix.
    > 
    > - games/dxx-rebirth
    > 
    > No idea. It appears that freebsd uses a different version from 20250329
    > and it appears to work for them... This repo seems active, although it
    > doesn't have release tags: https://github.com/dxx-rebirth/dxx-rebirth
    
    Thanks - I missed dxx-rebirth with my partial build (I was just looking
    at direct python deps, this one just depends on scons so I missed it).
    
    my 3.14 test machine is busy - this update builds on 3.13, I don't have
    a way to test runtime though.
    
    Index: Makefile
    ===================================================================
    RCS file: /cvs/ports/games/dxx-rebirth/Makefile,v
    diff -u -p -r1.14 Makefile
    --- Makefile	26 Sep 2023 09:41:34 -0000	1.14
    +++ Makefile	1 May 2026 16:04:43 -0000
    @@ -1,8 +1,8 @@
    -V =		0.60pl20220929
     COMMENT =	source port of Descent, a 6-degrees-of-freedom shooter
    -DISTNAME =	dxx-rebirth_${V:S/0.60pl//g}-src
    -PKGNAME =	dxx-rebirth-${V}
    -REVISION =	0
    +GH_ACCOUNT =	dxx-rebirth
    +GH_PROJECT =	dxx-rebirth
    +GH_COMMIT =	b749eadb4080f596ce90ef7b2be97d7c1213567f
    +DISTNAME =	dxx-rebirth-0.60pl20260412
     CATEGORIES =	games x11
     
     HOMEPAGE =	https://www.dxx-rebirth.com/
    @@ -11,10 +11,7 @@ MAINTAINER =	Thomas Frohwein <thfr@openb
     # GPLv3 with special exception for Parallax license
     PERMIT_PACKAGE =	Yes
     
    -WANTLIB += ${COMPILER_LIBCXX} GL GLU SDL SDL_image SDL_mixer c m physfs png z
    -
    -SITES =		https://www.dxx-rebirth.com/download/dxx/rebirth/
    -EXTRACT_SUFX =	.tar.xz
    +WANTLIB += ${COMPILER_LIBCXX} GL GLU SDL SDL_image SDL_mixer c m physfs png
     
     # requires -std=gnu++20
     COMPILER =	base-clang
    @@ -23,8 +20,11 @@ MODULES =	devel/scons
     MODSCONS_ENV =	CPPFLAGS="-I${LOCALBASE}/include -I${LOCALBASE}/include/SDL -I${X11BASE}/include" \
     		CXXFLAGS="${CXXFLAGS}" \
     		LINKFLAGS="-L${LOCALBASE}/lib -L${X11BASE}/lib"
    -MODSCONS_FLAGS =	ignore_unknown_variables=1 verbosebuild=1 \
    -			show_tool_version=false
    +MODSCONS_FLAGS = \
    +		ignore_unknown_variables=true \
    +		ipv6=false \
    +		verbosebuild=true \
    +		show_tool_version=false
     
     BUILD_DEPENDS =	devel/boost,-main
     LIB_DEPENDS =	devel/physfs \
    Index: distinfo
    ===================================================================
    RCS file: /cvs/ports/games/dxx-rebirth/distinfo,v
    diff -u -p -r1.3 distinfo
    --- distinfo	3 Feb 2023 20:11:58 -0000	1.3
    +++ distinfo	1 May 2026 16:04:43 -0000
    @@ -1,2 +1,2 @@
    -SHA256 (dxx-rebirth_20220929-src.tar.xz) = pRDaXbJBsFbjXVa5Rox8+eVA5mEM1TtM0k06FsYMlQA=
    -SIZE (dxx-rebirth_20220929-src.tar.xz) = 1416232
    +SHA256 (dxx-rebirth-0.60pl20260412-b749eadb.tar.gz) = qCz2J9cIJjO71BfroOG9zhJ87OCf4aWs3rPYiT/aQss=
    +SIZE (dxx-rebirth-0.60pl20260412-b749eadb.tar.gz) = 2292934
    Index: patches/patch-SConstruct
    ===================================================================
    RCS file: /cvs/ports/games/dxx-rebirth/patches/patch-SConstruct,v
    diff -u -p -r1.8 patch-SConstruct
    --- patches/patch-SConstruct	12 Apr 2023 16:38:39 -0000	1.8
    +++ patches/patch-SConstruct	1 May 2026 16:04:43 -0000
    @@ -1,90 +1,33 @@
    -Remove all the -Werror= flags.
    -
    -Backport of 769164a55bd74f2f11d14dd5175fbee01cf77638 ("Fix SConstruct
    -for scons 4.5.0+; env['CPPDEFINES'] may return a deque object") and
    -partial backport of 189ac23f61605903eb3eaa0004d287b7bd9296bc ("Prefer
    -V.copy over V[:]")
    -
     Index: SConstruct
     --- SConstruct.orig
     +++ SConstruct
    -@@ -2107,7 +2107,7 @@ help:assume compiler supports __attribute__((unused))
    +@@ -2179,7 +2179,7 @@ help:assume compiler supports __attribute__((unused))
      		self._check_macro(context,macro_name=macro_name,macro_value=macro_value,test="""
    - __attribute_unused
    + dxx_compiler_attribute_unused
      static void a(){}
    --""", msg='for function __attribute__((unused))', successflags={'CXXFLAGS' : [get_Werror_string(context.env['CXXFLAGS']) + 'unused']})
    +-""", msg='for function __attribute__((unused))', successflags={'CXXFLAGS' : get_Werror_sequence(context.env['CXXFLAGS'], ('-Wunused',))})
     +""", msg='for function __attribute__((unused))', successflags={'CXXFLAGS' : ''})
      
      	@_custom_test
    - 	def check_attribute_warning(self,context,_check_function_dce_attribute=_check_function_dce_attribute):
    -@@ -2451,7 +2451,7 @@ $ x86_64-pc-linux-gnu-g++-5.4.0 -x c++ -S -Wformat -o 
    + 	def check_cxx11_static_assert(self,context,_f='''
    +@@ -2495,7 +2495,7 @@ $ x86_64-pc-linux-gnu-g++-5.4.0 -x c++ -S -Wformat -o 
      	@_custom_test
      	def check_compiler_useless_cast(self,context):
      		Compile = self.Compile
    --		flags = {'CXXFLAGS' : [get_Werror_string(context.env['CXXFLAGS']) + 'useless-cast']}
    +-		flags = {'CXXFLAGS' : get_Werror_sequence(context.env['CXXFLAGS'], ('-Wuseless-cast',))}
     +		flags = {'CXXFLAGS' : ''}
      		if Compile(context, text='''
      /*
       * SDL on Raspbian provokes a warning from -Wuseless-cast
    -@@ -4451,16 +4451,6 @@ class DXXCommon(LazyObjectConstructor):
    - 		env.Prepend(CXXFLAGS = [
    - 			'-ftabstop=4',
    - 			'-Wall',
    --			Werror + 'extra',
    --			Werror + 'format=2',
    --			Werror + 'missing-braces',
    --			Werror + 'missing-include-dirs',
    --			Werror + 'uninitialized',
    --			Werror + 'undef',
    --			Werror + 'pointer-arith',
    --			Werror + 'cast-qual',
    --			Werror + 'missing-declarations',
    --			Werror + 'vla',
    - 		])
    - 		env.Append(
    - 			CXXFLAGS = ['-funsigned-char'],
    -@@ -4831,7 +4821,7 @@ class DXXProgram(DXXCommon):
    - 			# Bypass ccache, if any, since this is a preprocess only
    - 			# call.
    - 			kwargs['CXXFLAGS'] = (env['CXXFLAGS'] or []) + ['-E']
    --			kwargs['CPPDEFINES'] = (env['CPPDEFINES'] or []) + [
    -+			kwargs['CPPDEFINES'] = list(env['CPPDEFINES'] or []) + [
    - 					# Define these tokens to themselves so that
    - 					# `#ifndef` does not try to redefine them.
    - 					('DXX_KCONFIG_UI_ENUM', 'DXX_KCONFIG_UI_ENUM'),
    -@@ -4851,7 +4841,7 @@ class DXXProgram(DXXCommon):
    - 	def _apply_target_name(self,name):
    - 		return os.path.join(os.path.dirname(name), '.%s.%s' % (self.target, os.path.splitext(os.path.basename(name))[0]))
    - 	def _apply_env_version_seq(self,env,_empty={}):
    --		return _empty if self.user_settings.pch else {'CPPDEFINES' : env['CPPDEFINES'] + [('DXX_VERSION_SEQ', self.DXX_VERSION_SEQ)]}
    -+		return _empty if self.user_settings.pch else {'CPPDEFINES' : list(env['CPPDEFINES']) + [('DXX_VERSION_SEQ', self.DXX_VERSION_SEQ)]}
    - 	get_objects_similar_arch_ogl = DXXCommon.create_lazy_object_states_getter((LazyObjectState(sources=(
    - 'similar/arch/ogl/gr.cpp',
    - 'similar/arch/ogl/ogl.cpp',
    -@@ -4947,7 +4937,7 @@ class DXXProgram(DXXCommon):
    - 	), LazyObjectState(sources=(
    - 'similar/main/inferno.cpp',
    - ),
    --		transform_env = (lambda self, env: {'CPPDEFINES' : env['CPPDEFINES'] + env.__dxx_CPPDEFINE_SHAREPATH + env.__dxx_CPPDEFINE_git_version}),
    -+		transform_env = (lambda self, env: {'CPPDEFINES' : list(env['CPPDEFINES']) + env.__dxx_CPPDEFINE_SHAREPATH + env.__dxx_CPPDEFINE_git_version}),
    - 		transform_target=_apply_target_name,
    - 	), LazyObjectState(sources=(
    - 'similar/main/kconfig.cpp',
    -@@ -4957,7 +4947,7 @@ class DXXProgram(DXXCommon):
    - 	), LazyObjectState(sources=(
    - 'similar/misc/physfsx.cpp',
    - ),
    --		transform_env = (lambda self, env: {'CPPDEFINES' : env['CPPDEFINES'] + env.__dxx_CPPDEFINE_SHAREPATH}),
    -+		transform_env = (lambda self, env: {'CPPDEFINES' : list(env['CPPDEFINES']) + env.__dxx_CPPDEFINE_SHAREPATH}),
    - 		transform_target=_apply_target_name,
    - 	), LazyObjectState(sources=(
    - 'similar/main/playsave.cpp',
    -@@ -5168,7 +5158,7 @@ class DXXProgram(DXXCommon):
    - 			objects.extend(self.get_objects_editor())
    - 			objects.extend(static_archive_construction.get_objects_editor())
    - 		versid_build_environ = ['CXX', 'CPPFLAGS', 'CXXFLAGS', 'LINKFLAGS']
    --		versid_cppdefines = env['CPPDEFINES'][:]
    -+		versid_cppdefines = env['CPPDEFINES'].copy()
    - 		extra_version = user_settings.extra_version
    - 		if extra_version is None:
    - 			extra_version = 'v%u.%u' % (self.VERSION_MAJOR, self.VERSION_MINOR)
    +@@ -4723,11 +4723,6 @@ class DXXCommon(LazyObjectConstructor):
    + 		env = self.env
    + 		user_settings = self.user_settings
    + 
    +-		# Insert default CXXFLAGS.  User-specified CXXFLAGS, if any, are
    +-		# appended to this list and will override these defaults.  The
    +-		# defaults are present to ensure that a user who does not set
    +-		# any options gets a good default experience.
    +-		env.Prepend(CXXFLAGS = ['-g', '-O2'])
    + 		# Raspberry Pi?
    + 		if user_settings.raspberrypi == 'yes':
    + 			rpi_vc_path = user_settings.rpi_vc_path
    Index: patches/patch-similar_2d_font_cpp
    ===================================================================
    RCS file: patches/patch-similar_2d_font_cpp
    diff -N patches/patch-similar_2d_font_cpp
    --- patches/patch-similar_2d_font_cpp	3 Feb 2023 20:11:58 -0000	1.1
    +++ /dev/null	1 Jan 1970 00:00:00 -0000
    @@ -1,14 +0,0 @@
    -fix function signature mismatch
    -
    -Index: similar/2d/font.cpp
    ---- similar/2d/font.cpp.orig
    -+++ similar/2d/font.cpp
    -@@ -1024,7 +1024,7 @@ static std::unique_ptr<grs_font> gr_internal_init_font
    - 
    - 		colormap[TRANSPARENCY_COLOR] = TRANSPARENCY_COLOR;              // changed from colormap[255] = 255 to this for macintosh
    - 
    --		decode_data(std::span{ft_data, ptr}, colormap, freq);
    -+		decode_data(std::span{ft_data, *ptr}, colormap, freq);
    - 	}
    - 	fontfile.reset();
    - 	//set curcanv vars
    Index: patches/patch-similar_main_mglobal_cpp
    ===================================================================
    RCS file: /cvs/ports/games/dxx-rebirth/patches/patch-similar_main_mglobal_cpp,v
    diff -u -p -r1.4 patch-similar_main_mglobal_cpp
    --- patches/patch-similar_main_mglobal_cpp	3 Feb 2023 20:11:58 -0000	1.4
    +++ patches/patch-similar_main_mglobal_cpp	1 May 2026 16:04:43 -0000
    @@ -3,7 +3,7 @@ Always enable full template instantiatio
     Index: similar/main/mglobal.cpp
     --- similar/main/mglobal.cpp.orig
     +++ similar/main/mglobal.cpp
    -@@ -179,7 +179,7 @@ void reset_globals_for_new_game()
    +@@ -147,7 +147,7 @@ void reset_globals_for_new_game()
      #if (defined(__NO_INLINE__) && __NO_INLINE__ > 0) || defined(__SANITIZE_ADDRESS__)
      #define DXX_VALPTRIDX_ENABLE_FULL_TEMPLATE_INSTANTIATION	1
      #else
    
    
  • Theo Buehler:

    py3.14