RFC: Makra do bcondów (Re: SOURCES: rpm.macros (HEAD))
Michal Moskal
malekith w pld-linux.org
Pią, 6 Cze 2003, 12:01:36 CEST
On Fri, Jun 06, 2003 at 11:50:14AM +0200, malekith wrote:
> Module name: SOURCES
> Changes by: malekith 03/06/06 11:50:12
>
> Modified files:
> rpm.macros
>
> Log message:
> - %with, %without, %ifwith %ifwithout macros added
Jakiś czas temu dodałem makra %defined, %undefined, %ifdef, %ifndef (by
jeff&wiget).
Po głębszych przemyśleniach, dochodzę do wniosku, że nie wiem dokładnie
po co one, skoro lepsze są tę, które dodałem teraz. Anyway nowa metoda
pisania bcondów:
Zamiast komentarzy o bcondach -- makra.
%bcond_with foo # Foo.org support
%bcond_without bar # ...
Od tego czy bcond_with czy bcond_without zależy default dla opcji (dla
_with jest default off, dla _without default on).
Następnie w specu:
%if %{with foo} && ! %{with bar}
...
%endif
%if %{with foo}
# lub %ifwith foo
...
%else
...
%endif
%{?with_foo: ...}
%{?with_bar: ...}
%{!?with_foo: ...}
%{!?with_bar: ...}
Nie używamy _with{,out}_{foo,bar}. Pozwoli to na zmianę default w jednej
linii. O ile można się kłucić o czytelność %{!?with_bar:...} nad
%{?_without_bar: ...} to:
%if %{with foo} && %{with bar}
wydaje mi się *znacznie* czytelniejsze od
%if %{?_with_foo:%{!?_without_bar:1}}0
RFC:
a) czy to w ogóle ma sens?
b) wywalić %if{n,}def, %{un,}defined? (nie używane do bcond, ale może do
czegoś innego?)
c) wywalić %ifwith,%ifwithout (%if %{with bar} nie jest dużo dłuższe od
%ifwith bar, ale nie wiem jak z czytelnością)?
d) dodać coś?
--
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: PLD Linux ::::::::: Wroclaw University, CS Dept : {E-,w}-- {b++,e}>+++ h
Więcej informacji o liście dyskusyjnej pld-devel-pl