Opened 5 years ago

Closed 5 years ago

#57850 closed defect (fixed)

octave @4.4.1_2: Error message when starting Octave.app and broken online help using the doc function

Reported by: maehne (Torsten Maehne) Owned by: MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: protogeezer
Port: octave

Description (last modified by mf2k (Frank Schima))

When launching the Octave.app GUI, a message window pops up with the following error message:

  Could not copy help collection to temporary file. Search capabilities may be affected. Cannot create index tables in file /opt/local/share/octave/4.4.1/doc/octave_interpreter.qhc

After clicking on OK, the Octave GUI opens. Octave primary functions seem to work without problem except for the doc function (which was hinted by the error message). Asking, e.g., for the documentation of the deg2rad function will only display two empty panes in the tab "Documentation" instead of the requested page from the online version of the manual. Related may be that the menu entry Help->Documentation->On Disk is not working as expected -- only the two empty panes from the Documentation tab are shown.Help->Documentation->Online opens the Octave manual from http://octave.org in a web browser.

When using octave from a regular shell, the above error message is not shown and the doc command works as expected displaying the online manual in the info browser. I am using the octave port already for several years every couple of weeks, but I never noticed the error message before. Therefore, I suspect that the error got introduced by one of the recent updates to the port.

The exact variant of the port, which is installed is:

$ port installed octave
The following ports are currently installed:
  octave @4.4.1_2+accelerate+app+docs+gfortran+graphicsmagick+qt5+sound+sundials (active)

My MacPorts installation is fully updated and runs on macOS High Sierra 10.13.6 on MacBook Pro 15-inch 2017.

Change History (12)

comment:1 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Status: assignedaccepted

Could you please

  1. close octave
  2. run mv -i ${HOME}/.config/octave ${HOME}/.config/octave-save
  3. open octave

Does the error persist?

comment:2 Changed 5 years ago by maehne (Torsten Maehne)

Just tried it: After moving away the old Octave configuration folder, I got greeted by Octave GUI's 1st launch configuration wizard. Right after finishing the wizard, the very same warning as I reported above got displayed. So yes, the error persists!

comment:3 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Just to document the progress:

  • The error happens in the octave documentation code.
  • The Qt method copyCollectionFile returns false.
  • copyCollectionFile helpfully has the side affect that "file references to Qt Collection files (.qch) files are updated."
  • In this case, the octave_interpreter.qhc file is copied and updated.
  • The update fails because the user does not have write permission to ${prefix}/share/octave/4.4.1/doc/octave_interpreter.qhc.

I am not sure why this problem seems to have just started.
It might be the update of Qt to 5.12.0 and the redesign of qcollectiongenerator.
I am also not sure why the copyCollectionFile feels the need to update octave_interpreter.qhc.

A very vary bad workaround (that should probably not be used) seems to be:

  • mv -i $HOME/.config/octave $HOME/.config/octave-save
  • sudo octave --gui
  • sudo rm -r $HOME/.config/octave
  • mv -i $HOME/.config/octave-save $HOME/.config/octave

octave_interpreter.qhc is updated, and octave seems to run normally after that.

comment:4 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Just to document the progress:

  • The error happens in the octave documentation code.
  • The Qt method copyCollectionFile returns false.
  • copyCollectionFile helpfully has the side affect that "file references to Qt Collection files (.qch) files are updated."
  • The time that octave_interpreter.qch was last modified is recorded in octave_interpreter.qhc.
    • octave_interpreter.qch and octave_interpreter.qhc are built in the build phase.
    • The modification time of octave_interpreter.qch is recorded in octave_interpreter.qhc.
    • In the destroot phase, octave_interpreter.qhc is copied and thus gets a new modification time.
    • When first run, Octave attempt to update the modification time of octave_interpreter.qch in octave_interpreter.qhc.
  • The update fails because the user does not have write permission to ${prefix}/share/octave/4.4.1/doc/octave_interpreter.qhc.

A fix being worked on is to preserve modification time when installing octave_interpreter.qch.

comment:5 Changed 5 years ago by maehne (Torsten Maehne)

Thanks for reporting the progress on this issue. I will be happy in assisting testing the fix!

comment:6 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: acceptedclosed

In afeb823a178c127a7733c7cf185bf298147686cc/macports-ports (master):

octave: preserve modification times of data files

Fixes #57850

comment:7 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

I pushed a change that fixes the problem for me.
In about an hour, please update octave and see if the problem is fixed for you as well.
If not, please feel free to reopen the ticket.

Thank you for the report.

comment:8 Changed 5 years ago by maehne (Torsten Maehne)

Thanks! I just rebuilt octave. The error message disappeared and the documentation browser works correctly again.

comment:9 Changed 5 years ago by mf2k (Frank Schima)

Description: modified (diff)

comment:10 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Cc: protogeezer added
Resolution: fixed
Status: closedreopened

#58168 is a duplicate of this ticket.

Adding reporter of duplicate ticket.

comment:11 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

I am sorry, but I can no longer reproduce this problem.
I did a clean reinstall of Octave, and there were no problems.
The fix from this ticket still seems to work for me.

comment:4 outlines the problem.
The only thing I can think to do is try to see why the fix did not work.

What are the results of the following commands?

sqlite3 /opt/local/share/octave/5.1.0/doc/octave_interpreter.qhc "SELECT * FROM TimeStampTable"
GetFileInfo -d /opt/local/share/octave/5.1.0/doc/octave_interpreter.qch
GetFileInfo -m /opt/local/share/octave/5.1.0/doc/octave_interpreter.qch

comment:12 Changed 5 years ago by MarcusCalhoun-Lopez (Marcus Calhoun-Lopez)

Resolution: fixed
Status: reopenedclosed

Since I can not reproduce this error, and there has been no response to the request for more information, I will close this ticket it again.
If more information becomes available, please feel free to reopen.

Note: See TracTickets for help on using tickets.