comp.lang.ada
 help / color / mirror / Atom feed
From: Optikos <optikos@verizon.net>
Subject: Re: Well, they kept that quiet!
Date: Wed, 2 Oct 2019 06:59:14 -0700 (PDT)
Date: 2019-10-02T06:59:14-07:00	[thread overview]
Message-ID: <3facd621-48a1-4ffa-8af4-c1893dcebb42@googlegroups.com> (raw)
In-Reply-To: <55a93d93-67a5-4cdb-a7e0-4c8117dc1278@googlegroups.com>

On Tuesday, October 1, 2019 at 11:43:23 AM UTC-5, Lucretia wrote:
> On Tuesday, 1 October 2019 15:58:41 UTC+1, Optikos  wrote:
> 
> > as quoted from the webpage at the 1st URL above:
> > 
> > “License
> > 
> > “The GNAT LLVM tool is licensed under the GNU General Public License version 3 or later; see file
> > COPYING3 for details.”
> 
> That's the source of this LLVM binding, the compiler and runtime come from FSF and are under GPLv3 with linking exception. 
> 
> Then there's LLVM which actually generates the final code. The compiler links to the LLVM-C lib to
> generate an in memory AST which generates the LLVM IR which is then passed onto the LLVM tools,
> as/ld.

https://www.gnu.org/licenses/gcc-exception-3.1.html

There is a narrow path for gnat-llvm to walk gingerly along to preserve the RLE's Eligible Compilation Process permission grant when an app utilizes any portion of the FSF-sourced standard library, as shown by the embellishment of your sentence there:

The gnat-llvm compiler links to the LLVM-C lib to generate an •in memory WITHIN THE SAME PROCESS• AST which generates the LLVM IR •IN MEMORY WITHIN THE SAME PROCESS• which is then passed •IN MEMORY WITHIN THE SAME PROCESS• onto the LLVM tools as/ld/polly •THAT ARE LINKED INTO THE COMPILER AS THE SAME PROCESS AS THE COMPILER•.  If any of the •identified• portions are absent or flouted somehow, then gnat-llvm would naturally & obviously emit intermediate representation (IR) from the compiler to a disparate not-linked-to-the-gnat-llvm-compiler process, causing the federation of compilation processes* to no longer meet RLE's overtly-stated criteria for how to attain Eligible Compilation Process** status due to emitting IR as IPC or file(s) between the federation of compilation processes.  When an app is compiled by any federation of compilation processes that fails to meet RLE's overtly-stated criteria for Eligible Compilation Process, then the RLE's permission grant does not occur for that app that utilizes the FSF-sourced standard library, causing that app's generated object code and executable or DLL to be licensed under strict GPLv3 instead of GPLv3+RLE.

* plural!

** singular!

For gnat-llvm to always preserve the RLE's Eligible Compilation Process permission grant, then all portions of LLVM-world must be linked into 1 process, not IPC among 2 or more processes as is sometimes commonplace with e.g. polly:

http://releases.llvm.org/8.0.0/tools/polly/docs/HowToManuallyUseTheIndividualPiecesOfPolly.html

Manually executing polly as separate command lines as shown in the URL immediately above would clearly cause the federation of sequentially-executed processes* to no longer meet the RLE's definition of Eligible Compilation process**, hence causing the RLE's permission grant to not occur for object code and executable or DLL so generated, causing the generated object code and executable or DLL to be licensed under strict GPLv3 due to linking to the FSF-sourced standard library without the RLE's (now null & voided) permission grant.

* plural!

** singular!

Note however, executing polly •not manually• within the innards of a single compiler-invocation command line might perform a similar emission of IR as temporary files and a similar invocation of a sequence of disparate polly processes (i.e., where polly might*** not be linked entirely within 1 compiler executable), which taken together again would cause this sequentially-executed federation of compilation processes* to fail to meet RLE's overtly-stated definition of Eligible Compilation Process**, hence again causing the RLE's permission grant to not occur, hence again causing the binary object code and executable or DLL so generated to be licensed as strict GPLv3 without the RLE's (now null & voided) permission grant.

* plural!

** singular!

*** This needs to be verified by analysis of how polly actually is invoked •not manually• within a single compiler command line.  I used to be this way long ago, as I understand it, but I have re-verified in recent releases of Clang, polly, and now gnat-llvm.

> So, I think you could argue that the final code is a combination of GPLv3 with LE (the runtime) and
> whatever licence you want (your code).

The question isn't whether your •textual source• code has any desired license; the question is whether that •binary• app's usage of the FSF-source standard library has the RLE permission grant or not.

> > The COPYING3 file contains GPLv3 verbatim without any GMGPLv2- or RLE-esque permission grants.
> > 
> > The burning question will be:  will gnat-llvm ever be released in the future 
> into FSF GNAT's source tree so that it has FSF's RLE permission grants?  Only AdaCore can answer that
> question.
> 
> AdaCore staff on IRC said "you'd be surprised" when I asked about licensing for this ages ago, hinting
> that it wouldn't all be covered by GPLv3 (no LE).

I have never passed the bar in any legal jurisdiction.  This posting is a remembrance for me of my own understanding for my own usage and to motivate the reader to do their own analysis via their own reading of related materials.  If your activities in life depend on the veracity of any statements herein, then you should consult a lawyer in your system of law's jurisdiction instead of relying on statements herein.


  parent reply	other threads:[~2019-10-02 13:59 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-30 13:09 Well, they kept that quiet! Lucretia
2019-09-30 16:34 ` Simon Wright
2019-09-30 16:58   ` Lucretia
2019-10-01 14:58 ` Optikos
2019-10-01 16:43   ` Lucretia
2019-10-01 17:29     ` Simon Wright
2019-10-02 13:59     ` Optikos [this message]
2019-10-02 15:25       ` Optikos
2019-10-02 16:37       ` Simon Wright
2019-10-02 19:25         ` Optikos
2019-10-02 20:46           ` Lucretia
2019-10-02 20:47           ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox