Draft du message concernant les macros RPM pour X / Wayland.

Merci d'avance pour la review. Je posterai demain matin.

Steph
--------------------------------------------------------------

Hello all,

Baptiste Durand and I recently reviewed some patches where the spec files are modified to add X or wayland support conditionally.

The reviews are here:
- https://review.tizen.org/gerrit/13048 (merged)
- https://review.tizen.org/gerrit/13181 (merged)
- https://review.tizen.org/gerrit/13292
- https://review.tizen.org/gerrit/13310
- https://review.tizen.org/gerrit/13421

The common point in these patches is: to check if we're building with X, the condition used in spec files is: '%if !%{without x}', like:
   %if !%{without x}
   BuildRequires: pkgconfig(x11)
   BuildRequires: pkgconfig(ecore-x)
   %endif

Later in some spec file, it"s also used to define wayland specific options, like:
   %if %{without x}
   %build
   %cmake . -DENABLE_GTK=OFF -DENABLE_WAYLAND=TRUE
   %else
   %build
   %cmake . -DENABLE_GTK=OFF -DENABLE_WAYLAND=FALSE
   %endif

For the first merged patch on mesa, it's even more strange, as a "without x" is tested but without any instruction between %if and %else:

  %if %{without x}
  %else
  BuildRequires ...
  %endif

IMO, these patterns are not the best way to do things.

Actually, there's a '%define wayland 1' (for IVI), but AFAIK, there's no '%define x 1' for other targets with X11 (didn't see it in Tizen:Mobile project conf).

As you probably know, Weston can also be run with X compatibility (at least until a recent Xorg version, as I think that xwayland support has been removed in latest xorg server release... to be confirmed)

Finally, using only one define for conditional builds leads to false conclusions:
- not being on X doesn't always mean with have wayland
- not being on wayland doesn't always mean with have X
- having X doesn't mean we don't have wayland
- having wayland doesn't mean we dont' have X
- etc.


Proposal
--------

To be consistent, we propose to have two optional defines in the project config (depending on the profile):
- wayland: to check if wayland support exists (already defined and used)
- x or x11: to check if we're building for legacy X11 (not defined anywhere actually)

As wayland is actually defined, it's only one new define to add: this also minimizes the number of macros and the resulting combinations.

Meaning would be simple (assume 1=defined, 0=undefined):

| wayland |   x    | meaning
|----------------------------------------------------
|    0    |   1    | pure X11 platform (no wayland) - ex: mobile
|    1    |   0    | pure wayland platform (no X11) - ex: IVI
|    1    |   1    | wayland with X compatibility
|    0    |   0    | no X and no wayland (base system, framebuffer ?)


This would avoid a common pattern which is not precise:
 %if %{with wayland}
    ... (add wayland build option)
    # OK
 %else
    ... (add x build option)
    # NO! not being on wayland doesn't
    # mean we're on X
 %endif


The following pattern or other variants could be used in replacement:
 %if %{with wayland}
    ...
 %endif
 %if %{with x}
    ...
 %endif

or

 %if %{with x}
    %if %{with wayland}
     ... (X+wayland)
    %else
     ... (X alone)
    %endif
 %else
    %if %{with wayland}
     ... (pure wayland)
    %else
     ... (framebuffer = no X, no wayland)
    %end
 %endif

If at some point in the future, we need to have Wayland + X (in wayland-compatible mode) for a given profile, it'll be easy to check '%if %{with wayland} && %{with x}' for the few packages where it's needed (xorg-server in particular).


Regards,
Stéphane

--
Stéphane Desneux
Intel OTC - Vannes/FR
_______________________________________________
Dev mailing list
[email protected]
https://lists.tizen.org/listinfo/dev

Reply via email to