Package Details: zls-master-bin 0.16.0dev.63+60cff3d6-1

Git Clone URL: https://aur.archlinux.org/zls-master-bin.git (read-only, click to copy)
Package Base: zls-master-bin
Description: A language server for Zig
Upstream URL: https://zigtools.org/zls
Licenses: MIT
Conflicts: zls-master
Provides: zls-master
Submitter: vitaliikuzhdin
Maintainer: vitaliikuzhdin
Last Packager: vitaliikuzhdin
Votes: 4
Popularity: 0.024266
First Submitted: 2025-09-17 20:40 (UTC)
Last Updated: 2025-12-16 21:51 (UTC)

Dependencies (5)

Required by (0)

Sources (1)

Latest Comments

1 2 Next › Last »

vitaliikuzhdin commented on 2026-03-12 22:41 (UTC)

@Kena, see the discussion just below your comment.

Kena commented on 2026-03-12 22:39 (UTC)

Fails to build on line 48 for me zig-master not found, I have zig-master installed. Changing it to just 'zig' makes it work.

Apologies if this is the wrong place or way to mention this issue, never commented before.

vitaliikuzhdin commented on 2025-12-28 15:28 (UTC)

@doums, there has been a long discussion in the comments of zig-master-bin about how the -master and -git packages should be installed. From my standpoint, in general, zig-master is not zig, and zig is not zig-master. These are very different products that cannot provide each other, and likewise, if you try to use one to build a project that targets the other, it is almost guaranteed to fail.

I think it is very useful to be able to have both versions installed, both for private use and for packaging. If you try to build a project that targets zig-master (for example, the latest git commit of zls), you would otherwise need to uninstall zig, install zig-master, build the project, uninstall zig-master, and reinstall zig. Considering that building the latest commit of a project is the definition of a VCS package, which you normally do regularly (once a week, for example), you would need to perform this entire procedure every such period. And if you happen to need to compare zig and zig-master to, for example, find a regression, you would spend 95% of the time doing this manual labor.

The maintainer of zig-master-bin suggests unpacking a prebuilt tarball somewhere and possibly exporting PATH if one needs both versions, but this defeats the entire purpose of proper system-wide packaging.

For Zig, I think the best way to package it is something like this:

  1. zig: stable release of Zig, for example 0.15.2.
  2. zig-master: master release of Zig, for example 0.16.0dev.1484+d0ba6642b.
  3. zig-git (provides and conflicts with zig): latest stable branch of Zig, for example 0.15.3dev.6+aaaaaaaaa (aka 0.15.2+r6+aaaaaaaaa). This does not include commits to the master branch, which is at 0.16.0dev.
  4. zig-master-git (provides and conflicts with zig-master): latest master branch of Zig, for example 0.16.0dev.1485+aaaaaaaaa. This includes all commits to the master branch, including those that fail CI and are therefore not included in zig-master. This is not very useful for obvious reasons, so I did not upload it.

Considering that ZLS can only be used with a matching tag/commit of Zig, it cannot quite follow the traditional naming rules:

  1. zls: stable release of ZLS, for example 0.15.1.
  2. zls-master: dynamically targets zig-master during the build.
  3. zls-git (provides and conflicts with zls): dynamically targets zig-git during the build.

Since the maintainer of zig-master-bin considers exporting variables to be a solution, I would perhaps suggest doing exactly that. Upstream documentation describes in detail how to properly set up ZLS to be used as an LSP by IDEs, and most IDEs already support setting a custom PATH or binary name, you only need to modify a few lines in your configuration. If that is not possible, you can launch the IDE with the correct environment options (for example, export PATH="/usr/lib/zls-master:$PATH"). I know this may be unfortunate, but you are trying to use an unofficial AUR build of an unstable tool. Naturally, the official stable release has higher priority for seamless integration.

Regarding the presence of zig-master, it is installed correctly in the source-built zig-master.

doums commented on 2025-12-28 13:23 (UTC)

Why this package install zls binary as zls-master? Which is not right because LSP & cie, tools etc expect zls not zls-master.

Also, it relies on the presence of zig-master, which ofc fails the installation:

/opt/aur/zls-master-bin/PKGBUILD: line 48: zig-master: command not found
  ==> Retrieving sources...
   -> Downloading null...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0   0     0   0     0     0     0  --:--:--  0:00:03 --:--:--     0curl: (6) Could not resolve host: null
Warning: Problem : timeout. Will retry in 3 seconds. 3 retries left.

vitaliikuzhdin commented on 2025-11-13 20:53 (UTC)

@yataro, I’ve reworked the logic. Thanks for the report, let me know if it still needs any adjustments.

yataro commented on 2025-11-12 15:44 (UTC)

I think it fails to process PKGBUILD because of lines 39-43. It will resolve dependencies before downloading, but as it failed to process PKGBUILD it will never happen (jq and zig-master is not installed, and dependency check is not triggered before initial PKGBUILD processing).

I also don't like idea to download from any external resource during prepare() but currently I see no clean way to workaround this.

vitaliikuzhdin commented on 2025-11-12 13:56 (UTC)

@yataro, that’s odd. Building with plain makepkg works fine, but makechrootpkg doesn’t seem to pull dependencies before building. That doesn’t make any sense. If, for example, a git dependency were needed to clone a repo, it wouldn’t even be possible without installing it first.

I’m avoiding fetching sources in prepare() because that would bypass anything configured in makepkg.conf (like proxy settings or DLAGENTS). I’ll ask around, if this approach turns out to be unworkable, I’ll move everything to prepare().

yataro commented on 2025-11-12 12:26 (UTC)

Fails to build in clean chroot:

==> Building in chroot for [extra] (x86_64)...
==> Synchronizing chroot copy [/var/lib/archbuild/extra-x86_64/root] -> [user]...done
==> Making package: zls-master-bin 0.16.0dev.3+1840a4b8-2 (Wed Nov 12 12:25:31 2025)
==> Retrieving sources...
  -> Downloading zls-x86_64-linux-0.15.0.tar.xz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3684k 100  3684k   0     0  1277k     0   0:00:02  0:00:02 --:--:--  1277k
  -> Downloading zls-x86_64-linux-0.15.0.tar.xz.minisig...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   325 100   325   0     0   323     0   0:00:01  0:00:01 --:--:--   324
==> Validating source files with sha256sums...
    zls-x86_64-linux-0.15.0.tar.xz ... Passed
    zls-x86_64-linux-0.15.0.tar.xz.minisig ... Skipped
==> Starting verify()...
Signature and comment signature verified
Trusted comment: timestamp:1756049871   file:zls-x86_64-linux-0.15.0.tar.xz     hashed
/startdir/PKGBUILD: line 39: zig: command not found
/startdir/PKGBUILD: line 39: jq: command not found
/startdir/PKGBUILD: line 41: jq: command not found
/startdir/PKGBUILD: line 42: jq: command not found
==> ERROR: source does not allow empty values.
==> ERROR: sha256sums does not allow empty values.
==> ERROR: Build failed, check /var/lib/archbuild/extra-x86_64/user/build

Consider downloading the source in prepare()

impulse commented on 2024-06-19 07:52 (UTC)

For some reason the master version does not give you the latest, only the latest tagged release which is not really nightly, so i had to tweak it by looking at the index.json.