Open bradwood opened 2 years ago
i386 build works fine, btw.
works for me:
ryzen1> curl -LO https://github.com/tomnomnom/gron/releases/download/v0.6.0/gron-linux-amd64-0.6.0.tgz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 661 100 661 0 0 126 0 0:00:05 0:00:05 --:--:-- 151
100 2438k 100 2438k 0 0 231k 0 0:00:10 0:00:10 --:--:-- 524k
ryzen1> ls
gron-linux-amd64-0.6.0.tgz
ryzen1> tar -xzf gron-linux-amd64-0.6.0.tgz
ryzen1> ls -lsa
total 9240
0 drwxrwxr-x. 2 jfrancin jfrancin 52 Feb 21 12:27 .
4 drwx-----x. 39 jfrancin jfrancin 4096 Feb 21 12:27 ..
6796 -rwxrwxr-x. 1 jfrancin jfrancin 6957332 Jul 5 2018 gron
2440 -rw-rw-r--. 1 jfrancin jfrancin 2496601 Feb 21 12:27 gron-linux-amd64-0.6.0.tgz
ryzen1> file gron
gron: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, with debug_info, not stripped
ryzen1> ./gron --help
Transform JSON (from a file, URL, or stdin) into discrete assignments to make it greppable
Usage:
gron [OPTIONS] [FILE|URL|-]
Options:
-u, --ungron Reverse the operation (turn assignments back into JSON)
-c, --colorize Colorize output (default on tty)
-m, --monochrome Monochrome (don't colorize output)
-s, --stream Treat each line of input as a separate JSON object
-k, --insecure Disable certificate validation
-j, --json Represent gron data as JSON stream
--no-sort Don't sort output (faster)
--version Print version information
Exit Codes:
0 OK
1 Failed to open file
2 Failed to read input
3 Failed to form statements
4 Failed to fetch URL
5 Failed to parse statements
6 Failed to encode JSON
Examples:
gron /tmp/apiresponse.json
gron http://jsonplaceholder.typicode.com/users/1
curl -s http://jsonplaceholder.typicode.com/users/1 | gron
gron http://jsonplaceholder.typicode.com/users/1 | grep company | gron --ungron
ryzen1> uname -a
Linux ryzen1.narfnet.com 4.18.0-348.12.2.el8_5.x86_64 #1 SMP Mon Jan 17 07:06:06 EST 2022 x86_64 x86_64 x86_64 GNU/Linux
ryzen1> cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
weird. this is in an alpine container, maybe it's that, but golang is zero deps, so will have to look a bit more... cheers...
Indeed this seems to be the case. This line reproduces the error:
$ docker run --rm -it alpine sh -c "apk add curl; curl -LO https://github.com/tomnomnom/gron/releases/download/v0.6.0/gron-linux-amd64-0.6.0.tgz; tar zxvf gron-linux-amd64-0.6.0.tgz; ./gron --help"
sh: ./gron: not found
I'm not a golang pro but it might be the case that the net
package is responsible for this as mentioned in this stackoverflow answer. The net package is imported here, so gron might be affected by this.
A possible fix is to install the libc6-compat
package and start gron with the env variables CGO_ENABLED=1 GOOS=linux
:
$ docker run --rm -it alpine sh -c "apk add curl libc6-compat; curl -LO https://github.com/tomnomnom/gron/releases/download/v0.6.0/gron-linux-amd64-0.6.0.tgz; tar zxvf gron-linux-amd64-0.6.0.tgz; CGO_ENABLED=1 GOOS=linux ./gron --help"
Transform JSON (from a file, URL, or stdin) into discrete assignments to make it greppable
...
With this trick even the network I/O works without problems in my case:
$ docker run --rm -it alpine sh -c "apk add curl libc6-compat; curl -LO https://github.com/tomnomnom/gron/releases/download/v0.6.0/gron-linux-amd64-0.6.0.tgz; tar zxvf gron-linux-amd64-0.6.0.tgz; CGO_ENABLED=1 GOOS=linux ./gron https://api.github.com/users"
json = [];
json[0] = {};
json[0].avatar_url = "https://avatars.githubusercontent.com/u/1?v=4";
...
Hope this helps.
I think the binaries for Linux x86 are broken:
Or am I doing something stupid?