Opened 14 years ago

Closed 13 years ago

#219 closed defect (fixed)

Documentation is not distributed.

Reported by: Jari Häkkinen Owned by: Peter
Priority: major Milestone: yat 0.4
Component: build Version: trunk
Keywords: Cc:

Description (last modified by Peter)

related to ticket:278

The doc subdirectory is almost empty (Makefile.am and Makefile.in are distribution) when a distribution package is created with 'make dist'. There are Automake directives to include files and directories in the distribution.

Change History (19)

comment:1 Changed 13 years ago by Peter

Description: modified (diff)

added relationship with ticket:278

comment:2 Changed 13 years ago by Jari Häkkinen

Status: newassigned

comment:3 Changed 13 years ago by Peter

What is the plan here?

To include source files needed for generating documentation, or to include already generated documentation?

comment:4 in reply to:  3 ; Changed 13 years ago by Jari Häkkinen

Replying to peter:

What is the plan here?

To include source files needed for generating documentation, or to include already generated documentation?

Both.

comment:5 Changed 13 years ago by Peter

Sure, we can not distribute a pdf without source files such as .tex files. Yat is an open project.

Next obvious question: if documention is included in distribution, will make doc regenerate the documentation? If yes, the warnings in configure on "You have no doxygen..." is still relevant but somehow misleading. If no, they are simply wrong.

It is possible to detect whether this is a dist or not and insert conditionals on this in Makefile.in. See e.g. svndigest. In that way one could make make doc to do nothing. However, here I think I prefer to keep the makefiles to be similar in checkout and dist. I suppose it is less error prone.

comment:6 in reply to:  5 ; Changed 13 years ago by Jari Häkkinen

Replying to peter:

Next obvious question: if documention is included in distribution, will make doc regenerate the documentation?

No, if the source files are not changed, make should figure out that the targets are up to date.

If yes, the warnings in configure on "You have no doxygen..." is still relevant but somehow misleading. If no, they are simply wrong.

To get the doxygen warning you need at least to enable debugging, if you enable debugging you are doing something more than installing the package. My response to the previous question was no but I think the message is correct, you will not be able to generate documentation. Of course, the documentation is already there. Issuing 'make clean' will remove the generated files ... alas the docs must be secured in a distribution (i,e., protected from a make clean).

comment:7 in reply to:  6 ; Changed 13 years ago by Peter

Replying to jari:

Replying to peter:

Next obvious question: if documention is included in distribution, will make doc regenerate the documentation?

No, if the source files are not changed, make should figure out that the targets are up to date.

Ok, that dependency it currently not there. Source files in this context is header files, right?

If yes, the warnings in configure on "You have no doxygen..." is still relevant but somehow misleading. If no, they are simply wrong.

To get the doxygen warning you need at least to enable debugging, if you enable debugging you are doing something more than installing the package. My response to the previous question was no but I think the message is correct, you will not be able to generate documentation. Of course, the documentation is already there. Issuing 'make clean' will remove the generated files ... alas the docs must be secured in a distribution (i,e., protected from a make clean).

Ok, I agree. I thought the condition on enable-debug was removed, but it was only the tab that was removed. Then it is fine.

comment:8 in reply to:  7 ; Changed 13 years ago by Jari Häkkinen

Replying to peter:

Ok, that dependency it currently not there. Source files in this context is header files, right?

Hm ... yes? I'll call you back on this one.

Ok, I agree. I thought the condition on enable-debug was removed, but it was only the tab that was removed. Then it is fine.

I had to remove one level of tabs becauese the message from configure became ugly. Write nicely formatted messages with the AM macros is not a simple thing.

comment:9 in reply to:  8 Changed 13 years ago by Peter

Replying to jari:

Replying to peter:

Ok, that dependency it currently not there. Source files in this context is header files, right?

Hm ... yes? I'll call you back on this one.

It seems like doxygen's mechanism of tag files can help us here. The idea is to turn the dox generation into a two step procedure. First, create a tag file for each directory/namespace. Second, compile the tag files into html pages or whatever format we want. How does this help? The fact that we create one tag file per directory implies that we can trigger the generation from the corresponding Makefile, which in turn implies that we can add the wanted dependencies. For instance, in yat/utility one would add dependency to include_utility_HEADERS

comment:10 Changed 13 years ago by Peter

An easier way is probably to work with time-stamp files. Somehow we could add

doxygen.stamp: $(include_utility_HEADERS)
	@echo `date` > doxygen.stamp 

in yat/utility/Makefile.am and correspondingly in other src Makefile.am.

Either doxygen.stamp is local or one has one doxygen.stamp file located in doc. Which solution is preferable depends much on what type of dependency we are aiming for.

Ideally the timestamp should be checked prior every call to Doxygen. Therefore a good solution might be to call cd yat/utility; make doxygen.stamp and so on in each of the src dirs.

comment:11 Changed 13 years ago by Peter

Owner: Jari Häkkinen deleted
Status: assignednew

comment:12 Changed 13 years ago by Peter

Description: modified (diff)

comment:13 Changed 13 years ago by Peter

Owner: set to Peter
Status: newassigned

comment:14 in reply to:  4 Changed 13 years ago by Peter

Replying to jari:

Replying to peter:

What is the plan here?

To include source files needed for generating documentation, or to include already generated documentation?

Both.

Distributing generated files adds some complexity. The problem is whether the generated file should be considered to be src or not, in other words, does the files appear in @srcdir@ or in @builddir@? Well it depends, is the simple answer but that answer is not good enough. This is similar to how GNU projects often generate .info file from a .texi file and the .info file is distributed. I think we should look at how autotools generate rules for this case, and then copy the design somehow.

comment:15 Changed 13 years ago by Peter

Seems like .texi files are generated in @srcdir@, which makes sense. Following that choice, files that are distributed would be built in @srcdir@.

comment:16 Changed 13 years ago by Peter

Some unexpected obstacles. Files generated by Doxygen in doc/latex/ have extremely long filenames. This causes problem for my gtar, which doesn't accept filenames longer than 99 chars.

This makes me doubtful whether it was a wise decision to distribute generated documentation. It would be much easier to only distribute source code. It would make building from a dist and from a svn wc more similar. Also, if we are concerned about users not having doxygen, we can provide documentation of latest release through Trac page. HTML is already provided there and we could add a PDF for download.

Opinions?

comment:17 in reply to:  16 Changed 13 years ago by Jari Häkkinen

Replying to peter:

Some unexpected obstacles. Files generated by Doxygen in doc/latex/ have extremely long filenames. This causes problem for my gtar, which doesn't accept filenames longer than 99 chars.

This makes me doubtful whether it was a wise decision to distribute generated documentation. It would be much easier to only distribute source code. It would make building from a dist and from a svn wc more similar. Also, if we are concerned about users not having doxygen, we can provide documentation of latest release through Trac page. HTML is already provided there and we could add a PDF for download.

Opinions?

We can settle for docs through trac only. There is a README file where we can add links to the documentation. I can live with this.

comment:18 Changed 13 years ago by Peter

(In [1265]) Changing so generated docs are not distributed and consequently docs can be generated in builddir

comment:19 Changed 13 years ago by Peter

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.