LINUX.ORG.RU

[Gentoo] Собственный .ebuild

 


0

1

Доброго времени суток. Возникла служебная необходимость запихнуть некие скрипты в ебилд. Суть - необходимо заменить файл /usr/lib/kde4/libexec/kscreenlocker, предоставляемый пакетом krunner на свой, оригинал переместив, например, в /usr/lib/kde4/libexec/kde-screenlocker. Вопрос в следующем - как сделать требуемое наиболее оперативно и наименее болезненно? Пробовал в .ebuild src_install() сделать

cp -p /usr/lib/kde4/libexec/kscreenlocker ${S}/kde-screenlocker
insinto /usr/lib/kde4/libexec
doins ${S}/kscreenlocker
doins ${S}/kde-screenlocker

И это, конечно же, не удалось, так как было воспринято, как попытка нарушить целостность файловой системы -) (с portage изнутри знакомлюсь впервые, тема дается тяжко) Иные попытки(mv в src_prepare) были, судя по всему, еще более бессмысленными, так как на них совершенно никакой реакции от системы не последовало. Гугление на вопрос «file collisions» навело на epatch, которым неведомым образом используются патчи с незнакомым мне синтаксисом(видимо, тема столь же богата, как и вся философия пакетов Gentoo).

Буду рад любой помощи.

Заранее благодарен.

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

А что вы с кдешным блоком сделали?

Врапер. kscreenlocker - баш-файл, вызывающий мой скрипт, который прежде чем выполнить оригинальный локер(который я перемещаю в kde-screenlocker), совершает еще пару нужных мне действий.

striding_me
() автор топика

самый простой вариант это сделать новый ебилд на kscreenlocker, который должен будет делать всё, что тебе нужно.

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

ещё можно в /usr/local/bin/ положить свой kscreenlocker, который будет запускать /usr/bin/kscreenlocker, ну и проследить, что PATH корректный.

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

Дело в том, что /usr/lib/kde4/libexec/kscreenlocker, как говорит portage, предоставляется krunner. Пакет krunner выглядит так: http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/kde-base/krunner/krun... У меня уйдет пол-жизни, чтобы понять хотя бы, как составляется на основе kde4-meta.eclass его SRC_URI, и еще столько же, чтобы найти место замены, и подставить свои значения. Может, я вас неправильно понял, и задача представится куда более тривиальной, но в текущем ее видении я представляю себе это очень трудозатратным -(

Так как делается это все все равно при создании статичного, собираемого раз в N stage4, то опасаться каких-либо дальнейших конфликтов portage нет поводов. Оптимальным решением было бы узнать, как в ebuild можно получить права на работу с live fs, пододвинуть старый файл, тихонько вставить новый, и дело с концом.

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

ещё можно в /usr/local/bin/ положить свой kscreenlocker, который будет запускать /usr/bin/kscreenlocker, ну и проследить, что PATH корректный.

Цель состоит в том, чтобы при нажатии пользователем 'lock screen' выполнялся не сам kscreenlocker, а мой врапер -) Я не уверен, что если поместить в /usr/local/bin свой kscreenlocker, можно добиться желаемого результата -(

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

man 5 ebuild

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

striding_me
() автор топика

Помогли на gentoo.org Решение - собственный оверлей и переписывание krunner.ebuild (как и рекомендовал qnikst, за что спасибо). Для реализации будет использован такой код:

src_install() { 
         kde4-meta_src_install 
         mv "${D}/usr/lib/kde4/libexec/kscreenlocker" "${D}/usr/lib/kde4/libexec/kde-screenlocker" 
 }
striding_me
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.