[GNC-dev] CMake build system for gnucash-docs

Frank H. Ellenberger frank.h.ellenberger at gmail.com
Wed Sep 4 12:44:14 EDT 2019


Dear Geert,

I currently see no reason to do this now - release this weekend - and
am also tired to rewrite the related wiki parts. I think there are
several more important projects.

1. About CMake
In Code we should clean up CMake. Many parts were written a decade
ago. In between CMake got many modules, which on the long run might be
more error prone than our self written ancestors.

2. in Docs:
2.1 Conversion to po based translation. Current state: Apply recently
defined enities on documents.

2.2 The incomplete restructuring

2.3 Replace of over a decade outdatet GDP parts: I estimate 99% of xsl
came from them and I suspect it for many output glitches. Also many
docs contain their templates "Do not remove..."
GDP has been the Gnome1 ancestor of GDU, which ended with Gnome2. And
from there came also the OMF generation. But OMF should not simply be
dropped but replaced by other forms of metadata like e.g. .desktop
files.

Just my 2¢
Frank


Am 02.09.19 um 19:29 schrieb Geert Janssens:

> Over the weekend I spent a few cycles to port the gnucash-docs autotools build
> system to cmake.
>
> Most of it is done and can be played with by checking out the current maint
> branch on gnucash-docs.
> The main missing elements are:
> - generating the Windows specific chm files
> - uninstall rules
> - omf/scrollkeeper/rarian support
>
> The last one is easy: I don't intend to add this. It was there because old
> versions of yelp (<2.23) required it. No platform we care about still uses
> that old yelp version so omf is obsolete.
>
> The other two will follow hopefully somewhere next week.
>
> Other than that there are a few important changes between the autotools system
> and the cmake system. The most important one is that autotools provided a
> fully self-contained Makefile in each document directory. Cmake on the other
> hand works with a single top-level makefile (or ninja ruleset if you prefer).
>
> That is, with autotools you could
> cd guide/C
> make html
> And that would build you the html version of the English guide
>
> This is not possible in cmake. However I have tried to provide equivalent
> targets instead wherever possible. So to achieve the above you can instead do
> make C-gnucash-guide-html
>
> The targets are always named
> <language>-<document>-<type>
>
> So similarly you will find
> de-gnucash-help-pdf
> pt-gnucash-help-epub
> ja-gnucash-guide-mobi
>
> and so on.
>
> Entering
> make help
> will provide a list of available targets to choose from.
>
> This gets even more complicated when attempting to install. There is only one
> global install target (inherit to cmake). However one can restrict what to
> install by setting environment variable CMAKE_INSTALL_COMPONENT to one of the
> targets mentioned above (at least one for which install is implemented/makes
> sense). So for example
>
> CMAKE_INSTALL_COMPONENT=C-gnucash-guide-html make install
>
> That will only install the English guide in html format. Currently this will
> work for xml and html targets. The pdf, epub and mobi targets don't have
> install rules. And I'm even considering dropping them for html. It doesn't
> make much sense to have an install rule for html as it's not something a
> packager will want to install on their system. They should use the xml target
> instead.
>
> The last tidbit I'm still considering for improvement is to replicate the
> install paths in the build directory, much like we do for the gnucash build
> system as well. That is, instead of storing the pdf file in
> <builddir>/guide/C
> store it in
> <builddir>/share/gnucash-docs/C
>
> There are a few additional notes in https://github.com/Gnucash/gnucash-docs/
> blob/maint/CMakeNotes.txt
>
> Feedback is welcome.
>
> Regards,
>
> Geert
>
>
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>


More information about the gnucash-devel mailing list