After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 516511 - gstapev2mux.cc taglib build failure on Solaris with Sun C++
gstapev2mux.cc taglib build failure on Solaris with Sun C++
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Solaris
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-02-14 18:05 UTC by Tim Mooney
Modified: 2010-06-26 19:28 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tim Mooney 2008-02-14 18:05:29 UTC
I'm building gst-plugins-good from CVS on x86_64-sun-solaris2.10 with the Sun Workshop 12 C and C++ compilers.

After I work around the issue I reported in bug # 516509 using "make ERROR_CFLAGS=" in ext/taglib, the compile proceeds to gstapev2mux.cc, where I encounter the following errors:

/bin/bash ../../libtool --tag=CXX   --mode=compile CC -DHAVE_CONFIG_H -I. -I../..   -I/local/include/X11 -I/local/include -I/local/gnu/include/X11 -I/local/gnu/include -D_REENTRANT -D_PTHREADS -I/local/gnu/include/gstreamer-0.10 -I/local/gnu/include/glib-2.0 -I/local/gnu/lib/64/glib-2.0/include -I/local/gnu/include/libxml2   -I../../gst-libs -I../../gst-libs -D_REENTRANT -D_PTHREADS -I/local/gnu/include/gstreamer-0.10 -I/local/gnu/include/glib-2.0 -I/local/gnu/lib/64/glib-2.0/include -I/local/gnu/include/libxml2     -g    -I/local/include/taglib   -xO2 -library=stlport4 -library=Crun -D__func__=\"unknown\" -KPIC -m64 -xtarget=native -xarch=native -c -o libgsttaglib_la-gstapev2mux.lo `test -f 'gstapev2mux.cc' || echo './'`gstapev2mux.cc
 CC -DHAVE_CONFIG_H -I. -I../.. -I/local/include/X11 -I/local/include -I/local/gnu/include/X11 -I/local/gnu/include -D_REENTRANT -D_PTHREADS -I/local/gnu/include/gstreamer-0.10 -I/local/gnu/include/glib-2.0 -I/local/gnu/lib/64/glib-2.0/include -I/local/gnu/include/libxml2 -I../../gst-libs -I../../gst-libs -D_REENTRANT -D_PTHREADS -I/local/gnu/include/gstreamer-0.10 -I/local/gnu/include/glib-2.0 -I/local/gnu/lib/64/glib-2.0/include -I/local/gnu/include/libxml2 -g -I/local/include/taglib -xO2 -library=stlport4 -library=Crun -D__func__=\"unknown\" -KPIC -m64 -xtarget=native -xarch=native -c gstapev2mux.cc  -DPIC
"gstapev2mux.cc", line 73: Warning (Anachronism): Formal argument base_init of type extern "C" void(*)(void*) in call to gst_type_register_static_full(unsigned long, const char*, unsigned, extern "C" void(*)(void*), extern "C" void(*)(void*), extern "C" void(*)(void*,void*), extern "C" void(*)(void*,void*), const void*, unsigned, unsigned short, extern "C" void(*)(_GTypeInstance*,void*), const _GTypeValueTable*, GTypeFlags) is being passed void(*)(void*).
"gstapev2mux.cc", line 73: Warning (Anachronism): Formal argument class_init of type extern "C" void(*)(void*,void*) in call to gst_type_register_static_full(unsigned long, const char*, unsigned, extern "C" void(*)(void*), extern "C" void(*)(void*), extern "C" void(*)(void*,void*), extern "C" void(*)(void*,void*), const void*, unsigned, unsigned short, extern "C" void(*)(_GTypeInstance*,void*), const _GTypeValueTable*, GTypeFlags) is being passed void(*)(void*,void*).
"gstapev2mux.cc", line 98: Warning (Anachronism): Assigning _GstBuffer*(*)(_GstTagLibMux*,_GstStructure*) to extern "C" _GstBuffer*(*)(_GstTagLibMux*,_GstStructure*).
"gstapev2mux.cc", line 123: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 123: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setTitle(const TagLib::String&) is being passed int.
"gstapev2mux.cc", line 132: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 132: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setAlbum(const TagLib::String&) is being passed int.
"gstapev2mux.cc", line 141: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 141: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setArtist(const TagLib::String&) is being passed int.
"gstapev2mux.cc", line 150: Error: Could not find a match for TagLib::String::String(const char[9], TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 150: Error: Formal argument key of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 151: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 151: Error: Formal argument value of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 160: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 160: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setGenre(const TagLib::String&) is being passed int.
"gstapev2mux.cc", line 169: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 169: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setComment(const TagLib::String&) is being passed int.
"gstapev2mux.cc", line 198: Error: Could not find a match for TagLib::String::String(const char[6], TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 198: Error: Formal argument key of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 199: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 199: Error: Formal argument value of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 216: Error: Could not find a match for TagLib::String::String(const char[6], TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 216: Error: Formal argument key of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 217: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 217: Error: Formal argument value of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 269: Error: Could not find a match for TagLib::String::String(const char[10], TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
"gstapev2mux.cc", line 269: Error: Formal argument key of type const TagLib::String& in call to TagLib::APE::Tag::addValue(const TagLib::String&, const TagLib::String&, bool) is being passed int.
"gstapev2mux.cc", line 270: Error: Could not find a match for TagLib::String::String(char*, TagLib::String::Type) needed in add_one_tag(const _GstStructure*, const char*, void*).
Compilation aborted, too many Error messages.
gmake: *** [libgsttaglib_la-gstapev2mux.lo] Error 1


I have taglib 1.5b1 installed.  My C is OK, but I'm afraid my C++ is weak, so
although I know in principle what the compiler is saying, I don't know what the right approach to fixing it is.

I'm willing to do some experimentation, if someone can point me in a suggested direction.
Comment 1 Tim-Philipp Müller 2008-02-23 12:49:11 UTC
This is a bit curious. I wonder why it complains about the code in gstapev2mux.cc but not the code in gstid3v2mux.cc which is (as far as I can see) exactly the same.

Anyway, could you try putting an extern "C" { ... } around the boilerplate macro, so that it looks like:

extern "C" {

GST_BOILERPLATE (GstApev2Mux, gst_apev2_mux, GstTagLibMux,
    GST_TYPE_TAG_LIB_MUX);

}

(but then again, I don't get why this works just fine for id3v2mux.cc).
Comment 2 Tim Mooney 2008-02-29 00:50:01 UTC
I just tried that, and unfortunately it didn't make any difference.  We still get all the same error messages from the compiler as before, plus a couple new warnings.
Comment 3 Tim Mooney 2008-02-29 01:09:43 UTC
Looking at the errors some more, I think the errors we want to pay attention to are the *second* error that appears for each line number, about "Formal argument".  For example:

"gstapev2mux.cc", line 127: Error: Formal argument s of type const TagLib::String& in call to TagLib::APE::Tag::setTitle(const TagLib::String&) is being passed int.

If I'm groking the compiler correctly, that means that in this call

         apev2tag->setTitle (String::String (title, String::UTF8));

the "String::String (title, String::UTF8)" results in something of type int, not
type const TagLib::String&.

That still doesn't tell me why it's happening, but I think that's where we should focus.

Comment 4 Tim-Philipp Müller 2008-02-29 11:04:50 UTC
Let's keep it open then :)

Comment 5 Tim-Philipp Müller 2010-04-29 20:06:20 UTC
Does this still happen with the latest release or git? (There was something messed up with the flags passed to the C++ compiler, but I don't remember the details right now).

Brian: did you ever run into this? Any idea what's going on here?
Comment 6 Brian Cameron 2010-05-03 22:26:29 UTC
I just tested building the SUNWgnome-media.spec file using the SS12 compiler and the taglib plugin in gst-plugins-good builds fine for me.  I did have to make some fixes to the spec-files to build that taglib plugin, but this was to fix some issues with our spec-file and not an issue with the code.  These fixes are in spec-files SVN head.

So, if the bug submitter uses the latest Sun Studio 12 compiler, and ensures that they build GStreamer the same way as we do in the spec-file, it should work.

  http://src.opensolaris.org/source/xref/jds/spec-files/trunk/

Note the files specs/SUNWgnome-media.spec file which is the top-level spec-file.  It references the base-specs/gst.spec, base-specs/gst-plugins-base.spec and base-specs/gst-plugins-good.spec files.  These spec-files also references several patches in the patches subdirectory which all have names "gst*.diff".

The fixes I made to the above spec-files to make the taglib plugin build if taglib is installed are already upstream so they can be viewed via the above URL.

So, I do not think this is a bug.  Note that building GStreamer is a bit picky about setting up the environment and configure options properly, so building the same way as we do using these spec-files should work better.
Comment 7 Tobias Mueller 2010-06-26 19:28:33 UTC
Hm. Closing as NOTABUG as per last comment then... But please feel free to reopen.