Linux

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • v4l-dvb tree make bug

    11 answers - 269 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    I demand that Tais M. Hansen may or may not have written
    Btw. the v4l-dvb repos ends up in an endless make loop when using
    make-3.81. I had to downgrade to make-3.80 to be able to build v4l-dvb.
    Works for me, although I only build a few of the modules.
  • No.1 | | 1330 bytes | |

    Tais M. Hansen wrote:

    Thursday 15 June 2006 00:08, Darren Salt wrote:

    Btw. the v4l-dvb repos ends up in an endless make loop when using
    make-3.81. I had to downgrade to make-3.80 to be able to build v4l-dvb.


    >>Works for me, although I only build a few of the modules.

    >
    >>

    >
    >Strange. Running make-3.81 in a fresh clone of v4l-dvb makes it go into an
    >endless loop. But downgrading and doing the exact same thing and it's fine.
    >
    >Maybe my make-3.81 is broken somehow then.
    >


    I can confirm the bug, but I don't know how to reproduce it nor fix it.
    I have seen this happen on one of my boxes, but it doesnt happen any
    more, (not since running make distclean && make allyesconfig) and I
    don't recall upgrading make. I continue to see bug reports stating this
    problem on the lists from other users.

    I think that it would be a good assumption that a given version of make
    could be the culprit, but I couldnt say that for sure based on my own
    experience. If anybody else sees this problem, please report which
    version of make you are running. It seems that upgrading (or
    downgrading) make should do the trick
    -Mike
  • No.2 | | 630 bytes | |

    Em Qui, 2006-06-15 21:44 +0200, Tais M. Hansen escreveu:
    Thursday 15 June 2006 00:08, Darren Salt wrote:
    Btw. the v4l-dvb repos ends up in an endless make loop when using
    make-3.81. I had to downgrade to make-3.80 to be able to build v4l-dvb.
    Works for me, although I only build a few of the modules.

    Strange. Running make-3.81 in a fresh clone of v4l-dvb makes it go into an
    endless loop. But downgrading and doing the exact same thing and it's fine.

    Maybe my make-3.81 is broken somehow then.
    Maybe. I added a sanity check at make_makefile.pl script that may solve
    the issue. Please test.
  • No.3 | | 2236 bytes | |

    Weird!

    Em Ter, 2006-06-20 21:57 +0200, Tais M. Hansen escreveu:
    Tuesday 20 June 2006 18:24, Mauro Carvalho Chehab wrote:
    Strange. Running make-3.81 in a fresh clone of v4l-dvb makes it go into
    an endless loop. But downgrading and doing the exact same thing and it's
    fine.
    Maybe my make-3.81 is broken somehow then.
    Maybe. I added a sanity check at make_makefile.pl script that may solve
    the issue. Please test.

    Still looping here. Fresh hg clone:

    $ make allmodconfig
    make -C /
    make[1]: Entering directory `/'
    No version yet.
    scripts/make_makefile.pl
    Creating Makefile.media.
    make[2]: Entering directory `/'
    scripts/make_makefile.pl

    For me, with make 3.81, It runned twice, but the sanity check stopped it
    on the second step. Are you using a distro-modified make or the gnu
    vanilla one?

    Those are my tests with make-3.81 (just compiled from gnu sources at
    savanah: )

    $hg clone master xxx

    762 files updated, 0 files merged, 0 files removed, 0 files unresolved

    $cd xxx

    $make-3.81 allyesconfig

    make-3.81 -C /home/v4l/xxx/v4l allyesconfig
    make-3.81[1]: Entering directory `/home/v4l/xxx/v4l'
    No version yet.
    scripts/make_makefile.pl
    Creating Makefile.media.
    make[2]: Entering directory `/home/v4l/xxx/v4l'
    creating symbolic links
    /scripts/make_kconfig.pl 1
    Preparing to compile for kernel version 2.6.16
    VIDEPLANB requires version 2.6.99
    VIDEVIN requires version 2.6.99
    VIDEZR36120 requires version 2.6.99
    VIDEM32R_AR_M64278 requires version 2.6.99
    /scripts/make_noconfig.pl
    make[2]: Leaving directory `/home/v4l/xxx/v4l'
    make-3.81[1]: Leaving directory `/home/v4l/xxx/v4l'
    make-3.81[1]: Entering directory `/home/v4l/xxx/v4l'
    scripts/make_makefile.pl
    creating symbolic links
    /scripts/make_kconfig.pl 1
    Preparing to compile for kernel version 2.6.16
    VIDEPLANB requires version 2.6.99
    VIDEVIN requires version 2.6.99
    VIDEZR36120 requires version 2.6.99
    VIDEM32R_AR_M64278 requires version 2.6.99
    /scripts/make_noconfig.pl
    make-3.81[1]: Leaving directory `/home/v4l/xxx/v4l'

    Cheers,
    Mauro.
  • No.4 | | 1449 bytes | |

    Tais,

    Em Qua, 2006-06-21 00:02 +0200, Tais M. Hansen escreveu:
    Tuesday 20 June 2006 23:25, Mauro Carvalho Chehab wrote:
    Maybe. I added a sanity check at make_makefile.pl script that may solve
    the issue. Please test.
    Still looping here. Fresh hg clone:
    For me, with make 3.81, It runned twice, but the sanity check stopped it
    on the second step. Are you using a distro-modified make or the gnu
    vanilla one?

    I found the bug and I've pushed the fix to the hg. Please test.

    Btw, there is a bug with our Makefile and make 3.81:

    make 3.81 is not accepting this:

    @perl -e 'open IN,"$(DIR)/Makefile"; \
    while (<IN>) { \
    if (/^VERSIN\s*=\s*([0-9]+)/){ $$version=$$1; }\
    elsif (/^PATCHLEVEL\s*=\s*([0-9]+)/){ $$level=$$1; }\
    elsif (/^SUBLEVEL\s*=\s*([0-9]+)/){ $$sublevel=$$1; }\
    elsif (/^EXTRAVERSIN\s*=\s*([^\s]+)\n/){ $$extra=$$1; } \
    }; \
    printf ("VERSIN=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELREL EASE :=%s.%s.%s%s\n", \
    $$version,$$level,$$sublevel,$$version,$$level,$$s ublevel,$$extra); \
    printf ("SRCDIR:=$(DIR)\n");' $(obj)/.version

    make 3.80, it removes all escape signals (the backslash at the end of
    each line) before passing this to perl, but, on make 3.81, it just
    passes those extra blackslashes to the app. If you remove the
    backslashes, it will pass just the first line (as expected).

    Cheers,
    Mauro.
  • No.5 | | 1129 bytes | |

    Wed, 21 Jun 2006, Tais M. Hansen wrote:
    ./scripts/make_noconfig.pl

    It seems like it's looping here if v4l/.myconfig doesn't exist. Touching the
    file or running the script above, creates the file and make stops looping.

    Make distclean doesn't remove .myconfig, which is what Trent Piepho sent a
    patch to the list about. Maybe you had the file there while testing?

    The .myconfig file is part of the build system. It is made from .config,
    and is the file that acually controls what gets built.

    I think the problem is with make_noconfig.pl and the v4l/Makefile. If
    noconfig.pl doesn't find the .myconfig file, it will call make again to
    create it. If that make decides it needs to create a new Makefile.media
    for some reason, before it generates .myconfig, it will call
    make_noconfig.pl again, and make_noconfig.pl will call make again because
    myconfig still doesn't exist, and so on.

    I think the check Mauro added to not re-build Makefile.media when it
    doesn't change will make things worse. But it sounds like he has a real
    fix now.
  • No.6 | | 1283 bytes | |

    Wed, Jun 21, 2006, Mauro Carvalho Chehab wrote:
    Btw, there is a bug with our Makefile and make 3.81:

    make 3.81 is not accepting this:

    @perl -e 'open IN,"$(DIR)/Makefile"; \
    while (<IN>) { \
    if (/^VERSIN\s*=\s*([0-9]+)/){ $$version=$$1; }\
    elsif (/^PATCHLEVEL\s*=\s*([0-9]+)/){ $$level=$$1; }\
    elsif (/^SUBLEVEL\s*=\s*([0-9]+)/){ $$sublevel=$$1; }\
    elsif (/^EXTRAVERSIN\s*=\s*([^\s]+)\n/){ $$extra=$$1; } \
    }; \
    printf ("VERSIN=%s\nPATCHLEVEL:=%s\nSUBLEVEL:=%s\nKERNELREL EASE :=%s.%s.%s%s\n", \
    $$version,$$level,$$sublevel,$$version,$$level,$$s ublevel,$$extra); \
    printf ("SRCDIR:=$(DIR)\n");' $(obj)/.version

    make 3.80, it removes all escape signals (the backslash at the end of
    each line) before passing this to perl, but, on make 3.81, it just
    passes those extra blackslashes to the app. If you remove the
    backslashes, it will pass just the first line (as expected).

    NEWS.Debian.gz for make says for version 3.81.b3-1:

    * WARNING: Backward-incompatibility! In order to comply with PSIX, the way in which GNU make processes backslash-newline sequences in command strings has changed. See the GNU make manual section "Command Execution" for details.

    #Splitting-Lines

    Johannes
  • No.7 | | 1149 bytes | |

    This message is in MIME format which your mailer apparently does not support.
    You either require a newer version of your software which supports MIME, or
    a separate MIME decoding utility. Alternatively, ask the sender of this
    message to resend it in a different format.

    Content-Type: text/plain; charset=us-ascii

    I demand that Mauro Carvalho Chehab may or may not have written

    [snip]
    Btw, there is a bug with our Makefile and make 3.81:

    make 3.81 is not accepting this:

    @perl -e 'open IN,"$(DIR)/Makefile"; \
    while (<IN>) { \
    if (/^VERSIN\s*=\s*([0-9]+)/){ $$version=$$1; }\
    elsif (/^PATCHLEVEL\s*=\s*([0-9]+)/){ $$level=$$1; }\
    [snip rest]

    make 3.80, it removes all escape signals (the backslash at the end of
    each line) before passing this to perl, but, on make 3.81, it just passes
    those extra blackslashes to the app. If you remove the backslashes, it will
    pass just the first line (as expected).

    Fix: replace "\\\n" with "'\\\n'", i.e. put an apostrophe before the
    backslash and another at the start of the following line. Patch attached.
  • No.8 | | 895 bytes | |

    Em Qua, 2006-06-21 23:57 +0200, Johannes Stezenbach escreveu:
    Wed, Jun 21, 2006, Mauro Carvalho Chehab wrote:
    Btw, there is a bug with our Makefile and make 3.81:

    NEWS.Debian.gz for make says for version 3.81.b3-1:

    * WARNING: Backward-incompatibility! In order to comply with PSIX, the way in which GNU make processes backslash-newline sequences in command strings has changed. See the GNU make manual section "Command Execution" for details.

    #Splitting-Lines

    It is not working as expected. For example, if I create this as a
    Makefile:
    test:
    @echo ' hello \
    world'

    with make 3.80, it produces:

    $ make-3.80 test
    hello world

    with make -3.81, as stated at the above comment, it should produce
    "hello word", but, instead, it does:

    $ make-3.81 test
    hello \
    world

    Johannes
    Cheers,
    Mauro.
  • No.9 | | 1197 bytes | |

    Thu, Jun 22, 2006 at 09:12:19AM -0300, Mauro Carvalho Chehab wrote:
    Em Qua, 2006-06-21 23:57 +0200, Johannes Stezenbach escreveu:
    Wed, Jun 21, 2006, Mauro Carvalho Chehab wrote:
    Btw, there is a bug with our Makefile and make 3.81:

    NEWS.Debian.gz for make says for version 3.81.b3-1:

    * WARNING: Backward-incompatibility! In order to comply with PSIX, the way in which GNU make processes backslash-newline sequences in command strings has changed. See the GNU make manual section "Command Execution" for details.

    #Splitting-Lines

    It is not working as expected. For example, if I create this as a
    Makefile:
    test:
    @echo ' hello \
    world'

    with make 3.80, it produces:

    $ make-3.80 test
    hello world

    with make -3.81, as stated at the above comment, it should produce
    "hello word", but, instead, it does:

    $ make-3.81 test
    hello \
    world

    This is the documented behaviour -- PSIX requires make not to
    mess with the command strings but to pass them unmodified
    to the shell for evaluation:

    $ echo 'foo\
    bar'
    foo\
    bar
    $ $ echo "foo\
    bar"
    foobar
    $

    Johannes
  • No.10 | | 983 bytes | |

    I demand that Trent Piepho may or may not have written

    Thu, 22 Jun 2006, Darren Salt wrote:
    >Fix: replace "\\\n" with "'\\\n'", i.e. put an apostrophe before the
    >backslash and another at the start of the following line. Patch attached.


    That works well. It's a little tricky, in that you need to have the '\'
    appear right after the closing quote, so the shell will merge the strings.
    [snip]

    This is true

    Another way, is to take advantage of how perl will allow multiple -e
    options, so you can do:

    @perl \
    -e 'first line of code' \
    -e 'second line of code' \
    -e 'last line'

    Better indention, I think.

    Definitely better. ("Indention"? "Indentation", surely)

    There is also Mauro's fix of packing everything on one line, but that is a
    little harder to read.

    Agreed. I'd go with the multiple-"-e" fix.
  • No.11 | | 883 bytes | |

    Thu, 22 Jun 2006, Darren Salt wrote:
    Fix: replace "\\\n" with "'\\\n'", i.e. put an apostrophe before the
    backslash and another at the start of the following line. Patch attached.

    That works well. It's a little tricky, in that you need to have the '\'
    appear right after the closing quote, so the shell will merge the strings.
    For example, this won't work because of the space between ' and \.

    @ perl -e 'first line' \
    'second line'

    Another way, is to take adavantage of how perl will allow mutliple -e options,
    so you can do:

    @perl \
    -e 'first line of code' \
    -e 'second line of code' \
    -e 'last line'

    Better indention, I think. There is also Mauro's fix of packing everything on
    one line, but that is a little harder to read.

Re: v4l-dvb tree make bug


max 4000 letters.
Your nickname that display:
In order to stop the spam: 8 + 8 =
QUESTION ON "Linux"

EMSDN.COM