LINUX.ORG.RU

Почему не ставится Rust-9999 ?

 


0

2
git checkout --quiet d0fc1788123de9844c8088b977cd142021cea1f2
GIT NEW branch -->
   repository:               https://github.com/rust-lang-nursery/clang/
   at the commit:            d0fc1788123de9844c8088b977cd142021cea1f2
>>> Source unpacked in /var/tmp/portage/dev-lang/rust-9999/work
>>> Preparing source in /var/tmp/portage/dev-lang/rust-9999/work/rust-git-src ...
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/dev-lang/rust-9999/work/rust-git-src ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/dev-lang/rust-9999/work/rust-git-src ...
env: ‘x.py’: No such file or directory
 * ERROR: dev-lang/rust-9999::rust failed (compile phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line 124:  Called src_compile
 *   environment, line 3026:  Called die
 * The specific snippet of code:
 *       env $(cat "${S}"/config.env) ${EPYTHON} x.py build --verbose --config="${S}"/config.toml $(echo ${MAKEOPTS} | egrep -o '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+') --exclude src/tools/miri || die

Я спрашиваю потому, что мне нужна версия 1.30, а в репозитории последняя 1.28

Версия 1.30 мне нужна, чтобы вот - https://github.com/PyO3/pyo3

minimum required rust version is 1.30.0-nightly 2018-08-18.

Ответ на: комментарий от O02eg

В твоём environment есть выставление EPYTHON.

в моём environment нет выставления EPYTHON, и почему это так написано в этом комментарии.

переменная EPYTHON должна устанавливаться автоматически

это написано в документации на эту переменную, скопированной в этом комментарии

Я не обязан устанавливать переменную EPYTHON руками, объяснял почему в этом комментарии

до сих пор не выложил выхлоп eselect

ты НЕ объяснил, зачем.

выхлоп

фу

Если ты посмотришь свой собственный temp/environment, ты увидишь, где у тебя должен был бы выставиться EPYTHON

Нигде. Он не должен был выставляться. Почему - прочитай ссылки из этого сообщения.

Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair

в моём environment нет выставления EPYTHON

Потому что ты читаешь баш-код жопой.

это написано в документации на эту переменную

Эта переменная устанавливается в функциях, которые прописаны в твоём environment в виде баш-кода, который ты читаешь жопой.

Я не обязан устанавливать переменную EPYTHON руками

Тебе не нужно выставлять руками значение, в которое эта переменная устанавливается в функциях, которые прописаны в твоём environment в виде баш-кода, который ты читаешь жопой.

ты НЕ объяснил, зачем.

Эти команды уже возвращают выхлоп, чтобы тебе не нужно было выставлять руками значение, в которое эта переменная устанавливается в функциях, которые прописаны в твоём environment в виде баш-кода, который ты читаешь жопой.

O02eg ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Плохо быть человеком без текстового редактора, где можно делать поиск по словам, смотри функцию python_setup.

O02eg ★★★★★ ()
Ответ на: комментарий от O02eg

смотри функцию python_setup.

ну смотрю, EPYTHON она не устанавливает, а только использует:
https://github.com/gentoo/gentoo/blob/master/eclass/python-any-r1.eclass#L304

Теперь мне понятнее, зачем нужен eselect, но непонятно, как устанавливается EPYTHON.

# eselect python --show
python2.7
# eselect python --show --python2
python2.7
# eselect python --show --python3
python3.5
Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от Einstok_Fair
$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python2.7
  [2]   python3.5

$ eselect python show
python2.7

$ for variant in '' '--python2' '--python3'; do i=$(eselect python --show ${variant} 2>/dev/null); echo ${i}; done
python2.7
python2.7
python3.5
Einstok_Fair ★★☆ ()
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от O02eg
$ grep -R "location" /etc/portage/repos.conf | grep "rust"
/etc/portage/repos.conf/layman.conf:location = /var/lib/layman/rust
$ cd /var/lib/layman/rust/dev-lang/rust
$
$ # ebuild rust-9999.ebuild compile
>>> Existing ${T}/environment for 'rust-9999' will be sourced. Run 'clean'
>>> to start with a fresh environment.
>>> WORKDIR is up-to-date, keeping...
>>> It appears that 'setup' has already executed for 'rust-9999'; skipping.
>>> Remove '/var/tmp/portage/dev-lang/rust-9999/.setuped' to force setup.
>>> It appears that 'unpack' has already executed for 'rust-9999'; skipping.
>>> Remove '/var/tmp/portage/dev-lang/rust-9999/.unpacked' to force unpack.
>>> It appears that 'prepare' has already executed for 'rust-9999'; skipping.
>>> Remove '/var/tmp/portage/dev-lang/rust-9999/.prepared' to force prepare.
>>> It appears that 'configure' has already executed for 'rust-9999'; skipping.
>>> Remove '/var/tmp/portage/dev-lang/rust-9999/.configured' to force configure.
>>> Compiling source in /var/tmp/portage/dev-lang/rust-9999/work/rust-git-src ...
 * EPYTHON=
env: ‘x.py’: No such file or directory
 * ERROR: dev-lang/rust-9999::rust failed (compile phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line 124:  Called src_compile
 *   environment, line 3020:  Called die
 * The specific snippet of code:
 *       env $(cat "${S}"/config.env) ${EPYTHON} x.py build --verbose --config="${S}"/config.toml $(echo ${MAKEOPTS} | egrep -o '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+') --exclude src/tools/miri || die
 * 
 * If you need support, post the output of `emerge --info '=dev-lang/rust-9999::rust'`,
 * the complete build log and the output of `emerge -pqv '=dev-lang/rust-9999::rust'`.
 * The complete build log is located at '/var/tmp/portage/dev-lang/rust-9999/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-lang/rust-9999/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-lang/rust-9999/work/rust-git-src'
 * S: '/var/tmp/portage/dev-lang/rust-9999/work/rust-git-src'
Einstok_Fair ★★☆ ()
Ответ на: комментарий от O02eg

ты до сих пор не выложил выхлоп eselect, ... твоя истерика беспочвенна.

выложил. теперь истерика имеет всё основания!!!

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

я не пойму никак, ты переменную EPYTHON вручную переопределить где-то? Мне лень читать доки, но насколько я понял, у этой переменной само устанавливается значение при вызове python-setup и не надо её вручную переопределить - она не для этого.

grem ★★★★★ ()
Ответ на: комментарий от grem

я не пойму никак, ты переменную EPYTHON вручную переопределить где-то?

не-не. Я просто попытался установить ebuild, он мне выдал ошибку.
O02eg обвинил меня в том, что это У МЕНЯ не установлен EPYTHON.
теперь я борюсь за своё право не устанавливать эту переменную вручную.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Deleted

Ахаха, дожили вы. В линуксе нельзя ставить софт в систему — она «поломается».

anonymous ()

Для найтли лучше ставить rust-bin-9999.

LeshaInc ()
Ответ на: комментарий от Dark_SavanT

Они линкуются к внутренним библиотекам раста. Они просто сломаются тогда.

O02eg ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Её и не надо обычно устанавливать в ручную, она заполняется сама при вызове в ebuild ряда функций и/или выполнения основных фаз:

EPYTHON
The executable name of the current Python interpreter.
This variable is set automatically in the following contexts:

python-r1: Set in functions called by python_foreach_impl() or after calling python_export_best().

python-single-r1: Set after calling python-single-r1_pkg_setup().

distutils-r1: Set within any of the python sub-phase functions.

grem ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

Ещё раз: любишь найтли - страдай.

Не согласен: любишь Arch Linux - страдай (или, выражаясь более мягко, разбирайся). У меня в другом дистрибутиве Rust 1.30 установился за несколько секунд без каких-либо проблем.

Что-то я за несколько дней чтения этой темы не увидел прогресса в решении вопроса. Не ставить же мне себе Arch Linux, чтобы самому разобраться. Любители Arch Linux - давайте поактивнее.

Partisan ★★★★ ()
Ответ на: комментарий от t184256

4.2

Все, что в обход пакетного менеджера, суть гадость и ересь.

Ага и именно поэтому все «гадкие» и «еретичные» гентушники ставят kernel и его модули в обход пакетного менеджера.

init_6 ★★★★★ ()
Ответ на: комментарий от grem

она заполняется сама

я же привёл вывод командной einfo, что переменная не заполняется сама

ряда функций

документация которую ты процитировал - некорректная, потому что неполная. Так, например, ебилд для rust-9999 не использует классы python-r1, python-single-r1, distutils-r1.

Таким образом, нельзя утверждать, что из процитированной документации логически следует, что переменная EPYTHON должна быть заполнена.

Так о чём твоё сообщение-то?

Надо было писать «она должна по-идее (теоретически) заполняться сама». Это бы не грешило против фактов.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от Einstok_Fair

с документацией всё нормально, если build не использует эти фичи, но при этом полагается на их переменные, то с ebuild что-то не так.

она и не должна сама собой заполняться просто так.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от grem

Есть ещё один eclass - python-any-r1. И в нём переменная EPYTHON должна теоретически установиться.

Ошибка документации на переменную в том, что в списке этот екласс не упомянут.

Einstok_Fair ★★☆ ()
Ответ на: комментарий от init_6

Я не знаю, что у них там за помутнение, но осуждаю.

t184256 ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

Таким образом, нельзя утверждать, что из процитированной документации логически следует, что переменная EPYTHON должна быть заполнена.

Я такого не утверждал. Можешь ещё таблицу глянуть о том, какие переменные окружения чем устанавливаются в ebuild'ах связанных с python.

Так о чём твоё сообщение-то?

Надо было писать «она должна по-идее (теоретически) заполняться сама». Это бы не грешило против фактов.

Я писал о том, что что-то должно само устанавливаться. Я написал прямо, что она устанавливается при вызове соответствующих функций. Если этого не делается в ebuild - пиши его разработчику.

Есть ещё один eclass - python-any-r1. И в нём переменная EPYTHON должна теоретически установиться.

Вообще-то...

Optionally, you can define a python_check_deps() function. It will be called by the eclass with EPYTHON set to each matching Python implementation and it is expected to check whether the implementation fulfills the package requirements.

То есть эту функцию ещё определить писавшему ebuild нужно, она сама по себе не напишется.


Ошибка документации на переменную в том, что в списке этот екласс не упомянут.

См. выше почему.

Моё сообщение не о том, что переменная сама ни с того ни с сего должна заполняться, а о том, что в ebuild для этого должны быть вызваны соответствующие функции eclass, а просто прописывание inherit name_of_eclass недостаточно.

grem ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

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

она её использует, если она определена, а если нет, то задаёт посредством вызова python_export с указанием что и в какие переменные передавать текущую версию python

grem ★★★★★ ()
Ответ на: комментарий от Einstok_Fair

в ebuild в pkg_setup, на мой взгляд, вызывается необходимая функция

grem ★★★★★ ()
3 декабря 2018 г.
Ответ на: комментарий от Einstok_Fair

пичаль беда

Ну вот не понимаю, почему cargo и rustc в терминале запускаются а rustup нет. Как пофиксить багу?

incker ()
13 февраля 2020 г.
Ответ на: комментарий от Dark_SavanT

хочешь nightly, люби и rustup.

Не обязательно.

# lsb_release -i
Distributor ID: Gentoo
# cat /etc/portage/profile/package.use.mask 
dev-lang/rust -nightly -system-bootstrap -system-llvm
# eix -cI dev-lang/rust
[I] dev-lang/rust (1.41.0(stable/1.41)@01.02.2020): Systems programming language from Mozilla
# which rustc
/usr/bin/rustc
# rustc --version
rustc 1.41.0-nightly
anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.