[devel-distro] [PATCH 0/4] archdep-filter и множественные архитектуры
Michael Shigorin
mike at altlinux.org
Mon Nov 22 21:45:14 MSK 2021
Здравствуйте.
Изначально казалось странным, что в форме pkg at arch нельзя
указать как минимум несколько архитектур -- с несколькими
пакетами было всё-таки неясно (хотя ситуация с libreoffice
намекает, что выбор между a b c d at arch как "a b c d"@arch
или "a" "b" "c" "d at arch" стоило делать в пользу первого).
Ну не получилось у меня сразу сделать такую раскрывалку;
собственно, сегодня тоже практически весь день и ушёл
по мотивам накропанного было:
-java-11-openjdk@!mipsel
+java-11-openjdk at X86
+java-11-openjdk at ARM
+java-11-openjdk at ppc64le
+jre at mipsel
+jre at E2K
Но зато с предлагаемыми коммитами теперь можно так:
pkg at ARCHES1,arch2
pkg@!ARCHES3,arch4
Прошу смотреть, испытывать и если всё хорошо -- забрать.
Не гонял особо тщательно примерно вот такое (и не уверен,
что такое надо уметь, хотя и хорошо бы для завершённости):
pkg1 at ... pkg2@!... pkg3 at ...
---
С переделкой же под обработку всей строки до @ как подлежащей
фильтрации (на текущие pkg.in/lists/ это не окажет какого-либо
влияния, я проверил, что '^[^#].* .*@' там отсутствуют)
застрял вот на чём (и это противоречит той "завершённости",
поскольку выбирает другую):
--- bin/archdep-filter 2021-11-22 21:19:00.169564135 +0300
+++ bin/archdep-filter2 2021-11-22 21:19:46.657753727 +0300
@@ -36,13 +36,14 @@
cat ${f:+"$f"} |
sed -r ':loop; s/^((([^@]+@!)[^,]+)+),([a-zA-Z0-9_]+)/\1@!\4/; t loop' |
sed -r ':loop; s/^((([^@]+@)[^,]+)+),([a-zA-Z0-9_]+)/\1\n\3\4/; t loop' |
-sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$A\>[^ ]*\>/\1\2/pg" |
-sed -rn "s/\<([^@ ]*)\>|\<[^@ ]*@\!$A\>[^ ]*\> */\1/pg" |
-sed -r "s/\<([^@ ]*)@IA32\>/\1 at i586 i586-\1 at x86_64/g" |
-sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$a\>[^ ]*\>/\1\2/pg" |
-sed -rn "s/\<([^@ ]*)\>|\<[^ ]*@\!$a\>[^ ]*\> */\1/pg" |
-sed -r "s/\<([^@ ]*)@\![^ ]+\>/\1/g" |
-sed -r "s/\<([^@ ]*)@[^@ ]+\> *//g" |
+sed -rn "s/\<([^@]*)\>|\<([^@]*)@$A\>[^ ]*\>/\1\2/pg" |
+sed -rn "s/\<([^@]*)\>|\<[^@]*@\!$A\>[^ ]*\> */\1/pg" |
+tee /dev/stderr |
+sed -r "s/\<([^@]*)@IA32\>/\1 at i586 i586-\1 at x86_64/g" |
+sed -rn "s/\<([^@]*)\>|\<([^@]*)@$a\>[^ ]*\>/\1\2/pg" |
+sed -rn "s/\<([^@]*)\>|\<[^ ]*@\!$a\>[^ ]*\> */\1/pg" |
+sed -r "s/\<([^@]*)@\![^ ]+\>/\1/g" |
+sed -r "s/\<([^@]*)@[^@]+\> *//g" |
sed -r "s/^ +//;s/ +$//;/^$/d" |
if [ -n "$f" ]; then
cat > "$t" && mv "$t" "$f"
$ echo -e 'a_b c d@!X86,aarch64' | sh bin/archdep-filter2 -a aarch64
a_b c d@!X86@!aarch64
a_b c d@!
$ echo -e 'a_b c d@!X86,aarch64' | sh bin/archdep-filter2 -a aarch64 >/dev/null
a_b c d@!X86@!aarch64
Бишь где-то лишний маркер "@!" остаётся.
Но сегодня уже никакой возможности это добивать нет.
Michael Shigorin (4):
bin/archdep-filter: implement multi-matching
bin/archdep-filter: implement multi-!matching too
bin/archdep-filter: cosmetic cleanups
bin/archdep-filter: a debugging note
bin/archdep-filter | 20 +++++++++++++-------
doc/archdep.txt | 6 ++++++
2 files changed, 19 insertions(+), 7 deletions(-)
--
2.33.0
More information about the devel-distro
mailing list