kde-gtk-config без gtk3

С интересом выяснил, что ЕДИНСТВЕННЫЙ пакет, тянущий в мою систему gtk3 (и, в свою очередь, её зависимости) - это kde-misc/kde-gtk-config. Нужно это ему всего-навсего для превьюшки, там же есть типа патч, причём рабочий, который позволяет включать/отключать поддержку той или иной версии gtk.
К стыду своему, я не умею накладывать патчи. Пожалуйста, расскажите мне (на уровне младшего брата по разуму):

  1. Как на основе этой страницы сформировать патч?
  2. Как его наложить? Я честно читал man patch, но не хватило базовых знаний - запутался.
  3. Как этот патч подключить к ebuild-у, чтобы там были флаги gtk2 и gtk3

Вот источник, только уберите подчёркивание - пришлось добавить, чтобы спам-фильтр не ругался.
https://git.review_b_o_ard.kde.org/r/110636/

Вам нужно поместить этот

Вам нужно поместить этот ebuild в локальный оверлей и добавить в него, например функцию 'src_prepare'
src_prepare
в ней прописать наложение патча из файла, либо добавить функцию epatch_user и затем разместить патч в /etc/portage/patches, более подробно читайте здесь: http://megabaks_blogspot_ru/2012/10/portage.html

В имени домена "_" заменить на ".".

Зачем этот спамфильтр ?!!!

Для того, что бы получить собственно патч вам нужно сделать копию файла в который будете вносить изменения, внести изменения в копию и затем посредством утилиты diff сделать контекстный патч, о том какими ключами воспользоваться почитайте в Internet.

С другой стороны, если вы хотите сделать всё более правильно, то вам так же нужно добавить флаг, например gtk3, для включения и отключения наложения патча. Заодно после получения патча и ebuild`а можете написать запрос с багзиллу с предложением включения вашего патча и ebuild`а в основное дерево. Но не факт, что примут, сейчас постепенно идёт переход на gtk3.

>Заодно после получения патча

>Заодно после получения патча и ebuild`а можете написать запрос с багзиллу с предложением включения вашего патча и ebuild`а в основное дерево.
Ключевое слово – можете. Истинный смысл: можете писать/не писать – с одинаковым результатом.

Во-первых, спасибо, далее по

Во-первых, спасибо, далее по пунктам:

kostik87 написал(а):
Вам нужно поместить этот ebuild в локальный оверлей и добавить в него, например функцию 'src_prepare'
src_prepare
в ней прописать наложение патча из файла, либо добавить функцию epatch_user и затем разместить патч в /etc/portage/patches, более подробно читайте здесь: http://megabaks_blogspot_ru/2012/10/portage.html

С этим-то более-менее понятно.

kostik87 написал(а):
В имени домена "_" заменить на ".".

Зачем этот спамфильтр ?!!!

Самому интересно, но пока я методом тыка не сообразил изуродовать ссылку, моё сообщение не хотело отправляться, ругаясь на спамфильтр.

kostik87 написал(а):
Для того, что бы получить собственно патч вам нужно сделать копию файла в который будете вносить изменения, внести изменения в копию и затем посредством утилиты diff сделать контекстный патч, о том какими ключами воспользоваться почитайте в Internet.

С другой стороны, если вы хотите сделать всё более правильно, то вам так же нужно добавить флаг, например gtk3, для включения и отключения наложения патча. Заодно после получения патча и ebuild`а можете написать запрос с багзиллу с предложением включения вашего патча и ebuild`а в основное дерево. Но не факт, что примут, сейчас постепенно идёт переход на gtk3.

Вы явно переоцениваете мой уровень :-). Я не смог разобраться даже с наложением патча...

1) Создание локального

1) Создание локального оверлея:

root # mkdir -p /usr/local/portage/{profiles,metadata}
root # echo "masters = gentoo" > /usr/local/portage/metadata/layout.conf
root # echo "local_overlay" > /usr/local/portage/profiles/repo_name
root # echo "PORTDIR_OVERLAY='/usr/local/portage'" >> /etc/portage/make.conf

2) Копируем нужный ebuild в локальный оверлей и делаем необходимые подготовки:

root # cp -p /usr/portage/kde-misc/kde-gtk-config/ /usr/local/portage/
root # mkdir /usr/local/portage/kde-misc/kde-gtk-config/files
root # mv /usr/local/portage/kde-gtk-config/kde-gtk-config-2.2.1.ebuild /usr/local/portage/kde-gtk-config/kde-gtk-config-999.ebuild

3) Как делать/применять патчи:
http://dskarataev.ru/2011/09/sozdanie-i-nalozhenie-patchej/
Полученный патч нужно положить в каталог /usr/local/portage/kde-misc/kde-gtk-config/files

4) В вашем новом ebuild (/usr/local/portage/kde-gtk-config/kde-gtk-config-999.ebuild) создаете секцию src_prepare и добавляете в нее такой код:

src_prepare() {
    epatch "${FILESDIR}/file.patch"
}

5) Создание манифеста для полученного ebuild'a:

root # cd /usr/local/portage/kde-gtk-config/
root # ebuild kde-gtk-config-999.ebuild digest

6) Пробуем установить :-)

P.S. В целом все должно сработать.

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

Итак, оно заработало, спасибо

Итак, оно заработало, спасибо знатокам!
Да, ещё раз попытаюсь объяснить, а то люди зря тратят своё время, описывая уже известные мне вещи, а о неведомом говорят вскользь, типа любой дурак знает. К сожалению, не любой. Про локальный оверлей я прекрасно знаю в объёме Вики, и он у меня работает не первый год. Но: В программировании я типичный хомяк-самоучка - нахватался по форумам/Гуглу/Вики, и многих азов, о которых там не пишут, соответственно не знаю. Хуже всего, что из-за этого я половину мануалов не понимаю - терминология, да ещё английская. Например, что такое "version bump", никакие Гугл и Яндекс мне не ответили.

Делал в итоге так:

  1. Распаковал сорцы kde-gtk-config и зашёл туда.
  2. На основе той самой страницы из первого сообщения я понял, что нужно изменить файлы CMakeLists.txt и src/gtkconfigkcmodule.cpp:
    .../kde-gtk-config-2.2.1 $ cp CMakeLists.txt CMakeLists.txt.new
    .../kde-gtk-config-2.2.1 $ cp ./src/gtkconfigkcmodule.cpp ./src/gtkconfigkcmodule.cpp.new
    
  3. Поправил эти самые .new-файлы на основе той самой страницы и сделал патчи по ссылке от Кеши:
    .../kde-gtk-config-2.2.1 $ diff -uN CMakeLists.txt CMakeLists.txt.new > CMakeLists.txt.patch
    .../kde-gtk-config-2.2.1 $ diff -uN ./src/gtkconfigkcmodule.cpp ./src/gtkconfigkcmodule.cpp.new > gtkconfigkcmodule.patch
    

    Вот такие патчи получились: http://codepad.org/lDNvkyg6 и http://codepad.org/HglORPKS

  4. Изменил, как сумел, ebuild: http://codepad.org/RwosAfVP (долбаный спамфильтр, только из-за него пастить пришлось)
  5. Успешно поставил. GTK3 не нужен (в моей системе)! Темы GTK2 успешно ставятся и применяются.

Остались вопросы:

  1. Как в ebuild-е сделать так, чтобы в зависимости от юзов менялась конфигурация? (WITH_GTK3_PREVIEW ON/OFF)
  2. Что ещё нужно поправить?

Цитата: Как в ebuild-е

Цитата:
Как в ebuild-е сделать так, чтобы в зависимости от юзов менялась конфигурация?

А вы почитать другие секции Gentoo Dev Manual не пробовали ? Ну или посмотреть другие ebuild`ы на предмет того, как это реализовано.

Вот пример:

     if use java; then
                # make install puts the _java.so there, and no it's not $(get_libdir)
                rm -rf "${D}/usr/lib/java"
                java-pkg_doso Bindings/Java/libbrlapi_java.so
                java-pkg_dojar Bindings/Java/brlapi.jar
        fi

Т.е. в вашем случае что-то вроде:

if ! use gtk3; Then
	epatch "$FILESDIR/CMakeLists.patch"
	epatch "$FILESDIR/gtkconfigkcmodule.patch"
fi

Пробовал, представьте себе,

Пробовал, представьте себе, понял, что это должно быть в src_configure()
Но как изменять значения переменных в .cpp файлах (это С++ ?) я понятия не имею. Ваш пример к делу не относится, пожалуйста, прежде чем писать (а тем более, наезжать, типа читал ли я DevManual), прочитайте внимательно предыдущие посты.

Цитата:Но как изменять

Цитата:
Но как изменять значения переменных в .cpp файлах (это С++ ?) я понятия не имею.

Патчем.

Ну и строго говоря наложение патчей всё же в src_prepare() .

Цитата:
Ваш пример к делу не относится, пожалуйста, прежде чем писать (а тем более, наезжать, типа читал ли я DevManual), прочитайте внимательно предыдущие посты.

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

Тогда мне не понятен вообще ваш вопрос. Перечитайте лучше вы предыдущие посты.

Насколько я понял у Вас все

Насколько я понял у Вас все заработало, но Вы хотите сделать все по правилам.
Тогда костик прав, Вам нужно немного поправить код, который вы добавили к ebuild примерно так:

src_prepare() {
        if use gtk3 ; then
           return
        fi
	epatch "$FILESDIR/CMakeLists.patch"
	epatch "$FILESDIR/gtkconfigkcmodule.patch"
}

Если включен юз-флаг gtk3 - выйти из данной секции, в противном случае наложить патчи.

Я типичный русский колхозник.
Долго запрягаю, быстро езжу и сильно торможу...

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

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