GNOME Bugzilla – Bug 462238
Brasero does not build against glibc 2.6 - changes to sg
Last modified: 2008-02-08 22:14:51 UTC
Please describe the problem: There's been a change in sg in glibc 2.6; Brasero doesn't build against it. SG_FLAG_LUN_INHIBIT has become SG_FLAG_UNUSED_LUN_INHIBIT . Just changing the usage of SG_FLAG_LUN_INHIBIT in src/scsi/scsi-sg.c (and possibly src/scsi/scsi-command.c , but I think that one's commented anyway) to SG_FLAG_UNUSED_LUN_INHIBIT fixes the problem. Steps to reproduce: 1. Try to build Brasero 0.6.0 against glibc 2.6. Actual results: It fails. Expected results: It succeeds. Does this happen every time? Yes. Other information:
i'm using glibc 2.6 and it builds fine but i'll take a look at this to make sure we need to change that. Here is my glibc info: GNU C Library stable release version 2.6, by Roland McGrath et al. Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiled by GNU CC version 4.1.2 (Gentoo 4.1.2). Compiled on a Linux >>2.6.22-gentoo-r1<< system on 2007-07-15. Available extensions: C stubs add-on version 2.1.2 crypt add-on version 2.1 by Michael Glad and others Gentoo patchset 1.4 GNU Libidn by Simon Josefsson Native POSIX Threads Library by Ulrich Drepper et al Support for some architectures added on, not maintained in glibc core. BIND-8.2.3-T5B For bug reporting instructions, please see: <http://www.gnu.org/software/libc/bugs.html>.
Hmm, not sure exactly what changed then - I just figured it was glibc because this appears to be a glibc function and we went from glibc 2.5 to glibc 2.6 since I last got a successful build. Also, the build succeeds on 2007 Spring (our last stable release) which is on glibc 2.5. Anyway, the file in question is /usr/include/scsi/sg.h , which on Mandriva Cooker, looks like this (the section in question): /* following flag values can be "or"-ed together */ #define SG_FLAG_DIRECT_IO 1 /* default is indirect IO */ #define SG_FLAG_UNUSED_LUN_INHIBIT 2 /* default is overwrite lun in SCSI */ /* command block (when <= SCSI_2) */ #define SG_FLAG_MMAP_IO 4 /* request memory mapped IO */ #define SG_FLAG_NO_DXFER 0x10000 /* no transfer of kernel buffers to/from */ /* user space (debug indirect IO) */ (at line 121) The file is tagged as "Version: 3.5.34 (20060920)".
Mine contains the same but it's strange since it appears to work on other distros except mandriva. Can you attach that header ? i'll compare to mine. PS: Mine is located at /usr/include/gentoo-multilib/amd64/scsi/sg.h
Sure, here you go.
Created attachment 93621 [details] sg.h from Mandriva Cooker
I compared mandriva sg.h with gentoo and ubuntu ones and it seems that mandriva is very different from the other two. I would complain to the glibc maintainer this doesn't seem a bug on brasero library like every distro is accepting this. Until there you might have to patch our library to run with your glibc.
Thanks. I'll check with the glibc developer. It's easy enough to just stick with the patch for now. What version of Gentoo and Ubuntu did you check with? Are they on latest glibc?
yes both with 2.6.1 but from what i know gentoo is using the fedora patchset, take a look at the cvs.
Is this fixed ?
we're still using the patch. I didn't get around to checking with our glibc maintainer the reason for the discrepancy, we're rather busy right now.
Better check this bug again because glibc 2.7 is out.
Luis can you review it with the newest glibc?
(well, our adam if mandriva also ships glibc 2.7 what i expect)
Sorry, I should have updated this bug: we updated to glibc 2.7 in Cooker a few weeks back, and the next time I built Brasero, I found I had to drop this patch. So I don't know what was going on there, but feel free to resolve the bug as INVALID. Thanks.
Closed as of comment 14