* [devel] RPM %_tmppath - что плохого в силинках? @ 2008-03-12 7:22 Ildar Mulyukov 2008-03-13 6:30 ` Alexey Tourbin 0 siblings, 1 reply; 9+ messages in thread From: Ildar Mulyukov @ 2008-03-12 7:22 UTC (permalink / raw) To: ALT Devel discussion list Приветствую! Какие-то относительно недавние изменения в rpm повлияли на несобираемость пакета. Примерно так: + /usr/lib/rpm/find-lang gq find-lang: ERROR: non-canonical RPM_BUILD_ROOT=/home/ildar/tmp/RPM/gq-buildroot real_buildroot=/var/tmp/RPM/gq-buildroot ошибка: Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244 (%install) Ошибки сборки пакетов: Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244 (%install) После того, как я изменил %_topdir и %_tmppath на `readlink -f {}`, стало собираться. Мне, как пользователю RPM непонятно, почему неканонические пути - это плохо? Более того, почему с неканоническими путями без find-lang пакеты собираются? Вешать багу? С уважением, Ильдар -- Ildar Mulyukov, free SW designer/programmer/packager ========================================= email: ildar@altlinux.ru Jabber: ildar@jabber.ru ICQ: 4334029 ALT Linux Sisyphus http://www.sisyphus.ru ========================================= ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-12 7:22 [devel] RPM %_tmppath - что плохого в силинках? Ildar Mulyukov @ 2008-03-13 6:30 ` Alexey Tourbin 2008-03-13 6:50 ` Хихин Руслан 2008-03-13 6:52 ` Ildar Mulyukov 0 siblings, 2 replies; 9+ messages in thread From: Alexey Tourbin @ 2008-03-13 6:30 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1393 bytes --] On Wed, Mar 12, 2008 at 01:22:10PM +0600, Ildar Mulyukov wrote: > find-lang: ERROR: non-canonical > RPM_BUILD_ROOT=/home/ildar/tmp/RPM/gq-buildroot > real_buildroot=/var/tmp/RPM/gq-buildroot > ошибка: Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244 > (%install) > Ошибки сборки пакетов: > Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244 > (%install) > > После того, как я изменил %_topdir и %_tmppath на `readlink -f {}`, > стало собираться. $ rpm -q --changelog rpm |grep canon - functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be canonical $ > Мне, как пользователю RPM непонятно, почему неканонические пути - это > плохо? Это вопрос или утверждение? :) Ну, в двух словах, появляется две сущности - RPM_BUILD_ROOT и канонический путь к RPM_BUILD_ROOT. В скриптах поиска зависимостей приходится всё время учитывать эти варианты. Например, представьте, что хочется узнать realpath какого-то файла под RPM_BUILD_ROOT. f=/etc/init.d/functions p=$(readlink -ve "$RPM_BUILD_ROOT$f") p=${p#$RPM_BUILD_ROOT} Так вот, при каноническом RPM_BUILD_ROOT "отрезание пути спереди" всегда просто работает. А если RPM_BUILD_ROOT не канонический, то встаёт вопрос, что нужно отрезать спереди в первую очередь. > Более того, почему с неканоническими путями без find-lang пакеты > собираются? Не собираются. [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 6:30 ` Alexey Tourbin @ 2008-03-13 6:50 ` Хихин Руслан 2008-03-13 6:58 ` Alexey Tourbin 2008-03-13 6:52 ` Ildar Mulyukov 1 sibling, 1 reply; 9+ messages in thread From: Хихин Руслан @ 2008-03-13 6:50 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 533 bytes --] Здравствуйте Alexey Tourbin В сообщении от 13 марта 2008 Alexey Tourbin написал(a): > On Wed, Mar 12, 2008 at 01:22:10PM +0600, Ildar Mulyukov wrote: > > find-lang: ERROR: non-canonical > > Более того, почему с неканоническими путями без find-lang пакеты > > собираются? > Не собираются. А эту фичу нельзя отключить ? Всё равно окончательно rpm собирается в хешере, а вот до его сборки в хешере иногда удобно его собирать в домашнем каталоге, причём где-нибудь внутри /tmp, который на tmpfs. -- С уважением Хихин Руслан [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 6:50 ` Хихин Руслан @ 2008-03-13 6:58 ` Alexey Tourbin 2008-03-13 7:05 ` Хихин Руслан 0 siblings, 1 reply; 9+ messages in thread From: Alexey Tourbin @ 2008-03-13 6:58 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 3387 bytes --] On Thu, Mar 13, 2008 at 09:50:59AM +0300, Хихин Руслан wrote: > Здравствуйте Alexey Tourbin > В сообщении от 13 марта 2008 Alexey Tourbin написал(a): > > On Wed, Mar 12, 2008 at 01:22:10PM +0600, Ildar Mulyukov wrote: > > > find-lang: ERROR: non-canonical > > > Более того, почему с неканоническими путями без find-lang пакеты > > > собираются? > > Не собираются. > А эту фичу нельзя отключить ? > Всё равно окончательно rpm собирается в хешере, а вот до его сборки в > хешере иногда удобно его собирать в домашнем каталоге, причём > где-нибудь внутри /tmp, который на tmpfs. Тогда придётся усложнять логику поиска зависимостей, причём не сразу понятно в каких именно местах и чем это чревато. А так её удаётся упростить. commit 810f4045edef59b4ba77521d2335a6c4713c357d Author: Alexey Tourbin <at@altlinux> Date: Tue Feb 19 03:13:51 2008 +0300 find-package: removed findpackage_xbroot stuff diff --git a/scripts/find-package.in b/scripts/find-package.in index 00b280a..d4c795b 100755 --- a/scripts/find-package.in +++ b/scripts/find-package.in @@ -58,12 +58,6 @@ Debug "RPM_FINDPACKAGE_ROOT_PATH=$RPM_FINDPACKAGE_ROOT_PATH" # Below we use 'local Verbose=Info' to increase per-case verbosity. Verbose=Verbose -if [ -n "${RPM_BUILD_ROOT-}" ]; then - findpackage_xbroot=$(readlink -ve "$RPM_BUILD_ROOT") -else - unset findpackage_xbroot ||: -fi - FindByPathUnderBuildroot() { local f="$1" rep="$2" xbrep; shift 2 || return @@ -72,12 +66,12 @@ FindByPathUnderBuildroot() MatchBuildroot() { [ -n "$1" ] && - [ -z "${1##$findpackage_xbroot/*}" ] + [ -z "${1##$RPM_BUILD_ROOT/*}" ] } StatPrint() { [ -e "$1" -o -L "$1" ] && - printf '%s\n' "${1#$findpackage_xbroot}" + printf '%s\n' "${1#$RPM_BUILD_ROOT}" } xbrep=$(CanonPath "$RPM_BUILD_ROOT$rep") commit e0598b6fe35fa42ef3737001d1ff38161c6bca84 Author: Alexey Tourbin <at@altlinux> Date: Tue Feb 19 02:38:42 2008 +0300 functions (ValidateBuildRoot): require canonical RPM_BUILD_ROOT Some scripts like lib.req rely on the fact that RPM_BUILD_ROOT should not end with trailing slashes or something. Other scripts like find-package explicitly assume that RPM_BUILD_ROOT can be relocated within filesystem; they use something like "real_buildroot" variables. The code gets complicated, fragile, and error-prone. Therefore, guys, hereby I FORBID non-canonical RPM_BUILD_ROOT path. Note that RPM_BUILD_ROOT actually does not have to exist. This is another problem... diff --git a/scripts/functions b/scripts/functions index 9ffa7f0..636ef74 100644 --- a/scripts/functions +++ b/scripts/functions @@ -57,8 +57,16 @@ Debug() ValidateBuildRoot() { + [ -n "${RPM_BUILD_ROOT-}" ] || + Fatal 'RPM_BUILD_ROOT not set' [ -n "$(printf %s "$RPM_BUILD_ROOT" |tr -d ' /.')" ] || - Fatal 'invalid $RPM_BUILD_ROOT' + Fatal "bogus RPM_BUILD_ROOT=$RPM_BUILD_ROOT" + local real_buildroot + # There could be simply no %install section... + # I pretend that non-existent buildroot is just canonical enough. + real_buildroot=$(readlink -vm -- "$RPM_BUILD_ROOT") + [ "$RPM_BUILD_ROOT" = "$real_buildroot" ] || + Fatal "non-canonical RPM_BUILD_ROOT=$RPM_BUILD_ROOT real_buildroot=$real_buildroot" } [ -z "${RPM_BUILD_ROOT-}" ] || ValidateBuildRoot [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 6:58 ` Alexey Tourbin @ 2008-03-13 7:05 ` Хихин Руслан 2008-03-13 10:50 ` Alexey Tourbin 0 siblings, 1 reply; 9+ messages in thread From: Хихин Руслан @ 2008-03-13 7:05 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 693 bytes --] Здравствуйте Alexey Tourbin В сообщении от 13 марта 2008 Alexey Tourbin написал(a): > > Всё равно окончательно rpm собирается в хешере, а вот до его > > сборки в > > хешере иногда удобно его собирать в домашнем каталоге, причём > > где-нибудь внутри /tmp, который на tmpfs. > Тогда придётся усложнять логику поиска зависимостей, причём не сразу > понятно в каких именно местах и чем это чревато. А так её удаётся > упростить. Ну - грубо говоря - при неканоническом пути - сделать предупреждение - зависимости могут быть высчитаны неправильно (и вплоть до отключения их расчёта или старый вариант), а вот при каноническом - упростить, как вы хотите. -- С уважением Хихин Руслан [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 7:05 ` Хихин Руслан @ 2008-03-13 10:50 ` Alexey Tourbin 0 siblings, 0 replies; 9+ messages in thread From: Alexey Tourbin @ 2008-03-13 10:50 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1054 bytes --] On Thu, Mar 13, 2008 at 10:05:52AM +0300, Хихин Руслан wrote: > Здравствуйте Alexey Tourbin > В сообщении от 13 марта 2008 Alexey Tourbin написал(a): > > > Всё равно окончательно rpm собирается в хешере, а вот до его > > > сборки в > > > хешере иногда удобно его собирать в домашнем каталоге, причём > > > где-нибудь внутри /tmp, который на tmpfs. > > Тогда придётся усложнять логику поиска зависимостей, причём не сразу > > понятно в каких именно местах и чем это чревато. А так её удаётся > > упростить. > Ну - грубо говоря - при неканоническом пути - сделать предупреждение - > зависимости могут быть высчитаны неправильно (и вплоть до отключения их > расчёта или старый вариант), а вот при каноническом - упростить, как вы > хотите. Это легко поправить в ~/.rpmmacros: %_topdir %homedir/RPM %_tmppath /tmp/.private/at %__ccache_dir %_tmppath/.ccache %_builddir %_tmppath/BUILD Если не хочется явно прописывать /tmp/.private/at, то можно сделать что-то типа %_tmppath %(echo ${TMPDIR:-/tmp}) [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 6:30 ` Alexey Tourbin 2008-03-13 6:50 ` Хихин Руслан @ 2008-03-13 6:52 ` Ildar Mulyukov 2008-03-13 7:02 ` Alexey Tourbin 1 sibling, 1 reply; 9+ messages in thread From: Ildar Mulyukov @ 2008-03-13 6:52 UTC (permalink / raw) To: devel On 13.03.2008 12:30:43, Alexey Tourbin wrote: > On Wed, Mar 12, 2008 at 01:22:10PM +0600, Ildar Mulyukov wrote: > > .. > $ rpm -q --changelog rpm |grep canon > - functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be > canonical > >> Мне, как пользователю RPM непонятно, почему неканонические пути - >> это плохо? > > Это вопрос или утверждение? :) Ну, в двух словах, появляется две > сущности - RPM_BUILD_ROOT и канонический путь к RPM_BUILD_ROOT. В > скриптах поиска зависимостей приходится всё время учитывать эти > варианты. Например, представьте, что хочется узнать realpath > какого-то файла под RPM_BUILD_ROOT. > > f=/etc/init.d/functions > p=$(readlink -ve "$RPM_BUILD_ROOT$f") > p=${p#$RPM_BUILD_ROOT} > > Так вот, при каноническом RPM_BUILD_ROOT "отрезание пути спереди" > всегда просто работает. А если RPM_BUILD_ROOT не канонический, то > встаёт вопрос, что нужно отрезать спереди в первую очередь. Хорошо, я согласен с обоснованием. Но я не согласен с решением. Можно сделать так (не углубляясь в подробности реализации): 1. В самом начале работы rpmbuild сделать преобразование в канонический путь. 2. Использовать дальше везде преобразованный. В общем, #14885 >> Более того, почему с неканоническими путями без find-lang пакеты >> собираются? > Не собираются. Ага! Значит, таки, это недавнее изменение. С уважением, Ильдар -- Ildar Mulyukov, free SW designer/programmer/packager ========================================= email: ildar@altlinux.ru Jabber: ildar@jabber.ru ICQ: 4334029 ALT Linux Sisyphus http://www.sisyphus.ru ========================================= ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 6:52 ` Ildar Mulyukov @ 2008-03-13 7:02 ` Alexey Tourbin 2008-03-15 0:27 ` Dmitry V. Levin 0 siblings, 1 reply; 9+ messages in thread From: Alexey Tourbin @ 2008-03-13 7:02 UTC (permalink / raw) To: devel [-- Attachment #1: Type: text/plain, Size: 1118 bytes --] On Thu, Mar 13, 2008 at 12:52:24PM +0600, Ildar Mulyukov wrote: > >сущности - RPM_BUILD_ROOT и канонический путь к RPM_BUILD_ROOT. В > >скриптах поиска зависимостей приходится всё время учитывать эти > >варианты. Например, представьте, что хочется узнать realpath > >какого-то файла под RPM_BUILD_ROOT. > > > > f=/etc/init.d/functions > > p=$(readlink -ve "$RPM_BUILD_ROOT$f") > > p=${p#$RPM_BUILD_ROOT} > > > >Так вот, при каноническом RPM_BUILD_ROOT "отрезание пути спереди" > >всегда просто работает. А если RPM_BUILD_ROOT не канонический, то > >встаёт вопрос, что нужно отрезать спереди в первую очередь. > > Хорошо, я согласен с обоснованием. Но я не согласен с решением. Можно > сделать так (не углубляясь в подробности реализации): > 1. В самом начале работы rpmbuild сделать преобразование в канонический > путь. В принципе, да. Но проблема ещё и в том, что каталог RPM_BUILD_ROOT может просто не существовать. То есть тут нужна каноникализация типа "readlink -m" (или, может быть, "readlink -f"). > 2. Использовать дальше везде преобразованный. > В общем, #14885 [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [devel] RPM %_tmppath - что плохого в силинках? 2008-03-13 7:02 ` Alexey Tourbin @ 2008-03-15 0:27 ` Dmitry V. Levin 0 siblings, 0 replies; 9+ messages in thread From: Dmitry V. Levin @ 2008-03-15 0:27 UTC (permalink / raw) To: ALT Devel discussion list [-- Attachment #1: Type: text/plain, Size: 1454 bytes --] On Thu, Mar 13, 2008 at 10:02:59AM +0300, Alexey Tourbin wrote: > On Thu, Mar 13, 2008 at 12:52:24PM +0600, Ildar Mulyukov wrote: > > >сущности - RPM_BUILD_ROOT и канонический путь к RPM_BUILD_ROOT. В > > >скриптах поиска зависимостей приходится всё время учитывать эти > > >варианты. Например, представьте, что хочется узнать realpath > > >какого-то файла под RPM_BUILD_ROOT. > > > > > > f=/etc/init.d/functions > > > p=$(readlink -ve "$RPM_BUILD_ROOT$f") > > > p=${p#$RPM_BUILD_ROOT} > > > > > >Так вот, при каноническом RPM_BUILD_ROOT "отрезание пути спереди" > > >всегда просто работает. А если RPM_BUILD_ROOT не канонический, то > > >встаёт вопрос, что нужно отрезать спереди в первую очередь. > > > > Хорошо, я согласен с обоснованием. Но я не согласен с решением. Можно > > сделать так (не углубляясь в подробности реализации): > > 1. В самом начале работы rpmbuild сделать преобразование в канонический > > путь. > > В принципе, да. Но проблема ещё и в том, что каталог RPM_BUILD_ROOT > может просто не существовать. То есть тут нужна каноникализация типа > "readlink -m" (или, может быть, "readlink -f"). А %_tmppath тоже можно попробовать преобразовать в канонический вид, но ведь и %_tmppath может не существовать; в librpm в этом случае работает алгоритм, аналогичный mkdir -p. Впрочем, никто не мешает сделать это преобразование сразу после того, как каталог %_tmppath создан. -- ldv [-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-03-15 0:27 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2008-03-12 7:22 [devel] RPM %_tmppath - что плохого в силинках? Ildar Mulyukov 2008-03-13 6:30 ` Alexey Tourbin 2008-03-13 6:50 ` Хихин Руслан 2008-03-13 6:58 ` Alexey Tourbin 2008-03-13 7:05 ` Хихин Руслан 2008-03-13 10:50 ` Alexey Tourbin 2008-03-13 6:52 ` Ildar Mulyukov 2008-03-13 7:02 ` Alexey Tourbin 2008-03-15 0:27 ` 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