bugGNU Octave - Bugs: bug #44060, audiodevinfo fails to build on...


bug #44060: audiodevinfo fails to build on updated fedora 20

Submitted by:  John Donoghue <lostbard>
Submitted on:  Wed 21 Jan 2015 03:59:53 PM UTC  
Category:  Configuration and Build System Severity:  3 - Normal
Priority:  5 - Normal Item Group:  Build Failure
Status:  Fixed Assigned to:  None
Originator Name:  JohnD Open/Closed:  Closed
Release:  dev Operating System:  GNU/Linux

Add a New Comment (Rich Markup)

You are not logged in

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


( Jump to the original submission)

Thu 05 Feb 2015 01:29:56 AM UTC, comment #8: 

@Mike: Your analysis seems correct.  Closing report.

Rik <rik5>
Project Administrator
Wed 04 Feb 2015 06:28:59 AM UTC, comment #7: 

I think bug #36064 is no longer relevant actually.

If you look at when that bug was reported and reproducible, Octave 3.6.2 used to include $(CPPFLAGS) in $(AM_CPPFLAGS). So the flags order used to be

-I../libgnu -I../liboctave <octave-specific -I options> $(CPPFLAGS) $(MAGICK_CPPFLAGS) $(CPPFLAGS) ...

So the original error in that bug report was because of $(CPPFLAGS) appearing ahead of $(MAGICK_CPPFLAGS). I think that actually may have been fixed with http://hg.savannah.gnu.org/hgweb/octave/rev/9db33c1f6f5f.

Not saying I'm not missing anything or there aren't some complicated cases where the order is still wrong, but I don't think the current order breaks bug #36064.

Mike Miller <mtmiller>
Project Administrator
Mon 02 Feb 2015 05:27:39 AM UTC, comment #6: 

Re-opening bug as the fix breaks bug #36064.

See the reasoning in that report for why user specific CPPFLAGS should precede generic CPPFLAGS, as opposed to the CFLAGS variable where the user's options should always be last.

Rik <rik5>
Project Administrator
Wed 21 Jan 2015 11:07:43 PM UTC, comment #5: 

What about bug #36064?

See this cset

hlog -p -r 17773:a230b99
changeset:   17773:a230b996ae8a
user:        Rik <rik@octave.org>
date:        Sun Oct 27 09:01:04 2013 -0700
summary:     Put dldfcn CPPFLAGS ahead of AM_CPPFLAGS (bug #36064)

diff -r 7900595f1533 -r a230b996ae8a libinterp/dldfcn/config-module.awk
--- a/libinterp/dldfcn/config-module.awk        Sun Oct 27 08:34:05 2013 -0400
+++ b/libinterp/dldfcn/config-module.awk        Sun Oct 27 09:01:04 2013 -0700
@@ -66,7 +66,7 @@
         printf ("dldfcn/%s.df: CPPFLAGS += %s\n",
                 basename, cppflags[i]);
-        printf ("dldfcn_%s_la_CPPFLAGS = $(AM_CPPFLAGS) %s\n",
+        printf ("dldfcn_%s_la_CPPFLAGS = %s $(AM_CPPFLAGS)\n",
                 basename, cppflags[i]);
     printf ("dldfcn_%s_la_LDFLAGS = -avoid-version -module $(NO_UNDEFINED_LDFLAG) %s $(OCT_LINK_OPTS)\n",

Rik <rik5>
Project Administrator
Wed 21 Jan 2015 05:20:20 PM UTC, comment #4: 
John W. Eaton <jwe>
Project Administrator
Wed 21 Jan 2015 05:02:36 PM UTC, comment #3: 

That makes more sense to me

John Donoghue <lostbard>
Project Member
Wed 21 Jan 2015 04:59:47 PM UTC, comment #2: 

Hmm, I think issues like this could cause us some trouble in the future if there is a header file name conflict and we actually need both files to be included.

In any case, should we maybe make a change that is uniform for all the DLD files?  The attached change would also make the order of CPPFLAGS more consistent with what we do for other special cases, where I see the individual CPPFLAGS variables for dependencies appearing after AM_CPPFLAGS.

(file #32891)

John W. Eaton <jwe>
Project Administrator
Wed 21 Jan 2015 04:02:23 PM UTC, comment #1: 

Patch attached

(file #32887)

John Donoghue <lostbard>
Project Member
Wed 21 Jan 2015 03:59:53 PM UTC, original submission:  

On a recent update of my fedora box, octave suddently started to fail building audiodevinfo.

portaudio-19-17, alsa-lib-devel-

Error as below:

libtool: compile:  g++ -DHAVE_CONFIG_H -I. -I../../libinterp -I.. -I/usr/include/alsa -I../../liboctave/cruft/misc -I../../liboctave/array -I../liboctave/numeric -I../../liboctave/numeric -I../liboctave/operators -I../../liboctave/operators -I../../liboctave/system -I../../liboctave/util -I../../libinterp/octave-value -I../../libinterp/operators -Iparse-tree -I../../libinterp/parse-tree -Icorefcn -I../../libinterp/corefcn -I../libgnu -I../../libgnu -Wall -W -Wshadow -Wold-style-cast -Wformat -Wpointer-arith -Wwrite-strings -Wcast-align -Wcast-qual -g -O2 -pthread -MT dldfcn/dldfcn_audiodevinfo_la-audiodevinfo.lo -MD -MP -MF dldfcn/.deps/dldfcn_audiodevinfo_la-audiodevinfo.Tpo -c ../../libinterp/dldfcn/audiodevinfo.cc  -fPIC -DPIC -o dldfcn/.libs/dldfcn_audiodevinfo_la-audiodevinfo.o
In file included from ../../libinterp/octave-value/ov-fcn.h:35:0,
                 from ../../libinterp/octave-value/ov-builtin.h:28,
                 from ../../libinterp/corefcn/defun-int.h:28,
                 from ../../libinterp/corefcn/defun-dld.h:30,
                 from ../../libinterp/dldfcn/audiodevinfo.cc:35:
../../libinterp/corefcn/symtab.h: In static member function 'static bool symbol_table::scope_id_cache::instance_ok()':
../../libinterp/corefcn/symtab.h:97:11: error: '::error' has not been declared
           ::error ("unable to create scope_id_cache object!");
../../libinterp/corefcn/symtab.h: In member function 'void symbol_table::scope_id_cache::do_free(symbol_table::scope_id)':
../../libinterp/corefcn/symtab.h:155:56: error: 'error' was not declared in this scope
         error ("free_scope: scope %d not found!", scope);
In file included from ../../libinterp/octave-value/ov-fcn.h:35:0,
                 from ../../libinterp/octave-value/ov-builtin.h:28,
                 from ../../libinterp/corefcn/defun-int.h:28,
                 from ../../libinterp/corefcn/defun-dld.h:30,
                 from ../../libinterp/dldfcn/audiodevinfo.cc:35:
../../libinterp/corefcn/symtab.h: In member function 'void symbol_table::symbol_record::symbol_record_rep::mark_global()':
../../libinterp/corefcn/symtab.h:401:75: error: 'error' was not declared in this scope
           error ("can't make persistent variable %s global", name.c_str ());
../../libinterp/corefcn/symtab.h: In member function 'void symbol_table::symbol_record::symbol_record_rep::mark_persistent()':
../../libinterp/corefcn/symtab.h:408:75: error: 'error' was not declared in this scope
           error ("can't make global variable %s persistent", name.c_str ())

It appears to be pulling error.h from alsa instead of the system error.h.
Modifying the flags to include AM_CPPFLAGS before the PORT_AUDIO_CPPFLAGS makes it work again.

John Donoghue <lostbard>
Project Member


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

Attach Files:

Attached Files
file #32891:  diffs.txt added by jwe (571B - text/plain)
file #32887:  audioflags.patch added by lostbard (903B - application/octet-stream)


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by mtmiller (Posted a comment)
  • -email is unavailable- added by rik5 (Posted a comment)
  • -email is unavailable- added by jwe (Updated the item)
  • -email is unavailable- added by lostbard (Submitted the item)

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

    Only project members can vote.




    Follow 7 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2015-02-05 rik5 Open/ClosedOpen => Closed
    2015-02-02 rik5 Open/ClosedClosed => Open
    2015-01-21 jwe StatusPatch Submitted => Fixed
        Open/ClosedOpen => Closed
    2015-01-21 jwe Attached File- => Added diffs.txt, #32891
    2015-01-21 lostbard Attached File- => Added audioflags.patch, #32887
        StatusNone => Patch Submitted

    Back to the top

    Powered by Savane 3.6