Subject: Re: [bug#52387] [PATCH] Add cl-april.

From: Guillaume Le Vaillant <[email-masked]>
Date: Sat, 11 Dec 2021 12:38:07 +0000

Jacob MacDonald <[email-masked]> skribis:

> April is a subset of APL embedded in Common Lisp. The following series
> of patches adds its dependencies and April itself to the end of
> lisp-xyz.
>
> This is the least trivial set of packages I have submitted, so I have
> a few things I want to ensure I get right.
> 1. Licensing:
>  a. cl-decimals has no license file and is marked as CC0-licensed in
> its system file.

Ok.

>  b. simple-date-time has no license file and is marked as BSD-licensed
> in its system file. I marked it as BSD-4.

Ok.

>  c. MaxPC is licensed under the AGPL. This is an issue for the
> Apache-licensed April
> (https://github.com/phantomics/april/issues/185), and an Apache
> version of MaxPC is now bundled with April's source. Does building
> April with MaxPC from source violate the AGPL? If so, the dependency
> can be swapped out for the bundled one.

According to [1] and [2], combining code under AGPL and code under
Apache License is possible, and the result would be under AGPL.
As the Guix package for April will only contain the things under Apache
License, I think we just need to use 'license:asl2.0'.
Unless the bundled MaxPC has modifications required for April to work,
you can add a snippet to the 'source' field to remove the "maxpc-apache"
directory, and use upstream's MaxPC.

[1] https://www.apache.org/licenses/GPL-compatibility.html
[2] https://opensource.stackexchange.com/questions/8270/can-i-use-apache-2-0-licensed-libraries-with-agpl-licensed-libraries

> 2. Bundling: April depends on two systems vex and aplesque. These are
> defined in the same repository. I broke them out into three packages
> based on the same version of the source.
>  a. I renamed vex as there is an existing vector math library with
> that name. I threw the math library into the patchset as well; It
> might not properly belong.
>  b. I tried to use the #:asd-files and #:asd-systems options to
> restrict what got built, but kept getting build failures. I added a
> phase to each package to delete unused system files. This works, but
> seems brittle. I don't think I understand the ASDF build system.

I don't think we need to make three packages in this case. Making just
one regular package for April should also build the vex and aplesque
subsystems automatically (if all the required dependencies are listed in
the 'inputs' field).

> 3. Versioning: The latest April tag is a couple years old, while many
> of its dependencies lack tags altogether. There is also a discrepancy
> between the Git tag and the version numbers recorded in each system
> file. Whether I wait for a new tag to bump the package or not, what's
> the best way to version the package(s)?

It pretty common for Common Lisp libraries not to have tags (or only
very old tags), and we then use the commit hash and a revision number.
There are many examples of such packages in "lisp-xyz.scm".

Could you send an updated patch series?