Giter Site home page Giter Site logo

zigup's Introduction

zigup

Download and manage zig compilers.

Usage

# fetch a compiler and set it as the default
zigup <version>
zigup master
zigup 0.6.0

# fetch a compiler only (do not set it as default)
zigup fetch <version>
zigup fetch master

# print the default compiler version
zigup default

# set the default compiler
zigup default <version>

# list the installed compiler versions
zigup list

# clean compilers that are not the default, not master, and not marked to keep. when a version is specified, it will clean that version
zigup clean [<version>]

# mark a compiler to keep
zigup keep <version>

# run a specific version of the compiler
zigup run <version> <args>...

How the compilers are managed

zigup stores each compiler in a global "install directory" in a versioned subdirectory. On posix systems the "install directory" is $HOME/zig and on windows the install directory will be a directory named "zig" in the same directory as the "zigup.exe".

zigup makes the zig program available by creating an entry in a directory that occurs in the PATH environment variable. On posix systems this entry is a symlink to one of the zig executables in the install directory. On windows this is an executable that forwards invocations to one of the zig executables in the install directory.

Both the "install directory" and "path link" are configurable through command-line options --install-dir and --path-link respectively.

Building

Run zig build to build, zig build test to test and install with:

# install to a bin directory with
cp zig-out/bin/zigup BIN_PATH

Building Zigup

Zigup is currently built/tested using zig 0.11.0.

TODO

  • set/remove compiler in current environment without overriding the system-wide version.

Dependencies

zigup depends on https://github.com/marler8997/ziget which in turn depends on other projects depending on which SSL backend is selected. You can provide -Dfetch to zig build to automatically clone all repository dependencies, otherwise, the build will report a missing dependency error with an explanation of how to clone it.

The windows target depends on https://github.com/SuperAuguste/zarc to extract zip files. This repo might point to my fork if there are needed changes pending the acceptance of a PR: https://github.com/marler8997/zarc.

On linux and macos, zigup depends on tar to extract the compiler archive files (this may change in the future).

zigup's People

Contributors

devins2518 avatar g-w1 avatar iddev5 avatar kassane avatar marler8997 avatar pfgithub avatar rigobert9 avatar rsepassi avatar tristanisham avatar truemedian avatar xegoist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zigup's Issues

Change default install location to zigup's directory

The current install location for zigup is ~/bin on posix systems. The reason for this is that

  • It's likely writeable by the current user
  • It's a common location that is added to the users PATH

However, another default location could be the path to the zigup binary itself. This solves the PATH issue because it means zig will be reachable in the same manner that the user is calling zigup. For example, if the user installed zigup to a location that is in the PATH, then zig will be available in the same PATH entry. If zigup is not availabe in PATH, then maybe the user didn't want it to be.

Note that the default install location doesn't preclude other solutions. For example, this default solution is not viable for the "Nix Package Manager" because zigup would be installed to its own directory (which should be readonly). In this case I expect the Nix expression to create the zigup and configure a different default install location, perhaps ~/bin. It seems fine to change the default install location for versions of zigup that are installed by package managers and a version that is meant to be a standalone executable installed by the user.

Environment variables for configuration

Hello! I've come to suggest support for two environment variables.
Since these two vars always need to be passed as args and they don't change often, I think they would be good to have as a fallback.

# fallback for --install-dir
export ZIGUP_INSTALL_DIR=~/.cache/zigup

# fallback for --path-link
export ZIGUP_PATH_LINK=~/.local/bin/zig

# we don't need to specify them here!
zigup master

I suppose this can be done with a wrapper script, but I don't really see a reason not to add it, as (I think) it's a pretty standard thing to do.
Also: I might be able to work on this, so expect a pull request soon :))

Detect when zig is hidden by a higher priority program in PATH

I'd like to address an issue that I realized when I switched zigup to using an exe rather than a batch file for its "default compiler". Zigup creates a zig executable in PATH, and users would expect that when they run zigup to change the version, then the "zig" command would use the new version (at least in the same console environment). However, if there is another zig executable or script in PATH that appears before the one zigup creates, then this won't be the case.

I think the solution here is whenever zigup sets the compiler version, it should check to make sure its executable is the highest priority in PATH, otherwise print an error or warning that it isn't.

Error in zig build

Switched to a new branch 'fordep'
/mnt/c/Users/Natu/Desktop/Desktop/zigup/dep/ziget/build.zig:194:61: error: expected type '?Build.LazyPath', found '[]const u8'
configure_openssl.cwd = openssl_repo.getPath(&configure_openssl.step);
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/home/natu/.bun/install/global/node_modules/@oven/zig-linux-x64/lib/std/Build.zig:1904:22: note: union declared here
pub const LazyPath = union(enum) {
^~~~~
referenced by:
addZigetModule: /mnt/c/Users/Natu/Desktop/Desktop/zigup/dep/ziget/build.zig:153:9
addZigupExe: /mnt/c/Users/Natu/Desktop/Desktop/zigup/build2.zig:119:15
remaining reference traces hidden; use '-freference-trace' to see all reference traces
error: the following build command failed with exit code 255:
/mnt/c/Users/Natu/Desktop/Desktop/zigup/zig-cache/o/9bd5c5e1df548935c0e44c27108e3f2d/build /home/natu/.bun/install/global/node_modules/@oven/zig-linux-x64/zig /mnt/c/Users/Natu/Desktop/Desktop/zigup /mnt/c/Users/Natu/Desktop/Desktop/zigup/zig-cache /home/natu/.cache/zig

Publish this tool on Homebrew

  • It is not convenient to install this tool using curl/wget etc.
  • It is recommended to publish this tool to the package management tool of each platform.

MacOS Homebrew:

use cURL install:

  • I provide a curl download installation script here, which can be used if needed.
  • base on go-task.
  install:zigup:
    cmds:
      - mkdir -p $HOME/.local/bin/;
      - cd $HOME/.local/bin/; curl -LJO https://github.com/marler8997/zigup/releases/download/v2022_08_25/zigup.macos-latest-aarch64.zip && unzip zigup.macos-latest-aarch64.zip && rm zigup.macos-latest-aarch64.zip
      - chmod +x $HOME/.local/bin/zigup;
      - zigup
    ignore_error: true
  • fish: set env:
set -gx PATH "$PATH:~/.local/bin"

bin/zig is not created if the path-link directory is not in $PATH

$> zigup 0.11.0-dev.1393+38eebf3c4
install directory '/Users/pfg/zig'
mkdir '/Users/pfg/zig'
compiler '/Users/pfg/zig/0.11.0-dev.1393+38eebf3c4' already installed
error: path-link '/Users/pfg/bin/zig' is lower priority in PATH than '/usr/local/bin/zig'

$> zigup 0.11.0-dev.1393+38eebf3c4
install directory '/Users/pfg/zig'
mkdir '/Users/pfg/zig'
compiler '/Users/pfg/zig/0.11.0-dev.1393+38eebf3c4' already installed
error: the path link '/Users/pfg/bin/zig' is not in PATH

Expected:

~/bin/zig is still created or updated despite the warning

What happens:

~/bin/zig is not created, or if it exists it is not updated

I would expect path issues to be a warning rather than an error, something like:

$> zigup master
… downloading
Zig installed to ~/bin/zig
warning: ~/bin is not in your PATH. 
or:
warning: There is already a zig compiler in your PATH with higher priority. 

error: when running `zig build -Dfetch`

💻: Mac os M1 Max

OS: 13.1

Zig Version: 0.10.1

info: [RUN] "git" "-C" "/Users/eryue0220/cin/zig/zigup/dep/iguanaTLS" "checkout" "24b465f8330edd7085450da305b1c75fd6d480e7" "-b" "fordep"
Switched to a new branch 'fordep'
/Users/eryue0220/cin/zig/zigup/dep/iguanaTLS/src/ciphersuites.zig:312:56: error: no field named 'type' in struct 'builtin.Type.StructField'
    if (!comptime std.meta.trait.is(.Array)(field_info.type) or std.meta.Elem(field_info.type) != u8)
                                                       ^~~~
/opt/homebrew/Cellar/zig/0.10.1/lib/zig/std/builtin.zig:283:29: note: struct declared here
    pub const StructField = struct {
                            ^~~~~~
/Users/eryue0220/cin/zig/zigup/dep/iguanaTLS/src/ciphersuites.zig:323:28: note: called from here
            key_field_width(cs.Keys, .client_key).? +
            ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/Users/eryue0220/cin/zig/zigup/dep/iguanaTLS/src/ciphersuites.zig:335:29: note: called from here
        data: [key_data_size(ciphersuites)]u8,
               ~~~~~~~~~~~~~^~~~~~~~~~~~~~
error: zigup...
error: The following command exited with error code 1:
/opt/homebrew/Cellar/zig/0.10.1/bin/zig build-exe /Users/eryue0220/cin/zig/zigup/zigup.zig --cache-dir /Users/eryue0220/cin/zig/zigup/zig-cache --global-cache-dir /Users/eryue0220/.cache/zig --name zigup --pkg-begin build_options /Users/eryue0220/cin/zig/zigup/zig-cache/options/YlIhfB2NyOIjaFu_elfbPcNHrz1bry-eT_AAiCBXWsahD6UwUcWXZUFIetT057fK --pkg-end --pkg-begin ziget /Users/eryue0220/cin/zig/zigup/dep/ziget/ziget.zig --pkg-begin ssl /Users/eryue0220/cin/zig/zigup/dep/ziget/iguana/ssl.zig --pkg-begin iguana /Users/eryue0220/cin/zig/zigup/dep/iguanaTLS/src/main.zig --pkg-end --pkg-end --pkg-end --enable-cache
error: the following build command failed with exit code 1:
/Users/eryue0220/cin/zig/zigup/zig-cache/o/7e64739f5fd0571bf7c4d8cae7846bb1/build /opt/homebrew/Cellar/zig/0.10.1/bin/zig /Users/eryue0220/cin/zig/zigup /Users/eryue0220/cin/zig/zigup/zig-cache /Users/eryue0220/.cache/zig -Dfetch
The following command exited with error code 1 (expected 0):
cd /Users/eryue0220/cin/zig/zigup && /opt/homebrew/Cellar/zig/0.10.1/bin/zig build --build-file /Users/eryue0220/cin/zig/zigup/build2.zig --cache-dir /Users/eryue0220/cin/zig/zigup/zig-cache -Dfetch
error: the following build command failed with exit code 255:
/Users/eryue0220/cin/zig/zigup/zig-cache/o/45db0ab0ffb62e8fc8660ded1aa410a5/build /opt/homebrew/Cellar/zig/0.10.1/bin/zig /Users/eryue0220/cin/zig/zigup /Users/eryue0220/cin/zig/zigup/zig-cache /Users/eryue0220/.cache/zig -Dfetch

CI binaries expired

Unfortunately zigup does not build on the latest zig master since the last update was all the way back in May. The ci binaries appear to have expired. Does anyone know of another way to download specific older zig versions?

Offer curl-based, pre-compiled, zig-less installation

Yay, a Zig version manager!

Could we get some shell install commands, to help first-time users who may not already have a Zig compiler installed? Similar to how rustup works.

Specifically, the user should not be required to have zig installed at the time zigup is installed. Rather, zigup could obtain a precompiled zig binary and put it in a zigup-friendly place on behalf of the user, so that the user only needs to know how to run a curl command, and zigup does 100% of the rest of the work of preparing zig's. Most version managers work this way.

error: AccessDenied (syslink)

I am using Linux
latest build of zigup v2023_07_27
zigup.ubuntu-latest-x86_64.zip

I looked into it and seems like ln -s (syslink) for /usr/bin requires sudo access.

if I run zigup with sudo, then it requires root access to run zig.

$ zigup 0.12.0-dev.899+027aabf49

install directory '/home/saurabh/zig'
mkdir '/home/saurabh/zig'
rm -rf '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing'
mkdir '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing'
downloading 'https://ziglang.org/builds/zig-linux-x86_64-0.12.0-dev.899+027aabf49.tar.xz' to '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing/zig-linux-x86_64-0.12.0-dev.899+027aabf49.tar.xz'
[RUN] tar xf /home/saurabh/zig/0.12.0-dev.899+027aabf49.installing/zig-linux-x86_64-0.12.0-dev.899+027aabf49.tar.xz -C /home/saurabh/zig/0.12.0-dev.899+027aabf49.installing
rm -rf '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing/zig-linux-x86_64-0.12.0-dev.899+027aabf49.tar.xz'
mv '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing/zig-linux-x86_64-0.12.0-dev.899+027aabf49' '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing/files'
mv '/home/saurabh/zig/0.12.0-dev.899+027aabf49.installing' '/home/saurabh/zig/0.12.0-dev.899+027aabf49'
error: AccessDenied
/opt/hostedtoolcache/zig/0.11.0-dev.4002/x64/lib/std/os.zig:2355:19: 0x278722 in unlinkZ (zigup)
/opt/hostedtoolcache/zig/0.11.0-dev.4002/x64/lib/std/os.zig:2341:9: 0x24b43a in unlink (zigup)
/home/runner/work/zigup/zigup/zigup.zig:462:9: 0x24b137 in loggyUpdateSymlink (zigup)
/home/runner/work/zigup/zigup/zigup.zig:676:13: 0x24ce2d in setDefaultCompiler (zigup)
/home/runner/work/zigup/zigup/zigup.zig:394:9: 0x24dae7 in fetchCompiler (zigup)
/home/runner/work/zigup/zigup/zigup.zig:307:9: 0x25326c in main2 (zigup)
/home/runner/work/zigup/zigup/zigup.zig:176:17: 0x253722 in main (zigup)

zigup does not compile with latest master (`0.11.0-dev.1782+b52be973d`)

I get the error

/home/clouds/Downloads/zigup/GitRepoStep.zig:60:14: error: expected type '[]const u8', found 'Build.Cache.Directory'
            b.build_root,
            ~^~~~~~~~~~~
/home/clouds/zig/0.11.0-dev.1782+b52be973d/files/lib/std/Build/Cache.zig:5:23: note: struct declared here
pub const Directory = struct {
                      ^~~~~~
referenced by:
    buildOrFail: /home/clouds/Downloads/zigup/build.zig:22:35
    buildNoreturn: /home/clouds/Downloads/zigup/build.zig:14:17
    remaining reference traces hidden; use '-freference-trace' to see all reference traces

/home/clouds/Downloads/zigup/build.zig:52:43: error: expected type '[]const u8', found 'Build.Cache.Directory'
    run_step.addArg(self.pathFromRoot(self.cache_root));
                                      ~~~~^~~~~~~~~~~
/home/clouds/zig/0.11.0-dev.1782+b52be973d/files/lib/std/Build/Cache.zig:5:23: note: struct declared here
pub const Directory = struct {
                      ^~~~~~
/home/clouds/zig/0.11.0-dev.1782+b52be973d/files/lib/std/Build.zig:1344:35: note: parameter type declared here
pub fn pathFromRoot(b: *Build, p: []const u8) []u8 {
                                  ^~~~~~~~~~
/home/clouds/Downloads/zigup/GitRepoStep.zig:186:24: error: expected type '?[]const u8', found 'Build.Cache.Directory'
    child.cwd = builder.build_root;
                ~~~~~~~^~~~~~~~~~~
/home/clouds/zig/0.11.0-dev.1782+b52be973d/files/lib/std/Build/Cache.zig:5:23: note: struct declared here
pub const Directory = struct {

when compiling on version 0.11.0-dev.1782+b52be973d

Required zig version for zigup

Which version of Zig is required to build zigup? I'm on 0.10.0-dev.1419+338bf55e8 and I get

./GitRepoStep.zig:183:10: error: type '@typeInfo(@typeInfo(@TypeOf(std.child_process.ChildProcess.init)).Fn.return_type.?).ErrorUnion.error_set!*std.child_process.ChildProcess' does not support field access
    child.stdin_behavior = .Ignore;

Might that be related to an outdated version of Zig on my part?

error: the path link '/home/sanxiyn/download/zig' is not in PATH

To reproduce, download zigup to $HOME/download/zigup, and symbolic link it to $HOME/bin/zigup, whereas $HOME/download is not in PATH and $HOME/bin is.

When zigup is executed, /proc/self/exe points to $HOME/download/zigup and not $HOME/bin/zigup, even if $HOME/bin/zigup was what was found in PATH, because kernel already resolved symbolic link.

using latest as a version in zigup commands

similar to how you can run zigup master to get the latest commit from github, i think you should also be able to use latest to use the latest installed version

example: zigup run latest build

Failed to download zig with v2022_08_25 on Linux

On my Linux laptop Zig failed to be downloaded by Zigup after a timeout. However, under the same network, my MacOS Air downloads Zig just fine.

Linux david-laptop 5.19.12-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 28 Sep 2022 13:21:25 +0000 x86_64 GNU/Linux

Stack trace of random breakpoint during the wait:

#0  0x0000000000220f4a in std.os.linux.x86_64.syscall3 (number=connect, arg1=3, arg2=140737488341368, arg3=16)
    at /opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os/linux/x86_64.zig:46
#1  0x000000000026c1db in std.os.linux.connect (fd=3, addr=0x7fffffffc978, len=16) at /opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os/linux.zig:1229
#2  0x000000000025753c in std.os.connect (sock=3, sock_addr=0x7fffffffc978, len=16) at /opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig:3954
#3  0x0000000000252dbf in std.net.tcpConnectToAddress (address=...) at /opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig:713
#4  0x0000000000250a87 in std.net.tcpConnectToHost (allocator=..., name=..., port=443) at /opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig:692
#5  0x000000000024fa0e in .ziget.ziget.request.downloadHttpOrRedirect (httpUrl=..., writer=..., options=...) at /home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig:174
#6  0x000000000024ef2a in .ziget.ziget.request.download (url=..., writer=..., options=..., state=0x7fffffffd558) at /home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig:71
#7  0x000000000024ecb7 in download (allocator=..., url=..., writer=...) at zigup.zig:52
#8  0x000000000024e6dd in downloadToString (allocator=..., url=...) at zigup.zig:69
#9  0x0000000000248e7a in fetchDownloadIndex (allocator=<error reading variable: Cannot access memory at address 0x10>) at zigup.zig:410
#10 0x00000000002492af in fetchCompiler (allocator=..., version_arg=..., set_default=set_default) at zigup.zig:372
#11 0x000000000024780a in main2 () at zigup.zig:307
#12 0x0000000000243bfd in main () at zigup.zig:174

strace output:

execve("/home/david/dev/zigup/zigup", ["zigup", "master", "--install-dir", "/home/david/dev/master-zig"], 0x7ffc49d4b768 /* 42 vars */) = 0
arch_prctl(ARCH_SET_FS, 0x361028)       = 0
prlimit64(0, RLIMIT_STACK, {rlim_cur=16384*1024, rlim_max=16384*1024}, NULL) = 0
rt_sigaction(SIGSEGV, {sa_handler=0x2439b0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x220fa0}, NULL, 8) = 0
rt_sigaction(SIGILL, {sa_handler=0x2439b0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x220fa0}, NULL, 8) = 0
rt_sigaction(SIGBUS, {sa_handler=0x2439b0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x220fa0}, NULL, 8) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f022000
write(2, "install directory '", 19install directory ')     = 19
write(2, "/home/david/dev/master-zig", 26/home/david/dev/master-zig) = 26
write(2, "'\n", 2'
)                      = 2
write(2, "mkdir '", 7mkdir ')                  = 7
write(2, "/home/david/dev/master-zig", 26/home/david/dev/master-zig) = 26
write(2, "'\n", 2'
)                      = 2
mkdir("/home/david/dev/master-zig", 0755) = -1 EEXIST (File exists)
mmap(0x7f4b9f023000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f023000
openat(AT_FDCWD, "/etc/hosts", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 3
read(3, "# Static table lookup for hostna"..., 4096) = 65
read(3, "", 4031)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/resolv.conf", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 3
read(3, "# Generated by NetworkManager\nna"..., 4096) = 93
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
ioctl(4, SIOCGIFINDEX, {ifr_name="wlan0", ifr_ifindex=3}) = 0
close(4)                                = 0
read(3, "", 4003)                       = 0
close(3)                                = 0
socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 3
bind(3, {sa_family=AF_INET6, sin6_port=htons(0), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::", &sin6_addr), sin6_scope_id=0}, 28) = 0
sendto(3, "\376\252\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\1\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 28) = 29
sendto(3, "\376\252\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\1\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.4.4")}, 28) = 29
sendto(3, "\376\252\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\1\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fe80::1", &sin6_addr), sin6_scope_id=if_nametoindex("wlan0")}, 28) = 29
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 28) = 29
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.4.4")}, 28) = 29
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fe80::1", &sin6_addr), sin6_scope_id=if_nametoindex("wlan0")}, 28) = 29
poll([{fd=3, events=POLLIN}], 1, 2500)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\376\252\201\0\0\1\0\1\0\0\0\0\7ziglang\3org\0\0\1\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fe80::1", &sin6_addr), sin6_scope_id=if_nametoindex("wlan0")}, [28]) = 45
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2495)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\3#\201\200\0\1\0\10\0\0\0\0\7ziglang\3org\0\0\34\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.8.8", &sin6_addr), sin6_scope_id=0}, [28]) = 253
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2399)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\376\252\201\200\0\1\0\4\0\0\0\0\7ziglang\3org\0\0\1\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.4.4", &sin6_addr), sin6_scope_id=0}, [28]) = 93
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2393)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\3#\201\200\0\1\0\10\0\0\0\0\7ziglang\3org\0\0\34\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.4.4", &sin6_addr), sin6_scope_id=0}, [28]) = 253
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2392)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\376\252\201\200\0\1\0\4\0\0\0\0\7ziglang\3org\0\0\1\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.8.8", &sin6_addr), sin6_scope_id=0}, [28]) = 93
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2390)  = 0 (Timeout)
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 28) = 29
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.4.4")}, 28) = 29
sendto(3, "\3#\1\0\0\1\0\0\0\0\0\0\7ziglang\3org\0\0\34\0\1", 29, MSG_NOSIGNAL, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "fe80::1", &sin6_addr), sin6_scope_id=if_nametoindex("wlan0")}, 28) = 29
poll([{fd=3, events=POLLIN}], 1, 2500)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\3#\201\200\0\1\0\10\0\0\0\0\7ziglang\3org\0\0\34\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.4.4", &sin6_addr), sin6_scope_id=0}, [28]) = 253
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2425)  = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "\3#\201\200\0\1\0\10\0\0\0\0\7ziglang\3org\0\0\34\0\1\300\f\0"..., 512, 0, {sa_family=AF_INET6, sin6_port=htons(53), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::ffff:8.8.8.8", &sin6_addr), sin6_scope_id=0}, [28]) = 253
recvfrom(3, 0x7ffe30542e70, 512, 0, 0x7ffe305428d8, [28]) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=3, events=POLLIN}], 1, 2422)  = 0 (Timeout)
close(3)                                = 0
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("192.168.112.254")}, 16) = -1 ETIMEDOUT (Connection timed out)
close(3)                                = 0
write(2, "error: failed to download '", 27error: failed to download ') = 27
write(2, "https://ziglang.org/download/ind"..., 39https://ziglang.org/download/index.json) = 39
write(2, "': ", 3': )                      = 3
write(2, "error.", 6error.)                   = 6
write(2, "ConnectionTimedOut", 18ConnectionTimedOut)      = 18
write(2, "\n", 1
)                       = 1
write(2, "error: ", 7error: )                  = 7
write(2, "ConnectionTimedOut", 18ConnectionTimedOut)      = 18
write(2, "\n", 1
)                       = 1
ioctl(2, TIOCGWINSZ, 0x7ffe30545650)    = -1 ENOTTY (Inappropriate ioctl for device)
mmap(0x7f4b9f02d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f02d000
openat(AT_FDCWD, "/proc/self/exe", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0755, st_size=2848216, ...}) = 0
mmap(NULL, 2848216, PROT_READ, MAP_SHARED, 3, 0) = 0x7f4b9ec00000
close(3)                                = 0
mmap(0x7f4b9f02e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f02e000
mmap(0x7f4b9f030000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f030000
mmap(0x7f4b9f035000, 32768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f035000
mmap(0x7f4b9f03d000, 90112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f03d000
mmap(0x7f4b9f053000, 229376, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f053000
mmap(0x7f4b9f08b000, 552960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f08b000
mmap(0x7f4b9f112000, 1298432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f112000
mmap(0x7f4b9f24f000, 3006464, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f24f000
mmap(0x7f4b9f52d000, 6889472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4b9f52d000
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "69", 269)                       = 2
write(2, ":", 1:)                        = 1
write(2, "5", 15)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "24e711", 624e711)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "downloadToString", 16downloadToString)        = 16
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "413", 3413)                      = 3
write(2, ":", 1:)                        = 1
write(2, "13", 213)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "248eb4", 6248eb4)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "fetchDownloadIndex", 18fetchDownloadIndex)      = 18
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "372", 3372)                      = 3
write(2, ":", 1:)                        = 1
write(2, "35", 235)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "249300", 6249300)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "fetchCompiler", 13fetchCompiler)           = 13
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "307", 3307)                      = 3
write(2, ":", 1:)                        = 1
write(2, "9", 19)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "246f21", 6246f21)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "main2", 5main2)                    = 5
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "176", 3176)                      = 3
write(2, ":", 1:)                        = 1
write(2, "17", 217)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "243c2c", 6243c2c)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "main", 4main)                     = 4
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "89", 289)                       = 2
write(2, ":", 1:)                        = 1
write(2, "31", 231)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25f47b", 625f47b)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Address.parseIp4", 24std.net.Address.parseIp4) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "1857", 41857)                     = 4
write(2, ":", 1:)                        = 1
write(2, "25", 225)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25fbea", 625fbea)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.fmt.charToDigit", 19std.fmt.charToDigit)     = 19
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "378", 3378)                      = 3
write(2, ":", 1:)                        = 1
write(2, "31", 231)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "256175", 6256175)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Ip6Address.parse", 24std.net.Ip6Address.parse) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "81", 281)                       = 2
write(2, ":", 1:)                        = 1
write(2, "32", 232)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25f532", 625f532)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Address.parseIp6", 24std.net.Address.parseIp6) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "45", 245)                       = 2
write(2, ":", 1:)                        = 1
write(2, "9", 19)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25f734", 625f734)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Address.parseIp", 23std.net.Address.parseIp) = 23
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "75", 275)                       = 2
write(2, ":", 1:)                        = 1
write(2, "29", 229)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "254728", 6254728)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Address.parseExpectingFa"..., 36std.net.Address.parseExpectingFamily) = 36
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 93/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/io/reader.zig) = 93
write(2, ":", 1:)                        = 1
write(2, "233", 3233)                      = 3
write(2, ":", 1:)                        = 1
write(2, "31", 231)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "260d9d", 6260d9d)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.io.reader.Reader(*std.io.buf"..., 297std.io.reader.Reader(*std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)),std.os.ReadError,std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)).read).readByte) = 297
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/io/reader.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "228", 3228)                      = 3
write(2, ":", 1:)                        = 1
write(2, "17", 217)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "255af6", 6255af6)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Ip4Address.parse", 24std.net.Ip4Address.parse) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "89", 289)                       = 2
write(2, ":", 1:)                        = 1
write(2, "31", 231)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25f47b", 625f47b)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.Address.parseIp4", 24std.net.Address.parseIp4) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "1857", 41857)                     = 4
write(2, ":", 1:)                        = 1
write(2, "25", 225)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "25fbea", 625fbea)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.fmt.charToDigit", 19std.fmt.charToDigit)     = 19
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "1781", 41781)                     = 4
write(2, ":", 1:)                        = 1
write(2, "23", 223)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26711d", 626711d)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.fmt.parseWithSign", 21std.fmt.parseWithSign)   = 21
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "1680", 41680)                     = 4
write(2, ":", 1:)                        = 1
write(2, "5", 15)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "265e85", 6265e85)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.fmt.parseInt", 16std.fmt.parseInt)        = 16
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/fmt.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 93/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/io/reader.zig) = 93
write(2, ":", 1:)                        = 1
write(2, "233", 3233)                      = 3
write(2, ":", 1:)                        = 1
write(2, "31", 231)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "260d9d", 6260d9d)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.io.reader.Reader(*std.io.buf"..., 297std.io.reader.Reader(*std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)),std.os.ReadError,std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)).read).readByte) = 297
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/io/reader.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "6460", 46460)                     = 4
write(2, ":", 1:)                        = 1
write(2, "27", 227)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "26ab5e", 626ab5e)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.recvfrom", 15std.os.recvfrom)         = 15
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "1570", 41570)                     = 4
write(2, ":", 1:)                        = 1
write(2, "21", 221)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "2696fc", 62696fc)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.dnsParse", 16std.net.dnsParse)        = 16
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 86/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig) = 86
write(2, ":", 1:)                        = 1
write(2, "3973", 43973)                     = 4
write(2, ":", 1:)                        = 1
write(2, "26", 226)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "2574f6", 62574f6)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.os.connect", 14std.os.connect)          = 14
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/os.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "713", 3713)                      = 3
write(2, ":", 1:)                        = 1
write(2, "9", 19)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "252de9", 6252de9)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.tcpConnectToAddress", 27std.net.tcpConnectToAddress) = 27
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/opt/hostedtoolcache/zig/zig-lin"..., 87/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig) = 87
write(2, ":", 1:)                        = 1
write(2, "696", 3696)                      = 3
write(2, ":", 1:)                        = 1
write(2, "21", 221)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "250ad8", 6250ad8)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "std.net.tcpConnectToHost", 24std.net.tcpConnectToHost) = 24
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.3027+0e26c6149/x64/lib/std/net.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/de"..., 57/home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig) = 57
write(2, ":", 1:)                        = 1
write(2, "174", 3174)                      = 3
write(2, ":", 1:)                        = 1
write(2, "18", 218)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "24fa36", 624fa36)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, ".ziget.ziget.request.downloadHtt"..., 43.ziget.ziget.request.downloadHttpOrRedirect) = 43
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/de"..., 57/home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig) = 57
write(2, ":", 1:)                        = 1
write(2, "71", 271)                       = 2
write(2, ":", 1:)                        = 1
write(2, "32", 232)                       = 2
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "24ef86", 624ef86)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, ".ziget.ziget.request.download", 29.ziget.ziget.request.download) = 29
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/dep/ziget/ziget/request.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "/home/runner/work/zigup/zigup/zi"..., 39/home/runner/work/zigup/zigup/zigup.zig) = 39
write(2, ":", 1:)                        = 1
write(2, "52", 252)                       = 2
write(2, ":", 1:)                        = 1
write(2, "5", 15)                        = 1
write(2, ": ", 2: )                       = 2
write(2, "0x", 20x)                       = 2
write(2, "24ec24", 624ec24)                   = 6
write(2, " in ", 4 in )                     = 4
write(2, "download", 8download)                 = 8
write(2, " (", 2 ()                       = 2
write(2, "zigup", 5zigup)                    = 5
write(2, ")", 1))                        = 1
write(2, "\n", 1
)                       = 1
openat(AT_FDCWD, "/home/runner/work/zigup/zigup/zigup.zig", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
exit_group(1)                           = ?
+++ exited with 1 +++

Unusable

Kindly rewrite this repo so it's at least barely usable. Currently it not working at all

Regards,
Rahul,
India, Abu-Jila.

Freshly-installed `zigup` fails to run `zigup master` twice, third time works

Context

My zigup was built using zig build -Dtarget=x86_64-windows-gnu on a Linux machine running Ubuntu 20.04, using zig commit 0e6d2184c.

William@DESKTOP-H0PMN4M C:\Users\William\zig\bin
$ zigup master
install directory 'C:\Users\William\zig\bin\zig'
mkdir "C:\Users\William\zig\bin\zig"
rd /s /q "C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing"
mkdir "C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing"
downloading 'https://ziglang.org/builds/zig-windows-x86_64-0.10.0-dev.555+1b6a1e691.zip' to 'C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing\zig-windows-x86_64-0.10.0-dev.555+1b6a1e691.zip'
extracting archive to "C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing"
extracted archive in 162.98 s
rd /s /q "C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing\zig-windows-x86_64-0.10.0-dev.555+1b6a1e691.zip"
mv 'C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing\zig-windows-x86_64-0.10.0-dev.555+1b6a1e691' 'C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing\files'
mv 'C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing' 'C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691'
error: AccessDenied
Unable to dump stack trace: FileNotFound

William@DESKTOP-H0PMN4M C:\Users\William\zig\bin
$ zigup master
install directory 'C:\Users\William\zig\bin\zig'
mkdir "C:\Users\William\zig\bin\zig"
rd /s /q "C:\Users\William\zig\bin\zig\0.10.0-dev.555+1b6a1e691.installing"
error.Unexpected NTSTATUS=0xc0000056
Unable to dump stack trace: FileNotFound
error: Unexpected
Unable to dump stack trace: FileNotFound

Other Context

[00:20:28] <marler8997_> 0xC0000056
[00:20:28] <marler8997_> STATUS_DELETE_PENDING
[00:21:11] <cr1901> Also a probably related error: AccessDenied

Other Info

The third attempt of running zigup master succeeded, but I didn't capture the stdout of that before cls the command prompt (oops!). No errors were reported.

Can't use `--path-link` - panic: reached unreachable code

Not sure how to use the --path-link argument, I'd like to put the zig.exe symlink that points to the default compiler in the specified directory but I get this error:

❯ zigup 0.11.0 --path-link "C:Users\$USER\scoop\apps\zigup\current\zig\"
install directory 'C:\Users\$USER\scoop\apps\zigup\current\zig'
mkdir "C:\Users\$USER\scoop\apps\zigup\current\zig"
compiler 'C:\Users\$USER\scoop\apps\zigup\current\zig\0.11.0' already installed
thread 25068 panic: reached unreachable code
???:?:?: 0x7ff66fd4537c in ??? (zigup.exe)
???:?:?: 0x7ff66fd11357 in ??? (zigup.exe)
???:?:?: 0x7ff66fcdecd8 in ??? (zigup.exe)
???:?:?: 0x7ff66fce148b in ??? (zigup.exe)
???:?:?: 0x7ff66fce3baa in ??? (zigup.exe)
???:?:?: 0x7ff66fce489d in ??? (zigup.exe)
???:?:?: 0x7ff66fce9de2 in ??? (zigup.exe)
???:?:?: 0x7ff66fcea2f5 in ??? (zigup.exe)
???:?:?: 0x7ff66fcea3f3 in ??? (zigup.exe)
???:?:?: 0x7ff8c4ab257c in ??? (KERNEL32.DLL)
???:?:?: 0x7ff8c524aa57 in ??? (ntdll.dll)

Add a symbolic link to the files of the default compiler

I'm using Zig master to build my C projects.

One of the tools I use requires the location of the standard library to function. As I use master, this location changes each time I update the compiler.

If zigup created a symbolic link to the files, as well as the compiler itself, I could simply pass the symbolic link.

zig\files > zig\<default-version>\files

I appreciate this is likely a niche use case and I can create a batch file to handle it myself, but thought I'd double check.

Automatically switch to latest master after updating

Currently, when i run zigup fetch master i need to run zigup default master right after in order to switch to the version i just downloaded. I think that if your default is master, when you run zigup fetch master, it should automatically switch to the latest master version.

Improve the output of default and list commands

I suggest that default and list command to show some more details, namely:

  • default command should show the actual path of master
  • list command should show which one is the master
  • list command should somehow mark the default compiler too

POC commit at my fork: iddev5@b346122

zigup

minisig signature verification

Hello! Thank you for making zigup.
Looking at the listed commands when running zigup master I don't see any that download the signature or verify the downloaded zig package in any way.
Are there any plans to add this?

shell completion

Using zigup would be more convenient if it had completions for shells. These would have to be installed seperately right now, but once theres an AUR package they could be included. Here's some shells that I think might be worth supporting:

  • bash
  • zsh
  • fish
  • maybe elvish

Notification of breaking changes

It seems some people are using zigup to get the nightly version of zig. And some people also seem to occasionally miss new breaking changes in master. Wouldn't it be great if zigup would notify you about any breaking changes that happened between the last time you fetched? I imagine it a bit like how changes in plugins are displayed when running :PackerUpdate in neovim:

packer-update

Here you can see no breaking changes because there weren't any, but they would be marked red. The other commits might be interesting for some, but not essential. The feature would only be relevant for master.

mac os errors

getting non descript errors on zigup 0.11.0-dev.3771+128fd7dd0

install directory '/Users/ben/zig'
mkdir '/Users/ben/zig'
rm -rf '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing'
mkdir '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing'
downloading 'https://ziglang.org/builds/zig-macos-x86_64-0.11.0-dev.3771+128fd7dd0.tar.xz' to '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing/zig-macos-x86_64-0.11.0-dev.3771+128fd7dd0.tar.xz'
[RUN] tar xf /Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing/zig-macos-x86_64-0.11.0-dev.3771+128fd7dd0.tar.xz -C /Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing
rm -rf '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing/zig-macos-x86_64-0.11.0-dev.3771+128fd7dd0.tar.xz'
mv '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing/zig-macos-x86_64-0.11.0-dev.3771+128fd7dd0' '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing/files'
mv '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0.installing' '/Users/ben/zig/0.11.0-dev.3771+128fd7dd0'
error: NotLink
???:?:?: 0x104b6ef6a in _std.os.mkdirZ (???)
???:?:?: 0x104b6ee2f in _std.os.mkdir (???)
???:?:?: 0x104b6ec38 in _std.fs.makeDirAbsolute (???)
???:?:?: 0x104b6e251 in _loggyMakeDirAbsolute (???)
???:?:?: 0x104bb44c9 in _std.os.faccessatZ (???)
???:?:?: 0x104b6f344 in _std.fs.Dir.accessZ (???)
???:?:?: 0x104b6f25a in _std.fs.Dir.access (???)
???:?:?: 0x104c54524 in _std.os.unlinkatZ (???)
???:?:?: 0x104bf8401 in _std.fs.Dir.deleteFileZ (???)
???:?:?: 0x104ba7c2c in _std.fs.Dir.deleteFile (???)
???:?:?: 0x104bf972e in _std.os.openatZ (???)
???:?:?: 0x104bae390 in _std.fs.Dir.openFileZ (???)
???:?:?: 0x104bae100 in _std.fs.Dir.openFile (???)
???:?:?: 0x104bf972e in _std.os.openatZ (???)
???:?:?: 0x104bae390 in _std.fs.Dir.openFileZ (???)
???:?:?: 0x104bae100 in _std.fs.Dir.openFile (???)
???:?:?: 0x104bab509 in _std.os.readlinkZ (???)
???:?:?: 0x104bab3c1 in _std.os.readlink (???)
???:?:?: 0x104bab042 in _std.fs.readLinkAbsolute (???)
???:?:?: 0x104ba4c73 in _loggyUpdateSymlink (???)
???:?:?: 0x104b6a0b1 in _setDefaultCompiler (???)
???:?:?: 0x104b67251 in _fetchCompiler (???)
???:?:?: 0x104b6302d in _main2 (???)
???:?:?: 0x104b61b3a in _main.0 (???)

tar error

Edit: I'm dumb I just needed to install xz

tar (child): xz: Cannot exec: No such file or directory

btw I'm using wsl

this is the entire output

install directory '/home/me/zig'
mkdir '/home/me/zig'
rm -rf '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing'
mkdir '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing'
downloading 'https://ziglang.org/builds/zig-linux-x86_64-0.10.0-dev.694+0b7347fd1.tar.xz' to '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing/zig-linux-x86_64-0.10.0-dev.694+0b7347fd1.tar.xz'
[RUN] tar xf /home/me/zig/0.10.0-dev.694+0b7347fd1.installing/zig-linux-x86_64-0.10.0-dev.694+0b7347fd1.tar.xz -C /home/me/zig/0.10.0-dev.694+0b7347fd1.installing
tar (child): xz: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
rm -rf '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing/zig-linux-x86_64-0.10.0-dev.694+0b7347fd1.tar.xz'
mv '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing/zig-linux-x86_64-0.10.0-dev.694+0b7347fd1' '/home/me/zig/0.10.0-dev.694+0b7347fd1.installing/files'
error: FileNotFound
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:81:32: 0x262b12 in std.net.Address.parseIp6 (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:45:9: 0x262d14 in std.net.Address.parseIp (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:75:29: 0x257d18 in std.net.Address.parseExpectingFamily (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/io/reader.zig:233:31: 0x26509d in std.io.reader.Reader(*std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)),std.os.ReadError,std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)).read).readByte (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/io/reader.zig:233:31: 0x26509d in std.io.reader.Reader(*std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)),std.os.ReadError,std.io.buffered_reader.BufferedReader(4096,std.io.reader.Reader(std.fs.file.File,std.os.ReadError,std.fs.file.File.read)).read).readByte (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:5980:27: 0x26eabe in std.os.recvfrom (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:3608:28: 0x25aa8e in std.os.connect (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:2210:19: 0x2a55a7 in std.os.renameZ (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:2187:9: 0x2a5404 in std.os.rename (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fs.zig:253:5: 0x2a51ec in std.fs.renameAbsolute (zigup)
/home/runner/work/zigup/zigup/zigup.zig:404:5: 0x2a0a2a in loggyRenameAbsolute (zigup)
/home/runner/work/zigup/zigup/zigup.zig:908:9: 0x29f09b in installCompiler (zigup)
/home/runner/work/zigup/zigup/zigup.zig:339:5: 0x24d6bf in fetchCompiler (zigup)
/home/runner/work/zigup/zigup/zigup.zig:299:9: 0x24ba1f in main2 (zigup)
/home/runner/work/zigup/zigup/zigup.zig:171:17: 0x24372c in main (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:4111:19: 0x2e7a81 in std.os.faccessatZ (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fs.zig:2080:9: 0x2a0bc7 in std.fs.Dir.accessZ (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fs.zig:2062:9: 0x2a0b05 in std.fs.Dir.access (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/os.zig:2129:19: 0x31e384 in std.os.unlinkatZ (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fs.zig:1642:25: 0x2e7d4b in std.fs.Dir.deleteFileZ (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fs.zig:1623:13: 0x2a2007 in std.fs.Dir.deleteFile (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:228:17: 0x2590e6 in std.net.Ip4Address.parse (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:89:31: 0x262a5b in std.net.Address.parseIp4 (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/fmt.zig:1856:25: 0x2631ca in std.fmt.charToDigit (zigup)
/opt/hostedtoolcache/zig/zig-linux-x86_64-0.10.0-dev.555+1b6a1e691/x64/lib/std/net.zig:378:31: 0x259765 in std.net.Ip6Address.parse (zigup)

ability to specify arch

Hello,

Is there a way to specify arch ?

Current issue:
$ zigup master
retrieves zig-macos-x86_64 but I would like zig-macos-aarch64

Thanks!

Support system-wide configuration for zigup directory

Issue

Currently, all zig compiler installs through zigup are stored in $HOME/zig by default. I would like to configure that my compilers be stored in $HOME/.zigup/compilers. In the current version of zigup, I need to pass --install-dir $HOME/.zigup/compilers each time I fetch a compiler version. I would like to set a globally configured "install dir" that zigup respects unless explicitly passed an --install-dir argument.

Solutions

There are a couple ways to do this.

1. Environment variables

The simplest way would be to create an environment variable:

# This might store a `$ZIGUP_HOME` env var? 
zigup --set-install-dir $HOME/.zigup 

And subsequent calls to zigup might check for $ZIGUP_HOME existence before proceeding.

2. Use a configuration options file

2.1. A config file in $ZIGUP_HOME

Rustup, the zigup equivalent for rust, has a default $RUSTUP_HOME at $HOME/.rustup which can be overridden by setting the env var. The settings.toml file provides configuration options to set the default toolchain and to allow for project-specific toolchain overrides (configured through the CLI):

default_toolchain = "stable-x86_64-unknown-linux-musl"
profile = "default"
version = 12

[overrides]
"/home/username/d/example_project_using_nightly_build" = "nightly-x86_64-unknown-linux-musl"
"/home/username/d/example_project_using_specific_build" = "1.67-x86_64-unknown-linux-musl"

Zigup might follow a similar convention and have a settings.toml or settings.json file at $ZIGUP_HOME that allows for fine-grained configuration. This also addresses issue #69.

2.2 A known folders search

zls uses a configuration file called zls.json which is stored in a known folder. The known-folders project provides the set of utilities needed for this. zigup can take a similar approach and search for a zigup.json configuration file in known folders. (And for MacOS also look for $HOME/.config/zigup)

Folder Windows xdg MacOS
Roaming Configuration %APPDATA% XDG_CONFIG_HOME HOME/Library/Preferences
Local Configuration %LOCALAPPDATA% XDG_CONFIG_HOME HOME/Library/Application Support

3. A combination of both env vars and a config

In order to accommodate for various config options, zigup might prioritize an env var (e.g., $ZIGUP_HOME) over a config, and if not found, search for a config file, and if not found, use the default.

Discussion

This is obviously my preference, but the actual implementation would require discussion with the community to reach a consensus. Moving the compiler storage dir to $HOME/.zigup/compilers enables storage of other metadata and info in the $HOME/.zigup dir including the index file (allowing for a quick search for available versions), and potentially a settings/config file as specified in 2.1.


Note: my reasoning for this is that I like to store all zig bins in $HOME/.zig/bin. Cargo stores bins in $HOME/.cargo/bin and rustup toolchains are stored in $HOME/.rustup/toolchains

add a command to switch to the most recent local version

i would guess that i run $ zigup master maybe twice a month. its much more common that i switch between 0.11 and my most recent local version. to do so i need to run these commands:

$ zigup 0.11.0 # this is nice. one command to switch to 0.11

# later on when i want to switch back i need to run two commands, and paste the version into the second.

$ zigup list
0.11.0
0.12.0-dev.2341+92211135f

$ zigup 0.12.0-dev.2341+92211135f

this isn't bad but would be nice if there were a single command i could run. the only reason i bring it up is that its my most common usage of zigup. i wonder if this is possible?

this is what i'd like to be able to do.

$ zigup local-master # don't download anything. switch to local version 0.12.0-dev.2341+92211135f

Consistent, predictable, simplified build steps

I think it would be valuable for there to be a way of building zigup without having to guess which compiler version is compatible with it. Even better would be to have be a single build command which sets up all the required build tools and produces the binary regardless of which operating system is used. I understand that this "single build command" is supposed to be zig build, but I need to have a working zig installation for that, which is what this tool is supposed to help me with (i.e. a "chicken and egg situation").

zig default master

The zig default command is meant to set the default compiler without fetching it. In contrast, when referencing the zig master version, the latest version is requested from the zig download site each time. This would mean that zigup default master would fail with "compiler not installed" if the website has published a new version since it was last fetched. That being said, the "spirit" of the default command is not to fetch anything, so in this case, I think it makes more sense to have zigup default master set the default compiler to the last master version that was fetched, rather than trying to get the latest version and fail most of the time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.