bugGNU Octave - Bugs: bug #39600, configure: more precise checks for...

 
 

bug #39600: configure: more precise checks for required Qt features needed

Submitted by:  Mike Miller <mtmiller>
Submitted on:  Sun 28 Jul 2013 09:16:48 PM UTC  
 
Category: Configuration and Build SystemSeverity: 3 - Normal
Priority: 5 - NormalItem Group: Build Failure
Status: FixedAssigned to: None
Originator Name: Open/Closed: Closed
Release: devOperating System: Any

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Tue 30 Jul 2013 04:55:24 AM UTC, comment #5:

I checked in the following change:

http://hg.savannah.gnu.org/hgweb/octave/rev/bb713af2e1d9

Tested against Qt 4.2, 4.6, and 4.8.

Mike Miller <mtmiller>
Project Administrator
Mon 29 Jul 2013 12:22:00 AM UTC, comment #4:

My vote is to just check for one or two of the most recent functions.

Rik <rik5>
Project Administrator
Sun 28 Jul 2013 10:39:31 PM UTC, comment #3:

Yeah, we could do that. Or we could check for only a handful of the most recently added functions that we use and consider that good enough for the mess of them.

For example, I just did some diggin, and the QAbstractItemModel::beginResetModel() and QAbstractItemModel::endResetModel() member functions were both added in Qt 4.6. These might be the most recently added functions that we use, and they both seem pretty essential, synchronizing between the model and the view.

Mike Miller <mtmiller>
Project Administrator
Sun 28 Jul 2013 10:21:24 PM UTC, comment #2:

Or should we just damn it all to hell and check for a version number?

Jordi GutiƩrrez Hermoso <jordigh>
Project Administrator
Sun 28 Jul 2013 10:14:49 PM UTC, comment #1:

Attached is an example error log from "make -k" against Qt 4.2. Here is a summary list of some of the things that are missing that I've pulled out of the log file, grouped together by type.

Header files/classes:

  • QDirIterator
  • QFileInfo
  • QFileSystemModel
  • QMdiArea
  • QMdiSubWindow

Static member types:

  • QComboBox::AdjustToMinimumContentsLengthWithIcon
  • QDesktopServices::HomeLocation
  • QFileDialog::HideNameFilterDetails
  • QInputDialog::NoButtons
  • QKeySequence::Quit
  • QMainWindow::AllowNestedDocks
  • QMainWindow::AllowTabbedDocks
  • QMainWindow::AnimatedDocks
  • QNetworkProxy::HttpProxy
  • Qt::BlockingQueuedConnection

Missing member functions or constructors:

  • QComboBox::insertSeparator
  • QDesktopServices::storageLocation
  • QFileInfoList::length
  • QGridLayout::setHorizontalSpacing
  • QGridLayout::setVerticalSpacing
  • QHBoxLayout::setContentsMargins
  • QHeaderView::restoreState
  • QHeaderView::saveState
  • QInputDialog::QInputDialog
  • QInputDialog::setOptions
  • QStringList::length
  • QTabBar::setExpanding
  • QTabBar::setMovable
  • QTabBar::setTabsClosable
  • QTableView::setWordWrap
  • QTextBrowser::setOpenLinks
  • QVBoxLayout::setContentsMargins

Other missing member functions that I haven't chased to the corresponding base class yet:

  • beginResetModel
  • buttonClicked
  • endResetModel
  • nameFilters
  • selectedNameFilter
  • setDockOptions
  • setNameFilters
  • setOption
  • setTitleBarWidget
  • titleBarWidget

As you can see, quite a lot of functionality that was not present in Qt 4.2, so I'm not at all suggesting that we should make the GUI completely backwards compatible. But configure should test for at least some, if not all, of these classes/functions/types to ensure that it disables the GUI build properly.

(file #28682)

Mike Miller <mtmiller>
Project Administrator
Sun 28 Jul 2013 09:16:48 PM UTC, original submission:

Octave's configure currently only tests for Qt to be at least version 4 when determining whether the GUI is to be built or not. In fact the GUI requires some higher version of Qt 4.x. Octave fails to compile with Qt 4.2 and succeeds with 4.6 and higher.

Since it's been stated that we don't like arbitrary version tests, we'll need to identify a set of functions that the GUI is using that were introduced after Qt 4.0 and either make those conditional, if possible, or make them hard requirements for building the GUI at all.

By the way, the test for Qt >= 4.0.0 is pretty much irrelevant the way it's written. Qt 3.x didn't have the same pkg-config modules that Octave is looking for, so their existence already implies Qt 4 or higher.

Mike Miller <mtmiller>
Project Administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #28682:  octave-build-qt-4.2.log added by mtmiller (28KiB - text/x-log)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by rik5 (Posted a comment)
  • -unavailable- added by jordigh (Posted a comment)
  • -unavailable- added by mtmiller (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only project members can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 3 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Tue 30 Jul 2013 04:55:24 AM UTCmtmillerStatusNone=>Fixed
      Open/ClosedOpen=>Closed
    Sun 28 Jul 2013 10:14:49 PM UTCmtmillerAttached File-=>Added octave-build-qt-4.2.log, #28682

    Back to the top


    Powered by Savane 3.1-cleanup1