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


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

Submitter:  John Donoghue <lostbard>
Submitted:  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
* Mandatory Fields

Add a New Comment (Rich Markup)

Comment Type & Canned Response:


( 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)

    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 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.9