kincajou: (Default)
[personal profile] kincajou
Пытаюсь собрать кросс-компилятор.
binutils кое-как собрал (оказывается, местные make и lex работают не совсем так, как надо - пришлось ставить GNUтые gmake и flex, с ними собралось и заработало)

Пришла очередь gcc-bootstrap. Опять куча всяких заподлянок (вплоть до исчерпания памяти - щас работаю в виртуальной машине и эту проблему решил переконфигурированием). Споткнулся о следующее:

gmake install делает, кроме всего прочего, документацию к gcc (это можно отключить?). В процессе вызывает texi2pdf, который вызывает texi2dvi. Я поставил последнуюю версию пакета TexLive, поправил PATH и теперь получаю вот такое:
texi2pdf -I . -I /export/home/kinkajou/Download/build-gcc/gcc/../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc -I /export/home/kinkajou/Download/build-gcc/gcc/../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc/include -o doc/gcc.pdf ../../arm-2008q3-39-arm-none-eabi/gcc-4.3/gcc/doc/gcc.texi
/usr/bin/texi2dvi[130]: local: not found [No such file or directory]
/usr/bin/texi2dvi[432]: local: not found [No such file or directory]
gmake[2]: *** [doc/gcc.pdf] Error 127


смотрю в texi2dvi, на тот код, который вызывает сбой:
(
foo=bar
test_local() {
local foo=foo
}
test_local()
test $foo=bar
) || local () {
case $1 in
*=*) eval "$1";;
esac
}


Некий код, проверяющий действенность ключевого слова "local". Ошибка конкретно в строке "local foo=foo". Дефолтный шелл OSol - ksh. Поставил bash 4.0, прописал буквально его в вышеупомянутом скрипте - пофиг, всё равно та же ошибка. При этом, если из test_local этот самый local убрать (то есть test $foo=bar увидит, что $foo содержит уже не "bar", а "foo"), чтобы получилась функция local(), то ошибка уже другая - шелл ругается на то, что делает eval.

Как это исправить или обойти? Документация на gcc мне не упёрлась совсем

Upd1
Указание #!/bin/bash магически помогло, но не совсем. Теперь texi2pdf ругается на то, что texinfo.tex appears to be broken

Блин, а бывают такие программы, которые собираются из исходников сразу, с первой попытки, без ошибок, без бубна?

Upd2 Не очень изящно, зато сработало: не стал бодаться с глюками и несоответствиями, а просто удалил из головного Makefile указания на install-html и install-pdf. Теперь пошла сборка newlib.

Upd3 newlib собралась без запинок. Теперь собираю gcc-final. Должно получиться.

Date: 2009-05-29 09:12 pm (UTC)
From: [identity profile] imralay.livejournal.com
Самое очевидное - проверить bash. Что-то типа такого:
user@localhost:~> local
bash: local: может быть использована только в функции
Можно в Makefile поковырятся, наверняка место, откуда выполняется сборка документации, не особо далеко запрятано.

Date: 2009-05-29 09:29 pm (UTC)
From: [identity profile] blackraven77.livejournal.com
Проверил этот кусок кода texi2dvi под FreeBSD-7.2: bash-4.0.24 ругается, а ksh93 ver. 93t+ 2009-05-01, zsh и /bin/sh - нет. Нужен Posix shell.

А как без texinfo gcc собрать - хз, тумблера в ./configure навскидку не нашёл, думать надо...

Date: 2009-05-29 09:34 pm (UTC)
From: [identity profile] kincajou.livejournal.com
Я хирургическим методом обошёл сие затруднение.

Date: 2009-05-29 09:36 pm (UTC)
From: [identity profile] kincajou.livejournal.com
неужели солярка не posix-система?

Date: 2009-05-30 12:10 pm (UTC)
From: [identity profile] blackraven77.livejournal.com
Не в posix-овости солярки дело, а в шеллах - они местами не совместимы. Я так понял, что bash|ksh ругались, поэтому посоветовал пробовать "обычный" Bourne shell - sh, который ближе других к "сферическому posix-шеллу в вакууме" :)
Кстати, прописывание шелла в шебанге скрипта не всегда роялит - если в Makefile, например, файл скрипта передаётся параметром определённому бинарнику - то ой.

Можно указывать шелл для сборки так: CONFIG_SHELL=/bin/bash ./configure --bla-bla

По поводу Upd2 - имхо вполне нормально.

December 2016

S M T W T F S
    123
45678910
11121314151617
18192021222324
25 262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 6th, 2026 07:26 pm
Powered by Dreamwidth Studios