Red Hat Bugzilla – Bug 237575
libsndfile should be rebuilt with flac support
Last modified: 2008-06-16 21:18:20 EDT
Description of problem:
Application linked with libsndfile 1.0.17 on FC6 is not able to write flac
files. libsndfile is not available as a component above, yet it is available in
the bugzilla search. :-o
Version-Release number of selected component (if applicable):
Try to open a flac file using libsndfile sf_open.
Steps to Reproduce:
Returns a null pointer with no indication of what is wrong
File open and ready to write.
I am developing an app that writes sound files. When I link it with
the FC6 libsndfile libraries, either statically or dynamically, it gives
me an error that it cannot open the file. It is able to create the
file, because I see it there empty. When I compile the libsndfile
1.0.17 source myself, and link statically to it, the application is
able to create and write the file
> And mystery solved. At configuration, libsndfile checks
> for flac. It it isn't there, it puts in a stub that returns an error.
> Libsndfile just returns a null pointer in this case so there is no
> indication of what is wrong. The maintainer of the
> libsndfile package doesn't have flac installed on the machine they
> compile on. That's why it worked when I compiled on my machine where
> flac is installed.
Then that is a missing "BuildRequires: flac-devel" in the Fedora
Extras 6 package. Can you please submit a bug report about your
problem at http://bugzilla.redhat.com
This is a problem in F7 as well.
I think this bug was filed against the wrong component originally. I've
corrected this and am changing the assignment of this bug to the libsndfile
package maintainer. I hope you guys don't mind! Thanks!
Yeah, when I was opening the bug, the initial list had FLAC in it but the second
one didn't so I picked a close one (ogg if I recall). Now that I have more
experience I see that I should have selected libsndfile.
Thx for the bug reassignment.
I'm gonna push an update with flac support then. Might be a few days though.
I tried compiling libsndfile with the latest version of flac, 1.1.4 and it fails
as the API changed between 1.1.2 and 1.1.4. I modified libsndfile module flac.c
and submitted a patch to the creator of libsndfile.
Perhaps a new version of libsndfile will be coming out with these changes. So I
suggest you hold off for now.
Erik de Castro Lopo responded to my submission. He already had a pre release
version with the FLAC changes in it already. So it should not be that long till
a new and improved version of libsndfile is available.
(In reply to comment #6)
> Erik de Castro Lopo responded to my submission. He already had a pre release
> version with the FLAC changes in it already. So it should not be that long till
> a new and improved version of libsndfile is available.
Stan? How far is the flac support? We have another package in fedora which needs
flac support in libsndfile.
Do you want me to add your patch to the rpm? I'm willing to push a sndfile with
flac for rawhide and probably f7 as well.
I used the beta version successfully for flac. You could add my patch to the
RPM, but when I contacted Erik his response was to point me to the beta.
Here is the link. I suspect that this is ready for prime time, it just needs
Erik to sign off. firstname.lastname@example.org
Here is part of his response to me. You could mention that you are pulling it
for production use and get his feedback.
I hope you didn't put too much work into this, because I have a number
or pre-releases here:
that already fixed this. Basically I pulled the bits of the FLAC sources
I needed into the libsndfile tree. This insulates libsndfile from
upstream changes like the one you mention, but alis makes it far easier
to compile libsndfile with FLAC support on windows and MacOSX.
If you are uncomfortable with this or it doesn't work for some reason, you can
use my patch for libsndfile-1.0.17. Let me know as I'll have to dig around to
find it. The new libsndfile has a dependency on Octave.
Created attachment 194801 [details]
Patches libsndfile-1.0.17 to use flac 1.1.4
Not extensively tested, but passed the internal libsndfile tests.
I found the patch and have attached it.
The Octave dependency is for version 2.9.9. The dependency on Octave doesn't
appear new as there is an Octave subdirectory in libsndfile-1.0.17.
Great. Taking a quick look at the pre release ruins my day. It seems upstream is
statically linking against a packaged copy of the flac library.
This cannot be packaged as it's against fedora policy. Keeping your own library
copy around just asks for trouble in the case of a security update.
So I guess, this needs some patching...
libsndfile-1.0.17-2.fc7 has been pushed to the Fedora 7 stable repository. If problems still persist, please make note of it in this bug report.
I tried this on rawhide today. It fails with the same error as it did with
libsndfile-1.0.17-1.fc7. I took a look at the configure file and there is a lot
of validation that flac is present. It is using some calls that are no longer
present in version 1.1.4 and greater. They are part of the API change that the
patch was for. It would be possible to change the configure file but seems more
complete to change the acinclude.m4 and aclocal.m4 files. Rawhide has flac
I must have configured with libFLAC 1.1.2 present and then used that configure
to make the library after my patch. I'll check the autoconf macro for libFLAC
and see if I can get it working properly for autoreconf to generate a valid
configure file on rawhide with libFLAC 1.2.1 present.
Feel free to do this too if you want. There is no guarantee that I will be
In addition I'll try this on Fedora 7 as soon as this newer version of
libsndfile is available (wasn't as of yesterday).
It appears that all of the changes between libFLAC 1.1.4 and libFLAC 1.2.1 were
added functionality for the API (no modifications to existing functions), so it
should be enough to check for the 1.1.4 functionality to satisfy libsndfile.
* Interface changes (see also the porting guide for specific instructions
on porting to FLAC 1.2.1):
+ Added FLAC__metadata_simple_iterator_is_last()
+ Added FLAC__metadata_simple_iterator_get_block_offset()
+ Added FLAC__metadata_simple_iterator_get_block_length()
+ Added FLAC__metadata_simple_iterator_get_application_id()
+ Added FLAC::Metadata::SimpleIterator::is_last()
+ Added FLAC::Metadata::SimpleIterator::get_block_offset()
+ Added FLAC::Metadata::SimpleIterator::get_block_length()
+ Added FLAC::Metadata::SimpleIterator::get_application_id()
* Interface changes (see also the porting guide for specific instructions
on porting to FLAC 1.2.0):
+ Added FLAC__format_sample_rate_is_subset()
+ Added FLAC::Decoder::Stream::get_decode_position()
I will therefore look at the libtool version numbers in libflac 1.2.1 and see
which are suitable for libsndfile with the new version flac API calls. The
autoconf macro should only accept those when configuring libsndfile with the
patch applied (version libflac 1.1.4 or greater). To do this correctly, (if I
was maintaining libsndfile), I would use the method defined in the porting guide
http://flac.sourceforge.net/api/group__porting.html for libFLAC to do version
specific compilation of libsndfile.
What are your thoughts? Is it necessary to support legacy libFLAC with
libsndfile under Fedora? It probably wouldn't be too hard to do so if necessary.
I've attached two patch files for libsndfile-1.0.17 to convert it for use with
libFLAC versions 1.1.1, 1.1.2, and >= 1.1.3. One is for the configure.ac in the
top level directory, the other is for the flac.c file in src. Once you have
applied the patches, run autoreconf in the top level directory to regenerate the
configure file. Then use the standard ./configure, make to compile it. This
compiled cleanly on rawhide with libFLAC 1.2.1 installed. It should work with
earlier versions as I put in conditional code to adjust for version of libFLAC.
The internal tests work fine, and I was able to successfully link with the
library and encode and decode flac files on rawhide with libFLAC 1.2.1.
Created attachment 206341 [details]
patch for configure.ac of libsndfile-1.0.17 to update FLAC to 1.2.1
Created attachment 206351 [details]
Patch for flac.c of libsndfile-1.0.17 to update to FLAC 1.2.1
libsndfile-1.0.17-2.fc7 arrived on my Fedora 7 with the latest updates. I
recompiled and the problem is still there, the same as on rawhide. I will now
put in place the modifications I used in rawhide above and see if they generate
a library that works for flac with the version of libflac on Fedora 7 (1.1.4).
Downloaded the tar.gz file for libsndfile-1.0.17 and unpacked. Put the above
patches into the package. autoreconf complained about the AM_CC_C_O macro (it
asked for this to be put in on rawhide) and a missing file called mkinstalldirs.
Removed the missing macro and ran again. Still complained about the missing
file. Ran configure and make, the flac library was found and identified
correctly. Set up the resulting libsndfile library as the default and
recompiled my app. Was able to create and play flac file using the libsndfile I
had installed. So the changes to flac.c are valid, but there is some difference
between the GNU autotools on Fedora 7 and rawhide that introduces problems.
I'll see if I can find out which component it is; difficult as they are
interdependent. mkinstalldirs is not in the package libsndfile and appears not
to be necessary for compilation.
There is a large difference in size between the libsndfile with flac support and
the one without, 1095398 vs 371124.
This message is a reminder that Fedora 7 is nearing the end of life. Approximately 30 (thirty) days from now Fedora will stop maintaining and issuing updates for Fedora 7. It is Fedora's policy to close all bug reports from releases that are no longer maintained. At that time this bug will be closed as WONTFIX if it remains open with a Fedora 'version' of '7'.
Package Maintainer: If you wish for this bug to remain open because you plan to fix it in a currently maintained version, simply change the 'version' to a later Fedora version prior to Fedora 7's end of life.
Bug Reporter: Thank you for reporting this issue and we are sorry that we may not be able to fix it before Fedora 7 is end of life. If you would still like to see this bug fixed and are able to reproduce it against a later version of Fedora please change the 'version' of this bug. If you are unable to change the version, please add a comment here and someone will do it for you.
Although we aim to fix as many bugs as possible during every release's lifetime, sometimes those efforts are overtaken by events. Often a more recent Fedora release includes newer upstream software that fixes bugs or makes them obsolete. If possible, it is recommended that you try the newest available Fedora distribution to see if your bug still exists.
Please read the Release Notes for the newest Fedora distribution to make sure it will meet your needs:
The process we are following is described here: http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Fedora 7 changed to end-of-life (EOL) status on June 13, 2008.
Fedora 7 is no longer maintained, which means that it will not
receive any further security or bug fix updates. As a result we
are closing this bug.
If you can reproduce this bug against a currently maintained version
of Fedora please feel free to reopen this bug against that version.
Thank you for reporting this bug and we are sorry it could not be fixed.