diff --git a/x11-toolkits/ntk/Makefile b/x11-toolkits/ntk/Makefile index bb5f7a89ac20..24f1159e465c 100644 --- a/x11-toolkits/ntk/Makefile +++ b/x11-toolkits/ntk/Makefile @@ -1,51 +1,57 @@ PORTNAME= ntk DISTVERSIONPREFIX= v DISTVERSION= 1.3.1001 PORTREVISION= 1 MASTER_SITES= https://git.kx.studio/non/ntk/archive/${DISTVERSIONFULL}${EXTRACT_SUFX}?dummy=/ # was at GH_ACCOUNT=original-male CATEGORIES= x11-toolkits MAINTAINER= yuri@FreeBSD.org COMMENT= Fork of FLTK 1.3.0 which adds graphics rendering via Cairo, etc WWW= https://github.com/original-male/ntk LICENSE= LGPL20 LICENSE_FILE= ${WRKSRC}/COPYING LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 \ libpng.so:graphics/png USES= gnome jpeg localbase:ldflags pkgconfig waf xorg USE_CXXSTD= c++14 USE_GNOME= cairo USE_XORG= x11 xft USE_LDCONFIG= yes WRKSRC= ${WRKDIR}/${PORTNAME} PLIST_SUB= SHLIB_VER=${PORTVERSION:R} +# The bundled waf's waflib still imports the 'imp' module removed in +# Python 3.12. Provide a minimal shim on PYTHONPATH so waflib can be +# imported on 3.12 while still working on earlier versions. +CONFIGURE_ENV+= PYTHONPATH=${FILESDIR}${PYTHONPATH:S/^/:/} +MAKE_ENV+= PYTHONPATH=${FILESDIR}${PYTHONPATH:S/^/:/} + post-patch: @${REINPLACE_CMD} -e " \ s|conf\.env\['LIB_DL'\] = \['dl'\]|conf.env['LIB_DL'] = []|; \ s|bld.add_post_fun( run_ldconfig )|#bld.add_post_fun( run_ldconfig )|" \ ${WRKSRC}/wscript post-install: # Removing items that are there by mistake: https://github.com/original-male/ntk/issues/13 @${REINPLACE_CMD} -e ' \ /^Requires.*/d; \ s| -lglu||; \ s| -lgl||; \ s| -D_LARGEFILE64_SOURCE||; \ s| -D_FILE_OFFSET_BITS=64||' \ ${STAGEDIR}${PREFIX}/libdata/pkgconfig/ntk*.pc @${RM} ${STAGEDIR}${PREFIX}/lib/libntk*.a* # https://github.com/original-male/ntk/issues/12 @${STRIP_CMD} \ ${STAGEDIR}${PREFIX}/bin/ntk-chtheme \ ${STAGEDIR}${PREFIX}/bin/ntk-fluid \ ${STAGEDIR}${PREFIX}/lib/libntk.so.${PORTVERSION} \ ${STAGEDIR}${PREFIX}/lib/libntk_images.so.${PORTVERSION} .include diff --git a/x11-toolkits/ntk/files/imp.py b/x11-toolkits/ntk/files/imp.py new file mode 100644 index 000000000000..f4a62aa67164 --- /dev/null +++ b/x11-toolkits/ntk/files/imp.py @@ -0,0 +1,48 @@ +"""Compatibility shim for the 'imp' module removed in Python 3.12. + +The bundled waf waflib still imports imp; on Python 3.12 we provide the +few attributes that waflib uses (new_module, get_tag, load_source). +On older versions we re-export the real built-in imp module. +""" + +import importlib.util +import sys +import types + + +def _provide_shim(): + def new_module(name): + return types.ModuleType(name) + + def get_tag(): + return sys.implementation.cache_tag + + def load_source(name, pathname): + spec = importlib.util.spec_from_file_location(name, pathname) + if spec is None or spec.loader is None: + raise ImportError("cannot load %r from %r" % (name, pathname)) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + return mod + + globals().update({ + 'new_module': new_module, + 'get_tag': get_tag, + 'load_source': load_source, + }) + + +if sys.version_info < (3, 12): + # Re-export the real built-in imp module instead of shadowing it. + _shim = sys.modules['imp'] + del sys.modules['imp'] + try: + import imp as _real_imp + except Exception: + _provide_shim() + sys.modules['imp'] = sys.modules.get('imp', _shim) + else: + globals().update(_real_imp.__dict__) + sys.modules['imp'] = _real_imp +else: + _provide_shim()