[devel-distro] [PATCH 0/4] archdep-filter и множественные архитектуры

Антон Мидюков midyukov-anton at ya.ru
Mon Nov 29 11:21:24 MSK 2021


23.11.2021 01:45, Michael Shigorin пишет:
> 	Здравствуйте.
> Изначально казалось странным, что в форме pkg �� arch нельзя
> указать как минимум несколько архитектур -- с несколькими
> пакетами было всё-таки неясно (хотя ситуация с libreoffice
> намекает, что выбор между a b c d �� arch как "a b c d"@arch
> или "a" "b" "c" "d �� arch" стоило делать в пользу первого).
> 
> Ну не получилось у меня сразу сделать такую раскрывалку;
> собственно, сегодня тоже практически весь день и ушёл
> по мотивам накропанного было:
> 
> -java-11-openjdk@!mipsel
> +java-11-openjdk �� X86
> +java-11-openjdk �� ARM
> +java-11-openjdk �� ppc64le
> +jre �� mipsel
> +jre �� E2K
> 
> Но зато с предлагаемыми коммитами теперь можно так:
> 
> pkg �� ARCHES1,arch2
> pkg@!ARCHES3,arch4
> 
> Прошу смотреть, испытывать и если всё хорошо -- забрать.

Работает. Забрал. Спасибо!

> Не гонял особо тщательно примерно вот такое (и не уверен,
> что такое надо уметь, хотя и хорошо бы для завершённости):
> 
> pkg1 �� ... pkg2@!... pkg3 �� ...

Такие записи выглядят перегружено, на мой взгляд.

> 
> ---
> 
> С переделкой же под обработку всей строки до @ как подлежащей
> фильтрации (на текущие 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 �� i586 i586-\1 �� 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 �� i586 i586-\1 �� 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(-)
> 


-- 
С уважением, Антон Мидюков <antohami �� altlinux.org>


More information about the devel-distro mailing list