New comment by meator on void-packages repository https://github.com/void-linux/void-packages/pull/48160#issuecomment-1889900817 Comment: This isn't really a place to ask about the basics of xbps-src, but I'll try to explain it a bit anyway. > Is this generally true for build instructions more broadly? The extra instructions are just for intermitiary steps? The build proces has several [phases](https://github.com/void-linux/void-packages/blob/master/Manual.md#package-build-phases). They correspond to a `do_()` function in the template. Only `do_install()` is mandatory, but `do_configure()` and `do_build()` are needed most of the time. The [build styles](https://github.com/void-linux/void-packages/blob/master/Manual.md#build_scripts) provide generic definitions of these. For example `do_configure()` of `build_style=cmake` is defined here: https://github.com/void-linux/void-packages/blob/master/common/build-style/cmake.sh#L4C1-L89 It is much more complex than `cmake .` because it needs to handle Void linux specific things, cross compilation (this is an important step that gets abstracted away by the build style which is great because you don't have to deal with it), set prefix to `/usr` and more. Void linux has two libc implementations (glibc and musl) and a bunch of supported architectures. The template should support all of these (unless it can't). The build styles are written to handle this. You should prefer using predefined build styles instead of writing it from scratch (which you can do by just defining the function in the template) because you would have to do all these things yourself. You can influence these build styles by setting some variables like `configure_args`, `make_build_args` etc. (it depends on the build style chosen). There are also `pre_()` and `post_()` functions that get executed before and after the phase runs. You can use these to do some setup, [fixup the upstream build system a bit if necessary](https://github.com/void-linux/void-packages/blob/master/srcpkgs/windowchef/template#L14-L17) or [install a license if required](https://github.com/void-linux/void-packages/blob/master/srcpkgs/windowchef/template#L19-L21)[^1]. [^2] Then you have the variables like `version`, `short_desc` etc. They are pretty self explanatory. Read the [manual](https://github.com/void-linux/void-packages/blob/master/Manual.md) for more info. If you're having trouble, try looking at some other templates for inspiration. And read the [manual](https://github.com/void-linux/void-packages/blob/master/Manual.md). Use `xlint` on your templates. > In terms of moving this package forward into the repos, what else do we have left in the process? Merging of PRs can take some time. I believe that this PR is ready to be merged, some maintainer just has to take a look at it and merge it. Merging of new packages can take longer compared to simple package update PRs. See [CONTRIBUTING](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md) [^1]: Some licenses state that a copy of the license must be distributed alongside the program. You usually don't have to worry about it. `xlint` will warn you if your program is using one of these licenses. [^2]: I have chosen the `windowchef` at random as an example to link to, it demonstrates the usage of these functions.