LINUX.ORG.RU
ФорумAdmin

Установить пакет без анпака

 , , , ,


1

3

Суть проблемы amdvlk не собирается как я понял и за gcc-13, но я нашел вроде как решение этой проблемы, а именно просто добавить #include <cstdint> в amdrdf.h, но есть одно, но

из-за ошибки по сути вся сборка застряла /var/tmp/portage/media-libs/amdvlk-2023.1.2, я в ней же внес это изменение, но после того как я запускаю emerge amdvlk он заново распаковывает пакеты в эту же директорию тем самым затирая исправление которое я внес

суть вопроса как сделать так, чтобы он просто продолжил сборку с моим исправлением?

Перемещено hobbit из general

★★

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

Это первое что мне пришло в голову, но для меня это пока что темный лес

да и хотелось заранее проверить не факт что после этого драйвер будет работать)

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

можно ли обойтись без гита

  1. Берешь две папки с исходниками amdvlk-2023.1.2 и напр. amdvlk-2023.1.2-fixed
  2. В amdvlk-2023.1.2-fixed вносишь своё исправление
  3. Делаешь патч: diff -u amdvlk-2023.1.2/ amdvlk-2023.1.2-fixed/ > /etc/portage/patches/media-libs/amdvlk-2023.1.2/myfix.patch
  4. emerge -1 amdvlk-2023.1.2
Gary ★★★★★
()
Ответ на: комментарий от SPRATAY

Можно конечно, я вообще не понимаю где ты там сложности нашёл. Просто делаешь diff в формате patch между оригинальным файлом и изменённым, а потом кладёшь его в /etc/portage/patches/категория/программа-версия.подверсия/мой_патч.patch

И он на этапе подготовки исходников автомагически накладывается. Во, выше уже на пальцах всё объяснили.

Только сначала сделай ebuild /путь/к/файлу/ebuild/в/дереве/портажа.ebuild unpack, чтобы рабочую директорию приготовить, которую ты скопируешь, поправишь и сделаешь diff. Если в ebuild есть секция prepare можешь ещё после unpack prepare сделать, там иногда в этой секции какая либо предварительная подготовка исходников может делаться.

И вообще, почитай man ebuild, сделай сначала руками сборку по этапам, руками поправив нужный файл, убедись что всё собирается и работает, и потом уже можешь патч рожать и через /etc/portage/patches его накладывать.

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

Ну как минимум, это не удобно и это потребует сборки с нуля. Вообще в генте не хватает какой-нибудь утилиты, чтобы автоматом делать prepare в другой каталог и формировать патч в /etc/
Но на разовые ошибки, которые в следующем же релизе исправят делать патч особого смысла нет, просто поправить, доставить через ebuild и замаскировать до лучших времён (с gcc, который собирается с pgo/lto несколько часов - всегда так делаю)

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

к сожалению мне пришлось писать полный путь до изменённого файла(

spratay-pc /var/tmp/portage/media-libs # diff -u amdvlk-2023.1.2/ amdvlk-2023.1.2-fix/
Общие подкаталоги: amdvlk-2023.1.2/.ipc и amdvlk-2023.1.2-fix/.ipc
Общие подкаталоги: amdvlk-2023.1.2/distdir и amdvlk-2023.1.2-fix/distdir
Общие подкаталоги: amdvlk-2023.1.2/homedir и amdvlk-2023.1.2-fix/homedir
Общие подкаталоги: amdvlk-2023.1.2/temp и amdvlk-2023.1.2-fix/temp
Общие подкаталоги: amdvlk-2023.1.2/work и amdvlk-2023.1.2-fix/work
SPRATAY ★★
() автор топика
Ответ на: комментарий от SPRATAY

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

Вот почитай: https://wiki.gentoo.org/wiki//etc/portage/patches

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

необязательно перебирать все этапы по порядку. просто выполни qmerge, он выполнит все этапы по порядку вплоть до qmerge (те, что ещё не выполнены)

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

Я не знаю про какой выхлоп ты говоришь.

Потрудись изъясняться точнее, может тебя тогда поймут.

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

Далее собирай пакет, в выводе emerge удостоверься, что патч примерился, возможно его нужно применять последним. Команда ebuild так же тебе в помощь для тестов.

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

а нельзя просто подправить сам скрипт сборки?

Ты предлагаешь: положить файл патча в нужную директорию, подправить скрипт сборки.

Gentoo way: положить файл патча в нужную директорию (это всё).

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

Ну как минимум, это не удобно и это потребует сборки с нуля.

Если не нужна сборка с нуля, пользуйся командой ebuild, писали выше: Установить пакет без анпака (комментарий)

Вот список всех фаз: https://devmanual.gentoo.org/ebuild-writing/functions/index.html

Вот в упрощённом виде: https://wiki.gentoo.org/wiki/Stepping_through_ebuilds

Но на разовые ошибки, которые в следующем же релизе исправят делать патч особого смысла нет, просто поправить, доставить через ebuild и замаскировать до лучших времён (с gcc, который собирается с pgo/lto несколько часов - всегда так делаю)

Это при условии что ты гарантированно не будешь переустанавливать пакет. А такой гарантии нет.

Положи просто файл патча в нужный каталог с указанием версии. Что может быть проще???

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

если я правильно понял, то после ошибки сборки он правит исходник в распакованном тарболе, а когда продолжает сборку, то все начинается опять с распаковки, то есть его правки исчезают, поэтому я и предложил отредактировать ебилд после внесения изменений, команда : просто пропустит распаковку, вот

HomerSexual
()
Последнее исправление: HomerSexual (всего исправлений: 1)