[devel] I: [SOLVED] arepo и glibc-locales

Alexey I. Froloff raorn на altlinux.org
Вт Авг 31 08:18:00 UTC 2010


Я нашёл багу в arepo, которая не давала пересобрать glibc-locales
(и другие пакеты с большим поличеством файлов).

Проблема в самодеятельном arepo'вском скрипте find-requires, на
stdin которому отдаётся список файлов.  Если этот список
достаточно большой, скрипт завершается реньше чем rpm успеет
записать все данные в пайп.

Патчи приложены, костыль i586-glibc-locales можно выносить из
сизифа.

-- 
Regards,    --
Sir Raorn.   --- http://thousandsofhate.blogspot.com/
-------------- next part --------------
From e6bbf8437cd24d664c3583f7714ef6c450016fd9 Mon Sep 17 00:00:00 2001
From: Alexey I. Froloff <raorn at altlinux.org>
Date: Tue, 31 Aug 2010 12:14:50 +0400
Subject: [PATCH 1/2] Do not process non-ELF's with ldd

Signed-off-by: Alexey I. Froloff <raorn at altlinux.org>
---
 arepo.py |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/arepo.py b/arepo.py
index 2cb7ec8..b41b938 100755
--- a/arepo.py
+++ b/arepo.py
@@ -554,15 +554,21 @@ for file in "$@"; do
             install -d -- "%buildroot$file"
         else
 	    echo === $file
-            list="${list} `ldd "$file"|cut -d '>' -f 2|grep \.so|cut -f 1 -d '('`"
+            case "$(file -L -- "$file")" in
+            'ELF '*' shared object'|'ELF '*' executable')
+                list="${list} `ldd "$file"|cut -d '>' -f 2|grep \.so|cut -f 1 -d '('`"
+                ;;
+            esac
             mkdir -p -- "`dirname %buildroot$file`"
             cp -a -- "$file" "%buildroot$file"
         fi
 done
-list=`for l in $list; do echo $l; done|sort|uniq`
-list=`for l in $list; do rpm -qf --queryformat '%{NAME}\n' $l; done|sort|uniq`
-echo search for $pkg in $list
-for l in $list; do [ $l = $pkg ] && echo skip $l || echo i586-$l >> ${TMP:-/tmp}/${pkg}-requires; done
+if [ -n "$list" ]; then
+    list=`for l in $list; do echo $l; done|sort|uniq`
+    list=`for l in $list; do rpm -qf --queryformat '%{NAME}\n' $l; done|sort|uniq`
+    echo search for $pkg in $list
+    for l in $list; do [ $l = $pkg ] && echo skip $l || echo i586-$l >> ${TMP:-/tmp}/${pkg}-requires; done
+fi
 EOF
 chmod +x install.sh
 
-- 
1.7.1.1

-------------- next part --------------
From bfe1977293b61fb2a88d07377abb172a0d704593 Mon Sep 17 00:00:00 2001
From: Alexey I. Froloff <raorn at altlinux.org>
Date: Tue, 31 Aug 2010 12:15:59 +0400
Subject: [PATCH 2/2] Swallow filelist passed by rpm to avoid SIGPIPE

Signed-off-by: Alexey I. Froloff <raorn at altlinux.org>
---
 arepo.py |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arepo.py b/arepo.py
index b41b938..6f4b605 100755
--- a/arepo.py
+++ b/arepo.py
@@ -594,6 +594,7 @@ chmod +x find-deps.sh
 
 cat >find-requires <<'EOF'
 #!/bin/sh -e
+cat >/dev/null
 pkg=~(pkgname)s
 file=${TMP:-/tmp}/${pkg}-requires
 cat $file
-- 
1.7.1.1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20100831/9877857f/attachment.bin>


Подробная информация о списке рассылки Devel