The nixpkgs-unstable channel's programs.sqlite was used to identify
packages producing exactly one binary, and these automatically added
to their package definitions wherever possible.
Without the change parallel installs fail as:
...-binutils-2.40/bin/ld: cannot find ./.libs/libircd.so: No such file or directory
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:634: solanum] Error 1
Previously this defaulted to the default MOTD in the solanum source
tree, and I don't want my friends to laugh at me. Includes a patch to
the tests to ensure that the MOTD is actually set.
This replicates the fix done in #109705 (solanum is a fork of charybdis,
so they share fundamental logic for this).
Signed-off-by: Christine Dodrill <me@christine.website>
`buildGoModule` and `buildGoPackage` by default inherit the `platforms`
from go. That seems better than explicitly configuring `platforms.all`.
There are also many packages that specify 'linux + darwin' - this is
even suggested in the documentation. We might also want to update those,
but let's do the noncontroversial change first.
Packaging inspircd is relatively straightforward, once we adapt to the
slightly strange Perl configure script and it's firm opinion that
$prefix/usr should exist.
Most complexity in this derivation stems from the following:
* inspircd has modules which users can load dynamically in the form of
shared objects that link against other libraries for various tasks
* inspircd is licensed exclusively under the GPL version 2.
* Some of the libraries inspircd modules link against are GPL 2
incompatible (GPL 3, ASL 2.0) and we therefore must not distribute
these in binary form.
* Some modules combine GPL 2 code of inspircd and libc into a shared
object and may not be redistributed in binary form depending on the
license of the libc. Similarly for libc++.
Open Question: Does the fact that we may build the inspircd binary, i.
e. link against libc and libc++ imply that we can do this?
https://docs.inspircd.org/packaging/ seems to imply this is not the
case.
Thus we have some additional code which a) determines the set of modules
we should enable by default (the largest possible set as upstream
recommends it) and b) collects all applying licenses into meta.license.