Opened 16 years ago

Closed 16 years ago

Last modified 8 years ago

#1785 closed defect (fixed)

libexif problem if Doxygen is not installed

Reported by: Randy McMurchy Owned by: dnicholson@…
Priority: high Milestone:
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description (last modified by dnicholson@…)

There is an issue installing the current version of libexif if the doxygen program is not available. The installation will fail.

A link to the discussion, which includes a fix is here: http://linuxfromscratch.org/pipermail/blfs-dev/2006-January/013204.html

Change History (7)

comment:1 by dnicholson@…, 16 years ago

Description: modified (diff)
Owner: changed from blfs-book@… to dnicholson@…
Status: newassigned

The fix for this is trivial. Can be done with an sed. I'll have to look in my scripts. Should be done within the next couple days.

The include dir thing I mentioned in that thread is not a bug. Some packages using libexif (such as libgphoto2 and gthumb) had been inconsistent in there inclusion of libexif headers. I.e., sometimes

#include <libexif/exif.h>

and other times

#include <exif.h>

I think this became a problem because before the .pc files were added, packages were always adding -I/usr/include/libexif or equivalent to the command line.

This has been cleared up in gthumb for sure. Possibly libgphoto2, too, but I don't recall immediately.

comment:2 by dnicholson@…, 16 years ago

So, here's the error:

Making install in doc
make[1]: Entering directory `/usr/src/libexif-0.6.13/doc'
make[2]: Entering directory `/usr/src/libexif-0.6.13/doc'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: *** No rule to make target `install-apidocs', needed by `install-data-local'.  Stop.
make[2]: Leaving directory `/usr/src/libexif-0.6.13/doc'

What happens is that doc/Makefile.am is poorly written in that most of the rules are surrounded in if HAVE_DOXYGEN. This results in the Makefile.in targets looking like this:

@HAVE_DOXYGEN_TRUE@install-apidocs: $(HTML_APIDOC_DIR).stamp
@HAVE_DOXYGEN_TRUE@ $(INSTALL) -m 0755 -d $(DESTDIR)$(docdir)/$(DOC_APIDOC_HTML)
@HAVE_DOXYGEN_TRUE@ $(INSTALL) -m 0644 $(DOXYGEN_OUTPUT_DIR)/$(HTML_APIDOC_DIR)/* $(DESTDIR)$(docdir)/$(DOC_APIDOC_HTML)/

In the actual Makefile, if you don't have Doxygen, these turn to comments:

#install-apidocs: $(HTML_APIDOC_DIR).stamp

Unfortunately, the install-data-local target is not part of the if HAVE_DOXYGEN set. So, when you run make install without Doxygen, it chokes at install-data-local because there's an undefined target install-apidocs which is commented out.

Solution: add install-data-local to the HAVE_DOXYGEN set with

sed -i 's/^install-data-local/@HAVE_DOXYGEN_TRUE@&/' doc/Makefile.in

comment:3 by dnicholson@…, 16 years ago

Adding the offending targets to .PHONY also works. That can be done with this command:

sed -i.bak 's/^\tuninstall-local/& install-apidocs install-apidocs-internals/' doc/Makefile.in

comment:4 by dnicholson@…, 16 years ago

Fix committed in r5725.

comment:5 by dnicholson@…, 16 years ago

Resolution: fixed
Status: assignedclosed

comment:6 by dnicholson@…, 16 years ago

Upstream status. Patch to Makefile.am submitted by myself and Hugo Villeneuve.

http://sourceforge.net/tracker/index.php?func=detail&aid=1443183&group_id=12272&atid=112272

comment:7 by bdubbs@…, 8 years ago

Milestone: old

Milestone old deleted

Note: See TracTickets for help on using tickets.