Folks, sorry for the french header in the previous post... Just forget it ! Thanks --
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
_______________________________________________ Dev mailing list [email protected] https://lists.tizen.org/listinfo/dev
