Summary: | There is no BuildRequires(check) to match conditions implemented in %check | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> |
Component: | rpm-build | Assignee: | placeholder <placeholder> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | arseny, glebfm, imz, ldv, mike, placeholder, viy, vt |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux | ||
See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=6838 |
Description
Vitaly Lipatov
2020-11-21 14:49:42 MSK
Забыл указать для примера успешно собравшееся задания с такой конструкцией в спеке: http://git.altlinux.org/tasks/262211/ (In reply to Vitaly Lipatov from comment #0) > Что происходит: > > Успешно собирается пакет, в спеке которого указано > %if_with check > BuildRequires: hahaha > 100500 > %endif %if_with check по сути ничем не отличается от %if_with hahaha Вы точно так же можете пожаловаться, что %if_with hahaha BuildRequires: hahaha > 100500 %endif не работает без --with=hahaha Ответ: если вы хотите такого поведения, то перед первым должно быть %def_with hahaha или %def_without hahaha В противном случае %if_with hahaha отвечает на вопрос, был ли указан --with=hahaha. (Ответ для Dmitry V. Levin на комментарий #2) ... > Ответ: если вы хотите такого поведения, то перед первым > должно быть > %def_with hahaha > или > %def_without hahaha > > В противном случае > %if_with hahaha > отвечает на вопрос, был ли указан --with=hahaha. К поведению if_with у меня нет претензий. Я о том, что у нас можно выключить секцию %check добавлением --without check То есть подразумевается, что по умолчанию у нас есть --with check. Очевидно, я о том, что зависимости, необходимые для выполнения секции check, логично хочется указывать в обрамлении %if_with check BuildRequires: %endif Для каких-то целей же делался код, где-то управляющий секцией check, с псевдовизуализацией принятого решения (логика которой построена на предположении, что где-то в другом месте check выключается по такой же логике, как сообщается через echo). commit 23e6847c11a99d8d8454194f926e1aa2288ed1a3 Author: Dmitry V. Levin <ldv@altlinux.org> Date: Tue Sep 8 21:02:16 2009 +0000 platform.in: Override %__spec_check_pre diff --git a/platform.in b/platform.in index 4f06aef..96a139d 100644 --- a/platform.in +++ b/platform.in @@ -267,6 +267,16 @@ @alt@%{__spec_install_custom_pre}\ @alt@%nil @alt@ +@alt@%__spec_check_pre\ +@alt@%{?!_enable_check:%{?_disable_check:echo 'Check is turned off by --disable check' >&2; exit 0}}\ +@alt@%{?!_with_check:%{?_without_check:echo 'Check is turned off by --without check' >&2; exit 0}}\ +@alt@%{?!_enable_test:%{?_disable_test:echo 'Check is turned off by --disable test' >&2; exit 0}}\ +@alt@%{?!_with_test:%{?_without_test:echo 'Check is turned off by --without test' >&2; exit 0}}\ +@alt@%{?__buildreqs:echo 'Check is turned off in buildreq mode' >&2; exit 0}\ +@alt@%{___build_pre}\ +@alt@%{__spec_check_custom_pre}\ +@alt@%nil +@alt@ @alt@%__spec_clean_post\ Я хотел бы подчеркнуть очевидную вещь: секцию check при сборке выключают для того, чтобы 1. она не выполнялась 2. не требовались сборочные зависимости, необходимые для её выполнения. (In reply to Vitaly Lipatov from comment #4) > Для каких-то целей же делался код, где-то управляющий секцией check, с > псевдовизуализацией принятого решения (логика которой построена на > предположении, что где-то в другом месте check выключается по такой же > логике, как сообщается через echo). Этот код делался на все случаи жизни, поскольку известно, что люди не могут запомнить, какой из ручек надо пользоваться, добавлены все четрые. > commit 23e6847c11a99d8d8454194f926e1aa2288ed1a3 > Author: Dmitry V. Levin <ldv@altlinux.org> > Date: Tue Sep 8 21:02:16 2009 +0000 > > platform.in: Override %__spec_check_pre > > diff --git a/platform.in b/platform.in > index 4f06aef..96a139d 100644 > --- a/platform.in > +++ b/platform.in > @@ -267,6 +267,16 @@ > @alt@%{__spec_install_custom_pre}\ > @alt@%nil > @alt@ > +@alt@%__spec_check_pre\ > +@alt@%{?!_enable_check:%{?_disable_check:echo 'Check is turned off by > --disable check' >&2; exit 0}}\ > +@alt@%{?!_with_check:%{?_without_check:echo 'Check is turned off by > --without check' >&2; exit 0}}\ > +@alt@%{?!_enable_test:%{?_disable_test:echo 'Check is turned off by > --disable test' >&2; exit 0}}\ > +@alt@%{?!_with_test:%{?_without_test:echo 'Check is turned off by --without > test' >&2; exit 0}}\ > +@alt@%{?__buildreqs:echo 'Check is turned off in buildreq mode' >&2; exit > 0}\ > +@alt@%{___build_pre}\ > +@alt@%{__spec_check_custom_pre}\ > +@alt@%nil > +@alt@ > @alt@%__spec_clean_post\ > > > Я хотел бы подчеркнуть очевидную вещь: > секцию check при сборке выключают для того, чтобы > 1. она не выполнялась > 2. не требовались сборочные зависимости, необходимые для её выполнения. Вы можете написать такую же развесистую клюкву, которую я сделал для %check, и для условных BuildRequires. Условная конструкция BuildRequires, эквивалентная условной конструкции в %check, может выглядеть, например, так: %{!?__buildreqs:%{!?_disable_check:%{!?_without_check:%{!?_disable_test:%{!?_without_test:BuildRequires: needed-for-tests}}}}} В качестве демонстрации: %define BR4T() %{!?__buildreqs:%{!?_disable_check:%{!?_without_check:%{!?_disable_test:%{!?_without_test:BuildRequires: %*}}}}} %BR4T list of packages needed for tests На самом деле вы хотите BuildRequires(check): ist of packages needed for tests но это нигде не реализовано. > На самом деле вы хотите
> BuildRequires(check): ist of packages needed for tests
> но это нигде не реализовано.
Да это же гениально!
|