[bt-devel] PDFs and other object files in source tarballs

Jonathan Marsden jmarsden at fastmail.fm
Thu Nov 19 13:49:31 MST 2009


Martin Gruner wrote:

> I agree with you on the definitions of source and derived files. We
> _do_ distribute the source files and therefore fulfill the
> stipulations of the GPL.

True, as long as you know for sure the two can never get out of sync in 
what you distribute, so the binary blobs really *are* derived from the 
source that you are distributing and not from some slightly different 
version of the source.  If they are separately checked into svn, I'm not 
sure how easy that is to be sure about.

But, as I understand it (I'll have to try to get a more expert opinion 
if I can't persuade you!), derived files that say they are GPLed can't 
be included in Ubuntu source packages and so in package source tarballs. 
  I'm pretty sure the same applies to Debian, it's just that I know 
where to find Ubuntu packaging info more easily.

> Currently, our source tree does contain some derived files. All of
> them can be automatically created from the source files with a simple
> make call, _if_ the user has the required software installed. We need
> to document how that can be done.

Better, you probably want to set things up so that if the required 
software is present, they *are* automatically created at build time from 
source, and only if it is missing does the build process then fall back 
and depend on supplied derived files.  That way, at least the system 
does things right whenever it can :)

> Given that the only drawback is increased size of the tarball, but
> the benefits are
> a) less effort when building and installing BibleTime

I don't understand this one -- once the build system is set up 
correctly, the effort required by the human builder is the exactly same 
either way, he or she has to type make and press Enter.

> b) less required software to build and install BibleTime

(b1) This is not really valid for the *.qm files, I think -- you'll need 
a working Qt development environment anyway, so you'll have an lrelease 
binary installed as a part of that, as I understand it, on all 
platforms.  What additional software is needed to convert .ts files into 
.qm files?  It doesn't seem to me that this is a particularly resource 
intensive process, either.  Is Qt lrelease broken on Windows?

(b2) This is somewhat valid, for the HTML (and potentially PDF) 
documentation.  But given packaging systems with Build-Depends: lines 
and similar setups in other environments, obtaining that software is 
pretty straightforward, or even 100% automatic, in many or most build 
environments.

I think for Windows it would be great to have a .bat file that downloads 
and sets up a developers working environment for SWORD and BibleTime, 
but when I started down that path, the reaction I got was that it was a 
big mistake, everyone prefers using commercial GUI tools for everything 
in Windows... so I have ceased putting any effort into that, at least 
for now.

> I feel that I would like to keep the current approach.

It's your project, so your decision.

As I see it, there are drawbacks that (a) you are keeping binary blobs 
in svn for no real benefit, (b) having derived files included in the 
"source" tarball is unnecessary, confusing and (c) this probably (just 
my opinion, needs further verification!) breaks packaging requirements 
for some Linux distributions, so requiring packagers to do extra work 
for every release.

> Especially because we want to support platforms like Windows where
> not the entire toolchain is present. It would probably be possible to
> require packagers to get the full toolchain working even on windows
> or mac, but I don't see the need for it. We have to make a
> compromise.

Realistically, I can't get Ubuntu and Debian to "compromise" and change 
their rules, and apparently I can't persuade you to "compromise" and 
remove the files.  So, if I am understanding the rules correctly, and 
you want to keep the current approach, then the "compromise" you are 
suggesting is basically that I need to just "deal with it", and do extra 
work... which is not a "compromise" that I really like :)

> That said, you can easily strip the derived files and re-generate
> them if you have to. =) Use
>     make messages
>     make howto
>     make handbook
> to re-generate the files.

OK... if that is the final decision, then at some point (before any more 
BT packages are released by me) apparently I'll have to create makefile 
rules to download, unpack, remove derived files, and repack the tarball, 
and then add your make lines above to the package build process (patch 
either the build-debug.sh script or the top level Makefile, probably) so 
that they are generated (and deal with cleaning them up in the package 
clean rule, etc.).  The former is likely to be more work than the latter.

Jonathan



More information about the bt-devel mailing list