[Fixed] Incorrect releases selected for delta and lsd (potentially more?)
jaridmargolin opened this issue · 7 comments
What were you trying to install (or what else went wrong)?
I believe that webi is installing the incorrect releases for several packages, including lsd
and delta
, in certain situations.
What exactly did you do? / What went wrong? / Which OS did you try on?
Within a devcontainer running on my M1 Mac, lsd
and delta
report as being successfully installed but then both report errors when being executed: qemu-arm: Could not open '/lib/ld-linux-armhf.so.3': No such file or directory
. It should be attempting to use ld-linux-aarch64.so.1
.
Using delta
, I'm tracing things a bit but because some of the logic sits inside of the API, I lose sight of what happens.
- The following installer is fetched: https://webi.sh/api/installers/delta@0.16.5.sh?formats=tar,exe,zip,xz,git,dmg with the UA
Linux/5.15.49-linuxkit-pr aarch64/unknown gnu
- Inspecting that file,
WEBI_PKG_URL='https://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-arm-unknown-linux-gnueabihf.tar.gz'
. It's not clear why that would be used rather thanhttps://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-aarch64-unknown-linux-gnu.tar.gz
.
I'm still poking around but I can't seem to find where the server code for webi lives so I'm not sure how to push this debugging further 🤔
UPDATE: I've found the relevant code paths in _webi
. Time permitting, I'll clone down the source and see if I can get to the bottom of this.
UPDATE 2: Continued tracing leading me to a possible error in filterReleases.
What type of computer (i.e. laptop, desktop, Raspberry Pi)?
Laptop or Desktop (amd64 / x86-64)
Alright - I have at least a theory now. Tracing the code above, I am seeing how the release is selected.
Installers.helper
callsgetReleases
with a handful of release params, includinglimit: 1
.getReleases
callsfilterReleases
while passing through the limit.- The two releases above,
https://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-arm-unknown-linux-gnueabihf.tar.gz
andhttps://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-aarch64-unknown-linux-gnu.tar.gz
, make it through the filter logic, however, the results are then sorted and sliced to only return one release.
Where I "believe" the bug is, is the fact that https://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-arm-unknown-linux-gnueabihf.tar.gz
makes it through the filter logic. Here is the release query along with the two release objects:
{
pkg: 'delta',
ver: '0.16.5',
os: 'linux',
arch: 'arm64',
libc: 'gnu',
lts: undefined,
channel: undefined,
formats: [ 'exe', 'xz', 'tar', 'zip', 'git' ],
limit: 1
}
[
{
name: 'delta-0.16.5-arm-unknown-linux-gnueabihf.tar.gz',
version: '0.16.5',
lts: false,
channel: 'stable',
date: '2023-06-03',
os: 'linux',
arch: 'arm64',
ext: 'tar.gz',
download: 'https://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-arm-unknown-linux-gnueabihf.tar.gz',
libc: 'none'
},
{
name: 'delta-0.16.5-aarch64-unknown-linux-gnu.tar.gz',
version: '0.16.5',
lts: false,
channel: 'stable',
date: '2023-06-03',
os: 'linux',
arch: 'arm64',
ext: 'tar.gz',
download: 'https://github.com/dandavison/delta/releases/download/0.16.5/delta-0.16.5-aarch64-unknown-linux-gnu.tar.gz',
libc: 'gnu'
}
]
In this example, the release query states explicitly that it wants libc: "gnu"
however the libc: "none"
result is not filtered out.
Is the following line correct in checking rel.libc
or is it just supposed to check for the closure libc
value?
webi-installers/_webi/transform-releases.js
Line 192 in 344c1d6
I see that there were some modifications around this logic a few days ago and curious if this is a newly introduced bug: #731
I know exactly what introduced it - it was the big fix for Alpine / musl static builds.
I think it's safe to say that we're at a point that a single set of rules cannot correctly detect the host triplet, as you have pointed out an impossible condition:
arm
which matches aarch64
in some contexts, also matches armv7
in other contexts and gnu
which matches for libc in some contexts must also match arm
in other contexts.
I think we'll need a Go triplet matcher and a Rust triplet matcher and then a best-effort matcher.
A quick fix may be to implement a two pass approach where we loop through a set of releases with strict matches and if there is a specific match for arm64 or aarch64 then in the next set of matching arm
must be treated as armv7, and vice versa.
I'm sorry for the inconvenience, grateful for your report.
I'm unavailable for the next few hours, so you may get to a fix before I do.
P.S. the complexity creep has happened over time, and I'm very interested in revamping... everything, bit by bit.
819 Permutations of Target Host Triple
I do plan to fix this quickly, however, I wanted to once and for all get the list of permutations so that I can come up with some sort of unit test to make sure future changes don't break things.
I've sampled over 33,000 releases and after excluding about 5,000 non-releases (i.e. checksums, docs, etc) the handful of insanely unique naming schemes that already have special matchers, there are 777 permutations of target host triple.
In other words, this is the first half of the data necessary to unit test this and make sure we don't mess it up in the future.
All of these are taken from the download URL, so there are some that are missing information that should obviously be present (such as name and version), but those pieces of data were implicit (i.e. https://fooapp.com/linux-x64.zip
).
Updated
819 Permutations across 26,470 installable bundles matching a total of 117 patterns of terms for OS, Arch, Vendor, Libc, and Extension:
32 386 5 6 64 8 Alpine Darwin Linux MacOS NAME VER Windows WindowsX86 aarch64 aix all alpine amd64 amd64v2 android androideabi app apple arm arm32 arm6 arm64 arm7 armel armhf armv5 armv6 armv6hf armv6kz armv6l armv7 armv7a armv7l beta bit darwin debug dev dmg dragonfly exe freebsd freebsd12 git gnu gnueabihf gz i386 i686 ia32 illumos linux linux32 linux64 loong64 m1 mac mac32 mac64 macOS macos macos10 mips mips64 mips64el mips64le mips64r6 mips64r6el mipsel mipsle mipsr6 mipsr6el msi msvc musl musleabihf netbsd openbsd osx osx10 osx64 pc pkg plan9 powerpc powerpc64le ppc64 ppc64el ppc64le riscv64 s390x sh solaris solaris11 stable static tar universal unknown v1 v2 v6 v7 win win32 win64 windows x64 x86 xz zip
{NAME}
{NAME}-aarch64-apple-darwin.zip
{NAME}-aarch64-pc-windows-msvc.zip
{NAME}-aarch64-unknown-linux-gnu
{NAME}-aarch64-unknown-linux-musl
{NAME}-aarch64-unknown-linux-musl.tar.gz
{NAME}-alpine-aarch64.tar.gz
{NAME}-alpine-x86_64.tar.gz
{NAME}-android-arm64.tar.gz
{NAME}-armv7-unknown-linux-gnueabihf
{NAME}-armv7-unknown-linux-musleabihf
{NAME}-armv7-unknown-linux-musleabihf.tar.gz
{NAME}-darwin
{NAME}-darwin-386.tar.gz
{NAME}-darwin-aarch64.zip
{NAME}-darwin-amd64
{NAME}-darwin-amd64.tar.gz
{NAME}-darwin-amd64.zip
{NAME}-darwin-arm64
{NAME}-darwin-arm64.gz
{NAME}-darwin-arm64.tar.gz
{NAME}-darwin-x64
{NAME}-darwin-x64.gz
{NAME}-darwin-x64.zip
{NAME}-darwin-x86_64.tar.gz
{NAME}-darwin.zip
{NAME}-dragonfly-amd64-{VER}.tar.gz
{NAME}-dragonfly-amd64.tar.gz
{NAME}-freebsd-386-{VER}.tar.gz
{NAME}-freebsd-386.tar.gz
{NAME}-freebsd-amd64-{VER}.tar.gz
{NAME}-freebsd-amd64.tar.gz
{NAME}-freebsd-arm-{VER}.tar.gz
{NAME}-freebsd-arm.tar.gz
{NAME}-freebsd-arm64-{VER}.tar.gz
{NAME}-freebsd-x64
{NAME}-freebsd-x64.gz
{NAME}-illumos-amd64-{VER}.tar.gz
{NAME}-illumos-amd64.tar.gz
{NAME}-linux-386-{VER}.tar.gz
{NAME}-linux-386.tar.gz
{NAME}-linux-386.zip
{NAME}-linux-aarch64-{VER}.tar.xz
{NAME}-linux-aarch64.tar.gz
{NAME}-linux-aarch64.zip
{NAME}-linux-amd64
{NAME}-linux-amd64-{VER}.tar.gz
{NAME}-linux-amd64.tar.gz
{NAME}-linux-amd64.zip
{NAME}-linux-arm
{NAME}-linux-arm-{VER}.tar.gz
{NAME}-linux-arm.gz
{NAME}-linux-arm.tar.gz
{NAME}-linux-arm64
{NAME}-linux-arm64-{VER}.tar.gz
{NAME}-linux-arm64.gz
{NAME}-linux-arm64.tar.gz
{NAME}-linux-armel
{NAME}-linux-armhf
{NAME}-linux-armv7a-{VER}.tar.xz
{NAME}-linux-i386
{NAME}-linux-ia32
{NAME}-linux-ia32.gz
{NAME}-linux-loong64-{VER}.tar.gz
{NAME}-linux-mips
{NAME}-linux-mips-{VER}.tar.gz
{NAME}-linux-mips.tar.gz
{NAME}-linux-mips64
{NAME}-linux-mips64-{VER}.tar.gz
{NAME}-linux-mips64.tar.gz
{NAME}-linux-mips64el
{NAME}-linux-mips64le-{VER}.tar.gz
{NAME}-linux-mips64le.tar.gz
{NAME}-linux-mips64r6
{NAME}-linux-mips64r6el
{NAME}-linux-mipsel
{NAME}-linux-mipsle-{VER}.tar.gz
{NAME}-linux-mipsle.tar.gz
{NAME}-linux-mipsr6
{NAME}-linux-mipsr6el
{NAME}-linux-powerpc
{NAME}-linux-powerpc-{VER}.tar.xz
{NAME}-linux-powerpc64le-{VER}.tar.xz
{NAME}-linux-ppc64-{VER}.tar.gz
{NAME}-linux-ppc64.tar.gz
{NAME}-linux-ppc64el
{NAME}-linux-ppc64le
{NAME}-linux-ppc64le-{VER}.tar.gz
{NAME}-linux-ppc64le.tar.gz
{NAME}-linux-riscv64
{NAME}-linux-riscv64-{VER}.tar.gz
{NAME}-linux-riscv64-{VER}.tar.xz
{NAME}-linux-s390x
{NAME}-linux-s390x-{VER}.tar.gz
{NAME}-linux-s390x.tar.gz
{NAME}-linux-x64
{NAME}-linux-x64.gz
{NAME}-linux-x64.zip
{NAME}-linux-x86
{NAME}-linux-x86-{VER}.tar.xz
{NAME}-linux-x86_64
{NAME}-linux-x86_64-static
{NAME}-linux-x86_64-{VER}.tar.xz
{NAME}-linux-x86_64.tar.gz
{NAME}-linux32
{NAME}-linux64
{NAME}-macos-aarch64-{VER}.tar.xz
{NAME}-macos-amd64
{NAME}-macos-amd64-{VER}.zip
{NAME}-macos-arm64
{NAME}-macos-arm64-{VER}.zip
{NAME}-macos-universal-{VER}.zip
{NAME}-macos-x86_64-{VER}.tar.xz
{NAME}-netbsd-386-{VER}.tar.gz
{NAME}-netbsd-386.tar.gz
{NAME}-netbsd-amd64-{VER}.tar.gz
{NAME}-netbsd-amd64.tar.gz
{NAME}-netbsd-arm-{VER}.tar.gz
{NAME}-netbsd-arm.tar.gz
{NAME}-netbsd-arm64-{VER}.tar.gz
{NAME}-openbsd-386-{VER}.tar.gz
{NAME}-openbsd-386.tar.gz
{NAME}-openbsd-amd64-{VER}.tar.gz
{NAME}-openbsd-amd64.tar.gz
{NAME}-openbsd-arm-{VER}.tar.gz
{NAME}-openbsd-arm.tar.gz
{NAME}-openbsd-arm64-{VER}.tar.gz
{NAME}-openbsd-arm64.tar.gz
{NAME}-osx-amd64
{NAME}-osx-x86
{NAME}-osx-x86_64
{NAME}-solaris-amd64-{VER}.tar.gz
{NAME}-solaris-amd64.tar.gz
{NAME}-solaris11-32
{NAME}-solaris11-64
{NAME}-win-aarch64.zip
{NAME}-win-x64.zip
{NAME}-win32-ia32
{NAME}-win32-ia32.gz
{NAME}-win32-x64
{NAME}-win32-x64.gz
{NAME}-win32.exe
{NAME}-win64.exe
{NAME}-windows-386-{VER}.zip
{NAME}-windows-386.zip
{NAME}-windows-aarch64-{VER}.zip
{NAME}-windows-amd64
{NAME}-windows-amd64-{VER}.zip
{NAME}-windows-amd64.exe
{NAME}-windows-amd64.zip
{NAME}-windows-arm-{VER}.zip
{NAME}-windows-arm64-{VER}.zip
{NAME}-windows-i386.exe
{NAME}-windows-x86-{VER}.zip
{NAME}-windows-x86_64-{VER}.zip
{NAME}-x86_64-apple-darwin
{NAME}-x86_64-apple-darwin.tar.gz
{NAME}-x86_64-apple-darwin.zip
{NAME}-x86_64-pc-windows-msvc.exe
{NAME}-x86_64-pc-windows-msvc.zip
{NAME}-x86_64-unknown-linux-gnu
{NAME}-x86_64-unknown-linux-gnu.zip
{NAME}-x86_64-unknown-linux-musl
{NAME}-x86_64-unknown-linux-musl.tar.gz
{NAME}-{VER}-32-bit.zip
{NAME}-{VER}-64-bit.zip
{NAME}-{VER}-aarch64-apple-darwin
{NAME}-{VER}-aarch64-apple-darwin.tar.gz
{NAME}-{VER}-aarch64-apple-darwin.tar.xz
{NAME}-{VER}-aarch64-linux-android.tar.gz
{NAME}-{VER}-aarch64-linux-gnu.tar.gz
{NAME}-{VER}-aarch64-pc-windows-msvc.zip
{NAME}-{VER}-aarch64-unknown-linux-gnu
{NAME}-{VER}-aarch64-unknown-linux-gnu.tar.gz
{NAME}-{VER}-aarch64-unknown-linux-gnu.tar.xz
{NAME}-{VER}-aarch64-unknown-linux-musl.tar.gz
{NAME}-{VER}-aarch64-unknown-linux-musl.tar.xz
{NAME}-{VER}-alpine-x86_64.tar.gz
{NAME}-{VER}-arm-linux-gnueabihf-debug.tar.gz
{NAME}-{VER}-arm-linux-gnueabihf.tar.gz
{NAME}-{VER}-arm-unknown-linux-gnueabihf.tar.gz
{NAME}-{VER}-arm-unknown-linux-musleabihf.tar.gz
{NAME}-{VER}-arm64-apple-darwin.dmg
{NAME}-{VER}-arm64-apple-darwin.tar.gz
{NAME}-{VER}-arm64-macOS.pkg
{NAME}-{VER}-arm64-macOS.zip
{NAME}-{VER}-armv7-linux-androideabi.tar.gz
{NAME}-{VER}-armv7-unknown-linux-gnueabihf.tar.gz
{NAME}-{VER}-armv7-unknown-linux-gnueabihf.tar.xz
{NAME}-{VER}-armv7-unknown-linux-musleabihf
{NAME}-{VER}-armv7-unknown-linux-musleabihf.tar.gz
{NAME}-{VER}-darwin-10.12-amd64
{NAME}-{VER}-darwin-10.12-amd64.xz
{NAME}-{VER}-darwin-10.12-arm64
{NAME}-{VER}-darwin-10.12-arm64.xz
{NAME}-{VER}-darwin-amd64.tar.gz
{NAME}-{VER}-darwin-amd64_v2.tar.gz
{NAME}-{VER}-darwin-amd64_v2.tar.xz
{NAME}-{VER}-darwin-arm64.tar.gz
{NAME}-{VER}-darwin-arm64.tar.xz
{NAME}-{VER}-darwin-x86_64.tar.gz
{NAME}-{VER}-darwin_amd64.tar.gz
{NAME}-{VER}-darwin_amd64.zip
{NAME}-{VER}-darwin_arm64.tar.gz
{NAME}-{VER}-darwin_arm64.zip
{NAME}-{VER}-freebsd-386.zip
{NAME}-{VER}-freebsd-amd64.zip
{NAME}-{VER}-freebsd-arm-v6.zip
{NAME}-{VER}-freebsd-arm-v7.zip
{NAME}-{VER}-freebsd-arm.zip
{NAME}-{VER}-freebsd12-amd64
{NAME}-{VER}-freebsd12-amd64.xz
{NAME}-{VER}-freebsd_amd64.tar.gz
{NAME}-{VER}-i686-apple-darwin.tar.gz
{NAME}-{VER}-i686-pc-windows-gnu.zip
{NAME}-{VER}-i686-pc-windows-msvc.zip
{NAME}-{VER}-i686-unknown-linux-gnu.tar.gz
{NAME}-{VER}-i686-unknown-linux-musl.tar.gz
{NAME}-{VER}-i686-unknown-linux-musl.tar.xz
{NAME}-{VER}-linux-386
{NAME}-{VER}-linux-386.tar.gz
{NAME}-{VER}-linux-386.tar.xz
{NAME}-{VER}-linux-386.xz
{NAME}-{VER}-linux-386.zip
{NAME}-{VER}-linux-aarch64.sh
{NAME}-{VER}-linux-aarch64.tar.gz
{NAME}-{VER}-linux-amd64
{NAME}-{VER}-linux-amd64.tar.gz
{NAME}-{VER}-linux-amd64.xz
{NAME}-{VER}-linux-amd64.zip
{NAME}-{VER}-linux-amd64_v1.tar.gz
{NAME}-{VER}-linux-amd64_v1.tar.xz
{NAME}-{VER}-linux-arm-5
{NAME}-{VER}-linux-arm-5.xz
{NAME}-{VER}-linux-arm-6
{NAME}-{VER}-linux-arm-6.xz
{NAME}-{VER}-linux-arm-v6.zip
{NAME}-{VER}-linux-arm-v7.zip
{NAME}-{VER}-linux-arm.tar.gz
{NAME}-{VER}-linux-arm.zip
{NAME}-{VER}-linux-arm32.tar.gz
{NAME}-{VER}-linux-arm64
{NAME}-{VER}-linux-arm64.tar.gz
{NAME}-{VER}-linux-arm64.tar.xz
{NAME}-{VER}-linux-arm64.xz
{NAME}-{VER}-linux-arm64.zip
{NAME}-{VER}-linux-armv5.tar.gz
{NAME}-{VER}-linux-armv6.tar.gz
{NAME}-{VER}-linux-armv6.tar.xz
{NAME}-{VER}-linux-armv7.tar.gz
{NAME}-{VER}-linux-armv7.tar.xz
{NAME}-{VER}-linux-ia32.tar.gz
{NAME}-{VER}-linux-linux-musl-x64.tar.gz
{NAME}-{VER}-linux-mips.zip
{NAME}-{VER}-linux-mipsle.zip
{NAME}-{VER}-linux-musl-x64.tar.gz
{NAME}-{VER}-linux-x64-{NAME}.tar.gz
{NAME}-{VER}-linux-x64.tar.gz
{NAME}-{VER}-linux-x86_64.sh
{NAME}-{VER}-linux-x86_64.tar.gz
{NAME}-{VER}-linux-{NAME}.tar.gz
{NAME}-{VER}-linux_amd64.tar.gz
{NAME}-{VER}-linux_arm64.tar.gz
{NAME}-{VER}-linux_armv5.tar.gz
{NAME}-{VER}-linux_armv6.tar.gz
{NAME}-{VER}-linux_armv7.tar.gz
{NAME}-{VER}-linux_loong64.tar.gz
{NAME}-{VER}-linux_ppc64le.tar.gz
{NAME}-{VER}-linux_s390x.tar.gz
{NAME}-{VER}-macOS.pkg
{NAME}-{VER}-macOS.zip
{NAME}-{VER}-macos-amd64.tar.gz
{NAME}-{VER}-macos-arm64.tar.gz
{NAME}-{VER}-macos-universal.dmg
{NAME}-{VER}-macos-universal.tar.gz
{NAME}-{VER}-macos-x64.tar.gz
{NAME}-{VER}-macos10.10-universal.dmg
{NAME}-{VER}-macos10.10-universal.tar.gz
{NAME}-{VER}-netbsd-386.zip
{NAME}-{VER}-netbsd-amd64.zip
{NAME}-{VER}-netbsd-arm-v6.zip
{NAME}-{VER}-netbsd-arm-v7.zip
{NAME}-{VER}-netbsd-arm.zip
{NAME}-{VER}-openbsd-386.zip
{NAME}-{VER}-openbsd-amd64.zip
{NAME}-{VER}-openbsd_amd64.tar.gz
{NAME}-{VER}-osx-amd64.zip
{NAME}-{VER}-osx-arm64.tar.gz
{NAME}-{VER}-osx-arm64.zip
{NAME}-{VER}-osx-x64.tar.gz
{NAME}-{VER}-osx-{NAME}.zip
{NAME}-{VER}-osx.dmg
{NAME}-{VER}-osx64.tar.gz
{NAME}-{VER}-plan9-386.zip
{NAME}-{VER}-plan9-amd64.zip
{NAME}-{VER}-powerpc64le-unknown-linux-gnu.tar.xz
{NAME}-{VER}-riscv64-linux-gnu.tar.gz
{NAME}-{VER}-s390x-unknown-linux-gnu.tar.xz
{NAME}-{VER}-solaris-amd64.zip
{NAME}-{VER}-win-arm32.zip
{NAME}-{VER}-win-arm64.zip
{NAME}-{VER}-win-x64.msi
{NAME}-{VER}-win-x64.zip
{NAME}-{VER}-win-x86.msi
{NAME}-{VER}-win-x86.zip
{NAME}-{VER}-win64.zip
{NAME}-{VER}-windows-386.zip
{NAME}-{VER}-windows-amd64.debug.zip
{NAME}-{VER}-windows-amd64.zip
{NAME}-{VER}-windows-arm64.msi
{NAME}-{VER}-windows-arm64.zip
{NAME}-{VER}-windows-i386.msi
{NAME}-{VER}-windows-i386.zip
{NAME}-{VER}-windows-ia32.zip
{NAME}-{VER}-windows-x64.zip
{NAME}-{VER}-windows-x86_64.msi
{NAME}-{VER}-windows-x86_64.zip
{NAME}-{VER}-windows.zip
{NAME}-{VER}-windows_amd64.zip
{NAME}-{VER}-windows_arm64.zip
{NAME}-{VER}-windows_armv5.zip
{NAME}-{VER}-windows_armv6.zip
{NAME}-{VER}-windows_armv7.zip
{NAME}-{VER}-windows{NAME}386.exe
{NAME}-{VER}-windows{NAME}386.exe.xz
{NAME}-{VER}-windows{NAME}amd64.exe
{NAME}-{VER}-windows{NAME}amd64.exe.xz
{NAME}-{VER}-x86_64-apple-darwin
{NAME}-{VER}-x86_64-apple-darwin.dmg
{NAME}-{VER}-x86_64-apple-darwin.tar.gz
{NAME}-{VER}-x86_64-apple-darwin.tar.xz
{NAME}-{VER}-x86_64-apple-darwin.zip
{NAME}-{VER}-x86_64-linux-gnu.tar.gz
{NAME}-{VER}-x86_64-linux.tar.gz
{NAME}-{VER}-x86_64-macOS.pkg
{NAME}-{VER}-x86_64-macOS.zip
{NAME}-{VER}-x86_64-osx.tar.gz
{NAME}-{VER}-x86_64-pc-windows-gnu.exe
{NAME}-{VER}-x86_64-pc-windows-gnu.tar.gz
{NAME}-{VER}-x86_64-pc-windows-gnu.zip
{NAME}-{VER}-x86_64-pc-windows-msvc.exe
{NAME}-{VER}-x86_64-pc-windows-msvc.zip
{NAME}-{VER}-x86_64-unknown-freebsd
{NAME}-{VER}-x86_64-unknown-linux-gnu
{NAME}-{VER}-x86_64-unknown-linux-gnu.tar.gz
{NAME}-{VER}-x86_64-unknown-linux-gnu.tar.xz
{NAME}-{VER}-x86_64-unknown-linux-gnu.zip
{NAME}-{VER}-x86_64-unknown-linux-musl
{NAME}-{VER}-x86_64-unknown-linux-musl.tar.gz
{NAME}-{VER}-x86_64-unknown-linux-musl.tar.xz
{NAME}-{VER}-x86_64-unknown-netbsd.tar.gz
{NAME}-{VER}.app.zip
{NAME}-{VER}.darwin.x86_64.tar.xz
{NAME}-{VER}.linux.aarch64.tar.xz
{NAME}-{VER}.linux.armv6hf.tar.xz
{NAME}-{VER}.linux.x86_64.tar.xz
{NAME}-{VER}.tar.gz
{NAME}-{VER}.x86_64-apple-darwin.zip
{NAME}-{VER}.x86_64-pc-windows-msvc.zip
{NAME}-{VER}.x86_64-unknown-linux-gnu.zip
{NAME}-{VER}.zip
{NAME}.app.zip
{NAME}.dmg
{NAME}.git
{NAME}.{VER}-.x86_64-apple-darwin.zip
{NAME}.{VER}-.x86_64-pc-windows-msvc.zip
{NAME}.{VER}-.x86_64-unknown-linux-gnu.zip
{NAME}/{VER}/{NAME}.tar.gz
{NAME}/{VER}/{NAME}.zip
{NAME}Alpine.zip
{NAME}Linux.zip
{NAME}MacOS.zip
{NAME}Windows.zip
{NAME}WindowsX86.zip
{NAME}_Darwin_all.tar.gz
{NAME}_Darwin_amd64.tar.gz
{NAME}_Darwin_arm64.tar.gz
{NAME}_Darwin_x86_64.tar.gz
{NAME}_Linux_amd64.tar.gz
{NAME}_Linux_arm.tar.gz
{NAME}_Linux_arm64.tar.gz
{NAME}_Linux_armv7.tar.gz
{NAME}_Linux_i386.tar.gz
{NAME}_Linux_ppc64.tar.gz
{NAME}_Linux_ppc64le.tar.gz
{NAME}_Linux_s390x.tar.gz
{NAME}_Linux_x86_64.tar.gz
{NAME}_Windows_amd64.tar.gz
{NAME}_Windows_amd64.zip
{NAME}_Windows_arm.tar.gz
{NAME}_Windows_arm.zip
{NAME}_Windows_arm64.tar.gz
{NAME}_Windows_arm64.zip
{NAME}_Windows_armv7.zip
{NAME}_Windows_i386.zip
{NAME}_Windows_x86_64.tar.gz
{NAME}_Windows_x86_64.zip
{NAME}_aix_ppc64_{VER}.tar.gz
{NAME}_darwin_amd64
{NAME}_darwin_amd64.tar.gz
{NAME}_darwin_amd64_{VER}.tar.gz
{NAME}_darwin_arm64
{NAME}_darwin_arm64.tar.gz
{NAME}_darwin_arm64_{VER}.tar.gz
{NAME}_dragonfly_amd64_{VER}.tar.gz
{NAME}_freebsd_386
{NAME}_freebsd_386.tar.gz
{NAME}_freebsd_386_{VER}.tar.gz
{NAME}_freebsd_amd64
{NAME}_freebsd_amd64.tar.gz
{NAME}_freebsd_amd64_{VER}.tar.gz
{NAME}_freebsd_arm
{NAME}_freebsd_arm.tar.gz
{NAME}_freebsd_arm64_{VER}.tar.gz
{NAME}_freebsd_arm7
{NAME}_freebsd_arm_{VER}.tar.gz
{NAME}_linux_386
{NAME}_linux_386.tar.gz
{NAME}_linux_386_{VER}.tar.gz
{NAME}_linux_amd64
{NAME}_linux_amd64.tar.gz
{NAME}_linux_amd64_{VER}.tar.gz
{NAME}_linux_arm
{NAME}_linux_arm.tar.gz
{NAME}_linux_arm64
{NAME}_linux_arm64.tar.gz
{NAME}_linux_arm64_{VER}.tar.gz
{NAME}_linux_arm7
{NAME}_linux_arm_{VER}.tar.gz
{NAME}_linux_mips
{NAME}_linux_mips.tar.gz
{NAME}_linux_mips64
{NAME}_linux_mips64.tar.gz
{NAME}_linux_mips64_{VER}.tar.gz
{NAME}_linux_mips64le
{NAME}_linux_mips64le.tar.gz
{NAME}_linux_mips64le_{VER}.tar.gz
{NAME}_linux_mips_{VER}.tar.gz
{NAME}_linux_mipsle
{NAME}_linux_mipsle.tar.gz
{NAME}_linux_mipsle_{VER}.tar.gz
{NAME}_linux_ppc64
{NAME}_linux_ppc64.tar.gz
{NAME}_linux_ppc64_{VER}.tar.gz
{NAME}_linux_ppc64le
{NAME}_linux_ppc64le.tar.gz
{NAME}_linux_ppc64le_{VER}.tar.gz
{NAME}_linux_riscv64_{VER}.tar.gz
{NAME}_linux_s390x
{NAME}_linux_s390x.tar.gz
{NAME}_linux_s390x_{VER}.tar.gz
{NAME}_linux_{VER}-beta.tar.xz
{NAME}_linux_{VER}-dev.tar.xz
{NAME}_linux_{VER}-stable.tar.xz
{NAME}_mac_amd64
{NAME}_macos_{VER}-beta.zip
{NAME}_macos_{VER}-dev.zip
{NAME}_macos_{VER}-stable.zip
{NAME}_netbsd_386
{NAME}_netbsd_386.tar.gz
{NAME}_netbsd_386_{VER}.tar.gz
{NAME}_netbsd_amd64
{NAME}_netbsd_amd64.tar.gz
{NAME}_netbsd_amd64_{VER}.tar.gz
{NAME}_netbsd_arm
{NAME}_netbsd_arm.tar.gz
{NAME}_netbsd_arm64_{VER}.tar.gz
{NAME}_netbsd_arm_{VER}.tar.gz
{NAME}_openbsd_386
{NAME}_openbsd_386.tar.gz
{NAME}_openbsd_386_{VER}.tar.gz
{NAME}_openbsd_amd64
{NAME}_openbsd_amd64.tar.gz
{NAME}_openbsd_amd64_{VER}.tar.gz
{NAME}_openbsd_arm64_{VER}.tar.gz
{NAME}_openbsd_arm_{VER}.tar.gz
{NAME}_openbsd_mips64_{VER}.tar.gz
{NAME}_solaris_amd64_{VER}.tar.gz
{NAME}_windows_386.exe
{NAME}_windows_386.zip
{NAME}_windows_386_{VER}.tar.gz
{NAME}_windows_386_{VER}.zip
{NAME}_windows_amd64.exe
{NAME}_windows_amd64.zip
{NAME}_windows_amd64_{VER}.tar.gz
{NAME}_windows_amd64_{VER}.zip
{NAME}_windows_arm64_{VER}.tar.gz
{NAME}_windows_arm64_{VER}.zip
{NAME}_windows_arm_{VER}.tar.gz
{NAME}_windows_arm_{VER}.zip
{NAME}_windows_{VER}-beta.zip
{NAME}_windows_{VER}-dev.zip
{NAME}_windows_{VER}-stable.zip
{NAME}_{VER}_Darwin_arm64.tar.gz
{NAME}_{VER}_Darwin_x86_64.tar.gz
{NAME}_{VER}_Linux_arm64.tar.gz
{NAME}_{VER}_Linux_armv6.tar.gz
{NAME}_{VER}_Linux_armv7.tar.gz
{NAME}_{VER}_Linux_i386.tar.gz
{NAME}_{VER}_Linux_x86_64.tar.gz
{NAME}_{VER}_Windows_arm64.zip
{NAME}_{VER}_Windows_armv6.zip
{NAME}_{VER}_Windows_armv7.zip
{NAME}_{VER}_Windows_i386.zip
{NAME}_{VER}_Windows_x86_64.zip
{NAME}_{VER}_darwin-universal.tar.gz
{NAME}_{VER}_darwin_386
{NAME}_{VER}_darwin_386.tar.gz
{NAME}_{VER}_darwin_386.zip
{NAME}_{VER}_darwin_aarch64.tar.gz
{NAME}_{VER}_darwin_all.tar.gz
{NAME}_{VER}_darwin_amd64
{NAME}_{VER}_darwin_amd64.tar.gz
{NAME}_{VER}_darwin_amd64.zip
{NAME}_{VER}_darwin_amd64v2.tar.xz
{NAME}_{VER}_darwin_arm64
{NAME}_{VER}_darwin_arm64.tar.gz
{NAME}_{VER}_darwin_arm64.tar.xz
{NAME}_{VER}_darwin_arm64.zip
{NAME}_{VER}_darwin_x86-64.tar.gz
{NAME}_{VER}_darwin_x86_64.tar.gz
{NAME}_{VER}_dragonfly-amd64.tar.gz
{NAME}_{VER}_freebsd-amd64.tar.gz
{NAME}_{VER}_freebsd_386
{NAME}_{VER}_freebsd_386.tar.gz
{NAME}_{VER}_freebsd_386.zip
{NAME}_{VER}_freebsd_aarch64.tar.gz
{NAME}_{VER}_freebsd_amd64
{NAME}_{VER}_freebsd_amd64.tar.gz
{NAME}_{VER}_freebsd_amd64.zip
{NAME}_{VER}_freebsd_amd64v2.tar.xz
{NAME}_{VER}_freebsd_arm
{NAME}_{VER}_freebsd_arm.zip
{NAME}_{VER}_freebsd_arm64.tar.gz
{NAME}_{VER}_freebsd_arm64.tar.xz
{NAME}_{VER}_freebsd_armv6.tar.gz
{NAME}_{VER}_freebsd_armv7.tar.gz
{NAME}_{VER}_freebsd_armv7.tar.xz
{NAME}_{VER}_freebsd_i386.tar.gz
{NAME}_{VER}_freebsd_x86-64.tar.gz
{NAME}_{VER}_freebsd_x86_64.tar.gz
{NAME}_{VER}_linux-amd64.tar.gz
{NAME}_{VER}_linux-arm.tar.gz
{NAME}_{VER}_linux-arm64.tar.gz
{NAME}_{VER}_linux_386
{NAME}_{VER}_linux_386.tar.gz
{NAME}_{VER}_linux_386.zip
{NAME}_{VER}_linux_aarch64.tar.gz
{NAME}_{VER}_linux_amd64
{NAME}_{VER}_linux_amd64.tar.gz
{NAME}_{VER}_linux_amd64.zip
{NAME}_{VER}_linux_amd64v2.tar.xz
{NAME}_{VER}_linux_arm
{NAME}_{VER}_linux_arm.zip
{NAME}_{VER}_linux_arm64
{NAME}_{VER}_linux_arm64.tar.gz
{NAME}_{VER}_linux_arm64.tar.xz
{NAME}_{VER}_linux_arm64.zip
{NAME}_{VER}_linux_armhf.tar.gz
{NAME}_{VER}_linux_armv5.tar.gz
{NAME}_{VER}_linux_armv6
{NAME}_{VER}_linux_armv6.tar.gz
{NAME}_{VER}_linux_armv7
{NAME}_{VER}_linux_armv7.tar.gz
{NAME}_{VER}_linux_armv7.tar.xz
{NAME}_{VER}_linux_i386.tar.gz
{NAME}_{VER}_linux_mips
{NAME}_{VER}_linux_mips64
{NAME}_{VER}_linux_mips64le
{NAME}_{VER}_linux_mipsle
{NAME}_{VER}_linux_ppc64le.tar.gz
{NAME}_{VER}_linux_riscv64.tar.gz
{NAME}_{VER}_linux_s390x
{NAME}_{VER}_linux_s390x.tar.gz
{NAME}_{VER}_linux_x86-64.tar.gz
{NAME}_{VER}_linux_x86_64.tar.gz
{NAME}_{VER}_macOS_386.tar.gz
{NAME}_{VER}_macOS_amd64.tar.gz
{NAME}_{VER}_macOS_amd64.zip
{NAME}_{VER}_macOS_arm64.tar.gz
{NAME}_{VER}_macOS_arm64.zip
{NAME}_{VER}_mac_amd64
{NAME}_{VER}_mac_amd64.tar.gz
{NAME}_{VER}_mac_arm64.tar.gz
{NAME}_{VER}_netbsd-amd64.tar.gz
{NAME}_{VER}_netbsd_386
{NAME}_{VER}_netbsd_amd64
{NAME}_{VER}_netbsd_arm
{NAME}_{VER}_openbsd-amd64.tar.gz
{NAME}_{VER}_openbsd_386
{NAME}_{VER}_openbsd_386.tar.gz
{NAME}_{VER}_openbsd_386.zip
{NAME}_{VER}_openbsd_amd64
{NAME}_{VER}_openbsd_amd64.tar.gz
{NAME}_{VER}_openbsd_amd64.zip
{NAME}_{VER}_openbsd_arm64.tar.gz
{NAME}_{VER}_openbsd_armv6.tar.gz
{NAME}_{VER}_solaris-amd64.tar.gz
{NAME}_{VER}_solaris_amd64.zip
{NAME}_{VER}_windows-amd64.zip
{NAME}_{VER}_windows-arm64.zip
{NAME}_{VER}_windows_386.exe
{NAME}_{VER}_windows_386.msi
{NAME}_{VER}_windows_386.tar.gz
{NAME}_{VER}_windows_386.zip
{NAME}_{VER}_windows_amd64
{NAME}_{VER}_windows_amd64.exe
{NAME}_{VER}_windows_amd64.msi
{NAME}_{VER}_windows_amd64.tar.gz
{NAME}_{VER}_windows_amd64.zip
{NAME}_{VER}_windows_amd64v2.zip
{NAME}_{VER}_windows_arm64.tar.gz
{NAME}_{VER}_windows_arm64.zip
{NAME}_{VER}_windows_armhf.zip
{NAME}_{VER}_windows_armv5.zip
{NAME}_{VER}_windows_armv6.tar.gz
{NAME}_{VER}_windows_armv6.zip
{NAME}_{VER}_windows_armv7.tar.gz
{NAME}_{VER}_windows_armv7.zip
{NAME}_{VER}_windows_i386.zip
{NAME}_{VER}_windows_x86-64.zip
{NAME}_{VER}_windows_x86_64.zip
{NAME}_{VER}{NAME}_{VER}_darwin_amd64.zip
{NAME}_{VER}{NAME}_{VER}_freebsd_386.zip
{NAME}_{VER}{NAME}_{VER}_freebsd_amd64.zip
{NAME}_{VER}{NAME}_{VER}_freebsd_arm.zip
{NAME}_{VER}{NAME}_{VER}_linux_386.zip
{NAME}_{VER}{NAME}_{VER}_linux_amd64.zip
{NAME}_{VER}{NAME}_{VER}_linux_arm.zip
{NAME}_{VER}{NAME}_{VER}_openbsd_386.zip
{NAME}_{VER}{NAME}_{VER}_openbsd_amd64.zip
{NAME}_{VER}{NAME}_{VER}_solaris_amd64.zip
{NAME}_{VER}{NAME}_{VER}_windows_386.zip
{NAME}_{VER}{NAME}_{VER}_windows_amd64.zip
{NAME}{NAME}-{VER}.dmg
{NAME}{VER}.aix-ppc64.tar.gz
{NAME}{VER}.darwin-386-osx10.6.pkg
{NAME}{VER}.darwin-386-osx10.6.tar.gz
{NAME}{VER}.darwin-386-osx10.8.pkg
{NAME}{VER}.darwin-386-osx10.8.tar.gz
{NAME}{VER}.darwin-amd64-osx10.6.pkg
{NAME}{VER}.darwin-amd64-osx10.6.tar.gz
{NAME}{VER}.darwin-amd64-osx10.8.pkg
{NAME}{VER}.darwin-amd64-osx10.8.tar.gz
{NAME}{VER}.darwin-amd64.pkg
{NAME}{VER}.darwin-amd64.tar.gz
{NAME}{VER}.darwin-arm64.pkg
{NAME}{VER}.darwin-arm64.tar.gz
{NAME}{VER}.dragonfly-amd64.tar.gz
{NAME}{VER}.freebsd-386.tar.gz
{NAME}{VER}.freebsd-amd64.tar.gz
{NAME}{VER}.freebsd-arm.tar.gz
{NAME}{VER}.freebsd-arm64.tar.gz
{NAME}{VER}.freebsd-riscv64.tar.gz
{NAME}{VER}.illumos-amd64.tar.gz
{NAME}{VER}.linux-386.tar.gz
{NAME}{VER}.linux-amd64.tar.gz
{NAME}{VER}.linux-arm.tar.gz
{NAME}{VER}.linux-arm6.tar.gz
{NAME}{VER}.linux-arm64.tar.gz
{NAME}{VER}.linux-armv6l.tar.gz
{NAME}{VER}.linux-loong64.tar.gz
{NAME}{VER}.linux-mips.tar.gz
{NAME}{VER}.linux-mips64.tar.gz
{NAME}{VER}.linux-mips64le.tar.gz
{NAME}{VER}.linux-mipsle.tar.gz
{NAME}{VER}.linux-ppc64.tar.gz
{NAME}{VER}.linux-ppc64le.tar.gz
{NAME}{VER}.linux-riscv64.tar.gz
{NAME}{VER}.linux-s390x.tar.gz
{NAME}{VER}.netbsd-386.tar.gz
{NAME}{VER}.netbsd-amd64.tar.gz
{NAME}{VER}.netbsd-arm.tar.gz
{NAME}{VER}.netbsd-arm64.tar.gz
{NAME}{VER}.openbsd-386.tar.gz
{NAME}{VER}.openbsd-amd64.tar.gz
{NAME}{VER}.openbsd-arm.tar.gz
{NAME}{VER}.openbsd-arm64.tar.gz
{NAME}{VER}.plan9-386.tar.gz
{NAME}{VER}.plan9-amd64.tar.gz
{NAME}{VER}.plan9-arm.tar.gz
{NAME}{VER}.solaris-amd64.tar.gz
{NAME}{VER}.windows-386.msi
{NAME}{VER}.windows-386.zip
{NAME}{VER}.windows-amd64.msi
{NAME}{VER}.windows-amd64.zip
{NAME}{VER}.windows-arm.msi
{NAME}{VER}.windows-arm.zip
{NAME}{VER}.windows-arm64.msi
{NAME}{VER}.windows-arm64.zip
{VER}/{NAME}-freebsd-x86_64-{VER}.tar.xz
{VER}/{NAME}-linux-aarch64-{VER}.tar.xz
{VER}/{NAME}-linux-armv6kz-{VER}.tar.xz
{VER}/{NAME}-linux-armv7a-{VER}.tar.xz
{VER}/{NAME}-linux-i386-{VER}.tar.xz
{VER}/{NAME}-linux-powerpc-{VER}.tar.xz
{VER}/{NAME}-linux-powerpc64le-{VER}.tar.xz
{VER}/{NAME}-linux-riscv64-{VER}.tar.xz
{VER}/{NAME}-linux-x86-{VER}.tar.xz
{VER}/{NAME}-linux-x86_64-{VER}.tar.xz
{VER}/{NAME}-macos-aarch64-{VER}.tar.xz
{VER}/{NAME}-macos-x86_64-{VER}.tar.xz
{VER}/{NAME}-win64-{VER}.zip
{VER}/{NAME}-windows-aarch64-{VER}.zip
{VER}/{NAME}-windows-i386-{VER}.zip
{VER}/{NAME}-windows-x86-{VER}.zip
{VER}/{NAME}-windows-x86_64-{VER}.zip
{VER}/{NAME}-{VER}-aix-ppc64.tar.gz
{VER}/{NAME}-{VER}-aix-ppc64.tar.xz
{VER}/{NAME}-{VER}-darwin-arm64.tar.gz
{VER}/{NAME}-{VER}-darwin-arm64.tar.xz
{VER}/{NAME}-{VER}-darwin-x64.pkg
{VER}/{NAME}-{VER}-darwin-x64.tar.gz
{VER}/{NAME}-{VER}-darwin-x64.tar.xz
{VER}/{NAME}-{VER}-linux-arm64.tar.gz
{VER}/{NAME}-{VER}-linux-arm64.tar.xz
{VER}/{NAME}-{VER}-linux-armv6l.tar.gz
{VER}/{NAME}-{VER}-linux-armv6l.tar.xz
{VER}/{NAME}-{VER}-linux-armv7l.tar.gz
{VER}/{NAME}-{VER}-linux-armv7l.tar.xz
{VER}/{NAME}-{VER}-linux-loong64.tar.gz
{VER}/{NAME}-{VER}-linux-loong64.tar.xz
{VER}/{NAME}-{VER}-linux-ppc64le.tar.gz
{VER}/{NAME}-{VER}-linux-ppc64le.tar.xz
{VER}/{NAME}-{VER}-linux-riscv64.tar.gz
{VER}/{NAME}-{VER}-linux-riscv64.tar.xz
{VER}/{NAME}-{VER}-linux-s390x.tar.gz
{VER}/{NAME}-{VER}-linux-s390x.tar.xz
{VER}/{NAME}-{VER}-linux-x64-musl.tar.gz
{VER}/{NAME}-{VER}-linux-x64-musl.tar.xz
{VER}/{NAME}-{VER}-linux-x64.tar.gz
{VER}/{NAME}-{VER}-linux-x64.tar.xz
{VER}/{NAME}-{VER}-linux-x86.tar.gz
{VER}/{NAME}-{VER}-linux-x86.tar.xz
{VER}/{NAME}-{VER}-win-arm64.zip
{VER}/{NAME}-{VER}-win-x64.zip
{VER}/{NAME}-{VER}-win-x86.zip
{VER}/{NAME}-{VER}-x64.msi
{VER}/{NAME}-{VER}-x86.msi
{VER}/{NAME}_linux32.zip
{VER}/{NAME}_linux64.zip
{VER}/{NAME}_mac32.zip
{VER}/{NAME}_mac64.zip
{VER}/{NAME}_mac64_m1.zip
{VER}/{NAME}_mac_arm64.zip
{VER}/{NAME}_win32.zip
{VER}/{NAME}_win32_debug.zip
All potentially ambiguous arm
s:
NAME-VER-arm-linux-gnueabihf-debug.tar.gz dashcore
NAME-VER-arm-linux-gnueabihf-debug.tar.gz dashd
NAME-VER-arm-linux-gnueabihf.tar.gz dashcore
NAME-VER-arm-linux-gnueabihf.tar.gz dashd
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz bat
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz delta
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz fd
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz hexyl
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz lsd
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz rg
NAME-VER-arm-unknown-linux-gnueabihf.tar.gz sd
NAME-VER-arm-unknown-linux-musleabihf.tar.gz bat
NAME-VER-arm-unknown-linux-musleabihf.tar.gz fd
NAME-VER-arm-unknown-linux-musleabihf.tar.gz hexyl
NAME-VER-arm-unknown-linux-musleabihf.tar.gz zoxide
NAME-VER-freebsd-arm.zip rclone
NAME-VER-linux-arm.tar.gz sass
NAME-VER-linux-arm.zip rclone
NAME-VER-netbsd-arm.zip rclone
NAME-freebsd-arm-VER.tar.gz syncthing
NAME-freebsd-arm.tar.gz lf
NAME-linux-arm ffmpeg
NAME-linux-arm kind
NAME-linux-arm-VER.tar.gz syncthing
NAME-linux-arm.gz ffmpeg
NAME-linux-arm.tar.gz lf
NAME-netbsd-arm-VER.tar.gz syncthing
NAME-netbsd-arm.tar.gz lf
NAME-openbsd-arm-VER.tar.gz syncthing
NAME-openbsd-arm.tar.gz lf
NAME-windows-arm-VER.zip syncthing
NAMEVER.freebsd-arm.tar.gz go
NAMEVER.linux-arm.tar.gz tinygo
NAMEVER.netbsd-arm.tar.gz go
NAMEVER.openbsd-arm.tar.gz go
NAMEVER.plan9-arm.tar.gz go
NAMEVER.windows-arm.msi go
NAMEVER.windows-arm.zip go
NAME_VER_linux-arm.tar.gz hugo
linux-arm ffmpeg
linux-arm.gz ffmpeg
cut -f1,2 builds.tsv | sort -u -k1 | rg -v '^#|^https?:' | rg 'go|ffmpeg|hugo|syncthing|lf|kind|rclone|sass|hexyl|dashd' | rg 'arm64|aarch64' | cut -f2 | sort -u
All of them can be disambiguated as NOT arm64.
I think Terraform is the only one that actually uses arm
to mean arm64
, and that's already being handled as a special case.
Fixed:
- https://webinstall.dev/api/releases/delta.json?channel=stable&limit=100&pretty=true&arch=arm64&os=linux&libc=gnu
- https://webinstall.dev/api/releases/delta.json?channel=stable&limit=100&pretty=true&arch=arm7&os=linux&libc=gnu
Currently in hotfix
and will be pulled in as #754
I'll wait until I get a unit test to close this out.
Thank you for pushing this through to the finish line. Hotfix appears to have fixed my installation errors.
Closing this out since not just the workaround, but the permanent fix is now live in production.
Oh, and although I didn't add a "unit test" per se, _webi/lint-builds.js
fulfills the function of detecting mismatched triple targets.
There's a hierarchy of matches in which arm
matches later than arm64
, so if a perfect match, such as arm64
or aarch64
is found, but the suggested build target is something different, it throws.