ALT Linux Team development discussions
 help / color / mirror / Atom feed
* Re: [devel] Поддержка файлов макроопределений в gear
  @ 2007-08-29  7:26 ` Dmitry V. Levin
  2007-08-29  7:41   ` Kirill A. Shutemov
  0 siblings, 1 reply; 3+ messages in thread
From: Dmitry V. Levin @ 2007-08-29  7:26 UTC (permalink / raw)
  To: Alexey Morozov; +Cc: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 2838 bytes --]

Hi,

Cc'ed devel@lists.

On Wed, Aug 29, 2007 at 10:19:57AM +0700, Alexey Morozov wrote:
> Здравствуйте, Дмитрий.
> 
> Я тут реализовал две доп. фичи для gear, хотел предложить их Вашему вниманию

Спасибо.  Мои комментарии ниже:

> 1. При использовании gear --rpmbuild требуется, чтобы все используемые
> в спеке макросы были определены.

Именно о случае gear --rpmbuild я бы не беспокоился, поскольку для
сборки rpmbuild'ом всё равно нужны эти макроопределения, причём сборочные
зависимости пакета должны обеспечивать наличие этих макроопределений.
Хотя ...

> Приходится подсовывать макросы,
> уникальные для данного пакета через --define 'somemacro definition',
> причём, по факту, для сборки src.rpm (наиболее частый для меня вариант
> использования) эти макросы чаще всего не нужны, т.к. они будут
> задействованы только при пересборке данного srpm'а.

... сейчас так бывает: среда, в которой производится сборка srpm,
зачастую не предназначена для сборки пакетов.

> Поэтому я добавил в gear следующую функциональность: если в проекте
> существует файл .gear-rpmmacros, то макроопределения из него будут
> автоматически использоваться наряду со макроопределениями из всех
> обычных файлов. Реализовано это через использование дополнительного
> кастомного rpmrc с расширенным списком macrofiles.

"Идея gear заключается в том, чтобы с помощью одного файла с простыми
правилами (для обработки которых достаточно sed и git) можно было бы
собирать пакеты из произвольно устроенного git-репозитория, по аналогии
с hasher, который был задуман как средство собирать пакеты из
произвольных srpm-пакетов."

В этой связи выполнение (rpmquery --specfile это выполнение) кода из
macro-файла, хранимого в репозитории наряду с .gear-rules, недопустимо.

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

> Проверял я [только] на --rpmbuild, хотя, думаю, и с другими командами
> проблем быть не должно.
> 
> 2. Я реализовал поддержку использования @name@, @version@ и @release@
> в .gear-rules, даже если в спек-файле их значения определяются через
> макроподстановки (например, если версия определена так:
> 
> %define majorver 3.5
> %define patchlevel 10
> 
> Version: %majorver.%patchlevel
> 
> итп. Следует заметить, что конструкции подобного рода часто
> применяются в наших спеках, и стандартный gear не позволяет
> использовать @<переменная>@ в этом случае.

Каким образом решить эту проблему?  У меня пока нет ответа.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] Поддержка файлов макроопределений в gear
  2007-08-29  7:26 ` [devel] Поддержка файлов макроопределений в gear Dmitry V. Levin
@ 2007-08-29  7:41   ` Kirill A. Shutemov
  2007-08-29  9:19     ` Dmitry V. Levin
  0 siblings, 1 reply; 3+ messages in thread
From: Kirill A. Shutemov @ 2007-08-29  7:41 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1893 bytes --]

On [Wed, 29.08.2007 11:26], Dmitry V. Levin wrote:
> Hi,
> 
> Cc'ed devel@lists.
> 
> On Wed, Aug 29, 2007 at 10:19:57AM +0700, Alexey Morozov wrote:
> > 2. Я реализовал поддержку использования @name@, @version@ и @release@
> > в .gear-rules, даже если в спек-файле их значения определяются через
> > макроподстановки (например, если версия определена так:
> > 
> > %define majorver 3.5
> > %define patchlevel 10
> > 
> > Version: %majorver.%patchlevel
> > 
> > итп. Следует заметить, что конструкции подобного рода часто
> > применяются в наших спеках, и стандартный gear не позволяет
> > использовать @<переменная>@ в этом случае.
> 
> Каким образом решить эту проблему?  У меня пока нет ответа.

В случае ruby.git с подачи raorn@ это решено так:

> cat .gear-rules       
spec: ruby.spec
tar.bz2: ruby spec=ruby-version.spec name=@dir@-@version@-@release@
base=@dir@-@version@-@release@

Т.е ruby.spec -- это "настоящая" спека, а ruby-version.spec -- следующего
содержания:

> cat ruby-version.spec 
Name: ruby
Version: 1.8.6
Release: alt2

ruby-version.spec обновляется с помощью скрипта:

> cat update-version 
#!/bin/sh

rpm -bE ruby.spec | grep -iE '^(Name|Version|Release):' > ruby-version.spec

Он безопасным не является, но я доверяю содержимому ruby.spec ;)

-- 
Regards,  Kirill A. Shutemov
 + Belarus, Minsk
 + Velesys LLC, http://www.velesys.com/
 + ALT Linux Team, http://www.altlinux.com/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [devel] Поддержка файлов макроопределений в gear
  2007-08-29  7:41   ` Kirill A. Shutemov
@ 2007-08-29  9:19     ` Dmitry V. Levin
  0 siblings, 0 replies; 3+ messages in thread
From: Dmitry V. Levin @ 2007-08-29  9:19 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 1132 bytes --]

On Wed, Aug 29, 2007 at 10:41:34AM +0300, Kirill A. Shutemov wrote:
[...]
> В случае ruby.git с подачи raorn@ это решено так:
> 
> > cat .gear-rules       
> spec: ruby.spec
> tar.bz2: ruby spec=ruby-version.spec name=@dir@-@version@-@release@
> base=@dir@-@version@-@release@
> 
> Т.е ruby.spec -- это "настоящая" спека, а ruby-version.spec -- следующего
> содержания:
> 
> > cat ruby-version.spec 
> Name: ruby
> Version: 1.8.6
> Release: alt2
> 
> ruby-version.spec обновляется с помощью скрипта:
> 
> > cat update-version 
> #!/bin/sh
> 
> rpm -bE ruby.spec | grep -iE '^(Name|Version|Release):' > ruby-version.spec
> 
> Он безопасным не является, но я доверяю содержимому ruby.spec ;)

Комментарий для стороннего читателя:

Существенное отличие этой схемы от предложенной Алексеем заключается в
том, что для _сборки_ чужого коммита не требуется выполнять чужой spec-файл
(rpmbuild -bE).  Таким образом, автомат, собирающий чужие коммиты, может
чувствовать себя в безопасности.  С другой стороны, человек, который
увеличивает версию/релиз пакета, может проанализировать spec-файл.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2007-08-29  9:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-08-29  7:26 ` [devel] Поддержка файлов макроопределений в gear Dmitry V. Levin
2007-08-29  7:41   ` Kirill A. Shutemov
2007-08-29  9:19     ` Dmitry V. Levin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git