It appears that libMXF++ is using libMXF header files that don't have the audio channel labels and keys declarations. The audio channel labels and keys were added to libMXF around Jan 19th 2016.
Could your system have an older version of libMXF installed in /usr/local/include/libMXF-1.0/ for example?
In the installed libMXF you should see definitions such as "MXF_SET_DEFINITION(MCALabelSubDescriptor, AudioChannelLabelSubDescriptor,..." in mxf/mxf_baseline_data_model.h. You could try "make V=1" so that you see the include paths used in the g++ compile command.
Philip
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
hhhmmm, thanks, yes we have an older version installed. Using this option "V=1" showed that I included both the default path /usr/local/include... AND the new path /var/tmp/bmxlib-20160705.... see the log below. I had no success with telling rpmbuild in my spec file that /var/tmp... is the only path to use (RPM_BUILD_ROOT).
In the meantime I could build, install and use bmx in our development linux after remoiving the bmx package. But removing old packages is is not the best way to work. Any ideas?
I don't know the details of rpmbuild but when using configure you can set the PKG_CONFIG_PATH enviroment variable to the directory containing the pkg-config which has the include and library paths. E.g. "PKG_CONFIG_PATH=/var/tmp/bmxlib-20160705-build/usr/local/lib/pkgconfig ./configure ...".
Philip
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for fixing bmx!!
I have cloned the 3 git repositories bmx, libmxf and libmxfpp because there ist no tar-file to download.
I have copied uriparser and expat-directories into the new environment.
But the build fails: install-sh is missing.
In fact this file and some others can be found In the bmx folder of the last tar-file bmx-snapshot-20160705.tar but are missing in the bmx-folder of the git repo.
What is the best way to do?
Christine
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Are you running the autogen.sh in the directory? Automake should be adding the file if it is missing. On my system I get these messages when running autogen.sh:
...
+ automake --foreign --add-missing -c
...
configure.ac:28: installing './install-sh'
...
One thing I noticed is that it doesn't install it if a parent directory of the repository had the file. configure appears to check "$srcdir", "$srcdir/.." and "$srcdir/../.." for install-sh. I don't know if that helps your issue.
Philip
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think our automake is too old, but we can't get a newer version for our Linux Distribution.
the highest available version is 1.10.1
Running autogen.sh generates the following error:
./autogen.sh
+ aclocal -I m4
configure.ac:29: warning: macro `AM_SILENT_RULES' not found in library
+ libtoolize -c
+ autoheader -f
+ automake --foreign --add-missing -c
configure.ac:28: require Automake 1.11, but have 1.10.1
+ autoconf
configure.ac:29: error: possibly undefined macro: AM_SILENT_RULES
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Is it possible to copy some files from the last snapshot-tar-file, so that we don't need autogen?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It might work, I don't know. Another option is to see whether configure.ac can be changed to allow your version of autotools to be used. E.g. change the AM_INIT_AUTOMAKE line to AM_INIT_AUTOMAKE([-Wall]) and the AM_SILENT_RULES one to m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]).
Philip
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
When I build BMX bmx-snapshot-20160705 on OSX it compiles and runs.
But when I build the same C++ program in Linux (SUSE Linux Enterprise Server 11 SP3 (x86_64)) , it fails, see error log.
fails:
bmx-snapshot-20160705 (newest version)
bmx-snapshot-20160330
works:
bmx-snapshot-20150603
bmx-snapshot-20141125
Error-log:
...
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libMXF++/Makefile
config.status: creating libMXF++/metadata/Makefile
config.status: creating libMXF++/metadata/base/Makefile
config.status: creating libMXF++/extensions/Makefile
config.status: creating examples/Makefile
config.status: creating examples/Common/Makefile
config.status: creating examples/D10MXFOP1AWriter/Makefile
config.status: creating examples/OPAtomReader/Makefile
config.status: creating test/Makefile
config.status: creating tools/Makefile
config.status: creating tools/gen_classes/Makefile
config.status: creating msvc_build/Makefile
config.status: creating msvc_build/vs10/Makefile
config.status: creating libMXF++.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
+ make install DESTDIR=/var/tmp/bmxlib-20160705-build
sh ./gen_scm_version.sh mxfpp_scm_version.h ./mxfpp_scm_version.h LIBMXFPP_SCM_VERSION
make install-recursive
make[1]: Entering directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++' Making install in libMXF++ make[2]: Entering directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++'Making install in metadata
make[3]: Entering directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++/metadata' Making install in base make[4]: Entering directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++/metadata/base'CXX libbase_la-AES3AudioDescriptorBase.lo
CXX libbase_la-ANCDataDescriptorBase.lo
CXX libbase_la-AudioChannelLabelSubDescriptorBase.lo
AudioChannelLabelSubDescriptorBase.cpp:43: error: 'g_AudioChannelLabelSubDescriptor_set_key' was not declared in this scope
AudioChannelLabelSubDescriptorBase.cpp: In member function 'bool mxfpp::AudioChannelLabelSubDescriptorBase::haveSoundfieldGroupLinkID() const':
AudioChannelLabelSubDescriptorBase.cpp:62: error: 'g_AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID_item_key' was not declared in this scope
AudioChannelLabelSubDescriptorBase.cpp: In member function 'mxfUUID mxfpp::AudioChannelLabelSubDescriptorBase::getSoundfieldGroupLinkID() const':
AudioChannelLabelSubDescriptorBase.cpp:67: error: 'g_AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID_item_key' was not declared in this scope
AudioChannelLabelSubDescriptorBase.cpp: In member function 'void mxfpp::AudioChannelLabelSubDescriptorBase::setSoundfieldGroupLinkID(mxfUUID)':
AudioChannelLabelSubDescriptorBase.cpp:72: error: 'g_AudioChannelLabelSubDescriptor_SoundfieldGroupLinkID_item_key' was not declared in this scope
make[4]: [libbase_la-AudioChannelLabelSubDescriptorBase.lo] Error 1
make[4]: Leaving directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++/metadata/base' make[3]: *** [install-recursive] Error 1 make[3]: Leaving directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++/metadata'make[2]: [install-recursive] Error 1
make[2]: Leaving directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++/libMXF++' make[1]: *** [install-recursive] Error 1 make[1]: Leaving directory
/home/vio-jboss/rpmbuild/BUILD/bmx-snapshot-20160705/libMXF++'make: *** [install] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.84100 (%build)
It appears that libMXF++ is using libMXF header files that don't have the audio channel labels and keys declarations. The audio channel labels and keys were added to libMXF around Jan 19th 2016.
Could your system have an older version of libMXF installed in /usr/local/include/libMXF-1.0/ for example?
In the installed libMXF you should see definitions such as "MXF_SET_DEFINITION(MCALabelSubDescriptor, AudioChannelLabelSubDescriptor,..." in mxf/mxf_baseline_data_model.h. You could try "make V=1" so that you see the include paths used in the g++ compile command.
Philip
hhhmmm, thanks, yes we have an older version installed. Using this option "V=1" showed that I included both the default path /usr/local/include... AND the new path /var/tmp/bmxlib-20160705.... see the log below. I had no success with telling rpmbuild in my spec file that /var/tmp... is the only path to use (RPM_BUILD_ROOT).
In the meantime I could build, install and use bmx in our development linux after remoiving the bmx package. But removing old packages is is not the best way to work. Any ideas?
Christine
/bin/sh ../../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../.. -W -Wall -I/usr/local/include/libMXF-1.0 -I../../.. -I/var/tmp/bmxlib-20160705-build/usr/local/include/libMXF-1.0/ -MT libbase_la-AudioChannelLabelSubDescriptorBase.lo -MD -MP -MF .deps/libbase_la-AudioChannelLabelSubDescriptorBase.Tpo -c -o libbase_la-AudioChannelLabelSubDescriptorBase.lo
test -f 'AudioChannelLabelSubDescriptorBase.cpp' || echo './'
AudioChannelLabelSubDescriptorBase.cppI don't know the details of rpmbuild but when using configure you can set the PKG_CONFIG_PATH enviroment variable to the directory containing the pkg-config which has the include and library paths. E.g. "PKG_CONFIG_PATH=/var/tmp/bmxlib-20160705-build/usr/local/lib/pkgconfig ./configure ...".
Philip
Thanks for fixing bmx!!
I have cloned the 3 git repositories bmx, libmxf and libmxfpp because there ist no tar-file to download.
I have copied uriparser and expat-directories into the new environment.
But the build fails: install-sh is missing.
In fact this file and some others can be found In the bmx folder of the last tar-file bmx-snapshot-20160705.tar but are missing in the bmx-folder of the git repo.
What is the best way to do?
Christine
Are you running the autogen.sh in the directory? Automake should be adding the file if it is missing. On my system I get these messages when running autogen.sh:
...
+ automake --foreign --add-missing -c
...
configure.ac:28: installing './install-sh'
...
One thing I noticed is that it doesn't install it if a parent directory of the repository had the file. configure appears to check "$srcdir", "$srcdir/.." and "$srcdir/../.." for install-sh. I don't know if that helps your issue.
Philip
There is no install-sh in the parent directories,
I think our automake is too old, but we can't get a newer version for our Linux Distribution.
the highest available version is 1.10.1
Running autogen.sh generates the following error:
./autogen.sh
+ aclocal -I m4
configure.ac:29: warning: macro `AM_SILENT_RULES' not found in library
+ libtoolize -c
+ autoheader -f
+ automake --foreign --add-missing -c
configure.ac:28: require Automake 1.11, but have 1.10.1
+ autoconf
configure.ac:29: error: possibly undefined macro: AM_SILENT_RULES
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
Is it possible to copy some files from the last snapshot-tar-file, so that we don't need autogen?
It might work, I don't know. Another option is to see whether configure.ac can be changed to allow your version of autotools to be used. E.g. change the AM_INIT_AUTOMAKE line to AM_INIT_AUTOMAKE([-Wall]) and the AM_SILENT_RULES one to m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]).
Philip
Hi Philip, changing the configure.ac worked well!
I could build the bmx. Thanks!
I was testing this bmx and we had success with all our use cases, great!
Best regards from all of us (and from my team leader Mirko Zimmer!)