* [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: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: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: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 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 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