LinuxForum.Fans
Тема

Парочка вопрос о portage и ebuild

Автор: SergMarkov 19 сообщений 4665 просмотров
#296223

Портировал на слаку portage, eix и layman, все работает так как надо (естественно не в полной мере как в генте, но в мере достаточной для того, что от них требуется)
Но есть два затыка:
Первый - если в ебилде есть eautoreconf, то происходит такая лажа

text
 *Running eautoreconf in '/var/tmp/portage/app-backup/boxbackup-0.10/work/boxbackup-0.10' ...
* ERROR: app-backup/boxbackup-0.10 failed (unpack phase):
* Cannot find the latest automake! Tried 1.11.1:1.11* 
* Call stack:* ebuild.sh, line 93: Called src_unpack
* environment, line 2791: Called eautoreconf
* environment, line 723: Called eaclocal
* environment, line 626: Called autotools_run_tool '--at-m4flags' 'aclocal'
* environment, line 472: Called autotools_env_setup
* environment, line 433: Called die
* The specific snippet of code:
* [[ ${WANT_AUTOMAKE} == «latest» ]] && die «Cannot find the latest automake! Tried ${_LATEST_AUTOMAKE}»;

при том что automake именно этой версии.

Второй - не собираются никакие питоньи пакеты (стараюсь вообще не использовать прог на нем, но порой приходится).
Ругается вот как

text

* '/usr/bin/python' is not valid symlink.
* Use `eselect python set ${python_interpreter}` to fix this problem.
* ERROR: app-editors/editra-0.7.12 failed (compile phase):
* '/usr/bin/python' is not valid symlink
* 
* Call stack:
* ebuild.sh, line 93: Called src_compile
* environment, line 4951: Called distutils_src_compile '--no-clean'
* environment, line 1093: Called python_execute_function 'distutils_building' '--no-clean'
* environment, line 3263: Called _python_calculate_PYTHON_ABIS
* environment, line 424: Called _python_initial_sanity_checks
* environment, line 765: Called die
* The specific snippet of code:
* die «'${EPREFIX}/usr/bin/python' is not valid symlink»;

eselect python никакого эффекта не дает

Извечные вопросы «чего ему надо» и «что делать»? Причем если второй вопрос, с питоньими пакетами, вообще то говоря не так принципиален, можно взять скачанный архив и создать пакет для слаки, то первый, с eautoreconf, важен, так как терять патчи как то не хочется.

#296227

* '/usr/bin/python' is not valid symlink.

На слаке оно обычно коротенько:

text
$ ls -l /usr/bin/python
/usr/bin/python -> python2.7

Может ли быть причиной ожидание подобного:

text

/usr/bin/python -> /usr/bin/python2.7

?

#296230
bormant написал:
* '/usr/bin/python' is not valid symlink.

На слаке оно обычно коротенько:

text
$ ls -l /usr/bin/python
/usr/bin/python -> python2.7

Может ли быть причиной ожидание подобного:

text

/usr/bin/python -> /usr/bin/python2.7

?

Да нет, это все как раз уже есть. Тут скорее какие то внутренние заморочки ebuild **, он что то где то проверяет помимо линка, но что и где непонятно.

#296254
"SergMarkov" написал:
Ругается вот как

Насколько я понял, ныне отдельно лежат /usr/bin/python2 и /usr/bin/python3
Создать симлинк на /usr/bin/python из нужной версии пробовали?
Относительно automake - собран отдельно или стоит из гентушного ебилда через portage?

#296257
raven_cler написал:

Насколько я понял, ныне отдельно лежат /usr/bin/python2 и /usr/bin/python3
Создать симлинк на /usr/bin/python из нужной версии пробовали?
Относительно automake - собран отдельно или стоит из гентушного ебилда через portage?

А он и есть , линк из python2.7 на python. Там , правда, еще есть и линк python2.
А вот с automake, он из слаки. Вы думаете что обязателен именно automake из gentoo? Мне просто как то не хочется им заменять automake из слаки.

#296258
"SergMarkov" написал:
А он и есть , линк из python2.7 на python

В свою очередь, в gentoo ешё лежит следующий файл:

text
 $ cat /etc/env.d/python/config 
python2.7

Есть вероятность, что оный тоже проверяется.
Да, прошу прощения. symlink в gentoo выглядит так:

text
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 14 нояб. 13 22:48 /usr/bin/python -> python-wrapper

"SergMarkov" написал:
Вы думаете что обязателен именно automake из gentoo?
Я полагаю, что проблема может быть в этом.
#296261
"raven_cler" написал:
Я полагаю, что проблема может быть в этом.

Так по идее так оно и есть) это пакет eselect-python как бы нужен.

Ну а для automake, нужен пакет automake-wrapper, это скрипт, позволяющий держать несколько версий automake
т.е. сам файл automake, это скрипт, бинарник из самого пакета automake обычно с версией (automake-1.11)
Скрипт по умолчанию использует старшую версию, но можно еще использовать и более младшую используя переменную WANT_AUTOMAKE

#296262
raven_cler написал:

В свою очередь, в gentoo ешё лежит следующий файл:
text
 $ cat /etc/env.d/python/config 
python2.7

Есть вероятность, что оный тоже проверяется.

Он есть, но там только одна строка - python2.7

raven_cler написал:

Да, прошу прощения. symlink в gentoo выглядит так:
text
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 14 нояб. 13 22:48 /usr/bin/python -> python-wrapper

Можно поподробнее, это просто симлинк или какой то специфичный враппер, потому что простой симлинк проблему не решает
Он его просто не видит, даже при выборе с eselect-python

text

 * ERROR: app-editors/editra-0.7.08 failed (compile phase):
 *   _python_calculate_PYTHON_ABIS(): 'dev-lang/python' is not installed
raven_cler написал:

Я полагаю, что проблема может быть в этом.

Тогда попробую собрать из portage, хотя бы посмотреть, чем они отличаются.

#296264
ormorph написал:
Я полагаю, что проблема может быть в этом.
Так по идее так оно и есть) это пакет eselect-python как бы нужен.

Да вот с ним как то и не получалось, то есть выбор делается, но ошибка по прежнему появляется

ormorph написал:

Ну а для automake, нужен пакет automake-wrapper, это скрипт, позволяющий держать несколько версий automake
т.е. сам файл automake, это скрипт, бинарник из самого пакета automake обычно с версией (automake-1.11)
Скрипт по умолчанию использует старшую версию, но можно еще использовать и более младшую используя переменную WANT_AUTOMAKE

Если его нет, то ebuild не видит automake даже из gentoo или он все таки необязателен ?

#296267

Вопрос с automake решился его пересборкой из portage и парой симлинков, но питон , увы, не видит даже с eselect-python

#296270

"SergMarkov" написал:
Можно поподробнее, это просто симлинк или какой то специфичный враппер
Вроде как просто симлинк на враппер, устанавливающийся с eselect-python
#296271
raven_cler написал:
Вроде как просто симлинк на враппер, устанавливающийся с eselect-python

Сделал eselect python set python2.7, симлинк на враппер, все равно не видит.
А за пересборку automake thanks :-), теперь все нормально. Там потребовалось всего пара симлинков

#296297
"SergMarkov" написал:
Сделал eselect python set python2.7, симлинк на враппер, все равно не видит.

А сам рутной через портаж собран или слаковский?
Ибо, опять же, мало ли...

#296298
raven_cler написал:

А сам рутной через портаж собран или слаковский?
Ибо, опять же, мало ли...

Слаковский. Но если отличие в automake в пакетах генты и слаки в том, что в первом нет пустой папочке /usr/share/aclocal .. и пары симлинков, чего ему там не нравилось непонятно, то пересобирать в случае чего всю эту кашу , не, ей богу, проще запустить скрипт для сборки этих пакетов из сорцов в /usr/portage/distfiles, чем пересобирать все это хозяйство.
Но, thanks, еще раз за automake :-)

#296300

по поводу python'а всё просто должно решаться:
python.eclass:

text

 337 _python_initial_sanity_checks() {
 338     if [[ "$(declare -p PYTHON_SANITY_CHECKS_EXECUTED 2> /dev/null)" != "declare -- PYTHON_SANITY_CHECKS_EXECUTED="* || " ${FUNCNAME[@]:1} " =~ " "(python_set_active_version|python_pkg_setup)" " && -z      "${PYTHON_SKIP_SANITY_CHECKS}" ]]; then
 339         # Ensure that /usr/bin/python and /usr/bin/python-config are valid.
 340         if [[ "$(readlink "${EPREFIX}/usr/bin/python")" != "python-wrapper" ]]; then
 341             eerror "'${EPREFIX}/usr/bin/python' is not valid symlink."
 342             eerror "Use \`eselect python set \${python_interpreter}\` to fix this problem."
 343             die "'${EPREFIX}/usr/bin/python' is not valid symlink"
 344         fi
 345         if [[ "$(<"${EPREFIX}/usr/bin/python-config")" != *"Gentoo python-config wrapper script"* ]]; then
 346             eerror "'${EPREFIX}/usr/bin/python-config' is not valid script"
 347             eerror "Use \`eselect python set \${python_interpreter}\` to fix this problem."
 348             die "'${EPREFIX}/usr/bin/python-config' is not valid script"
 349         fi
 350     fi
 351 }

т.е. просто PYTHON_SKIP_SANITY_CHECKS=1 куда-нить в make.conf запихнуть надо.

c autotools сложнее: там екласс проверяет, какие версии установлены через portage... самое простое где-нить в среде указать самому WANT_AUTOMAKE="<версия>"

#296362
Fat-Zer написал:

т.е. просто PYTHON_SKIP_SANITY_CHECKS=1 куда-нить в make.conf запихнуть надо.

Не проходит, к сожалению Наверное в генте другое расположение файлов питона, чем в слаке

#296427
"SergMarkov" написал:
Не проходит, к сожалению Наверное в генте другое расположение файлов питона, чем в слаке

та же ошибка или другая?
если через ebuild собираешь, то clean не забыл сделать?
и посмотри, появляется ли эта декларация в ${T}/environment

#296430
Fat-Zer написал:

та же ошибка или другая?
если через ebuild собираешь, то clean не забыл сделать?

Та же, он просто не видит питон, вообще. Делал.

Fat-Zer написал:

и посмотри, появляется ли эта декларация в
${T}/environment

А это как ? Я же в генте полный .. :-)

#296436
"SergMarkov" написал:
А это как ? Я же в генте полный .. :-)

man 5 ebuild к ознакомлению...

T="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp"
в общем должно понятно, где искать...
кроме того обычный portage выводит, что желательно запостить при запросе саппорта...

ЗЫ: ладно... до завтра...

Войдите или зарегистрируйтесь, чтобы ответить.