[devel] RPM %_tmppath - что плохого в силинках?
Alexey Tourbin
=?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Чт Мар 13 09:58:39 MSK 2008
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
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20080313/aec8d1fc/attachment-0002.bin>
Подробная информация о списке рассылки Devel