From 8e76c50d6acb8508c061088f4afb5356e241293e Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Fri, 9 Jun 2023 13:39:30 -0400 Subject: [PATCH] kitty: update to 0.28.1, adopt. add subpackages for components that can be used in remote/headless envs --- srcpkgs/kitty-kitten | 1 + srcpkgs/kitty-shell-integration | 1 + srcpkgs/kitty/patches/cross.patch | 128 ++++++++++++++++++++++++++++++ srcpkgs/kitty/template | 51 +++++++++--- 4 files changed, 171 insertions(+), 10 deletions(-) create mode 120000 srcpkgs/kitty-kitten create mode 120000 srcpkgs/kitty-shell-integration create mode 100644 srcpkgs/kitty/patches/cross.patch diff --git a/srcpkgs/kitty-kitten b/srcpkgs/kitty-kitten new file mode 120000 index 000000000000..659fb6b426aa --- /dev/null +++ b/srcpkgs/kitty-kitten @@ -0,0 +1 @@ +kitty \ No newline at end of file diff --git a/srcpkgs/kitty-shell-integration b/srcpkgs/kitty-shell-integration new file mode 120000 index 000000000000..659fb6b426aa --- /dev/null +++ b/srcpkgs/kitty-shell-integration @@ -0,0 +1 @@ +kitty \ No newline at end of file diff --git a/srcpkgs/kitty/patches/cross.patch b/srcpkgs/kitty/patches/cross.patch new file mode 100644 index 000000000000..b718adb3e6d3 --- /dev/null +++ b/srcpkgs/kitty/patches/cross.patch @@ -0,0 +1,128 @@ +From 88a5086f71f44e09539cae9af0cf62697df01f45 Mon Sep 17 00:00:00 2001 +From: Kovid Goyal +Date: Tue, 13 Jun 2023 07:56:16 +0530 +Subject: [PATCH] Add rudimentary support for cross-compilation + +Not really tested, actual cross compilers, feel free to send patches. +Fixes #6354 +--- + +diff --git a/setup.py b/setup.py +index 1d3c76f0f7..2b1ba6fde9 100755 +--- a/setup.py ++++ b/setup.py +@@ -62,6 +62,8 @@ class Options(argparse.Namespace): + sanitize: bool = False + prefix: str = './linux-package' + dir_for_static_binaries: str = 'build/static' ++ skip_code_generation: bool = False ++ clean_for_cross_compile: bool = False + incremental: bool = True + profile: bool = False + libdir_name: str = 'lib' +@@ -841,16 +843,17 @@ def extract_rst_targets() -> Dict[str, Dict[str, str]]: + return cast(Dict[str, Dict[str, str]], m['main']()) + + +-def build_ref_map() -> str: +- d = extract_rst_targets() +- h = 'static const char docs_ref_map[] = {\n' + textwrap.fill(', '.join(map(str, bytearray(json.dumps(d).encode('utf-8'))))) + '\n};\n' ++def build_ref_map(skip_generation: bool = False) -> str: + dest = 'kitty/docs_ref_map_generated.h' +- q = '' +- with suppress(FileNotFoundError), open(dest) as f: +- q = f.read() +- if q != h: +- with open(dest, 'w') as f: +- f.write(h) ++ if not skip_generation: ++ d = extract_rst_targets() ++ h = 'static const char docs_ref_map[] = {\n' + textwrap.fill(', '.join(map(str, bytearray(json.dumps(d).encode('utf-8'))))) + '\n};\n' ++ q = '' ++ with suppress(FileNotFoundError), open(dest) as f: ++ q = f.read() ++ if q != h: ++ with open(dest, 'w') as f: ++ f.write(h) + return dest + + +@@ -868,7 +871,7 @@ def build(args: Options, native_optimizations: bool = True, call_init: bool = Tr + if call_init: + init_env_from_args(args, native_optimizations) + sources, headers = find_c_files() +- headers.append(build_ref_map()) ++ headers.append(build_ref_map(args.skip_code_generation)) + compile_c_extension( + kitty_env(), 'kitty/fast_data_types', args.compilation_database, sources, headers + ) +@@ -881,6 +884,9 @@ def safe_makedirs(path: str) -> None: + + + def update_go_generated_files(args: Options, kitty_exe: str) -> None: ++ if args.skip_code_generation: ++ print('Skipping generation of Go files due to command line option', flush=True) ++ return + # update all the various auto-generated go files, if needed + if args.verbose: + print('Updating Go generated files...', flush=True) +@@ -1493,7 +1499,7 @@ def clean_launcher_dir(launcher_dir: str) -> None: + os.remove(x) + + +-def clean() -> None: ++def clean(for_cross_compile: bool = False) -> None: + + def safe_remove(*entries: str) -> None: + for x in entries: +@@ -1506,7 +1512,9 @@ def safe_remove(*entries: str) -> None: + safe_remove( + 'build', 'compile_commands.json', 'link_commands.json', + 'linux-package', 'kitty.app', 'asan-launcher', +- 'kitty-profile', 'docs/generated') ++ 'kitty-profile') ++ if not for_cross_compile: ++ safe_remove('docs/generated') + clean_launcher_dir('kitty/launcher') + + def excluded(root: str, d: str) -> bool: +@@ -1521,7 +1529,9 @@ def excluded(root: str, d: str) -> bool: + dirs.remove(d) + for f in files: + ext = f.rpartition('.')[-1] +- if ext in ('so', 'dylib', 'pyc', 'pyo') or f.endswith('_generated.h') or f.endswith('_generated.go') or f.endswith('_generated.bin'): ++ if ext in ('so', 'dylib', 'pyc', 'pyo') or (not for_cross_compile and ( ++ f.endswith('_generated.h') or f.endswith('_generated.go') or f.endswith('_generated.bin')) ++ ): + os.unlink(os.path.join(root, f)) + for x in glob.glob('glfw/wayland-*-protocol.[ch]'): + os.unlink(x) +@@ -1581,6 +1591,19 @@ def option_parser() -> argparse.ArgumentParser: # {{{ + default=Options.dir_for_static_binaries, + help='Where to create the static kitten binary' + ) ++ p.add_argument( ++ '--skip-code-generation', ++ default=Options.skip_code_generation, ++ action='store_true', ++ help='Do not create the *_generated.* source files. This is useful if they' ++ ' have already been generated by a previous build, for example during a two-stage cross compilation.' ++ ) ++ p.add_argument( ++ '--clean-for-cross-compile', ++ default=Options.clean_for_cross_compile, ++ action='store_true', ++ help='Do not clean generated Go source files. Useful for cross-compilation.' ++ ) + p.add_argument( + '--full', + dest='incremental', +@@ -1743,7 +1766,7 @@ def main() -> None: + texe = os.path.abspath(os.path.join(launcher_dir, 'kitty')) + os.execl(texe, texe, '+launch', 'test.py') + if args.action == 'clean': +- clean() ++ clean(for_cross_compile=args.clean_for_cross_compile) + return + + with CompilationDatabase(args.incremental) as cdb: diff --git a/srcpkgs/kitty/template b/srcpkgs/kitty/template index 90eb7261085c..6ec5e8af4a50 100644 --- a/srcpkgs/kitty/template +++ b/srcpkgs/kitty/template @@ -1,20 +1,26 @@ # Template file for 'kitty' pkgname=kitty -version=0.26.5 -revision=2 +version=0.28.1 +revision=1 +build_helper="python3" pycompile_dirs="usr/lib/kitty" -hostmakedepends="pkg-config python3 wayland-devel wayland-protocols" +hostmakedepends="go pkg-config python3 wayland-devel wayland-protocols" makedepends="gettext-devel glfw-devel harfbuzz-devel libxkbcommon-devel - python3-devel wayland-devel wayland-protocols librsync-devel libcanberra-devel openssl-devel" -depends="kitty-terminfo-${version}_${revision}" + python3-devel wayland-devel wayland-protocols librsync-devel libcanberra-devel + openssl-devel dbus-devel libXcursor-devel libXrandr-devel libXi-devel + fontconfig-devel libxcb-devel lcms2-devel" +depends="kitty-terminfo-${version}_${revision} kitty-shell-integration-${version}_${revision} + kitty-kitten-${version}_${revision}" short_desc="Modern, hackable, featureful, OpenGL based terminal emulator" -maintainer="Benjamin Slade " -license="GPL-3.0-or-later" +maintainer="classabbyamp " +license="GPL-3.0-only" homepage="https://sw.kovidgoyal.net/kitty/" changelog="https://sw.kovidgoyal.net/kitty/changelog.html" distfiles="https://github.com/kovidgoyal/kitty/releases/download/v${version}/kitty-${version}.tar.xz" -checksum=5544a580314fec7711187ce28162909b5ecff6780071444fe96fb97f8be5c9ad +checksum=c11c545ca56adf1c26cfd8f5b4a3ba5f149f00542fbf0fa2c4439bd9bf6f78a5 python_version=3 +nopie_files="/usr/bin/kitten" + LDFLAGS+=" -Wl,-z,stack-size=2097152" # TIOCSWINSZ on ppc overflows signed int, used in ioctl() @@ -23,11 +29,22 @@ case "$XBPS_TARGET_MACHINE" in ppc*-musl) CFLAGS+=" -Wno-error=overflow";; esac +if [ "$CROSS_BUILD" ]; then + # cursed but this build system is a hot mess + hostmakedepends+=" $makedepends" +fi + do_build() { + local _cross_args if [ "$CROSS_BUILD" ]; then - CFLAGS+=" -I${XBPS_CROSS_BASE}/${py3_inc}" + # hot mess, continued + env CC="cc" CFLAGS="$XBPS_CFLAGS" LDFLAGS="$XBPS_LDFLAGS" python3 setup.py build \ + --prefix="${DESTDIR}/usr" --update-check-interval=0 --verbose + python3 setup.py clean --clean-for-cross-compile + _cross_args=(--skip-code-generation) fi - python3 setup.py linux-package --prefix=${DESTDIR}/usr --update-check-interval=0 --verbose + . /void-packages/common/environment/build-style/go.sh + python3 setup.py linux-package --prefix="${DESTDIR}/usr" --update-check-interval=0 --verbose "${_cross_args[@]}" } do_install() { @@ -40,3 +57,17 @@ kitty-terminfo_package() { vmove usr/share/terminfo } } + +kitty-shell-integration_package() { + short_desc+=" - shell integration scripts" + pkg_install() { + vmove usr/lib/kitty/shell-integration + } +} + +kitty-kitten_package() { + short_desc+=" - kitten client" + pkg_install() { + vmove usr/bin/kitten + } +}