Don't output build details for external libraries

Issue #678 closed
Erik Schnetter created an issue

When an external library is built, Cactus always outputs all details of the build process. Much of this should be suppressed (in particular checking whether to build the library) unless VERBOSE is set.

Keyword:

Comments (11)

  1. Erik Schnetter reporter
    • changed status to open
    • removed comment

    I attach a patch that modifies thorn FFTW3. Please review this; I will then implement the corresponding changes in the other ExternalLibraries thorns as well.

  2. Barry Wardell
    • removed comment

    This is certainly an improvement, but there is still quite a lot of unnecessary output. For example, the pushd and popd commands echo to standard output, so this should probably be redirected to /dev/null.

    I would suggest using a different word than "enclosed". Perhaps "bundled" would be better?

    The standard output from the external library configure and build process is still output. Should this also be silenced unless verbose is set? I would say yes as this information is typically much less relevant than the actual Cactus build information.

    For me, the output from inside BEGIN MESSAGE ... END MESSAGE is delayed until after the build process has finished, making it worse than useless as it then leads to confusing messages like:

    FFTW3: Preparing directory structure... FFTW3: Unpacking archive... FFTW3: Configuring... FFTW3: Building... FFTW3: Installing... FFTW3: Cleaning up... FFTW3: Done. FFTW3 selected, but FFTW3_DIR not set. Checking some places... FFTW3 not found Using enclosed FFTW3... Building FFTW3

  3. Erik Schnetter reporter
    • removed comment

    I thought about disabling all output from configure and make as well, but I now think this is too much. Building an external library may take a long time, there may be errors (especially if the compiler or compiler flags in Cactus are not configured correctly), and it seems standard in other projects as well to show the output of sub-configures and sub makes.

    Given that we show this, disabling the output of pushd and popd doesn't make sense (just two more lines).

    We can change "enclosed" to "bundled".

    Yes, the order of the output is wrong. This is #695.

  4. Barry Wardell
    • removed comment

    Replying to [comment:3 eschnett]:

    I thought about disabling all output from configure and make as well, but I now think this is too much. Building an external library may take a long time, there may be errors (especially if the compiler or compiler flags in Cactus are not configured correctly), and it seems standard in other projects as well to show the output of sub-configures and sub makes.

    In that case one can always build with verbose output. Even better would be for verbose output to always be redirected to a log file with only the simplified output printed to stdout. This is how, e.g., MacPorts works and I quite like it.

    Either way, the proposed patch is certainly an improvement on the current situation, so I would be in favor of committing it either with or without the total silencing of the external library build process.

  5. Roland Haas
    • removed comment

    pleas don't make output _only_ available in some file. This breaks the "make" command in vim (and emacs I guess) since they parse the output of 'make'. Having half the information in one file and half in another renders this useless or at least means that one has to look at several files and try to decide how to interleave the lines of output.

  6. Barry Wardell
    • removed comment

    I was thinking more along the lines of all output being sent to a single log file, with only the "useful" information printed to standard output. In the case of external libraries, "useful" means anything inside the BEGIN MESSAGE...END MESSAGE blocks (is there any use for these blocks other than this?). Would this still cause problems for you?

    I don't feel all that strongly about this. My preference would be for quieter output, but I am also OK with something along the lines of Erik's patch.

  7. Roland Haas
    • removed comment

    I'd like VERBOSE=yes to (at least also) output to stdout if possible, otherwise there seems to be no way at all to get a single file with all output from the build process. If I use VERBOSE=yes I expect lots of output and would consider all of it useful (for VERBOSE=yes). For VERBOSE=no I am fine if stdout of ExternalLibraries ends up only in some file. stderr should go to the console though (to not hide errors), I think.

  8. Barry Wardell
    • removed comment

    Yes, I agree that with verbose output enabled everything should go to standard output. I forgot to say that my quieter output suggestion should only apply in the non-verbose case.

  9. Roland Haas
    • removed comment

    Fine with me as long as VEBOSE ouputs everything to stdout/stderr I can always use VERBOSE if I make changes to an ExternalLibrary and want to see its configure output. :-)

  10. Log in to comment