Open Conni2461 opened 2 years ago
@Conni2461 I'd like to try tackle this.
Reading through #43 I am glad you went with cmake over what was initially proposed 👍🏻 .
As a part time windows user and full time linux user, I manually tried to provide myself some dlls. It wasn't trivial and I suspect most will give up.
So is good we are looking to automate this for users that want it.
From #43 it looks like you want this to be as simple and optional as possible for the end user:
- user adds manifest line to their plugin manager
- plugin manager installs
telescope-fzf-native.nvim
- a user specified post install step for the plugin downloads the binary as
build/libfzf.so
orbuild/libfzf.dll
- user can now start using the plugin
spawn
and another external cli tool to download files from artifacts (instead of releases).socket.http
wouldn't work?)The release process
I suspect you used artifacts
instead of releases
because you wanted to avoid the step of tagging a commit as a release and all the ceremony regarding that?
artifacts
system. This is because Github only intendeds for the artifact system to be a shortlived filestore between jobs and workflow runs.
You can infer this from the maximum timeframe that Github allows you to retain logs and artifacts from workflow runs:
Do you want :
Release v1.2.3
Release abcd1234
release/.*
👉🏻 Release branch_name_here
What to build
ci.yml
? clang
instead of cc
and then running scoop install llvm
.
windows-x64-vc-libfzf.dll
darwin-x64-clang-libfzf.so
darwin-x64-gcc-libfzf.so
linux-x64-clang-libfzf.so
linux-x64-gcc-libfzf.so
Ok first stage is done: automate the creation of a release with the various .so
and .dll
attached.
https://github.com/airtonix/telescope-fzf-native.nvim/releases
Next is the lua downloader that we can attach to some syntax like:
require('lazy').setup({
{
'nvim-telescope/telescope-fzf-native.nvim',
build = function() require('telescope-fzf-native').download_library() end
}
})
Some more ideas here that might reduce management of releases:
main
: checks must pass, admins (you) can skip checks.@next
) and merging a release PR == tagged versioned release.This can be an optional follow up feature.
Ok downloder works now with this syntax:
...
{ 'airtonix/telescope-fzf-native.nvim',
branch = 'feature/69-prebuilt-release-binaries',
build = function()
require('telescope-fzf-native').download_library()
end
}
...
this is for lazy.nvim
, I imagine it'll the same syntax for packer.
Last problem is this:
lazy.nvim
to install itI imagine what's going on is that something about the state of those files needs to be uncached?
You are amazing, implementing all this :heart:
I didnt even remember writing one. ^^
I think i have a solution for the reloading issue, let me try to fix it.
There is a lot of stuff here, but lets move the conversation to the PR :)
what did I do wrong?
I am using LazyVim in corperate enviroment, so no authorization to install windows c++ build package. Thanks to prebuild, I am able to make it working. However, I have difficult to let LAZY to live with this. Below is my config.
however, the problem is, Lazy is always try to run CMAKE. After I copied dll to build, everything is working, but LAZY is not able to recognize it and always want to clean it.
what did I do wrong?
Thanks so much.
these should be downloadable with a script. So people without access to compiler and build systems can get an easier setup