% sox 15.Meiko_Kaji-Urami_Bushi.mp3 meiko_kaji-urami_bushi.mp3 trim 0:00
3:32
sox FAIL util: Unable to load LAME encoder library (libmp3lame).
sox FAIL formats: can't open output file `meiko_kaji-urami_bushi.mp3':
First of all, I do have libmp3lame0 installed. Secondly, I don't really
want this operation to do any reencoding.
--
To UNSUBSCRIBE, email to debian-bugs-...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org
Hello Michael,
a priori, I'm unable to reproduce the issue.
Can you rerun with "-V4" and attach the output to see if we get more
information?
I'm assuming that you have libmp3lame0 3.98.4-0.0 packaged by
Christian Marillat.
Please correct me if I'm wrong.
Cheers,
-Pascal
--
Homepage (http://organact.mine.nu)
Debian GNU/Linux (http://www.debian.org)
COMunité/LACIME: École de technologie supérieure (http://www.comunite.ca)
Integrated Microsystems Laboratory: McGill (http://www.iml.ece.mcgill.ca)
> I'm assuming that you have libmp3lame0 3.98.4-0.0 packaged by
> Christian Marillat.
right, I have his package which contains /usr/lib/libmp3lame.so.0 and
/usr/lib/libmp3lame.so.0.0.0
Here's an strace of what sox tries:
write(2, "Attempting to open LAME encoder "..., 53Attempting to open
LAME encoder library (libmp3lame).) = 53
write(2, "\n", 1
) = 1
open("/lib/libmp3lame.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libmp3lame.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/local/lib/libmp3lame.la", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/lib/x86_64-linux-gnu/libmp3lame.la", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/libmp3lame.la", O_RDONLY) = -1 ENOENT
(No such file or directory)
access("/lib/libmp3lame.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/lib/libmp3lame.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/local/lib/libmp3lame.so", R_OK) = -1 ENOENT (No such file
or directory)
access("/lib/x86_64-linux-gnu/libmp3lame.so", R_OK) = -1 ENOENT (No such
file or directory)
access("/usr/lib/x86_64-linux-gnu/libmp3lame.so", R_OK) = -1 ENOENT (No
such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=86409, ...}) = 0
mmap(NULL, 86409, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fcf7ed25000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/tls/x86_64/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/lib/tls/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/lib/tls/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/lib/tls", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/lib/x86_64/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/lib/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/lib/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
open("/usr/lib/tls/x86_64/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/usr/lib/tls/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/usr/lib/tls/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such file
or directory)
stat("/usr/lib/tls", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/usr/lib/x86_64/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
stat("/usr/lib/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libmp3lame.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=77824, ...}) = 0
open("/lib/x86_64-linux-gnu/tls/x86_64/libmp3lame.so", O_RDONLY) = -1
ENOENT (No such file or directory)
stat("/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No
such file or directory)
open("/lib/x86_64-linux-gnu/tls/libmp3lame.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/lib/x86_64-linux-gnu/tls", 0x7fff8e38eed0) = -1 ENOENT (No such
file or directory)
open("/lib/x86_64-linux-gnu/x86_64/libmp3lame.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/lib/x86_64-linux-gnu/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No
such file or directory)
open("/lib/x86_64-linux-gnu/libmp3lame.so", O_RDONLY) = -1 ENOENT (No
such file or directory)
stat("/lib/x86_64-linux-gnu", 0x7fff8e38eed0) = -1 ENOENT (No such file
or directory)
open("/usr/lib/x86_64-linux-gnu/tls/x86_64/libmp3lame.so", O_RDONLY) =
-1 ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7fff8e38eed0) = -1 ENOENT
(No such file or directory)
open("/usr/lib/x86_64-linux-gnu/tls/libmp3lame.so", O_RDONLY) = -1
ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/tls", 0x7fff8e38eed0) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/x86_64/libmp3lame.so", O_RDONLY) = -1
ENOENT (No such file or directory)
stat("/usr/lib/x86_64-linux-gnu/x86_64", 0x7fff8e38eed0) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/libmp3lame.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
stat("/usr/lib/x86_64-linux-gnu", 0x7fff8e38eed0) = -1 ENOENT (No such
file or directory)
munmap(0x7fcf7ed25000, 86409) = 0
write(2, "sox DBUG ", 9sox DBUG ) = 9
write(2, "util: ", 6util: ) = 6
write(2, "Attempting to open LAME encoder "..., 55Attempting to open
LAME encoder library (libmp3lame-0).) = 55
write(2, "\n", 1
) = 1
open("/lib/libmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/local/lib/libmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/lib/x86_64-linux-gnu/libmp3lame-0.la", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/libmp3lame-0.la", O_RDONLY) = -1 ENOENT
(No such file or directory)
access("/lib/libmp3lame-0.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/lib/libmp3lame-0.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/local/lib/libmp3lame-0.so", R_OK) = -1 ENOENT (No such file
or directory)
access("/lib/x86_64-linux-gnu/libmp3lame-0.so", R_OK) = -1 ENOENT (No
such file or directory)
access("/usr/lib/x86_64-linux-gnu/libmp3lame-0.so", R_OK) = -1 ENOENT
(No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=86409, ...}) = 0
mmap(NULL, 86409, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fcf7ed25000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/libmp3lame-0.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libmp3lame-0.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
munmap(0x7fcf7ed25000, 86409) = 0
write(2, "sox DBUG ", 9sox DBUG ) = 9
write(2, "util: ", 6util: ) = 6
write(2, "Attempting to open LAME encoder "..., 51Attempting to open
LAME encoder library (lame-enc).) = 51
write(2, "\n", 1
) = 1
open("/lib/lame-enc.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/lame-enc.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/local/lib/lame-enc.la", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/lib/x86_64-linux-gnu/lame-enc.la", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib/x86_64-linux-gnu/lame-enc.la", O_RDONLY) = -1 ENOENT (No
such file or directory)
access("/lib/lame-enc.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/lib/lame-enc.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/local/lib/lame-enc.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/lib/x86_64-linux-gnu/lame-enc.so", R_OK) = -1 ENOENT (No such
file or directory)
access("/usr/lib/x86_64-linux-gnu/lame-enc.so", R_OK) = -1 ENOENT (No
such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=86409, ...}) = 0
mmap(NULL, 86409, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fcf7ed25000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/lame-enc.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/lame-enc.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
munmap(0x7fcf7ed25000, 86409) = 0
write(2, "sox DBUG ", 9sox DBUG ) = 9
write(2, "util: ", 6util: ) = 6
write(2, "Attempting to open LAME encoder "..., 55Attempting to open
LAME encoder library (cygmp3lame-0).) = 55
write(2, "\n", 1
) = 1
open("/lib/cygmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/cygmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/local/lib/cygmp3lame-0.la", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/lib/x86_64-linux-gnu/cygmp3lame-0.la", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib/x86_64-linux-gnu/cygmp3lame-0.la", O_RDONLY) = -1 ENOENT
(No such file or directory)
access("/lib/cygmp3lame-0.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/lib/cygmp3lame-0.so", R_OK) = -1 ENOENT (No such file or
directory)
access("/usr/local/lib/cygmp3lame-0.so", R_OK) = -1 ENOENT (No such file
or directory)
access("/lib/x86_64-linux-gnu/cygmp3lame-0.so", R_OK) = -1 ENOENT (No
such file or directory)
access("/usr/lib/x86_64-linux-gnu/cygmp3lame-0.so", R_OK) = -1 ENOENT
(No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=86409, ...}) = 0
mmap(NULL, 86409, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7fcf7ed25000
close(5) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
open("/lib/cygmp3lame-0.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/cygmp3lame-0.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
munmap(0x7fcf7ed25000, 86409) = 0
write(2, "sox FAIL ", 9sox FAIL ) = 9
Regards,
Michael
[...]
Oh! This looks like it may be an upstream issue.
SoX looks for libmp3lame.so but not libmp3lame.so.0.
While it's only a symlink to so.0, the .so is "installed" by
libmp3lame-dev this if you install the latter, it should work.
That being said, having the dev package should not be required.
SoX dev guys: Under Debian and Fedora at least, the .so symlink is
created by the -dev or Devel packages respectively. So I wonder how
other applications using libltdl handle a situation like this. Do they
depend on the -dev/Devel package (which I'd like to avoid at all cost)
or do they workaround the issue by e.g. calling lt_dladvise_ext to get
the OS-specific extension and then look for libname.advised_ext*
before issuing an lt_dlopen on the found files...?
Chris, Doug, Robs, do you have thoughts on this?
Cheers,
-Pascal
--
Homepage (http://organact.mine.nu)
Debian GNU/Linux (http://www.debian.org)
COMunité/LACIME: École de technologie supérieure (http://www.comunite.ca)
Integrated Microsystems Laboratory: McGill (http://www.iml.ece.mcgill.ca)
--
I guess we only stressed this on windows were we've hit the problem
but solved it differently. It looks for both libmp3lame.dll/.so and
libmp3lame-0.dll/.so; "-0" be windows version of .so version #'s.
I couldn't really find any common solutions to this so I guess the
main solution would be to add libmp3lame.so.0 to the list of filenames
to search for. I think lt_dlopenext() can handle this full name.
Chris
On Wed, May 25, 2011 at 1:49 PM, Chris Bagwell <ch...@cnpbagwell.com> wrote:
[...]
> I guess we only stressed this on windows were we've hit the problem
> but solved it differently. It looks for both libmp3lame.dll/.so and
> libmp3lame-0.dll/.so; "-0" be windows version of .so version #'s.
>
> I couldn't really find any common solutions to this so I guess the
> main solution would be to add libmp3lame.so.0 to the list of filenames
> to search for. I think lt_dlopenext() can handle this full name.
at least here, lt_dlopenext() goes straight to attempting
libmp3lame.so.0.{la,so} when "libmp3lame.so.0" is specified.
I can't seem to find a way to modify the extensions it will attempt,
it does not seem to be accessible from the outside of ltdl.
lt_dlforeachfile seems to be total overkill for this and only returns
the filename without the extension anyway... (in my case it calls my
function with /usr/lib/libmp3lame while only
/usr/lib/libmp3lame{.so.0,.so.0.0.0} exist).
But ltdl does not seem to be designed for our purpose as there is no
other mechanism...
I could only fix this by using lt_dlopen() with a full filename
(appended extension myself with sprintf).
I'm to shy to share my ugly patch tho as it involves a fixed size char
array that can only be abused.
(The magic should happen in the lsx_open_dllibrary function of src/util.c).
-Pascal
--
Homepage (http://organact.mine.nu)
Debian GNU/Linux (http://www.debian.org)
COMunité/LACIME: École de technologie supérieure (http://www.comunite.ca)
Integrated Microsystems Laboratory: McGill (http://www.iml.ece.mcgill.ca)
--
Thanks for feedback on behavior.
I'm not up for re-implementing lt_dlopenext() at the moment although
that sounds like best way to go. I'm thinking as a short term fix we
could scan the filename for a ".". If found use lt_dlopen() and if
not use lt_dlopenext()?
Of course, still update all the various library lists to include an
exact .so name.
Chris