Portage на PyPy. Как? [Solved]

Знающие, научите, pls, как натравить портэдж на PyPy вместо питона?

Зачем?!

Зачем?!

.

SysA написал(а):
Зачем?!

А вы зачем спрашиваете? Обычный флуд, или уточняете, чтобы развёрнуто ответить?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Чтобы понять ЗАЧЕМ! :)

Чтобы понять глубинный смысл... ;)
Ибо обычного, операционного смысла не вижу! Т.к. там, где есть Pypy, сам Python тоже точно есть!
Даже не вижу смысла вообще ставить Pypy, кроме как на рабочей машинке очень уж специфического программиста Питона, для которого это может быть нужно.

.

SysA написал(а):
обычного, операционного смысла не вижу

Разве то, чего вы не видите, означает, что оно не существует? ;-) Я всего лишь пытаюсь избежать порожняка в форме оффтопа

Цитата:
на рабочей машинке очень уж специфического программиста Питона, для которого это может быть нужно

Хоть я и не считаю себя очень уж специфическим, но мне это нужно (вот ведь незадача...)
Вы можете мне помочь по-существу в обозначенном вопросе?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Могу.

Spoiler написал(а):
SysA написал(а):
обычного, операционного смысла не вижу

Разве то, чего вы не видите, означает, что оно не существует? ;-)

Потому и спрашиваю!

Spoiler написал(а):
Я всего лишь пытаюсь избежать порожняка в форме оффтопа

Непонятно.

Spoiler написал(а):
Цитата:
на рабочей машинке очень уж специфического программиста Питона, для которого это может быть нужно

Хоть я и не считаю себя очень уж специфическим...

Именно так, ибо нормальные змеиные программисты используют сам Python! :) Я бы еще понял использование C(P)ython'а, но страсть к PyPy, а тем более на системном уровне - это непонятно! Неужели только из-за JIT'а?!

Spoiler написал(а):
...но мне это нужно (вот ведь незадача...) Вы можете мне помочь по-существу в обозначенном вопросе?

Могу.

.

SysA написал(а):
Могу

С мення что-то требуется дополнительно? Но что я могу удалённо? :-( Аааа, кажется, догадалси... Итак:
Уважаемый SysA, научте, pls, как убедить портэдж использовать для просчёта зависимостей (а по возможности, и для всей своей деятельности) PyPy.
Два раза ку ;-)
Без сарказма :-)

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Сначала внятно ответь на мой

Сначала внятно ответь на мой вопрос. Хочу и я свой образовательный уровень поднять... ;)

А потом

emerge --info portage

SysA написал(а): Сначала

SysA написал(а):
Сначала внятно ответь на мой вопрос. Хочу и я свой образовательный уровень поднять... ;)

А потом

emerge --info portage

Мы тоже не всего читали Шнитке!.. © В. Вишневский

SysA написал(а): Сначала

SysA написал(а):
Сначала внятно ответь на мой вопрос. Хочу и я свой образовательный уровень поднять... ;)

А потом

emerge --info portage

Мы тоже не всего читали Шнитке!.. © В. Вишневский

SysA написал(а): Сначала

SysA написал(а):
Сначала внятно ответь на мой вопрос. Хочу и я свой образовательный уровень поднять... ;)

А потом

emerge --info portage

Мы тоже не всего читали Шнитке!.. © В. Вишневский

SysA написал(а): Сначала

SysA написал(а):
Сначала внятно ответь на мой вопрос. Хочу и я свой образовательный уровень поднять... ;)

А потом

emerge --info portage

Мы тоже не всего читали Шнитке!.. © В. Вишневский

,

SysA написал(а):
внятно ответь на мой вопрос

Позволю себе смелость на грани наглости - вместо внятного ответа я верну вам вашу же цитату: Неужели только из-за JIT'а?!. Имхуется мне, ваше предубеждение против данного механизма неск-ко преувеличено

Цитата:
emerge --info portage

Portage 2.3.77 (python 3.7.4-final-0, default/linux/amd64/17.1/no-multilib, gcc-9.2.0, glibc-2.29-r5, 5.3.6-gentoo-r1 x86_64)
=================================================================
System Settings
=================================================================
System uname: Linux-5.3.6-gentoo-r1-x86_64-AMD_Ryzen_7_3800X_8-Core_Processor-with-gentoo-2.6
KiB Mem: 65818528 total, 60350032 free
KiB Swap: 0 total, 0 free
Timestamp of repository gentoo: Tue, 15 Oct 2019 15:11:40 +0000
Head commit of repository gentoo: 1f2b98b65774862762aefdd3afb3abc7315d9014

sh bash 5.0_p11
ld GNU ld (Gentoo 2.32 p2) 2.32.0
app-shells/bash: 5.0_p11::gentoo
dev-lang/perl: 5.30.0::gentoo
dev-lang/python: 2.7.16::gentoo, 3.6.9::gentoo, 3.7.4-r1::gentoo
dev-util/cmake: 3.15.4::gentoo
dev-util/pkgconfig: 0.29.2::gentoo
sys-apps/baselayout: 2.6-r1::gentoo
sys-apps/sandbox: 2.18::gentoo
sys-devel/autoconf: 2.13-r1::gentoo, 2.69-r4::gentoo
sys-devel/automake: 1.16.1-r1::gentoo
sys-devel/binutils: 2.32-r1::gentoo
sys-devel/gcc: 9.2.0-r1::gentoo
sys-devel/gcc-config: 2.1::gentoo
sys-devel/libtool: 2.4.6-r5::gentoo
sys-devel/make: 4.2.1-r4::gentoo
sys-kernel/linux-headers: 5.3::gentoo (virtual/os-headers)
sys-libs/glibc: 2.29-r5::gentoo
Repositories:

gentoo
location: /usr/portage
sync-type: git
sync-uri: git://github.com/gentoo-mirror/gentoo
priority: -1000

ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="*"
CBUILD="x86_64-pc-linux-gnu"
CC="/usr/bin/gcc"
CFLAGS="-fomit-frame-pointer -march=znver2 -mtune=znver2 -Os -pipe"
CHOST="x86_64-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/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXX="/usr/bin/g++"
CXXFLAGS="-fomit-frame-pointer -march=znver2 -mtune=znver2 -Os -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS="--autounmask=n --keep-going=y"
ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-fomit-frame-pointer -march=znver2 -mtune=znver2 -Os -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs collision-protect config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync metadata-transfer multilib-strict network-sandbox news noinfo parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-fomit-frame-pointer -march=znver2 -mtune=znver2 -Os -pipe"
GENTOO_MIRRORS="https://gentoo.osuosl.org https://mirrors.kernel.org/gentoo/ http://mirror.yandex.ru/gentoo-distfiles https://ftp-stud.hs-esslingen.de/pub/Mirrors/gentoo http://ftp.snt.utwente.nl/pub/os/linux/gentoo http://ftp.spline.inf.fu-berlin.de/mirrors/gentoo ftp://ftp.dvo.ru/pub/Gentoo/ ftp://mirror.yandex.ru/gentoo-distfiles/"
LANG="ru_RU.UTF-8"
LC_ALL="ru_RU.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,-z,now -Wl,-z,relro -Wl,-S -Wl,--as-needed"
LINGUAS="ru ru_RU"
MAKEOPTS="-j15"
PKGDIR="/var/cache/binpkgs"
PORTAGE_BINHOST="http://tinderbox.dev.gentoo.org/default/linux/amd64/"
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/tmp"
USE="X a52 aac acpi adns alsa amd64 bash-completion berkdb bluetooth bzip2 cairo caps cli css cups curlcustom-cflags dbi dbus designer dga djvu dri dts exif expat fam ffmpeg fftw flac flatfile fontconfig fortran gd gdbm geoip gif glut gmp gnutls gsm gstreamer gzip iconv icu idn ipv6 javascript jpeg kde lcmslibedit libffi libtirpc lm_sensors lz4 lzma lzo mad matroska mhash minimal mmap mng mp3 mp4 mpeg mpi mplayer mtp musepack ncurses nls nomultilib nptl ocaml ocamlopt ogg openal opencl opengl openmp oscar pam pcre pdf plasma png policykit portaudio postgres pulseaudio qdbm qt5 quicktime readline rss seccomp slang smp socks5 speex spell split-usr sqlite ssl suid svg symlink syslog systemd theora threads tidy tiff truetype udev unicode unwind upnp usb vaapi vdpau vorbis wavpack wayland xattr xcb xcomposite xft xml xmpp xpm xv xvid zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="hda-intel amdgpu usb-audio" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="adcx aes avx avx2 clflushopt clzero f16c fma fma3 fma4 mmx mmxext mwaitx pclmul popcnt rdseed sha sse sse2 sse3 sse4_1 sse4_2 ssse3 xsavec xsaves" CURL_SSL="gnutls" ELIBC="glibc" FFTOOLS="qt-faststart ffhash" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64" INPUT_DEVICES="evdev" KERNEL="linux" L10N="ru" LLVM_TARGETS="AMDGPU BPF X86" NETBEANS_MODULES="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-1" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="pypy3 python3_7" PYTHON_TARGETS="pypy pypy3 python3_6 python3_7" RUBY_TARGETS="ruby27 ruby26" USERLAND="GNU" VIDEO_CARDS="amdgpu radeonsi" 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: CPPFLAGS, CTARGET, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
Package Settings
=================================================================

sys-apps/portage-2.3.77::gentoo was built with the following:
USE="(ipc) native-extensions xattr -build -doc -epydoc -gentoo-dev -rsync-verify (-selinux)" PYTHON_TARGETS="pypy python2_7 python3_6 python3_7 -python3_5"

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Ответ не защитан. Я

Ответ не защитан.

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

.

SysA написал(а):
Ответ не защитан

Ого, дык у нас "торг уместен"? Тогда предъявите ваши козыри (можно тезисно :-)), а то как знать, вдруг - лохотрон ;-)

Цитата:
действительно хочу выслушать развёрнутый ответ специалиста в данной области

Вынужден разочаровать, в данной области я не великий специалист. Джента для меня как инструмент переключения, ухода от окружающего, испытательного полигона, хз что там ещё... Эдакий лёгкий, безобидный, и при этом полезный нейролептик. Люблю всё новое, необшарпанное - к примеру, systemd я себе внедрил, когда оно ещё не поддерживалось официально, сборку посредством CLang тоже юзал некоторое время (потом отказался), LibreSSL, синк дерева посредством GIT (оч доволен), зависимисти в SQLite (тоже неплохо), etc... Теперь вот пришла очередь PyPy. Нет дыма без огня, а сеть полна обзорами и сравнительными испытаниями по этому инструменту. И поск-ку я никому не верю на слово, хочу выяснить для себя, наск-ко в данном случае горяч этот огонь. Круг задач портэжа очень даже подходит под то, где PyPy рулит (арифметика, списки, сортировка)

Цитата:
понять возможный бизнес-кейс

Я тоже хочу. Вот проверю, и доложу по рез-ту (ессно, если будете себя хорошо вести) ;-)

Мы тоже не всего читали Шнитке!.. © В. Вишневский

OK, с тобой все

OK, с тобой все ясно...

Делаешь так:

В /etc/portage/package.use для основных пакетов портажа

app-portage/gemato
app-portage/gentoolkit
app-portage/layman
sys-apps/portage

добавляешь опции:

python_single_target_pypy
python_targets_pypy

и для каждой мажорной версии питона, которая у тебя стоит (2.7, 3.6, 3.7).

-python_single_target_pythonX_Y
-python_targets_pythonX_Y

т.е. у тебя будет что-то типа:

sys-apps/portage -python_targets_python2_7 -python_targets_python3_6 python_targets_pypy python_single_target_pypy -python_single_target_python2_7 -python_single_target_python3_6

для каждого пакета.

Потом (в идеале) обновляешь мир командой

emerge -uDN --with-bdeps=y --backtrack=30 --keep-going @world -q

или хотя бы портаж:

emerge -uDN --with-bdeps=y --backtrack=30 --keep-going $(qlist -IC portage) -q

и устраняешь конфликты и ошибки, если они есть. А они, скорее всего, будут! :)

P.S. К сожалению, некоторые утилиты портажа (app-portage/cpuid2cpuflags, app-portage/eix, app-portage/elt-patches, app-portage/genlop, app-portage/mirrorselect, app-portage/pfl, app-portage/portage-utils) не поддерживают PyPy, поэтому полностью на него перейти не удастся!

P.P.S. Здесь упомянуты только те пакеты портажа, которые установлены у меня. У тебя список может быть иным, но подход будет таким же.

.

SysA написал(а):
т.е. у тебя будет что-то типа:
sys-apps/portage -python_targets_python2_7 -python_targets_python3_6 python_targets_pypy python_single_target_pypy -python_single_target_python2_7 -python_single_target_python3_6

К манипуляциям переменными PYTHON_SINGLE_TARGET я и сам додумался - так-то оно на поверхности, только вот нет у sys-apps/portage такого флага, увы. PYTHON_TARGETS есть, и PyPy в нём торчит, но этого недостаточно, для задумки необходим именно _SINGLE_. Нет, уважаемый SysA, таким кавалерийским наскоком дело не сделать, надо копать глубже, но - увы, не знаю куда... Да ещё, как назло, в гугле забанили - молчит гугль, тихо так молчит...
Upd: в eselect-python первыми выбраны именно PyPy

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Ты не прав!

Ты не прав!

.

В чём?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Если соберешь только с ПиПи,

Если соберёшь только с ПиПи, то и работать будет с ПиПи.
А лишние параметры, потому что я концепцию описывал!
Если проблемы - давай логи, а не философствования!

.

SysA написал(а):
Если соберешь только с ПиПи, то и работать будет с ПиПи

Хорошо, попробую... Tnx!
Upd: пришлось вынести пакеты gentoolkit, porthole, elogviewer, kuroo, требующие питон2.7. Ладно, не жалко, есть альтернативы, но... сам портэж обломался с ошибкой ModuleNotFoundError: No module named 'portage.util.netlink', хотя и установился. Будем наблюдать...
UpdUpd: пока что на этапе просчёта зависимостей только усилился шум вентиляторов. Органо-лептически прироста скорости не замечаю. Имхуется мне, это я всего лишь убрал биндинги портажа, а сам он как работал через питон, так и работает. Как бы узнать наверняка?

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Органо-лептически прироста

Органо-лептически прироста скорости не замечаю

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

А баш-то тут причём?!

А баш-то тут причём?!

% head -n2

% head -n2 /usr/lib/portage/python2.7/ebuild.sh
#!/bin/bash
# Copyright 1999-2018 Gentoo Foundation

При портаже очевидно)

Spoiler

Spoiler написал(а):
...Имхуется мне, это я всего лишь убрал биндинги портажа, а сам он как работал через питон, так и работает. Как бы узнать наверняка?

Я был о тебе лучшего мнения! :)

Смотри в /usr/lib/python<ВерсияПитона>/site-packages/ - там будут все системные модули/программы под соответствующую версию Питона (ПиПи аналогично)! Ну и проверь/настрой, куда ведут линки (file `which emerge`, например).
Можешь вызывать их явно через ПиПи, если хочешь...

.

SysA написал(а):
/usr/lib/python<ВерсияПитона>/site-packages/

Ну, да, очевидно же... Что ж, стар стал. Забывчив. Вас вот опечалил... Просю пардону...

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Ну у вас там

Ну у вас там "...глушь, Саратов..."(С), так что простительно! :)

.

SysA написал(а):
глушь, Саратов

Так и есть, всем привет из Засратова. А по теме, провёл сравнительные испытания - реальный выигрыш 1.6 ~ 1.7 раза, что вполне достойный результат. Но вот весь позитив, к сож, "выпадает в осадок" на фоне утиля, который пришлось вынести. Хочу его обратно. Пока терпимо, но мелькает мысль вернуть всё "в зад". В любом случае, эксперимент подтвердил выигрыш пипи, но, как говорится - гладко было на бумаге, да забыли про овраги. Иными словами - рад бы в рай, да грехи (вынесенный утиль) не пускают. Очень-очень сорри...
SysA, спасибо за наводку

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Tak какие проблемы?

Spoiler написал(а):
... Но вот весь позитив, к сож, "выпадает в осадок" на фоне утиля, который пришлось вынести. Хочу его обратно. Пока терпимо, но мелькает мысль вернуть всё "в зад"...

Tak какие проблемы? Питон-то все равно стоит! Пусть кто может - в ПиПи, а кто нет - так просто в Пи!.. ;)
Я не понял - зачем сносить-то было?!..

.

SysA написал(а):
кто может - в ПиПи, а кто нет - так просто в Пи!

Дык вся замутка основана на том, что у портежа остаётся единственный флаг - пипи, а снесённый утиль требовал питон2.7. Если вернуть все флаги на место - так и будет происходить, как вы говорите, но при этом сам портэж тоже предпочтёт себе другой интерпретатор. Вот такой сюрприз :-) грустный

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Это решается соответствующими

Это решается соответствующими линками, в худшем случае ещё понадобится написать парочку примитивных скриптов, но можно сделать так, как я написал выше, т.е. гибрид ПиПи и Пи.

.

SysA написал(а):
гибрид ПиПи и Пи

Гибрид у меня был и есть. Просто при таком раскладе заставить сам портэж использовать тот или ирой питон не представляется возможным, а линки не годятся, тк питоны не обладают совместимостью 2.7<>3.x, не говоря уже о пипи. Поэтому и растёт огород питонов, что биндинги одного не подменишь биндингами другого

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Ты так и не понял... портаж -

Ты так и не понял... портаж - это всего лишь набор баз и программ для их обработки. И можно каждую утилитку/программу линковать (в смысле ссылки) напрямую на интерпретатор нужного Пи/ПиПи, как это и делается изначально - например:

/usr/bin/emerge: symbolic link to ../lib/python-exec/python-exec2

или через свой скриптик. Причём каждую программку независимо... И все будет работать как надо!

Ну и ладно - это не моя война, поступай как знаешь.

.

SysA написал(а):
портаж - это всего лишь набор баз и программ для их обработки

Меня, собсно, интересуют только 3 инструмента портежа - emerge, ebuild и egencache

Цитата:
через свой скриптик

СлабО

Цитата:
все будет работать как надо

Ни разу даже не сумневаюсь, да соображалка дальше не пускает
SysA, благодарю вас

Мы тоже не всего читали Шнитке!.. © В. Вишневский

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".