New comment by xelxebar on void-packages repository https://github.com/void-linux/void-packages/pull/14758#issuecomment-535860562 Comment: J is a funky programming language, and upstream's build process is equally funky. Anyway, I tried hard to package this up nicely, but there are quirks. This PR is to open discussion about hos this should be properly done. I put a lot of effort into this already, though, so please be gentle. ;P First, is a single character package name reasonable? Second, J typically has "release" and "beta" distributions. Perhaps it would be better to have two packages `j-release` and `j-beta`? Just to keep files separate, for now I am putting things under `*/j/${version}` directories. Third, the main library has two compile paths: one that includes AVX code and another that doesn't. It's only possible to detect AVX availability on the installing machine, so I just opt to build and install boths versions, with an INSTALL script creating a symlink to the appropriate version. Is there a better or more preferred way to handle this? Fourth, the primary binary is called `jconsole` which conflicts with a similarly-named binary provided by openjdk, so I am choosing to call the thing `jc` instead. Perhaps this should be noted with an INSTALL.msg? Anyway, `/usr/bin/jc` has to be a wrapper script instead of a symlink due to upstream quirks. Finally, in order to fit the package into FHS conventions, there is a good bit of bit of munging that is necessary. I do most of that with judicious use of sed on one of upstream's initialization files. Is there a different preffered way of handling this, such as providing patch files instead? Anyway, those are the main points I can think of.