From c71ebc3d883c642802123e482503aaae97647c6a Mon Sep 17 00:00:00 2001 From: Marcin Puc Date: Thu, 16 May 2024 18:51:14 +0200 Subject: [PATCH 1/3] neovim: update to 0.10.0 --- .../patches/cmake-allow-build-type-none.patch | 39 +++-- srcpkgs/neovim/patches/cross-build.patch | 135 ++++++++++++++++++ srcpkgs/neovim/template | 27 ++-- 3 files changed, 166 insertions(+), 35 deletions(-) create mode 100644 srcpkgs/neovim/patches/cross-build.patch diff --git a/srcpkgs/neovim/patches/cmake-allow-build-type-none.patch b/srcpkgs/neovim/patches/cmake-allow-build-type-none.patch index 7654cc64a872e2..adffa83e6b2419 100644 --- a/srcpkgs/neovim/patches/cmake-allow-build-type-none.patch +++ b/srcpkgs/neovim/patches/cmake-allow-build-type-none.patch @@ -1,31 +1,28 @@ +Void uses the "None" build type to apply our chosen compile settings. + +diff --git a/cmake/Util.cmake b/cmake/Util.cmake +index f09de78..f48f2d0 100644 --- a/cmake/Util.cmake +++ b/cmake/Util.cmake -@@ -162,7 +162,7 @@ endfunction() - # Passing CMAKE_BUILD_TYPE for multi-config generators will now not only - # not be used, but also generate a warning for the user. - function(set_default_buildtype) +@@ -193,7 +193,7 @@ endfunction() + # Passing CMAKE_BUILD_TYPE for multi-config generators will not only not be + # used, but also generate a warning for the user. + function(set_default_buildtype BUILD_TYPE) - set(allowableBuildTypes Debug Release MinSizeRel RelWithDebInfo) + set(allowableBuildTypes Debug Release MinSizeRel RelWithDebInfo None) - - get_property(isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(isMultiConfig) -@@ -177,7 +177,7 @@ function(set_default_buildtype) - message(STATUS "CMAKE_BUILD_TYPE not specified, default is 'Debug'") - set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build" FORCE) - elseif(NOT CMAKE_BUILD_TYPE IN_LIST allowableBuildTypes) -- message(FATAL_ERROR "Invalid build type: ${CMAKE_BUILD_TYPE}") -+ message(WARNING "Invalid build type: ${CMAKE_BUILD_TYPE}") - else() - message(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") - endif() + if(NOT BUILD_TYPE IN_LIST allowableBuildTypes) + message(FATAL_ERROR "Invalid build type: ${BUILD_TYPE}") + endif() +diff --git a/runtime/lua/nvim/health.lua b/runtime/lua/nvim/health.lua +index 5bc0319..40a72c1 100644 --- a/runtime/lua/nvim/health.lua +++ b/runtime/lua/nvim/health.lua -@@ -152,7 +152,7 @@ +@@ -153,7 +153,7 @@ local function check_performance() local buildtype = vim.fn.matchstr(vim.fn.execute('version'), [[\v\cbuild type:?\s*[^\n\r\t ]+]]) - if empty(buildtype) then - health.report_error('failed to get build type from :version') + if buildtype == '' then + health.error('failed to get build type from :version') - elseif vim.regex([[\v(MinSizeRel|Release|RelWithDebInfo)]]):match_str(buildtype) then + elseif vim.regex([[\v(MinSizeRel|Release|RelWithDebInfo|None)]]):match_str(buildtype) then - health.report_ok(buildtype) + health.ok(buildtype) else - health.report_info(buildtype) + health.info(buildtype) diff --git a/srcpkgs/neovim/patches/cross-build.patch b/srcpkgs/neovim/patches/cross-build.patch new file mode 100644 index 00000000000000..6e09f660f4ea8c --- /dev/null +++ b/srcpkgs/neovim/patches/cross-build.patch @@ -0,0 +1,135 @@ +diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt +index c171fab..cb29798 100644 +--- a/runtime/CMakeLists.txt ++++ b/runtime/CMakeLists.txt +@@ -11,7 +11,7 @@ get_directory_property(LUA_GEN DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITI + get_directory_property(LUA_GEN_DEPS DIRECTORY ${PROJECT_SOURCE_DIR}/src/nvim DEFINITION LUA_GEN_DEPS) + + add_custom_command(OUTPUT ${GENERATED_SYN_VIM} +- COMMAND ${LUA_GEN} ${SYN_VIM_GENERATOR} ${GENERATED_SYN_VIM} ${FUNCS_DATA} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${SYN_VIM_GENERATOR} ${GENERATED_SYN_VIM} ${FUNCS_DATA} + DEPENDS + ${LUA_GEN_DEPS} + ${SYN_VIM_GENERATOR} +@@ -33,7 +33,7 @@ foreach(PACKAGE ${PACKAGES}) + add_custom_command(OUTPUT "${GENERATED_PACKAGE_DIR}/${PACKNAME}/doc/tags" + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PACKAGE} ${GENERATED_PACKAGE_DIR}/${PACKNAME} +- COMMAND $ ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + -u NONE -i NONE -e --headless -c "helptags doc" -c quit + DEPENDS + nvim_bin +@@ -65,7 +65,7 @@ add_custom_command(OUTPUT ${GENERATED_HELP_TAGS} + COMMAND ${CMAKE_COMMAND} -E remove_directory doc + COMMAND ${CMAKE_COMMAND} -E copy_directory + ${PROJECT_SOURCE_DIR}/runtime/doc doc +- COMMAND $ ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ + -u NONE -i NONE -e --headless -c "helptags ++t doc" -c quit + DEPENDS + nvim_bin +diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt +index d9cc695..81e9b50 100644 +--- a/src/nvim/CMakeLists.txt ++++ b/src/nvim/CMakeLists.txt +@@ -541,7 +541,7 @@ foreach(sfile ${NVIM_SOURCES} + add_custom_command( + OUTPUT "${gf_c_h}" "${gf_h_h}" + COMMAND ${CMAKE_C_COMPILER} ${sfile} ${PREPROC_OUTPUT} ${gen_cflags} +- COMMAND ${LUA_GEN} "${HEADER_GENERATOR}" "${sfile}" "${gf_c_h}" "${gf_h_h}" "${gf_i}" ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} "${HEADER_GENERATOR}" "${sfile}" "${gf_c_h}" "${gf_h_h}" "${gf_i}" + DEPENDS ${depends}) + list(APPEND NVIM_GENERATED_FOR_SOURCES "${gf_c_h}") + list(APPEND NVIM_GENERATED_FOR_HEADERS "${gf_h_h}") +@@ -551,7 +551,7 @@ foreach(sfile ${NVIM_SOURCES} + endforeach() + + add_custom_command(OUTPUT ${GENERATED_UNICODE_TABLES} +- COMMAND ${LUA_PRG} ${UNICODE_TABLES_GENERATOR} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_PRG} ${UNICODE_TABLES_GENERATOR} + ${UNICODE_DIR} + ${GENERATED_UNICODE_TABLES} + DEPENDS +@@ -565,7 +565,7 @@ configure_file(${GENERATOR_DIR}/nvim_version.lua.in ${NVIM_VERSION_LUA}) + add_custom_command( + OUTPUT ${GENERATED_API_DISPATCH} ${GENERATED_API_METADATA} + ${FUNCS_METADATA} ${LUA_API_C_BINDINGS} ${GENERATED_KEYSETS_DEFS} +- COMMAND ${LUA_GEN} ${API_DISPATCH_GENERATOR} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${API_DISPATCH_GENERATOR} + ${GENERATED_API_DISPATCH} + ${GENERATED_API_METADATA} ${FUNCS_METADATA} + ${LUA_API_C_BINDINGS} +@@ -589,7 +589,7 @@ add_custom_command( + OUTPUT ${VIM_MODULE_FILE} + COMMAND ${CMAKE_COMMAND} -E env + "LUAC_PRG=${LUAC_PRG}" +- ${LUA_PRG} ${CHAR_BLOB_GENERATOR} -c ${VIM_MODULE_FILE} ++ ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_PRG} ${CHAR_BLOB_GENERATOR} -c ${VIM_MODULE_FILE} + # NB: vim._init_packages and vim.inspect must be be first and second ones + # respectively, otherwise --luamod-dev won't work properly. + ${LUA_INIT_PACKAGES_MODULE_SOURCE} "vim._init_packages" +@@ -624,7 +624,7 @@ add_custom_command( + ${GENERATED_UI_EVENTS_REMOTE} + ${UI_METADATA} + ${GENERATED_UI_EVENTS_CLIENT} +- COMMAND ${LUA_GEN} ${API_UI_EVENTS_GENERATOR} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${API_UI_EVENTS_GENERATOR} + ${CMAKE_CURRENT_LIST_DIR}/api/ui_events.in.h + ${GENERATED_UI_EVENTS_CALL} + ${GENERATED_UI_EVENTS_REMOTE} +@@ -656,29 +656,29 @@ list(APPEND NVIM_GENERATED_FOR_SOURCES + ) + + add_custom_command(OUTPUT ${GENERATED_EX_CMDS_ENUM} ${GENERATED_EX_CMDS_DEFS} +- COMMAND ${LUA_GEN} ${EX_CMDS_GENERATOR} ${GENERATED_INCLUDES_DIR} ${GENERATED_DIR} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${EX_CMDS_GENERATOR} ${GENERATED_INCLUDES_DIR} ${GENERATED_DIR} + DEPENDS ${LUA_GEN_DEPS} ${EX_CMDS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/ex_cmds.lua + ) + + add_custom_command(OUTPUT ${GENERATED_FUNCS} ${FUNCS_DATA} +- COMMAND ${LUA_GEN} ${FUNCS_GENERATOR} ${GENERATED_DIR} ${FUNCS_METADATA} ${FUNCS_DATA} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${FUNCS_GENERATOR} ${GENERATED_DIR} ${FUNCS_METADATA} ${FUNCS_DATA} + DEPENDS ${LUA_GEN_DEPS} ${FUNCS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/eval.lua ${FUNCS_METADATA} + ) + list(APPEND NVIM_GENERATED_FOR_SOURCES + "${GENERATED_FUNCS}") + + add_custom_command(OUTPUT ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP} +- COMMAND ${LUA_GEN} ${EVENTS_GENERATOR} ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${EVENTS_GENERATOR} ${GENERATED_EVENTS_ENUM} ${GENERATED_EVENTS_NAMES_MAP} + DEPENDS ${LUA_GEN_DEPS} ${EVENTS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/auevents.lua + ) + + add_custom_command(OUTPUT ${GENERATED_OPTIONS} +- COMMAND ${LUA_GEN} ${OPTIONS_GENERATOR} ${GENERATED_OPTIONS} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${OPTIONS_GENERATOR} ${GENERATED_OPTIONS} + DEPENDS ${LUA_GEN_DEPS} ${OPTIONS_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/options.lua + ) + + add_custom_command(OUTPUT ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP} +- COMMAND ${LUA_GEN} ${OPTIONS_ENUM_GENERATOR} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP} ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} ${LUA_GEN} ${OPTIONS_ENUM_GENERATOR} ${GENERATED_OPTIONS_ENUM} ${GENERATED_OPTIONS_MAP} + DEPENDS ${LUA_GEN_DEPS} ${OPTIONS_ENUM_GENERATOR} ${CMAKE_CURRENT_LIST_DIR}/options.lua + ) + +diff --git a/src/nvim/po/CMakeLists.txt b/src/nvim/po/CMakeLists.txt +index 6c20089..0e99128 100644 +--- a/src/nvim/po/CMakeLists.txt ++++ b/src/nvim/po/CMakeLists.txt +@@ -53,13 +53,13 @@ if(HAVE_WORKING_LIBINTL AND GETTEXT_FOUND AND XGETTEXT_PRG AND ICONV_PRG) + list(SORT NVIM_RELATIVE_SOURCES) + add_custom_command( + OUTPUT ${NVIM_POT} +- COMMAND $ -u NONE -i NONE -n --headless --cmd "set cpo+=+" ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ -u NONE -i NONE -n --headless --cmd "set cpo+=+" + -S ${CMAKE_CURRENT_SOURCE_DIR}/tojavascript.vim ${NVIM_POT} ${PROJECT_SOURCE_DIR}/runtime/optwin.vim + COMMAND ${XGETTEXT_PRG} -o ${NVIM_POT} --default-domain=nvim + --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 + -D ${CMAKE_CURRENT_SOURCE_DIR} -D ${CMAKE_CURRENT_BINARY_DIR} + ${NVIM_RELATIVE_SOURCES} optwin.js +- COMMAND $ -u NONE -i NONE -n --headless --cmd "set cpo+=+" ++ COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $ -u NONE -i NONE -n --headless --cmd "set cpo+=+" + -S ${CMAKE_CURRENT_SOURCE_DIR}/fixfilenames.vim ${NVIM_POT} ../../../runtime/optwin.vim + VERBATIM + DEPENDS ${NVIM_SOURCES} nvim_bin nvim_runtime_deps) diff --git a/srcpkgs/neovim/template b/srcpkgs/neovim/template index d710d54c06a110..7cea9a8625d007 100644 --- a/srcpkgs/neovim/template +++ b/srcpkgs/neovim/template @@ -1,21 +1,21 @@ # Template file for 'neovim' pkgname=neovim -version=0.9.5 -revision=2 +version=0.10.0 +revision=1 build_style=cmake build_helper="qemu" configure_args="-DCOMPILE_LUA=OFF -DPREFER_LUA=$(vopt_if luajit OFF ON)" -hostmakedepends="gettext lua51-lpeg lua51-mpack lua51-BitOp - $(vopt_if luajit LuaJIT lua51)" -makedepends="libtermkey-devel libuv-devel libvterm-devel msgpack-devel - libluv-devel tree-sitter-devel $(vopt_if luajit LuaJIT-devel lua51-devel)" +hostmakedepends="gettext patchelf" +makedepends="libuv-devel libvterm-devel msgpack-devel + libluv-devel tree-sitter-devel unibilium-devel + lua51-lpeg $(vopt_if luajit LuaJIT-devel lua51-devel)" short_desc="Fork of Vim aiming to improve user experience, plugins and GUIs" maintainer="Marcin Puc " license="Apache-2.0, Vim" homepage="https://neovim.io" changelog="https://github.com/neovim/neovim/releases" distfiles="https://github.com/neovim/neovim/archive/refs/tags/v${version}.tar.gz" -checksum=fe74369fc30a32ec7a086b1013acd0eacd674e7570eb1acc520a66180c9e9719 +checksum=372ea2584b0ea2a5a765844d95206bda9e4a57eaa1a2412a9a0726bab750f828 build_options=luajit @@ -35,13 +35,12 @@ alternatives=" # They want assertion CFLAGS=-UNDEBUG -pre_configure() { - vsed -i runtime/CMakeLists.txt \ - -e "s|\".*/bin/nvim|\${CMAKE_CROSSCOMPILING_EMULATOR} &|g" - vsed -i src/nvim/po/CMakeLists.txt \ - -e "s|\$ Date: Thu, 16 May 2024 13:55:23 -0400 Subject: [PATCH 2/3] lua54-lpeg: shlib_provide lpeg.so for lua 5.1 needed for neovim --- common/shlibs | 1 + srcpkgs/lua54-lpeg/template | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/common/shlibs b/common/shlibs index a433865e964c0f..c5ee7ac98a9542 100644 --- a/common/shlibs +++ b/common/shlibs @@ -4435,3 +4435,4 @@ libcamera.so.0.2 libcamera-0.2.0_1 libcamera-base.so.0.2 libcamera-0.2.0_1 libKPim6MimeTreeParserCore.so.6 mimetreeparser-24.02.0_1 libKPim6MimeTreeParserWidgets.so.6 mimetreeparser-24.02.0_1 +/usr/lib/lua/5.1/lpeg.so lua51-lpeg-1.1.0_2 diff --git a/srcpkgs/lua54-lpeg/template b/srcpkgs/lua54-lpeg/template index 67be551249f4bb..222a0517f030a0 100644 --- a/srcpkgs/lua54-lpeg/template +++ b/srcpkgs/lua54-lpeg/template @@ -1,7 +1,7 @@ # Template file for 'lua54-lpeg' pkgname=lua54-lpeg version=1.1.0 -revision=1 +revision=2 hostmakedepends="lua51 lua52 lua53 lua54" makedepends="lua51-devel lua52-devel lua53-devel lua54-devel" depends="lua54" @@ -61,6 +61,7 @@ do_install() { lua51-lpeg_package() { depends="lua51" short_desc="${_desc} (5.1.x)" + shlib_provides="/usr/lib/lua/5.1/lpeg.so" pkg_install() { vmove usr/lib/lua/5.1 vmove usr/share/lua/5.1 From 10ce7aeb0d63f06da20a501047519e5bcec8aebd Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Thu, 16 May 2024 14:01:59 -0400 Subject: [PATCH 3/3] common/hooks/pre-pkg/04-generate-runtime-deps: support SONAME as path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit neovim looks for a SONAME that is a whole path find: warning: ‘-name’ matches against basenames only, but the given pattern contains a directory separator (‘/’), thus the expression will evaluate to false all the time. Did you mean ‘-wholename’? SONAME: /usr/lib/lua/5.1/lpeg.so <-> lua51-lpeg>=1.1.0_2 --- common/hooks/pre-pkg/04-generate-runtime-deps.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/common/hooks/pre-pkg/04-generate-runtime-deps.sh b/common/hooks/pre-pkg/04-generate-runtime-deps.sh index 488c8fc14ea3b2..78c4be2e63d51b 100644 --- a/common/hooks/pre-pkg/04-generate-runtime-deps.sh +++ b/common/hooks/pre-pkg/04-generate-runtime-deps.sh @@ -98,7 +98,12 @@ hook() { for f in ${verify_deps}; do unset _rdep _pkgname _rdepver - if [ "$(find ${PKGDESTDIR} -name "$f")" ]; then + local _findargs="-name" + # if SONAME is a path, find should use -wholename + if [[ "$f" = */* ]]; then + _findargs="-wholename" + fi + if [ "$(find "${PKGDESTDIR}" $_findargs "$f")" ]; then # Ignore libs by current pkg echo " SONAME: $f <-> $pkgname (ignored)" continue