mr-karan / doggo

:dog: Command-line DNS Client for Humans. Written in Golang
https://doggo.mrkaran.dev/
GNU General Public License v3.0
2.9k stars 100 forks source link

[Request] Binary releases for arm 32 bits #64

Open m040601 opened 1 year ago

m040601 commented 1 year ago

First of all, thank you for this interesting and very usefull tool. I stumbled upon it by chance and have been using it on my x86 pc's and servers.

It is very usefull that you release pre compiled binaries on github. These can be especially usefull in devices where you dont want to download 500 Mega of Go just to compile the tool. Or for maintainers of "-bin" package versions of linux distros distributions .

I noticed you also release binaries for arm. But that is only arm 64 bits (aarch64 etc).That leaves out a lot of usefull devices that are not ready for the trash. For example my Raspberry Pi Zero (armv6) many arm chromebooks (armv7h) etc. This doggo utility is also usefull there.

This tool is written in Go. An easy peasy language to compile and provide binaries compared to others. Since you are automating all of this and using go-releaser, I wonder if it wouldnt just be a small change in that config, and not a lot of extra work to ask for ?

See for example how fzf does it, https://github.com/junegunn/fzf

I'm not 100 % sure but I, think, you dont even have to worry about all the different old arm versions. Only2 arm binaries are sufficient. One "aarch64"for 64bits (you already have it) and another one low common denominator "arm" for all the other 32bit arm's. One that works in armv5, armv6, armv7h etc.

Thanks in advance

mr-karan commented 1 year ago

Hi! @m040601 Thanks for showing interest in the project. It might be trivial to add support for 32 bit arm by using arm in .goreleaser.yml. I might not be able to test this as I don't have the hardware for the same.

I can create a test build, could you please confirm if it runs fine?

m040601 commented 1 year ago

could you please confirm if it runs fine?

I can confirm you that I've been running all sorts of arm software on my raspberry pi 2b (23bit) and my samsung chromebook.

And I mean, really, all sorts of software. Servers, TUI apps, utilities, media tools etc. You can see all the software that is officially available for armv7h in Archlinuxarm for example, https://archlinuxarm.org/packages

In addition to the official software repos, there are also user provided "recipes". Even the package manager itself is a go tool, https://aur.archlinux.org/packages/yay-bin .That "-bin" part means it's a precompiled binary available in Archlinux user repos. It of course supports arm32 bits as well.

Debian is another distribution that you can have a look at (the armhf version) and see the 10's of thousands of arm32 official packages.

I've been doing this for many years on Archlinux arm. And I have never seen an example of this kind of go tool (cli network) that runs or 64 but not on 32.

That's actually, one of, the selling points of and reason for existence of Go.

Here is yet another go tool, a file manager that runs in dozens of old arm and mips architectures, https://github.com/gokcehan/lf/releases/tag/r28. You can also see their release process, although not based on go-releaser I think, https://github.com/gokcehan/lf/tree/master/.github/workflows

I can only explicityly confirm to you if doggo works, after testing a prebuilt binary. As I will not download and install half a gigabyte of Go and run a compiler on a tiny plattform, just to compile a small tool.