Нужна помощь спеца по bash

Discussion in 'Hardware and Software' started by -rust-, Oct 30, 2010.

  1. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Нужна помощь спеца по bash

    Предистория - если кому интересно, автоматизирую сборку ffmpeg под айОС.
    Есть такая конфигурационная строка:

    Code:
    --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s
    При вызове скрипта конфигурации "вручную", из окна терминала, все прекрасно работает.
    При попытке вызвать скрипт конфигурации из своего скрипта, кто-то произвольно разбивает параметр --as, видимо, из-за одинарных кавычек.
    То есть, при попытке вызвать скрипт навроде:

    Code:
    #!/bin/bash 
    PARAM="--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s"
    ./configure $PARAM
    я получаю ответ:
    Code:
    Unknown option "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'".
    See ./configure --help for available options.
    Проблему временно обошел таким подходом:
    Code:
    echo "./configure $PARAM &> ./configure_output.txt" >./my_configure
    chmod 'a+x' ./my_configure
    ./my_configure
    но хочется добиться именно чтобы работало без создания промежуточного скрипта.
    Баш стоит такой:
    Code:
    $ bash --version
    GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
    Copyright (C) 2007 Free Software Foundation, Inc.
    
    Или это проблема совсем не bash, а скрипта конфигурации, поставляемого вместе с ffmpeg, и излечению не подлежит?
     
  2. --maty

    --maty Well-Known Member

    Joined:
    Jan 22, 2002
    Messages:
    7,123
    Location:
    Marseille, FRANCE
    Re: Нужна помощь спеца по bash

    Поменяй одинарные кавычки на \"
     
  3. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    Пробовал первым делом, не помогло.
    Сообщение об ошибке просто менялось на

    Code:
    Unknown option "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc"".
    See ./configure --help for available options.
    Да, и вместо пробела ставил "\ " - пофигу.
     
  4. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013
  5. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    mcgru, там свыше 3К строк и несколько десятков case :)
    Указанная тобой строка не найдена.

    Сам файлик лежит в архиве сорсов, если не проблема 3 мега скачать:
    http://ffmpeg.org/releases/ffmpeg-export-snapshot.tar.bz2
     
  6. Sea

    Sea Well-Known Member

    Joined:
    Feb 9, 2001
    Messages:
    27,702
    Location:
    Ukraine, Kiev
    Re: Нужна помощь спеца по bash

    Убери вообще кавычки в PARAM=
    Code:
    
    #!/bin/bash
    PARAM=--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.pla
    ./configure $PARAM
    
    у меня получилось повторить твою ошибку, удалил кавычки все заработало.
     
  7. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013
  8. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013
  9. Sea

    Sea Well-Known Member

    Joined:
    Feb 9, 2001
    Messages:
    27,702
    Location:
    Ukraine, Kiev
    Re: Нужна помощь спеца по bash

    Оно скопировалось криво :) а показалось что работало. Ошибку пишет один в один как при запуске ручками. (ошибка про компилер)
     
  10. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013
  11. Sea

    Sea Well-Known Member

    Joined:
    Feb 9, 2001
    Messages:
    27,702
    Location:
    Ukraine, Kiev
    Re: Нужна помощь спеца по bash

    Вот (mcgru ищи баги :) )

    Code:
    ./configure "$PARAM"
    
    когда переменная подставляется в строку configure то двойные кавычки изымаются, поэтому надо отдельно взять в двойные кавычки при подстановке.
     
  12. breedr

    breedr FH Developer

    Joined:
    Jan 27, 2000
    Messages:
    970
    Re: Нужна помощь спеца по bash

    Как вариант:
    echo "./configure $PARAM" | bash
     
  13. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 31, 2013
  14. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    Спасибо, это прокатило.
     
  15. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    Увы, менять ни configure ни makefile нельзя - это не мой продукт. Спасибо за разбор, остановлюсь на совете breedr'a
     
  16. --maty

    --maty Well-Known Member

    Joined:
    Jan 22, 2002
    Messages:
    7,123
    Location:
    Marseille, FRANCE
    Re: Нужна помощь спеца по bash

    Чо-то вы фигню всякую пишете :)
    Такой же скрипт как в первом посте, только последняя строчка должна быть:

    eval ./configure $PARAM
     
  17. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    Спасибо, это я тоже попробовал в первую очередь, еще до того как постить запрос.
    Результат:

    Code:
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s is unable to create an executable file.
    If /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk --enable-cross-compile --target-os=darwin --arch=arm --extra-cflags='-arch armv6' --extra-ldflags='-arch armv6' --cpu=arm1176jzf-s is a cross-compiler, use the --enable-cross-compile option.
    Only do this if you know what cross compiling means.
    C compiler test failed.
    
    
    If you think configure made a mistake, make sure you are using the latest
    version from SVN.  If the latest version fails, report the problem to the
    ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
    Include the log file "config.log" produced by configure as this will help
    solving the problem.
     
  18. -rust-

    -rust- Well-Known Member

    Joined:
    Jan 23, 2000
    Messages:
    5,291
    Re: Нужна помощь спеца по bash

    Во, это прокатило.
    Благодарю безмерно.
     
  19. mcgru-

    mcgru- Well-Known Member

    Joined:
    Sep 21, 2000
    Messages:
    61,522
    Location:
    Tomsk, Russia
    sepukked
     
    Last edited: Jan 30, 2013