LINUX.ORG.RU

Portage игнорирует python3_5

 


0

1

Всем привет

Установил python3_5 как основной:

$ eselect python list
Available Python interpreters, in order of preference:
  [1]   python3.5
  [2]   python3.4
  [3]   python2.7

$ python-updater
 * Starting Python Updater...
 * Main active version of Python:    3.5
 * Active version of Python 2:       2.7
 * Active version of Python 3:       3.5
 * Globally supported Python ABIs in installed repositories:
 *   gentoo:                         2.4 2.5 2.6 2.7 3.1 3.2 3.3 2.5-jython 2.7-jython 2.7-pypy-1.7 2.7-pypy-1.8 2.7-pypy-1.9 2.7-pypy-2.0
 *   x-portage:                      2.4 2.5 2.6 2.7 3.1 3.2 3.3 2.5-jython 2.7-jython 2.7-pypy-1.7 2.7-pypy-1.8 2.7-pypy-1.9 2.7-pypy-2.0

Но portage всё равно его игнорирует:
$ emerge --info | grep PYTHON
... PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4"...

И я бы забил, но пакеты ведь тоже его не видят. При установке portage приходилось вручную переопределять PYTHON_TARGETS, а если этого не делать, то:
$ emerge -pv --nodeps portage

These are the packages that would be merged, in order:

[ebuild   R    ] sys-apps/portage-2.3.0::gentoo  USE="(ipc) xattr -build -doc -epydoc (-selinux)" LINGUAS="ru" PYTHON_TARGETS="python2_7 python3_4 -pypy -python3_3 -python3_5*" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

Как заставить portage развидеть python3_5 на моем компьютере?

★★★★★

Вроде бы это в профиле надо флаг размаскировать. Сейчас не вспомню, как это делается

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

Так?

$ cat /etc/portage/profile/use.mask
-python_targets_python3_5
-python_single_target_python3_5

А после этого нужно что-то делать? Так как эффекта нет.

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

Что значит на stable? У меня ACCEPT_KEYWORDS="x86 ~x86"

Но в любом случае:

$ cd /etc/portage/profile
$ ls -l
total 8
-rw-r--r-- 1 root root 124 июн 27 16:53 use.mask
-rw-r--r-- 1 root root  59 июн 27 16:53 use.stable.mask

$ cat use.mask
-qt5
-vaapi # for vaapi support in gstreamer plugins
-policykit # for kde-frameworks/kauth needed by kde-plasma/powerdevil

$ cat use.stable.mask
-python_targets_python3_5
-python_single_target_python3_5
(В use.mask, возможно, рудименты, но, как говорится, just works)

Эффекта нет.
$ emerge --info
Portage 2.3.0 (python 3.5.1-final-0, default/linux/x86/13.0/desktop/plasma, gcc-4.9.3, glibc-2.22-r2, 3.12.0-gentoo-lix-k10 i686)
=================================================================
System uname: Linux-3.12.0-gentoo-lix-k10-i686-Intel-R-_Core-TM-2_CPU_6600_@_2.40GHz-with-gentoo-2.2
KiB Mem:     6223716 total,    412860 free
KiB Swap:    2104476 total,   2104364 free
Timestamp of repository gentoo: Mon, 27 Jun 2016 06:30:01 +0000
sh bash 4.3_p46
ld GNU ld (Gentoo 2.25.1 p1.1) 2.25.1
distcc 3.2rc1 i686-pc-linux-gnu [disabled]
app-shells/bash:          4.3_p46::gentoo
dev-java/java-config:     2.2.0-r3::gentoo
dev-lang/perl:            5.24.0-r1::gentoo
dev-lang/python:          2.7.11-r2::gentoo, 3.4.3-r7::gentoo, 3.5.1-r3::gentoo
dev-util/cmake:           3.5.2-r1::gentoo
dev-util/pkgconfig:       0.29.1::gentoo
sys-apps/baselayout:      2.2::gentoo
sys-apps/openrc:          0.21::gentoo
sys-apps/sandbox:         2.10-r2::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69-r2::gentoo
sys-devel/automake:       1.11.6-r2::gentoo, 1.14.1-r1::gentoo, 1.15-r2::gentoo
sys-devel/binutils:       2.25.1-r1::gentoo
sys-devel/gcc:            4.9.3::gentoo, 5.3.0::gentoo
sys-devel/gcc-config:     1.8-r1::gentoo
sys-devel/libtool:        2.4.6-r2::gentoo
sys-devel/make:           4.2.1::gentoo
sys-kernel/linux-headers: 4.6::gentoo (virtual/os-headers)
sys-libs/glibc:           2.22-r2::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000

x-portage
    location: /usr/local/portage
    masters: gentoo
    priority: 0

ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="* -@EULA skype-4.0.0.7-copyright AdobeFlash-10.3 AdobeFlash-11.x google-chrome Oracle-BCLA-JavaSE Google-TOS"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=core2"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.0/ext-active/ /etc/php/cgi-php7.0/ext-active/ /etc/php/cli-php7.0/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -march=core2"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -march=i686 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -march=i686 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LANG="en_US.UTF-8"
LC_ALL=""
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/ramdisk/tmp"
USE="X a52 aac acl acpi alsa arts bash-completion berkdb bitmap-fonts branding bzip2 cairo caps cdda cdparanoia cdr chm cjk cli consolekit cracklib crypt cups curl cxx daap dbus declarative djvu dri dts dvd dvdr dvdread ebook emboss emerald encode evdev exif fam fbcon fbset ffmpeg firefox flac fortran freerdp ftp fuse gdbm gif glamor glitz gstreamer iconv icq icu id3tag imagemagic imap ipod ipv6 javascript jpeg jpeg2k kerberos kipi lame lcms ldap libnotify lm_sensors m17n-lib mad matroska mbox midi mime mmx mng modules mp3 mp4 mpeg mplayer mtp musicbrainz ncurses nls nptl ogg openexr opengl openmp oss pam pango pcre pda pdf perl phonon plasma png policykit ppds python qml qt3support qt5 quicktime radius readline sasl sdl seccomp session slang snmp sockets socks5 spell sse sse2 ssl startup-notification svg tcpd tiff truetype truetype-fonts type1-fonts udev udisks unicode upower usb vcd vorbis webkit widgets wifi win32codecs wmf wxwidgets x264 x86 xattr xcb xcomposite xinerama xml xpm xscreensaver xv xvid zlib" ABI_X86="32" ALSA_CARDS="emu10k1 intel8x0" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="krita" CAMERAS="canon sony_dscf1 sony_dscf55" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx sse sse2 sse3 ssse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="evdev wacom" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="pdfimport" LINGUAS="en ru uk zh zh_CN" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_4" RUBY_TARGETS="ruby21 ruby23" USERLAND="GNU" VIDEO_CARDS="fglrx" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON

Error during set creation: Could not import 'smartliverebuild.sets.SmartLiveRebuildSet' for section 'smart-live-rebuild'

Kroz ★★★★★
() автор топика
Ответ на: комментарий от Kroz
‘--format=long’
     ...

     For each directory that is listed, preface the files with a line
     ‘total BLOCKS’, where BLOCKS is the total disk allocation for all
     files in that directory.  The block size currently defaults to 1024
     bytes, but this can be overridden (*note Block size::).  The BLOCKS
     computed counts each hard link separately; this is arguably a
     deficiency.
arcanis ★★★★
()

-python3_5*

Ахем. А чему равно PYTHON_TARGETS в /etc/make.conf ?

Update: посмотрел твой выхлоп emerge --info, можешь не отвечать. Там ничего нет связанного с Python, значит используется дефолт, вставь в make.conf строчку:

PYTHON_TARGETS="python2_7 python3_5"

Если тебе нужна поддержка только на определенных пакетах - добавь соответствующие для них USE-флаги в package.use.

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

ACCEPT_KEYWORDS=«~x86», неуч! (=

Эту штуку мне выдает emerge --info. А в make.conf у меня православный ACCEPT_KEYWORDS="~x86".

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

Хм. Быстрый, но не всегдаправильный размер каталога? Сомнительная информация.

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

python3.4 тоже был долгое время замаскирован. Я искал

grep 'python3_4' /usr/portage/profile
а не в /etc/portage/profile.
И нашёл причину.

pS
()
Ответ на: комментарий от Kroz

Что значит на stable? У меня ACCEPT_KEYWORDS=«x86 ~x86»

Это значит, что _флаг_ не применяется на стабильных пакетах. ACCEPT_KEYWORDS здесь ни при чём.

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

Что значит на stable? У меня ACCEPT_KEYWORDS=«x86 ~x86»

Это значит, что _флаг_ не применяется на стабильных пакетах. ACCEPT_KEYWORDS здесь ни при чём.

И означенный флаг, если старший пакет единственный (незамаскированный) — «stable», тоже не будет применяться.

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

Хм. Может быть.
Интересно, чем отличается base/make.defaults от prefix/make.defaults? Похоже, что то, что в prefix, не выполняется.
Сейчас идет апдейт (в связи с «L10N USE_EXPAND variable replacing LINGUAS»), как закончится - попробую...

$ grep 'python3_5' -R /usr/portage/profiles | grep -v ChangeLog
base/package.use.force:dev-lang/python-exec python_targets_python2_7 python_targets_python3_2 python_targets_python3_3 python_targets_python3_4 python_targets_python3_5 python_targets_jython2_7 python_targets_pypy python_targets_pypy3
base/package.use.stable.mask:dev-lang/python-exec -python_targets_python3_5
base/use.stable.mask:python_targets_python3_5
base/use.stable.mask:python_single_target_python3_5
desc/python_targets.desc:python3_5 - Build with Python 3.5
desc/python_single_target.desc:python3_5 - Build for Python 3.5 only
prefix/use.stable.mask:-python_targets_python3_5
prefix/use.stable.mask:-python_single_target_python3_5
prefix/make.defaults:PYTHON_TARGETS="${PYTHON_TARGETS} python3_5"
prefix/windows/cygwin/use.mask:python_targets_python3_5

$ grep 'python3_4' -R /usr/portage/profiles | grep -v ChangeLog
base/package.use:app-backup/backintime python_single_target_python3_4
base/package.use:dev-util/devhelp python_single_target_python3_4
base/package.use:gnome-extra/gnome-builder python_single_target_python3_4
base/package.use:media-libs/lensfun python_single_target_python3_4
base/package.use:media-sound/gnome-music python_single_target_python3_4
base/package.use:media-video/pitivi python_single_target_python3_4
base/package.use.force:dev-lang/python-exec python_targets_python2_7 python_targets_python3_2 python_targets_python3_3 python_targets_python3_4 python_targets_python3_5 python_targets_jython2_7 python_targets_pypy python_targets_pypy3

base/make.defaults:BOOTSTRAP_USE="cxx unicode internal-glib python_targets_python3_4 python_targets_python2_7"
base/make.defaults:PYTHON_TARGETS="python2_7 python3_4"
desc/python_targets.desc:python3_4 - Build with Python 3.4
desc/python_single_target.desc:python3_4 - Build for Python 3.4 only
features/prefix/standalone/legacy/make.defaults:PYTHON_TARGETS="-python3_4"

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

Это значит, что _флаг_ не применяется на стабильных пакетах. ACCEPT_KEYWORDS здесь ни при чём.

$ eix */gvim
[I] app-editors/gvim
     Available versions:  7.4.769 (~)7.4.1583 (~)7.4.1821 **9999 {acl aqua cscope debug gnome gtk lua luajit motif neXt netbeans nls perl python racket ruby selinux session tcl PYTHON_TARGETS="python2_7 python3_3 python3_4 python3_5"}
     Installed versions:  7.4.1821(17:02:15 27.06.2016)(acl gtk nls perl python session -aqua -cscope -debug -gnome -lua -luajit -motif -neXt -netbeans -racket -ruby -selinux -tcl PYTHON_TARGETS="python2_7 python3_4 -python3_3 -python3_5")
     Homepage:            http://www.vim.org/ https://github.com/vim/vim
     Description:         GUI version of the Vim text editor


То есть ты хочешь сказать, что в случае python3.5 (и если бы я не поправил make.conf), на app-editors/gvim-7.4.769 он не будет применен, а на app-editors/gvim-7.4.1821 - будет?

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

Идея такова, но опыта нет. Но опять, как мы говорили выше, всё дело может быть в «prefix». Создание в /etc/portage/profile/prefix (если не ошибаюсь: под рукой нет генты) mask файл с пакетом может решить дело.

Upd. Не с пакетом, а с флагом. Имя файла может быть любым.

pS
()
Последнее исправление: pS (всего исправлений: 2)
Ответ на: комментарий от Kroz

Ладно, портаж неуч. Не обратил внимания, вычитывал только самое важное, игнорируя всё остальное.

Добавлю к ответу Пинкбайта выше: В PYTHON_TARGETS надо добавлять ещё и python3_4, так как не весь софт перешёл на 3.5, и при обновлении софта, умеющего только в 3.4, будет ругаться на отсутствие таргета, и тебе всё равно придётся добавить. Это так, на будущее. Недавно на ЛОРе всплывали желания избавиться от 3.4, но результат, думаю, тебе понятен.

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

Если не сложно, прогляди тему снова от своего сообщения и объясни разницу между profile/use.mask и profile/use.stable.mask, а то мы с Kroz не до конца понимаем все тонкости. Мне достаточно не Ъ.

pS
()
Ответ на: комментарий от Kroz

То, что не подватывается python3.5, это баг или фича?

Что значит не подхватывается? Ты на unstable, у тебя PYTHON_TARGETS=«python2_7 python3_5» в make.conf прописан и пакеты всё еще не собираются с python 3.5?

Если да - пиши багрепорт. Если после задания этой переменной у тебя всё заработало - так и задумано.

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

Всё очень просто.

Допустим есть пакет(например lvm2). Который присутствует как в стабильной, так и в нестабильной ветках.

У него есть опциональная зависимость от, например cman. Включается она через USE=«cman». Но cman нет в стабильной ветке, по причине его крайне капризного поведения.

Как устабилить lvm2? Ведь для стабилизации, требуется чтобы все зависимости пакета были тоже из стабильной ветки.

И тут на сцену выходит package.use.stable.mask в профилях. Указанные там USE-флаги будут по умолчанию НЕДОСТУПНЫ на стабильной ветке.

Это преследует несколько целей. Во-первых, пользователю стабильной ветки не при каких условий не прилетит пакет из нестабильной, если он этого явно не захочет. Во-вторых, мэйнтэйнерам не нужно тестить при стабилизации дополнительные комбинации USE-флагов(софт который это делает перебирает все ДОПУСТИМЫЕ комбинации, за исключением замаскированных).

Далее - package.use.mask. Он чаще применяется в профилях других архитектур, но также имеет применение в основном(base) профиле. Например какая-то опциональная зависимость, контролируемая USE-флагом недоступна на определенной минорной архитектуре. Вывод - в профиле этой архитектуры USE-флаг для этой зависимости будет замаскирован. Следующее возможное применение - фичи, которые есть в самом пакете, но сломаны по своей природе. Такое использование практикуется реже, но всё же имеет место быть.

Например из недавнего:

# Maciej Mrozowski <reavertm@gmail.com> (23 Mar 2016)
# Experimental cairo-qt backend (see bug #568000).
app-text/poppler cairo-qt

Теперь поговорим о том, как пользователь может повлиять на это поведение. Если пакет замаскирован на stable ветке через package.use.stable.mask, размаскировать его можно как через package.use.mask в ./etc/portage/profile, так и через package.use.stable.mask. Отличие в том, что если позднее этот флаг будет замаскирован уже в package.use.mask, то при размаскировании через package.use.stable.mask - эта маскировка не спадёт.

Есть еще use.mask и use.stable.mask, они применяются соответственно для маскирования/размаскирования глобальных USE-флагов. И тоже могут быть применены в /etc/portage

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

Что значит не подхватывается? Ты на unstable, у тебя PYTHON_TARGETS=«python2_7 python3_5» в make.conf прописан и пакеты всё еще не собираются с python 3.5?

Так-то пакеты ставятся.

Просто это немного странно c точки зрения пользователя.

Есть механизм, который который не дает поставить нестабильный пакет - кейворд. Ок, я говорю: хочу ставить нестабильные пакеты. И вот оно ставит мне python 3.5, даже добавляет его поддержку в eselect, но вот PYTHON_TARGETS приходится прописывать вручную. Это что: еще один механизм защиты? Зачем? Совершенно неочевидно. Раз уж дали поставить нестабильный пакет, те пусть будет вся поддержка под него. И потом, мне нужно будет не забыть поправить make.conf когда 3.5 уйдёт. Как бы это автоматизировать?

Если честно, мне кажется, что это просто кто-то провтыкал.

Еще есть странность, состоящая в том, что без правки make.conf PYTHON_SINGLE_TARGET всегда на «python2_7», хотя стабильный 3.4 тоже установлен. В wiki написано

If the user does not specify USE_PYTHON in make.conf (the default case), the packages are built for the versions of Python 2 and Python 3 which are installed and selected via eselect python.
Но на практике eselect вообще никак не влияет на PYTHON_* переменные.

Но если ситуация с PYTHON_TARGETS не баг, то это значения не имеет, так как получается, что менеджить PYTHON_* переменные всё равно придется вручную.

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

вот PYTHON_TARGETS приходится прописывать вручную. Это что: еще один механизм защиты? Зачем?

Нет, это механизм установки пакета под множественные версии. Поясняю - в базовом профиле проставлен PYTHON_TARGETS для stable - чтобы там ничего не нарушалось.

Где прикажешь прописывать его на unstable? Создавать под каждую архитектуру профиль только для unstable? Предполагается, что люди на unstable сами знают чего хотят и осилят прописать одну строчку в make.conf(а некоторые живут на профилях с I_KNOW_WHAT_I_AM_DOING=yes :-))

Если честно, мне кажется, что это просто кто-то провтыкал.

Предложи решение, которое не чревато раздуванием количества профилей.

USE_PYTHON in make.conf

USE_PYTHON is deprecated с введением python-r1 eclass. Это года с 2014, не меньше. Этот ман еще жив только потому, что остались пакеты на старых еклассах.

Но если ситуация с PYTHON_TARGETS не баг, то это значения не имеет, так как получается, что менеджить PYTHON_* переменные всё равно придется вручную.

Те, кого волнуют такие моменты - создают себе собственный профиль(локальный в /etc/portage/profile или в своём оверлее) и менеджат там всё как им вздумается.

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

Предложи решение, которое не чревато раздуванием количества профилей.

Вариантов несколько. Самый простой ИМХО - сделать так, чтобы дефолтные значения PYTHON_* переменных генерились на основании eselect python aka /etc/python-exec/python-exec.conf. Это, кстати, был мой expectation до этого треда.

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

Спасибо за такой полезный комментарий. Многого не знал, особенно в плане маскировки флагов.

pS
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.