Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Igors от Сентябрь 30, 2014, 10:44



Название: Заблудился с джунглях скриптов
Отправлено: Igors от Сентябрь 30, 2014, 10:44
Добрый день

Xcode на фазе "Run custom shell script" выдает такую бяку (километровые пути заменил для простоты)

Цитировать
mkdir -p <dir_name> ; ispc -I <dir_name> -I <dir_name> -I <dir_name> --arch=x86-64 --pic -O3 --target=sse2,sse4,avx,avx2 --woff --opt=fast-math -h <file_name> -MMM <file_name> -o <file_name> <file_name> ;

/bin/sh: ispc: command not found
Прочитал ReadMe, там сказано что надо ставить ispc. Хорошо, поставил и прописал путь в $PATH перманентно. Этот путь виден если печатать $PATH. Также если я в терминале наберу ispc - он запускается. Но не из скрипта. Делаю copy/paste текста выше в терминал, запускаю - неск секунд молчит и выходит на bash, никаких ошибок не выдает и в рез-те появляются новые файлы - ну наверное работает.

Ладно, делаю алиас на ispc и помещаю его в /usr/bin. Теперь скрипт видит его но вякает
Цитировать
Permission denied
Хотя из Finder'а алиас прекрасно стартует

Взял текст исходного скрипта, но там безнадюга, запускается CMake, он создает файлы с именами типа Script-2BEEB6D13E7744B089616EA6.sh, а они уже исполняются. То ли CMake "обрезал" path, то ли есть какие-то др правила path что мне неизвестны.

Как разрулить такую ситуевину, и почему она возникает?

Спасибо


Название: Re: Заблудился с джунглях скриптов
Отправлено: kambala от Сентябрь 30, 2014, 14:15
Цитировать
Хорошо, поставил и прописал путь в $PATH перманентно. Этот путь виден если печатать $PATH.
в каком месте это прописано? надо в ~/.bash_profile (текстовый файл)
Цитировать
Permission denied
можно попробовать chmod +x <файл> (ну или руками в свойствах файла выставить разрешение на запуск всем)


Название: Re: Заблудился с джунглях скриптов
Отправлено: Igors от Сентябрь 30, 2014, 14:52
в каком месте это прописано? надо в ~/.bash_profile (текстовый файл)
Да, там. Немного подразобрался: Xcode (когда запускает скрипт) юзает свой path, его можно посмотреть включив "Show Environment variables in Build Log" в опциях скрипта. Конечно там нет того пути что я прописал для терминала. Следующие 3 часа были посвящены нагугливанию как же изменить "тот" path - ну пока безуспешно

можно попробовать chmod +x <файл> (ну или руками в свойствах файла выставить разрешение на запуск всем)
Пробовал, так говорит "cannot execure binary file", наверное это правильно т.к. алиас сам по себе не исполняемый, его надо резолвить.

В конце-концов скопировал сам файл ispc в /usr/bin - и вроде захавал, но ведь так делать нехорошо, приложение может требовать файло в своем фолдере. Сейчас отдохну, буду дальше "собирать"  :'(


Название: Re: Заблудился с джунглях скриптов
Отправлено: Alex Custov от Сентябрь 30, 2014, 17:47
в каком месте это прописано? надо в ~/.bash_profile (текстовый файл)

.bash_profile - это для интерактивного bash шелла, а скрипт выполняется наверняка в каком-то другом маленьком шелле типа dash, либо в самом bash но в режиме POSIX-совместимости, в таком случае должна помочь установка PATH не в .bash_profile, а в .bashrc . Но думаю, что по хорошему нужно искать где поменять PATH как это принято в Макоси.


Название: Re: Заблудился с джунглях скриптов
Отправлено: kambala от Сентябрь 30, 2014, 19:48
как раз недавно гуглил этот вопрос (для терминала правда, а не для Xcode) — рекомендовали прописывать именно в .bash_profile. возможно после изменения этого файла надо перезапустить Xcode.


Название: Re: Заблудился с джунглях скриптов
Отправлено: Old от Сентябрь 30, 2014, 19:50
возможно после изменения этого файла надо перезапустить Xcode.
Скорее всего перелогиниться.


Название: Re: Заблудился с джунглях скриптов
Отправлено: kambala от Сентябрь 30, 2014, 19:52
только что проверил — таки не читает он .bash_profile. тогда решением будет в Run Script Phase первой строкой написать
Код
Bash
export PATH=<нужные пути, разделенные двоеточием>$PATH


Название: Re: Заблудился с джунглях скриптов
Отправлено: Alex Custov от Сентябрь 30, 2014, 19:59
как раз недавно гуглил этот вопрос (для терминала правда, а не для Xcode) — рекомендовали прописывать именно в .bash_profile.

Ну да, .bash_profile используется для интерактивного bash шелла, XCode о .bash_profile вообще ничего не знает. PATH унаследуется только если запускать XCode из bash (и только если XCode сам себе не меняет environment).


Название: Re: Заблудился с джунглях скриптов
Отправлено: kambala от Сентябрь 30, 2014, 20:01
http://stackoverflow.com/a/25578150 какое-то решение
и вот еще: http://blog.manbolo.com/2012/04/25/xcode-4-vs-me-running-custom-scripts-after-build (раздел The hard way), хотя по ссылке выше пишут, что вроде не работает этот способ

PATH Xcode'a такой:<куча его путей>:/usr/bin:/bin:/usr/sbin:/sbin


Название: Re: Заблудился с джунглях скриптов
Отправлено: Igors от Октябрь 05, 2014, 10:29
Извиняюсь что "пропал", со вторника не было света (все стреляют, никак не уймутся)
только что проверил — таки не читает он .bash_profile. тогда решением будет в Run Script Phase первой строкой написать
Код
Bash
export PATH=<нужные пути, разделенные двоеточием>$PATH
Пробовал вбить это первым скриптом Xcode, не понимает, показывает тот же "свой" path

PATH Xcode'a такой:<куча его путей>:/usr/bin:/bin:/usr/sbin:/sbin
Да, этот, "куча" - внутренние пути Xcode (Content)

Ладно, попробую продвинуться дальше, сейчас он запускает ispc, но потом не видит .a файла (разбираюсь)


Название: Re: Заблудился с джунглях скриптов
Отправлено: kambala от Октябрь 05, 2014, 15:19
> Извиняюсь что "пропал", со вторника не было света (все стреляют, никак не уймутся)
вряд ли это скоро закончится, лучше перебираться с востока
> Пробовал вбить это первым скриптом Xcode, не понимает, показывает тот же "свой" path
не отдельным скриптом, а строчкой выше запуска команды


Название: Re: Заблудился с джунглях скриптов
Отправлено: Igors от Октябрь 06, 2014, 13:33
В конце-концов прорвался, все "собралось", и я получил все проекты в Xcode!!!!! Помимо заморочки с путем было еще 2

1) Xcode не создает статик либу если нет компилируемых исходников (хотя объектные файлы в проект подключены). Добавил пустой cpp и Build Phase

2) ispc получал не тот ключ (X86-64, а надо X86). Надо в ccmake включить advanced (t) и там указать i386 (по умолчанию в этом поле пусто)

Ну вот, всего 3 дня - и "разобрался". Дней правда жалко  :'(