bugGNU Octave - Bugs: bug #60099, build from repository fails...

 
 

bug #60099: build from repository fails without cholmod

Submitter:  Ernst Reissner <ernstreissner>
Submitted:  Mon 22 Feb 2021 05:50:00 PM UTC
   
 
Category:  Configuration and Build System Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Build Failure
Status:  Wont Fix Assigned to:  None
Originator Name:  Reissner Open/Closed:  * Closed
Release:  * other Operating System:  * Any
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Jump to the original submission

Tue 23 Feb 2021 10:05:30 AM UTC, comment #10: 

The link in comment #7 lists all dependencies that are needed to build from the repository. It also lists possible commands to install those dependencies on certain distributions.
There is no need to skip building the documentation if those dependencies are installed.

I'm sorry if I made you feeling urged to do something. I thought I just asked you if you could provide a patch. That wasn't meant to be an order. :-)

New and interested testers and contributors are always welcome. We'd love to help by answering any questions. But maybe the bug tracker is not the best platform for that.

Markus Mützel <mmuetzel>
Group administrator
Tue 23 Feb 2021 09:35:49 AM UTC, comment #9: 

By no means i am so arrogant to consider myself an octave developer.
I just ventured to build from repo
because markus urged me to provide a patch.
This is not what i want. But i wanted to serve.

Ernst Reissner <ernstreissner>
Tue 23 Feb 2021 09:08:04 AM UTC, comment #8: 

I did read. https://wiki.octave.org/Building
Where is the flag --disable-docs mentioned in a docs?

@markus, i will in future critically ask myself
whether i just rephrase a question as a feature request.
I was not aware of doing so.

I just try to get again/ keep my work running with octave
which is by no means easy.

Ernst Reissner <ernstreissner>
Tue 23 Feb 2021 08:17:57 AM UTC, comment #7: 

I agree with Rik. If a developer/tester tries to build from the repository, we probably can expect them to read the respective instructions (e.g. [1] for instructions on Ubuntu/Debian).

Also the condition outlined in comment #4 is incomplete. Like Rik already wrote: If a user builds from a release tarball, these dependencies are optional because the documentation is already included. No need to mandate "--disable-docs" in that case.

If a configuration fails with a release tarball, this would be a valid bug. Like it is, I'll close this report with the status it already has ("won't fix").

@Ernst: Recently you opened a lot of reports where you asked for help with XYZ. (Often rephrased to something like "Octave doesn't have a function to do XYZ" or "Octave fails on doing XYZ".)
Many of those are good questions. But we have to close those reports as "invalid" or "won't fix" on the bug tracker.
Please, use one of the more appropriate channels for those questions (like the help mailing lists, discourse, or IRC [2]).

[1]: https://wiki.octave.org/Octave_for_Debian_systems#The_right_way
[2]: https://www.gnu.org/software/octave/support

Markus Mützel <mmuetzel>
Group administrator
Tue 23 Feb 2021 12:25:56 AM UTC, comment #6: 

The option '-jN' sets the number of processes that make will run in parallel.  If you have multiple CPU cores or multiple threads per core then you want to use a number above 1.  I have a total of 8 threads (4 cores with 2 threads each) on my PC so I run 'make -j7' which gets the compilation done faster but still leaves a spare thread for surfing the web or doing other things.

Rik <rik5>
Group administrator
Tue 23 Feb 2021 12:08:33 AM UTC, comment #5: 

just because i am curious about:
make -j2: what is the meaning of the mysterious `-j2`??

Ernst Reissner <ernstreissner>
Mon 22 Feb 2021 11:46:49 PM UTC, comment #4: 

Well, a novice.... If someone wants to at least file bug reports,
one sometimes has to build, e.g. because maybe a real developer asks you whether a certain version works for me.

Then maybe one has to provide a patch... and so on.
So one quickly becomes a kind of developer. 
It is easier to get into if the build system has not so much quirks.

I think, make is not the right place to solve the problem,
since configure (without --disable-docs) makes the wrong suggestion that make will work.
So configure has to check whether --disable-docs is present.
Only in this case, the output is ok.
If without that, an error shall be displayed
and a hint to disable docs.

Then make can remain as is.

Ernst Reissner <ernstreissner>
Mon 22 Feb 2021 11:25:19 PM UTC, comment #3: 


> Else how can a novice know how to build?


This is the root of it.  If you are building from Mercurial sources the expectation is that you are an Octave developer and are familiar with the requirements/quirks of the build system.

There is a check to make sure that any system where you build Octave that cannot create the documentation is unable to then make a distribution tarball.  The Makefile code is in doc/interpreter/module.mk and is


# Prevent packaging of distribution unless all libraries
# necessary to create documentation are present
doc-interpreter-dist-hook:
        @$(GREP) '#define HAVE_COLAMD 1' $(top_builddir)/config.h > /dev/null || { echo "Documentation creation requires missing COLAMD library.  Cannot package distribution!" ; exit 1; }
        @$(GREP) '#define HAVE_CHOLMOD 1' $(top_builddir)/config.h > /dev/null || { echo "Documentation creation requires missing CHOLMOD library.  Cannot package distribution!" ; exit 1; }
        @$(GREP) '#define HAVE_UMFPACK 1' $(top_builddir)/config.h > /dev/null || { echo "Documentation creation requires missing UMFPACK library.  Cannot package distribution!" ; exit 1; }
        @$(GREP) '#define HAVE_QHULL 1' $(top_builddir)/config.h > /dev/null || { echo "Documentation creation requires missing QHULL library.  Cannot package distribution!" ; exit 1; }
        @$(GREP) '#define HAVE_QT_OFFSCREEN 1' $(top_builddir)/config.h > /dev/null || { echo "Documentation creation requires Qt offscreen OpenGL rendering.  Cannot package distribution!" ; exit 1; }


There might be a way to do something similar for 'make all' that issues an error message if the documentation can't be built.

It might also be possible to write configure code in configure.ac that would check for the required libraries and issue a warning during configuration, rather than during compilation with make.

Rik <rik5>
Group administrator
Mon 22 Feb 2021 10:16:04 PM UTC, comment #2: 

I verified almost.
make check
did not succeed.
make -j2 did succeed.

But to be honest, this is a bug to be fixed,
because the output of configure is misleading.
If configure is run without `--disable-docs`, it must output an error because it is not possible to run make successfully.
The error must include the suggestion to run with `--disable-docs`.
Else how can a novice know how to build?

Ernst Reissner <ernstreissner>
Mon 22 Feb 2021 05:58:33 PM UTC, comment #1: 

You can build Octave without CHOLMOD, but you can't build the documentation without COLAMD, CHOLMOD, UMFPACK, QHULL.

One option is to run configure with '--disable-docs' to avoid creating the documentation.

Another option is to download a tarball of a release, such as the new 6.2.0, which includes a complete set of documentation.  Because the documentation already exists, the host machine is not required to have the extra libraries.

Rik <rik5>
Group administrator
Mon 22 Feb 2021 05:50:00 PM UTC, original submission:  

I built from source.
First clone
tip was at      29388:264a27ab32f3

then .bootstrap
then mikdir .build
then within invoke ./../configure
All is fine but some warnings

 Default pager:                 less
  gnuplot:                       gnuplot

  Build Octave Qt GUI:                  no (missing:Qt5Help)
  JIT compiler for loops:               no
  Build Java interface:                 yes
  Build static libraries:               no
  Build shared libraries:               yes
  Dynamic Linking API:                  dlopen
  Include support for GNU readline:     yes
  Use push parser in command line REPL: yes
  64-bit array dims and indexing:       yes
  64-bit BLAS array dims and indexing:  no
  OpenMP SMP multithreading:            yes
  Truncate intermediate FP results:     yes
  Build cross tools:                    no
  Build docs:                           yes

configure: WARNING: Qhull library not found.  This will result in loss of functionality for some geometry functions.
configure: WARNING: GLPK library not found.  The glpk function for solving linear programs will be disabled.
configure: WARNING: PortAudio library not found.  The audioplayer, audiorecorder, and audiodevinfo functions will be disabled.
configure: WARNING: GraphicsMagick++ library not found.  The imread, imwrite, and imfinfo functions for reading and writing image files will not be fully functional.
configure: WARNING: OpenGL libs (GL and GLU) not found.  OpenGL graphics will be disabled.
configure: WARNING: Your installation of Qt version 5 appears incomplete or broken in some way.  Fix that or use --with-qt=VER to use another version.
configure: WARNING: Qt libraries not found; disabling Qt GUI
configure: WARNING: FLTK config script not found.  FLTK toolkit will be disabled.
configure: WARNING: AMD library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: CAMD library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: COLAMD library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: CCOLAMD library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: CHOLMOD library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: SPQR library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: CXSparse library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: UMFPACK not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: KLU library not found.  This will result in some lack of functionality for sparse matrices.
configure: WARNING: SUNDIALS IDA library not configured with SUNLINSOL_KLU or sunlinksol_klu.h is not usable.  The solvers ode15i and ode15s will not support the sparse Jacobian feature.
configure: WARNING: ARPACK not found.  The eigs function will be disabled.
configure: WARNING:
configure: WARNING: The libraries needed for OpenGL graphics were not found.
configure: WARNING: Creating plots is still possible if gnuplot is installed.
configure:
configure: NOTE: Libraries or auxiliary programs may be skipped if they are not found
configure: NOTE: OR if they are missing required features on your system.



then make -j2

This fails with

error: support for CHOLMOD was unavailable or disabled when liboctave was built
error: called from
    sparseimages>txtimages at line 106 column 16
    sparseimages at line 29 column 5
error: support for CHOLMOD was unavailable or disabled when liboctave was built
error: called from
    sparseimages>txtimages at line 103 column 8
    sparseimages at line 29 column 5
make[2]: *** [Makefile:31789: doc/interpreter/spcholperm.txt] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [Makefile:31787: doc/interpreter/spchol.txt] Error 1
make[2]: Leaving directory '/home/ernst/OpenSource/Octave/octave/.build'
make[1]: *** [Makefile:27828: all-recursive] Error 1
make[1]: Leaving directory '/home/ernst/OpenSource/Octave/octave/.build'
make: *** [Makefile:11296: all] Error 2


I think this is not ok, because before i had warnings only
and it is possible to run octave without CHOLMOD

Ernst Reissner <ernstreissner>

 

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

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by mmuetzel (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by ernstreissner (Submitted the item)
  • -email is unavailable- added by ernstreissner
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2021-03-02 mmuetzel Summarybuild fails without cholmod build from repository fails without cholmod
    2021-02-23 mmuetzel Open/ClosedOpen Closed
    2021-02-22 rik5 StatusNone Wont Fix
        Summarybuild fails with cholmod build fails without cholmod
    2021-02-22 ernstreissner Carbon-Copy- Added -email is unavailable-

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code