New comment by meator on void-packages repository https://github.com/void-linux/void-packages/issues/48155#issuecomment-1923402533 Comment: The void-packages repository expects the packages to be built by it. This is one of the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements) and you specified that it fulfills the Compiled requirement in this issue. GitHub releases usually contain prebuilt binaries. void-packages doesn't distribute these[^1]. Void packages usually use the `Source code (tar.gz)` asset of releases[^2]. ### Recommended changes to template 5: [You don't have to specify a build style](https://github.com/void-linux/void-packages/blob/master/Manual.md#build-style-scripts). The default one already defines `do_fetch()` and `do_extract()`. 12: `distfiles` should use the `version` variable. A standard package update procedure involves changing two lines: `version` and `checksum`. When `distfiles` relies on `version`, it doesn't have to be changed in an update. 16-18: This can be removed (when the `build_style` is removed). Also xbps-src prefers bsdtar over tar. bsdtar is installed on every masterdir by default (because it is a dependency of `base-chroot` which is installed on masterdirs), tar has to be added to `hostmakedepends` manually. Also xbps-src uses bsdtar internally. 22: Your build is failing because you are using the wrong distfile described above. `gradle` is already packaged in Void, so it should be used. I don't know gradle well, but some googling showed me that the purpose of the `gradlew` script is to download `gradle` automatically. You should add `gradle` to `hostmakedepends` and use it directly[^3]. I've also seen some templates use the `--no-daemon` flag, that can be useful. 25-28: That doesn't look like it's doing any checking (but I don't have much experience with Java). If the package doesn't have any checks, don't define `do_check()`. 32,34: All package files[^4] **must** be put to `${DESTDIR}`. Your template is currently polluting the masterdir. 34: I don't think `vln` exists. Use `ln` instad. Here is the template modified with my and classabbyamp's suggestions: ```bash # Template file for 'Tachidesk-Server' pkgname=Tachidesk-Server version=0.7.0 revision=1 hostmakedepends="openjdk8 gradle" depends="openjdk8" short_desc="A free and open source manga reader server written in Kotlin" maintainer="jaminW55 " license="MPL-2.0" homepage="https://github.com/Suwayomi/Tachidesk-Server" distfiles="https://github.com/Suwayomi/Suwayomi-Server/archive/refs/tags/v${version}.tar.gz" checksum=ba18fa09ac4b7a1703d054da1ae8ff6d55af3b3b4d88b874260725ff94011656 do_build() { . /etc/profile.d/jdk.sh gradle --no-daemon build } do_install() { # TBD } ``` This template doesn't work, but it's closer to the desired result. I do not have experience with gradle nor Java, so I can't really help more with this. [^1]: There are some exceptions to this rule, void-packages contain some `-bin` packages, but it is discouraged. [^2]: This asset is generated automatically by GitHub for every release. It is a snapshot of that repository at that tag (excluding submodules). Some repositories don't have releases, but have tags. The process is very similar. [^3]: But I've also read that version mismatch between repo's gradle and the real gradle can create problems. The repo looks like it wants `gradle-7.6`, Void packages `gradle-8.5`. In that case, using `gradlew` might be necessary. But these problems should be solved by someone more knowledgeable of gradle, I have never used it. [^4]: Things that should actually be present in the resulting package, I don't mean the source code nor intermediate build artifacts, these belong to `wrksrc`.