0.81 build trouble

View: New views
4 Messages — Rating Filter:   Alert me  

0.81 build trouble

by Adrian Reber :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I am maintaining the libcdio RPM for Fedora and while trying to update
to 0.81 I discovered an error which makes it impossible to build it.

The Fedora buildsystem is a minimal buildroot with no cdrom devices and
the build process goes into an endless loop because it cannot detect any
cdroms and when help2man tries to generate the manpages one of tools
(don't know which one anymore) does never end.

Following patch fixes it for me:

diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
index 7e2f3c4..092af0d 100644
--- a/lib/driver/gnu_linux.c
+++ b/lib/driver/gnu_linux.c
@@ -1448,7 +1448,7 @@ cdio_get_default_device_linux(void)
   /* Scan the system for CD-ROM drives.
      Not always 100% reliable, so use the USE_MNTENT code above first.
   */
-  for ( i=0; checklist2[i].format; ++i ) {
+  for ( i=0; i < checklist2_size; ++i ) {
     unsigned int j;
     for ( j=checklist2[i].num_min; j<=checklist2[i].num_max; ++j ) {
       if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)

It seems this code part still looks for an empty element at the end of
the checklist2 array which does not exist anymore.

If there is not something really wrong with my patch I will apply it for
the Fedora libcdio 0.81 package.

                Adrian



Re: 0.81 build trouble

by r- :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

If I read this patch correctly, a change like this was already made
Wed, 25 Jun 2008 07 and is part of the 0.81 release. See:

http://git.savannah.gnu.org/gitweb/?p=libcdio.git;a=commitdiff;h=9c32ef00a00642c55dd20cfecd654616021b2f48

which has a the commit entry:

  sprintf's to snprintf's and check the return.
  Turn check1list and check2list looping into a fixed constant number
of iterations
  rather than rely on a sentinal [sic].

As for help2man, I vaguely recall Yaakov Selkowitz mentioning
something about this and/or some patches that have been applied since
0.81 that may alleviate some of the problem.

Thanks for handling libcdio packaging on Fedora.

On Tue, Dec 30, 2008 at 7:46 AM, Adrian Reber <adrian@...> wrote:

> Hi,
>
> I am maintaining the libcdio RPM for Fedora and while trying to update
> to 0.81 I discovered an error which makes it impossible to build it.
>
> The Fedora buildsystem is a minimal buildroot with no cdrom devices and
> the build process goes into an endless loop because it cannot detect any
> cdroms and when help2man tries to generate the manpages one of tools
> (don't know which one anymore) does never end.
>
> Following patch fixes it for me:
>
> diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
> index 7e2f3c4..092af0d 100644
> --- a/lib/driver/gnu_linux.c
> +++ b/lib/driver/gnu_linux.c
> @@ -1448,7 +1448,7 @@ cdio_get_default_device_linux(void)
>   /* Scan the system for CD-ROM drives.
>      Not always 100% reliable, so use the USE_MNTENT code above first.
>   */
> -  for ( i=0; checklist2[i].format; ++i ) {
> +  for ( i=0; i < checklist2_size; ++i ) {
>     unsigned int j;
>     for ( j=checklist2[i].num_min; j<=checklist2[i].num_max; ++j ) {
>       if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
>
> It seems this code part still looks for an empty element at the end of
> the checklist2 array which does not exist anymore.
>
> If there is not something really wrong with my patch I will apply it for
> the Fedora libcdio 0.81 package.
>
>                Adrian
>
>
>



Re: 0.81 build trouble

by Adrian Reber :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


The commit is just missing to do the change in line 1451 like it changes
the code in 1401. In line 1401 following has been replaced:

  for ( i=0; checklist2[i].format; ++i ) {

with

   for ( i=0; i < checklist2_size; ++i ) {

This needs to be also done for line 1451 (my patch) to not rely on the
empty array element, which has been removed.

                Adrian

On Tue, Dec 30, 2008 at 11:36:23AM -0500, Rocky Bernstein wrote:

> If I read this patch correctly, a change like this was already made
> Wed, 25 Jun 2008 07 and is part of the 0.81 release. See:
>
> http://git.savannah.gnu.org/gitweb/?p=libcdio.git;a=commitdiff;h=9c32ef00a00642c55dd20cfecd654616021b2f48
>
> which has a the commit entry:
>
>   sprintf's to snprintf's and check the return.
>   Turn check1list and check2list looping into a fixed constant number
> of iterations
>   rather than rely on a sentinal [sic].
>
> As for help2man, I vaguely recall Yaakov Selkowitz mentioning
> something about this and/or some patches that have been applied since
> 0.81 that may alleviate some of the problem.
>
> Thanks for handling libcdio packaging on Fedora.
>
> On Tue, Dec 30, 2008 at 7:46 AM, Adrian Reber <adrian@...> wrote:
> > Hi,
> >
> > I am maintaining the libcdio RPM for Fedora and while trying to update
> > to 0.81 I discovered an error which makes it impossible to build it.
> >
> > The Fedora buildsystem is a minimal buildroot with no cdrom devices and
> > the build process goes into an endless loop because it cannot detect any
> > cdroms and when help2man tries to generate the manpages one of tools
> > (don't know which one anymore) does never end.
> >
> > Following patch fixes it for me:
> >
> > diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
> > index 7e2f3c4..092af0d 100644
> > --- a/lib/driver/gnu_linux.c
> > +++ b/lib/driver/gnu_linux.c
> > @@ -1448,7 +1448,7 @@ cdio_get_default_device_linux(void)
> >   /* Scan the system for CD-ROM drives.
> >      Not always 100% reliable, so use the USE_MNTENT code above first.
> >   */
> > -  for ( i=0; checklist2[i].format; ++i ) {
> > +  for ( i=0; i < checklist2_size; ++i ) {
> >     unsigned int j;
> >     for ( j=checklist2[i].num_min; j<=checklist2[i].num_max; ++j ) {
> >       if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
> >
> > It seems this code part still looks for an empty element at the end of
> > the checklist2 array which does not exist anymore.
> >
> > If there is not something really wrong with my patch I will apply it for
> > the Fedora libcdio 0.81 package.
> >
> >                Adrian
> >
> >
> >
>

                Adrian

--
Adrian Reber <adrian@...>            http://lisas.de/~adrian/
Someone is standing on the ethernet cable, causeing a kink in the cable



Re: 0.81 build trouble

by Rocky Bernstein :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ok. Patch committed now in git source. Please double check to make
sure I haven't made a mistake (which as can be verified in this
thread) sometimes happens.

Thanks.

On Tue, Dec 30, 2008 at 11:46 AM, Adrian Reber <adrian@...> wrote:

>
> The commit is just missing to do the change in line 1451 like it changes
> the code in 1401. In line 1401 following has been replaced:
>
>  for ( i=0; checklist2[i].format; ++i ) {
>
> with
>
>   for ( i=0; i < checklist2_size; ++i ) {
>
> This needs to be also done for line 1451 (my patch) to not rely on the
> empty array element, which has been removed.
>
>                Adrian
>
> On Tue, Dec 30, 2008 at 11:36:23AM -0500, Rocky Bernstein wrote:
>> If I read this patch correctly, a change like this was already made
>> Wed, 25 Jun 2008 07 and is part of the 0.81 release. See:
>>
>> http://git.savannah.gnu.org/gitweb/?p=libcdio.git;a=commitdiff;h=9c32ef00a00642c55dd20cfecd654616021b2f48
>>
>> which has a the commit entry:
>>
>>   sprintf's to snprintf's and check the return.
>>   Turn check1list and check2list looping into a fixed constant number
>> of iterations
>>   rather than rely on a sentinal [sic].
>>
>> As for help2man, I vaguely recall Yaakov Selkowitz mentioning
>> something about this and/or some patches that have been applied since
>> 0.81 that may alleviate some of the problem.
>>
>> Thanks for handling libcdio packaging on Fedora.
>>
>> On Tue, Dec 30, 2008 at 7:46 AM, Adrian Reber <adrian@...> wrote:
>> > Hi,
>> >
>> > I am maintaining the libcdio RPM for Fedora and while trying to update
>> > to 0.81 I discovered an error which makes it impossible to build it.
>> >
>> > The Fedora buildsystem is a minimal buildroot with no cdrom devices and
>> > the build process goes into an endless loop because it cannot detect any
>> > cdroms and when help2man tries to generate the manpages one of tools
>> > (don't know which one anymore) does never end.
>> >
>> > Following patch fixes it for me:
>> >
>> > diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
>> > index 7e2f3c4..092af0d 100644
>> > --- a/lib/driver/gnu_linux.c
>> > +++ b/lib/driver/gnu_linux.c
>> > @@ -1448,7 +1448,7 @@ cdio_get_default_device_linux(void)
>> >   /* Scan the system for CD-ROM drives.
>> >      Not always 100% reliable, so use the USE_MNTENT code above first.
>> >   */
>> > -  for ( i=0; checklist2[i].format; ++i ) {
>> > +  for ( i=0; i < checklist2_size; ++i ) {
>> >     unsigned int j;
>> >     for ( j=checklist2[i].num_min; j<=checklist2[i].num_max; ++j ) {
>> >       if (snprintf(drive, sizeof(drive), checklist2[i].format, j) < 0)
>> >
>> > It seems this code part still looks for an empty element at the end of
>> > the checklist2 array which does not exist anymore.
>> >
>> > If there is not something really wrong with my patch I will apply it for
>> > the Fedora libcdio 0.81 package.
>> >
>> >                Adrian
>> >
>> >
>> >
>>
>
>                Adrian
>
> --
> Adrian Reber <adrian@...>            http://lisas.de/~adrian/
> Someone is standing on the ethernet cable, causeing a kink in the cable
>
>
>