LINUX.ORG.RU
решено ФорумTalks

[вещества][gentoo][portage]

 , ,


0

0

опять хочу странного ^_^
вот есть пакеты 9999 - которые в 99% собирают содержимое некого гит/свн/ит.д.
хотеть, чтоб портаж запоминал собранную и установленную им ревизию
и при скажем -avuDN world он проверял текущую ревизию в гит/свн/ит.д. для установленных 9999 пакетов
если она изменилась - обновлять пакет
или я плохо гуглю/читаю и это уже есть?

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

>никто тебе не мешает повторить тоже самое на баше
о чём я и говорю!
если этого нет сейчас искаропки - то только костылями

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

>дааа... клонировать каждый раз репозиторий это для Ъ
да [censored]!
сейчас это только для гита пожалуй и надо
и засунь свой хендбук знаешь куда?
там нужного мне нет!

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

я вот не пойму - ты не читал топик?
ты понимаешь, что один файл с ревизией гораздо лучше чем всё дерево сорсов?
понимаешь, что даже сливая всё дерево во временную диру на предмет посмотреть обновилось ли что - это гораздо лучше постоянного хранения постоянно всего дерева?
в случае с свн (довольно-таки распространённая вещь) даже сливать ничего не надо
неужели это так сложно понять?
и чтобы это всё не мешало при обновке мира(все эти синки гита) можно отдельной опцией запилить

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

0). Сейчас есть огромная куча баш файлов для упрощения установки, даже существование, которой ты не можешь осилить :/

1). Сейчас из коробки есть сохранение установленной ревизии :/

2). сейчас есть программа smart-live-rebuild, которая обновляет существующие репозитории и переустанавливает программу, которая была обновлена

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

Итого твои желания отличаются от s-l-r только тем, что во 2ом варианте есть репозиторий, а в 3ем нет. Я тебе предлагаю следющее: ты выписываешь сюда команды для всех SCM, которые осилишь, которые выводят текущую ревизию, и через несколько дней ты получишь необходимый для тебя функционал, в случае если автор примет патчи. Я так понимаю, что с svn проблем не возникнет и твой вариант прокатит, а вот на счёт других систем я очень не уверен, но впилить проверку на идиота видимо нужно, т.к. действительно падения приведённые тобой выше неприятные.

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

> я вот не пойму - ты не читал топик?

частично

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

нет

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

нет, но существование такого мнения допускаю

в случае с свн (довольно-таки распространённая вещь) даже сливать ничего не надо неужели это так сложно понять?

это просто понять

и чтобы это всё не мешало при обновке мира(все эти синки гита) можно отдельной опцией запилить

твоя мысль не ясна

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

>Сейчас из коробки есть сохранение установленной ревизии
хде?

Сейчас есть огромная куча баш файлов для упрощения установки, даже существование, которой ты не можешь осилить

хде?

сейчас есть программа smart-live-rebuild

дерьмо!
костыль на том же баше я и сам могу запилить - так как мне надо
мне вот не понятно - ты мне доказывал в 100 постов что я олень, и только потом всё-таки понял, что мои хотелки таки нужная вещь
нельзя было сразу прочтя топик, просто сесть и хорошо подумать?

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

В env файлах загружаемых портажом блин! И еклассы

мне вот не понятно - ты мне доказывал в 100 постов что я олень, и только потом всё-таки понял, что мои хотелки таки нужная вещь

ещё раз повторить, а то ты частично как-то воспринимаешь информацию: ты — олень, твои хотелки нужны только тебе. И из всех твоих слов полезных было очень мало

BTW, автор не против части данного функционала.

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

рецепт для гита

[ megabaks@desktop ] ~ USA $ git clone -n git://github.com/serghei/kde-trinity.git
Cloning into kde-trinity...
remote: Counting objects: 374, done.
remote: Compressing objects: 100% (220/220), done.
remote: Total 374 (delta 151), reused 342 (delta 143)
Receiving objects: 100% (374/374), 110.50 KiB, done.
Resolving deltas: 100% (151/151), done.
[ megabaks@desktop ] ~ USA $ cd kde-trinity/
[ megabaks@desktop ] ~/kde-trinity USA $ git show
[ megabaks@desktop ] ~/kde-trinity USA $ ls -al
итого 52
drwxr-xr-x   3 megabaks 1018  4096 Фев  5 01:22 .
drwxr-xr-x 122 megabaks   10 45056 Фев  5 01:22 ..
drwxr-xr-x   7 megabaks 1018  4096 Фев  5 01:22 .git
[ megabaks@desktop ] ~/kde-trinity USA $ 
позволяет не сливать всё дерево, а только нужное

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

ага, наполненый неадекватами, которых игнорят

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

кстати я тут вспомнил клонирование реполитория xorg, я лучше 2 гига от винта откушу, чем буду делать это ещё раз. (кстати так и не доклонировалось и я забил).

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

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

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

> в этом случае проще пересобирать, пока не запилят проверку без залива всего и вся...

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

хотя можно ведь начать клонировать, не дожидаясь окончания слить нужную инфу - благо она доступна сразу же и потом прибить клонирование, которое и потрёт мусор кстати

костыльно, но куда лучше того что есть сейчас

А вот мне кажется, что хуже, тезис в конце поста.

Сейчас плохо только для svn и cvs, вот честно, да и то не очень плохо. Необходимость клонирования репозитория каждый раз это очень сильно мешающая вещь, пойми же это. Очень часто 9999 хочется обновлять как-только-так-сразу, хоть по 5 раз на дню, и часто скорость ограничена.

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

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

Для dvcs ситуация менее очевидна (не тебе, я знаю, что для себя ты всё решил), возможно тут тоже можно дать возможность выбора, но мне кажется лучше просто использовать возможности этой dvcs для уменьшения репозитория и хранения минимума информации, это было бы гораздо полезнее, чем вычищать весь репозиторий.

Тезис: 1). для тех систем, где можно не трогая (или не имея локального репозитория) узнать состояние основного - нужно делать так. После этого посылать "emerge -1 package", а он уже разрулит, что там надо сделать есть у тебя репозиторий или ты снёс.

2). для остальных сделать костыль, который будет уменьшах размер репы доступными способами

Вобще напиши багу на багзилу с запросом опции для клонирования репозитория с минимум инфы, типа "emerge --minimal", которая в случае 9999 скачивает репозиторий, а после установки удаляет его и скачанный пакет из дистфайлов, если не 9999. Ну при каждом обновлении репозитория вычищает из истории всё, что можно.

Просто например я не считаю эту идею хорошей, но рассмотреть её можно.

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

>Необходимость клонирования репозитория каждый раз это очень сильно мешающая вещь
об этом я тебе и говорю!

что лучше - не держать лишнее или качать меньше тоже является открытым.

можно и то и другое сразу!

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

нашёл таки:

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

[code] qnikst qnikst # bzcat /var/db/pkg/app-portage/hackport-9999/environment.bz2 | grep DARCS_PATCHCOUNT declare -x EDARCS_PATCHCOUNT=«1465» export EDARCS_PATCHCOUNT=$(darcs_patchcount); einfo " patches in repo: ${EDARCS_PATCHCOUNT} [/code]

как ты можешь заметить они живут в "/var/db/pkg/<category>/<package>/environment.bz2"

аналогичные переменные есть для svn,cvs,bazaar,mercuria,git. Для того, чтобы найти по ним описание можно зайти в /usr/portage/eclass. Именно эту инфу например и юзает s-l-r, считаешь ли ты это костылём или нет я не знаю, но делается всё явно и правильные моменты.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst
[ megabaks@desktop ] ~ USA $ bzgrep "declare -x EGIT_VERSION=" /var/db/pkg/x11-wm/antico-9999/environment.bz2 
declare -x EGIT_VERSION="33b232ae5c4913bbd0b812264e5846e462803467"
[ megabaks@desktop ] ~ USA $ bzgrep "declare -x EGIT_VERSION=" /var/db/pkg/x11-wm/antico-9999/environment.bz2 
declare -x EGIT_VERSION="33b232ae5c4913bbd0b812264e5846e462803467"
[ megabaks@desktop ] ~ RUS $ 

между ними обновление антико - дерева сорсов не было
что сие значит?

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

>> Необходимость клонирования репозитория каждый раз это очень сильно мешающая вещь

об этом я тебе и говорю!

твой вариант подразумевает клонирование, текущий обновление. Где подмена понятий?

что лучше - не держать лишнее или качать меньше тоже является открытым.

можно и то и другое сразу!

но это точно не то, что ты предлагаешь (кроме svn , там сработает)

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

>твой вариант подразумевает клонирование
хде это? о_О
я наоборот думаю как не лить лишнего и узнать ревизию!

но это точно не то, что ты предлагаешь (кроме svn , там сработает)

почему?
кто мешает после запуска клонирования с интервалом в 0.000000001 сек проверять наличие нужного и как оно только появится, сразу же запихать нужное в парсер, прибив процесс клонирования?
ты даже сотни килобайт при этом не сольёшь - тупо не успеешь!
костыльно, но это в 100500 раз круче полного синка скажем гита Торвальдса )

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

какое слово не понятно?
антико - как ты можешь видеть - это antico - вм на кутях
остальное даже хз как можно не распарсить

megabaks ★★★★
() автор топика
Ответ на: комментарий от megabaks
[ megabaks@desktop ] ~ USA $ bzgrep "declare -x EGIT_VERSION=" /var/db/pkg/x11-misc/xbindkeys-9999/environment.bz2 
declare -x EGIT_VERSION="e3cacfb54cd2990026e718659dcbad5525782d51"
[ megabaks@desktop ] ~ USA $ bzgrep "declare -x EGIT_VERSION=" /var/db/pkg/x11-misc/xbindkeys-9999/environment.bz2 
declare -x EGIT_VERSION="e3cacfb54cd2990026e718659dcbad5525782d51"
[ megabaks@desktop ] ~ USA $ 

как видишь аналогично - какой смысл был в пересборке?

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

>> твой вариант подразумевает клонирование

хде это? о_О
я наоборот думаю как не лить лишнего и узнать ревизию!

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

На моих словах это проверили репозиторий на наличия обновления, если да - пакет идёт на emerge -1, если нет забиваем. В итоге абсолютно не важно, что живёт в distfiles, хоть репозиторий, хоть /dev/null, с этим разберётся emerge. Ну удалить вручную (сейчас) придётся.

но это точно не то, что ты предлагаешь (кроме svn , там сработает)

почему?

хм.. накопал git ls-remote <url> возможно и с другими SCM это возможно и так надо будет сделать.

----

Я так понял, что твой пост должен был звучать как-то так (без учёта твоей невозможной формы общения):

Реквестирую FEATURE=«minimal-live-pkg» (minimal-live-pkg=No), которое будет работать таким образом, что качаться будет только No ревизий, в случае, если SCM это поддерживает, а так же после обновлений история будет очищаться таким образом, чтобы содержать меньше «мусора».

---

Скажу сразу, что например мне данный функционал будет в большинстве случаев не удобен, и иметь его чем-то кроме FEATURE я не хочу. В случае адекватной дискуссии я даже не поленюсь пообщаться в gentoo devels и написать фичреквест в багзиллу.

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

я не понял, а зачем ты пересобирал-то?

для того, чтобы это не пересобирать служит утилита (на твоём языке костыль) smart-live-rebuild, она занимается тем, что сравнивает эти значения и не пересобирает приложение. Более того в portage >= 2.2 оно выглядит как сет, так что никакого вызова неочевидных програм нет.

Да, я понял, чем тебя не устраивает s-l-r, и несмотря на то, что причина (по мне) не логична, в итоге ты предложил отличные идеи, которые автор (может я тоже попатчу) будет имплементить.

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

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

ну в топике я так и написал - проверяет ревизию - и если только она изменилась, пересобирает пакет

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

s-l-r нужно как минимум перестать собирать бинарные пакеты - имхо просто абсолютно лишняя вещь, тем более при запуске без параметров - т.е. искаропки
и таки да - надо выпилить необходимость в дереве сорсов лайф-билда
ну и запилить проверку ревизий без полного синка - лучше уж грязный и грубый хак ( я про костыль с прерыванием синка ) чем полный синк
про git ls-remote покурю...

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

ну тебе 2 человека ответили s-l-r, и тут началось обсуждение того, что оно говно. В процессе обсуждения, если его этим можно назвать, выяснилось, что тебя не устраивает способ проверки наличия обновлений. В принципе если бы ты не кидался сразу оскорблениями, неосиляторами^W и пришедшими пофлеймить, то навеное твоя мысль прояснилась бы быстрее. Т.к. мне лично было неочевидно что именно ты хочешь и тебе не нравится.

Итого:

  • по поведению s-l-r описан баг и судя по практике он будет пофикшен в течении недели в зависимости от того, насколько всё хорошо обстоит в разных SCM.
  • у меня во всяком случае появилось несколько мыслей, как можно упростить жизнь людям, которым не нужны возможности репозитория live программ.

У меня (чисто из интереса) остались к тебе вопросы: [list type=«1»]

  • понял ли ты, что s-l-r делает то, что нужно, но кривым для тебя способом?
  • хотел бы услышать полностью описанную мысль по поводу того, какие у тебя требования к локальному репозиторию (лучше на примере dvcs). Т.к. ты достаточно неадекватен и твоё мнение сильно не совпадает с мнением обычных gentoo пользователей, чтобы подумать в этом направлении
qnikst ★★★★★
()
Ответ на: комментарий от megabaks

> s-l-r нужно как минимум перестать собирать бинарные пакеты - имхо просто абсолютно лишняя вещь, тем более при запуске без параметров - т.е. искаропки.

это в багзиллу, а вобще правится в /etc/portage/smart-live-rebuild.conf не мне судить насколько это нужно. Т.к. я не умею и не пользуюсь бинарными пакетами. Могу потом ообщаться с автором, может он и объяснит.

и таки да - надо выпилить необходимость в дереве сорсов лайф-билда

Угу

ну и запилить проверку ревизий без полного синка - лучше уж грязный и грубый хак ( я про костыль с прерыванием синка ) чем полный синк

про git ls-remote покурю.

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

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

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

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

да блин - хотят по-лоровски - будет по-лоровски!
не читают топик и предлагают инструмент, который на данный момент вообще не подходит для поставленной задачи...ну чтож - давайте говном покидаемся :3
ты сам перечитай топик и потом то, к чему мы в итоге пришли
ведь одно и тоже - предложенный инструмент сейчас не годится для моих целей, согласен?
он только за зря съедает винт лишним мусором (бинарники+синк) и проц время (бинарники)

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

>Если честно я не вижу смысла
о_О
т.е. впустую гонять байты по сети + дрочить винт - есть смысл, а проверить «нужно ли это?» не имеет смысла?
яфшоке! честно!
я тебе привёл пару примеров, когда этого делать не нужно было вообще

правится в /etc/portage/smart-live-rebuild.conf

знаю - только зачем мне это искаропки?
сей инструмент для проверки обновлений. точка!
зачем он собирает бинари?
какое это вообще имеет отношение к обновлению?
те кто хочет бинарники бэкапные, давно запилили в дефолтные опции эмержа сборку бинарей при установке - зачем дубли им и зачем бинари тем кто ими не пользуется?
имхо - абсолютно лишняя сущность в данном инструменте
тем более по дефолту

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

кстати - я, похоже, даже не раздумывая могу озвучить твоё мнение по поводу newxflags - аналог --newuse, только для C/CXX/LD/*/FLAGS :3

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

>Например?

Ну, например, xkeyboard-config, xorg-drivers, twm.

Или у тебя может стоять несколько версий в разных слотах — тогда будет удалять все кроме одной. Так было с qt3.


Ну я не совсем... Короче, это не то.

Или у тебя части того же Xorg каким-то образом не попали в world или исчезли оттуда.


Скорее я что-то устанавливал/обновлял руками.

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

> не читают топик и предлагают инструмент, который на данный момент вообще не подходит для поставленной задачи...ну чтож - давайте говном покидаемся :3

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

Если честно я не вижу смысла

о_О
т.е. впустую гонять байты по сети + дрочить винт - есть смысл, а ? проверить «нужно ли это?» не имеет смысла?
яфшоке! честно!
я тебе привёл пару примеров, когда этого делать не нужно было вообще

Рассматриваем случай, когда есть локальная репа: Сейчас: [list=«1»] [*]мы пытаемся скачать обновления [шаг, который заменится на проверку без использования локального репозитория] [*]если нету успокаевемся [*]если есть отмечаем программу для пересборки [*]портаж пытается скачать обновления [/list]

Так вот, если замена 1го шага невозможна, то репозиторий в любом случаем придётся обновить. Например если мы делаем твой хак, то сначала ты портим обновление репозитория, а потом на шаге 4 портаж всё равно это делает. Имхо в данном случае (невозможности узнать состояние удалённого репозитория) лишние костыли лучше не городить.

BTW, при удалении репозитория как ты делаешь (ты ж не отказался от этого) байтов много больше гоняется.

правится в /etc/portage/smart-live-rebuild.conf

знаю - только зачем мне это искаропки?

с этим вопросов иди в багзиллу, я тебе не могу объяснить, важно лишь, что в этом мире не только ты, и твое мнение не всегда верное ;)

кстати - я, похоже, даже не раздумывая могу озвучить твоё мнение по поводу newxflags - аналог --newuse, только для C/CXX/LD/*/FLAGS :3

а я его называл даже. Я не вижу в этом смысла т.к. новые c/cxx/ld флаги ты полюбому выставляешь вручную при этом или на system level тогда все без исключения сишные/плюсовые программы подвержены или на уровне приложения, поэтому тебе и думать как в твоём случае лучше поступить.

qnikst ★★★★★
()

решением оказалось пинание разраба smart-live-rebuild в сторону запиливания желаемого

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