Opened 9 years ago

Closed 9 years ago

#704 closed defect (fixed)

Support flex 2.6.X

Reported by: ususdei Owned by: Olly Betts
Priority: normal Milestone: 1.3.5
Component: Build system Version: git master
Severity: normal Keywords: bootstrap doxygen build
Cc: Blocked By:
Blocking: Operating System: All

Description

Due to incomplete version checking in doxygen 1.8.8, it fails to build during bootstrap if flex >= 2.6.0 is installed. This has been fixed in doxygen 1.8.11. Therefore I updated the hardcoded version with its corresponding hash in bootstrap.

Unfortunately the doxygen project migrated from autotools to cmake with 1.8.10. So I had to add support for cmake-projects in lazy_build().

This seems to work now but it introduces cmake as a new build dependency which might not be suitable for all users. How should we deal with this?

You find my preliminary patch to this in the attachment. Feel free to adapt it.

Attachments (1)

doxygen.patch (878 bytes ) - added by ususdei 9 years ago.

Download all attachments as: .zip

Change History (4)

by ususdei, 9 years ago

Attachment: doxygen.patch added

comment:1 by Olly Betts, 9 years ago

Status: newassigned

Thanks for the report and for the patch.

Unfortunately the doxygen project migrated from autotools to cmake with 1.8.10.

I think it was actually a hand-written configure shell script before, but the end result is the same.

Requiring cmake to be installed is annoying, and in the short term would stop the snapshots from building (as it isn't installed on the machine that does those currently, though I can request it be installed). It also isn't installed on either of the two machines I do Xapian development on, which may be a skewed sample, but clearly cmake isn't a tool you can just assume people already have installed.

It might also be prudent to check the output from the newer doxygen, as we've had to adjust things to suit newer versions before.

So for now I've just added a patch to apply to 1.8.8 which should fix the bad version checks to work for flex 2.6 (in [82e25f97e5da59d3ad7fa8c05b5788debccc1d4e]). This version isn't packaged for debian yet, so I can't easily test - please report back if it works or not.

That's clearly just a short term fix though - we can't stick with an old doxygen indefinitely, and we'll need to address this when we switch to a version which uses cmake.

Thoughts on what to do:

  • Require cmake to be installed.
  • Download and compile cmake if needed - fortunately that doesn't seem to require cmake to be installed, but it is more bootstrap stuff to maintain, and it doesn't fit in the category of the other tools we do this for - those all affect the built tarball, so using specified versions gives better reproducibility.
  • Don't download and build a specified version of doxygen, but just require it to be installed - that's one extra prerequisite, but then you don't need bison, flex or cmake, so it's really a win in that regard. It would also reduce the time taken to get Xapian built from a git checkout. And it's one less thing to have to look after in bootstrap. This does mean that a newer version of doxygen could break output formatting, but we don't install particular versions of the other tools for building the docs, such as sphinx, docutils, help2man, graphviz, pngcrush (though we've not suffered from any of those producing broken output).

I think I'm leaning towards the last of these options.

comment:2 by Olly Betts, 9 years ago

I backported the patch fix to the 1.2 branch in [7749e5201e169ef406d2f4699c58c9418a3442bb], since we're likely to just stick with the same doxygen version there until we stop making 1.2 releases.

comment:3 by Olly Betts, 9 years ago

Milestone: 1.3.x1.3.5
Resolution: fixed
Status: assignedclosed

I removed the downloading of doxygen from git master in [9fd62725125743a9d9641efe2ebaab3d69ce03d7].

(Contrary to what I said in comment:1, bison is still needed - for SWIG).

Note: See TracTickets for help on using tickets.