From: Alexander Bokovoy <ab@altlinux.org> To: ALT Devel discussion list <devel@lists.altlinux.org> Subject: [devel] [RFP]: %altrelease macro Date: Sun, 16 Dec 2007 16:50:55 +0300 Message-ID: <47652D3F.5040104@altlinux.org> (raw) Задумал я облегчить сборку пакетов в среде установленного дистрибутива и для репозитариев updates/backports. У нас есть некоторые требования по отношению к наименованию релизов (тэг Release) в таких пакетах, вкратце формулируемые так: Тэг Release для пакета, собираемого в updates/backports, должен содержать запись специального вида, облегчающую последующее обновление пакета из более нового дистрибутива (или Sisyphus). Это означает, что спек-файл пакета на самом деле претерпевает определенные изменения (по меньшей мере, тэг Release) и фактически вынуждает поддерживать две версии пакета даже в том случае, когда никаких других изменений в пакет не вносится. Однако можно изменить ситуацию так, чтобы не требовалось модифицировать тэг Release (а просто пересобирать пакет). Для этого необходимо предоставлять дополнительную информацию о сборочной среде в ней самой, чтобы не передавать ее через специальные опции сборочной системы. Последнее -- важное требование, оно связано с тем, что при использовании hasher мы в общем случае не влияем на сборку, особенно при сборке "роботами". Мое предложение состоит в том, чтобы в практически единственный пакет, который у нас гарантированно изменяется при выпуске новой версии дистрибутива -- altlinux-release добавить несколько дополнительных файлов, которые и обеспечат решение поставленной задачи. При одном дополнительном "но", о котором чуть позже. Представим, что в altlinux-release у нас присутствуют следующие файлы: $ LANG=C rpm -ql altlinux-release /etc/altlinux-release /etc/buildreqs/packages/ignore.d/altlinux-release /etc/mandrake-release /etc/redhat-release /etc/rpm/macros.d/00altlinux-release-macros /etc/rpm/rpm-grt.conf /etc/sisyphus-release /usr/lib/rpm/rpm-generate-release-tag Три из них -- новые, это /etc/rpm/macros.d/00altlinux-release-macros, /etc/rpm/rpm-grt.conf и /usr/lib/rpm/rpm-generate-release-tag. Первый -- однострочный макрос для RPM, второй -- файл конфигурации для третьего, который собственно и генерирует необходимый нам вид тэга Release. Файл конфигурации rpm-grt.conf содержит всего две значимые строчки: # Define distribution shortcut name and prefix for release tags # An empty value of DISTRO_SHORTCUT corresponds to Sysiphus DISTRO_SHORTCUT=M40 DISTRO_PREFIX=alt rpm-generate-release-tag использует их для того, чтобы сконструировать значение тэга Release. Если DISTRO_SHORTCUT пуст (мы имеем дело с Sisyphus), то результат работы rpm-generate-release-tag -- ${DISTRO_PREFIX}${release}, где ${release} -- первый параметр, поданный на вход программы. Если DISTRO_SHORTCUT содержит некоторое значение, (M40 в нашем случае), то мы имеем дело с уже выпущенным дистрибутивом и это означает. что для этого дистрибутива нам требуется модифицировать Release: 1. Уменьшить желаемое значение ${release} на единицу 2. после ${DISTRO_PREFIX}${release} дописать ${DISTRO_SHORTCUT} через точку 3. Далее (опционально) вписать локальный номер релиза для этой сборки (второй аргумент команды rpm-generate-release-tag), а если он не указан, то вписать 0. В таком случае у нас получится тэг Release со значением, например, alt2.M40.0 для пакета, который в Sisyphus имеет релиз alt3. Все это возможно использовать в любом выпущенном дистрибутиве, записав в качестве аргумента тэга Release макрос %altrelease с нужным значением (или двумя, если еще нужен локальный номер релиза, отличный от нуля), достаточно только обновить во всех таких дистрибутивах пакет altlinux-release. Вот пример: $ head -n6 librfid.spec name: librfid version: 0.1.0 summary: The librfid is a Free Software RFID library Release: %altrelease 2 Group: System Environment/Libraries License: GPLv2 В системе на основе Server 4.0 результат будет следующим: $ LANG=C rpmbuild -bE librfid.spec | head -n6 name: librfid version: 0.1.0 summary: The librfid is a Free Software RFID library Release: alt1.M40.0 Group: System Environment/Libraries License: GPLv2 В Сизифе будет обычный Release: alt2 Нужно ли такое? Обновленный altlinux-release можно найти у меня в git.alt. Пример сборки для Server 4.0: rpmbuild -ba --define 'distro_scut M40' --define 'distro Server' \ --define 'text_file ALT Linux 4.0 Server (Walnut)' \ altlinux-release.spec -- / Alexander Bokovoy Samba Team http://www.samba.org/ ALT Linux Team http://www.altlinux.org/ Midgard Project Ry http://www.midgard-project.org/
next reply other threads:[~2007-12-16 13:50 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-12-16 13:50 Alexander Bokovoy [this message] 2007-12-16 15:07 ` Sergey Bolshakov 2007-12-16 18:40 ` Alexander Bokovoy 2007-12-16 19:22 ` Sergey Vlasov 2007-12-16 19:37 ` Alexander Bokovoy 2007-12-16 20:16 ` Sergey Vlasov 2007-12-16 20:25 ` Alexander Bokovoy 2008-01-20 15:11 ` Michael Shigorin 2008-01-20 15:30 ` Michael Shigorin 2008-01-20 17:05 ` Alexander Bokovoy 2008-01-20 17:12 ` Dmitry V. Levin 2008-01-20 17:21 ` Alexander Bokovoy 2008-01-20 17:29 ` Kirill A. Shutemov 2008-01-20 17:32 ` Alexander Bokovoy 2008-01-20 18:19 ` Dmitry V. Levin 2008-01-20 17:12 ` [devel] gear questions (was: [RFP]: %altrelease macro) Alexey Gladkov 2008-01-20 17:22 ` [devel] gear questions Alexander Bokovoy 2007-12-16 21:14 ` [devel] [RFP]: %altrelease macro Vitaly Lipatov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=47652D3F.5040104@altlinux.org \ --to=ab@altlinux.org \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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