<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 20, 2014 at 2:55 AM, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Mon, 19 May 2014 20:31:28 -0700<br>
Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
<br>
><br>
><br>
> On 05/19/2014 12:39 AM, Pekka Paalanen wrote:<br>
> > On Fri, 16 May 2014 13:43:50 -0700<br>
> > <a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a> wrote:<br>
> ><br>
> >> From: spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>><br>
> >><br>
> >> This is based on several experimental runs on two different<br>
> >> Ubuntu 12.04 machines. Latest version includes instructions for<br>
> >> a recent update of Mesa (which requires llvm-3.1) and that you<br>
> >> must compile Cairo to avoid bugs in the system-supplied version.<br>
> ><br>
> > Hi,<br>
> ><br>
> > This is v3 of the same patch, right?<br>
> > Please mention that, so no-one goes reviewing the outdated versions,<br>
> > especially when it's this long.<br>
><br>
> Okay, I will try to get that right. Still trying to get git format-patch<br>
> and send-email to work correctly. The only method I have found to<br>
> reliably set the subject and text is to edit the patch file after it is<br>
> produced. You probably saw some very screwy stuff I posted trying to<br>
> make the --compose switch work, before I realized I better send<br>
> everything to myself first.<br>
><br>
> I would like to produce instructions on how to make and send a patch to<br>
> the mailing list too, so I hope I am getting it right and not missing<br>
> something obvious.<br>
<br>
</div>Right, here are some details on how I do it.<br>
<br>
First the setup, let's say for Weston. It is nice to note the<br>
project/repository in the [] part of the subject, so it is obvious to<br>
which git repo the patch applies. For Weston I have set the git config<br>
key:<br>
        format.subjectprefix=PATCH weston<br>
I think you can set that with:<br>
        $ git config format.subjectprefix "PATCH weston"<br>
That is only a per-repo default, which you can override for both<br>
git-format-patch, and git-send-email if not using git-format-patch, on<br>
the command line with --subject-prefix="PATCH foofoo".<br>
<br>
When you do a revised patch series, there is a --reroll-count option,<br>
but it also works if you do it manually with --subject-prefix="PATCH<br>
foofoo v5".<br>
<br>
If I have a series that needs a cover letter, I first store the<br>
formatted patches into a directory:<br>
        $ git format-patch --cover-letter -o outdir ...<br>
Go edit the cover letter, check it's all right, and then<br>
        $ git send-email --to=... [--cc=...] outdir<br>
Something like that.<br>
<br>
If the series is simple, I might just call git-send-email directly with<br>
all of the above command line options as necessary.<br>
<br>
For an RFC series, I set the subject-prefix to have RFC instead of<br>
PATCH. RFC series is not meant to be merged as is, but is sent out for<br>
comments.<br>
<div class=""><br>
> ><br>
> > General comments:<br>
> ><br>
> > - Drop all the re-line-wrapping that does not actually change the<br>
> >    content. It just makes this patch daunting to review.<br>
><br>
> Will try to make the patch again without this.<br>
><br>
> > - I think we should keep the main building page distribution agnostic.<br>
> >    Otherwise it would be specific to Fedora rawhide or latest release or<br>
> >    something, since Fedora is what many main developers use, IIRC (not<br>
> >    me, though). Certainly choosing an ancient distribution like Ubuntu<br>
> >    12.04 is far too old to be considered in detail on or as the base of<br>
> >    the main building page. The same goes for the xserver page.<br>
> ><br>
> > I suppose you could make a sub-page for Ubuntu specifics, but I think<br>
> > it might be better on some ubuntu-specific wiki where end users can<br>
> > update it easily. We could still link there.<br>
><br>
> The problem is that without the "what is the name of the package<br>
> containing foo" information, it is pretty near impossible for a beginner<br>
> to compile this. Trust me, having worked on this literally for four<br>
> years now, it is NOT easy and this information is valuable. I did assume<br>
> the package names were relevant to other systems.<br>
<br>
</div>What is the target audience of the build guide?<br>
<br>
I'm not actually too sure, but I would like to assume, that the reader<br>
is familiar with building stuff from git and dealing with configure<br>
complaining about missing dependencies. Installing missing dependencies<br>
is distribution specific. Distributions use different package names,<br>
and sometimes split a project into several packages differently.<br>
<br>
What we at upstream need to do, is to make sure that the complaints<br>
from configure are understandable.<br>
<br>
The question "what package in distribution Foo provides laalaa.pc?" is<br>
usually best answered by Google, without writing instructions specific<br>
to each distribution.</blockquote><div><br></div><div>Fedora has this built-in:<br><br></div><div>  # yum install 'pkgconfig(laalaa.pc)'<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
And that becomes a pretty generic guide on "How<br>
to build software", so if there is a site which already explains all<br>
these basics, we can link to it, but I don't think we should write that<br>
guide on the Wayland site.<br>
<br>
If the user is not familiar in general on building software manually<br>
from source, then he should be looking for pre-packaged Wayland and<br>
Weston for his particular distribution.<br>
<br>
There is one reason to have a more thorough guide though: end users<br>
reporting bugs, who are then asked to test a patch or the latest git<br>
version. But every project out there has this problem, surely someone<br>
has written a relatively generic guide?<br>
<br>
The thing is, I would like to keep the build guide short and to the<br>
point. If someone needs more hand-holding with the basics, we should<br>
have links to more thorough guides.<br>
<div class=""><br>
> I think instructions lacking the "install this package" commands are not<br>
> usable. I suppose I could change it to "install xyz, ddd and foobar" but<br>
> I'm not sure if that is any better than showing a command that works on<br>
> one platform at least.<br>
<br>
</div>I think a verbal description instead of commands would be better,<br>
because it is plain English. When you write commands, you assume that<br>
the reader knows what those commands do, and realizes he may need to<br>
adjust the package names.<br>
<div class=""><br>
> > I bet the next person fixing these instructions will not be on Ubuntu<br>
> > 12.04, so better drop this, or it gets outdated quick when the person<br>
> > forgets to remove this.<br>
><br>
> I am unable to change any machine I am using off of Ubuntu 12.04 as they<br>
> are being used for commercial software development and that software<br>
> must run on that system, since this is really what people use. I don't<br>
> think I am the only software developer in this position.<br>
><br>
> There have also been a number of emails sent to this list from people<br>
> complaining that they could not figure out how to compile it. When they<br>
> identified the system it seems they were all using either Raspberry pi<br>
> or Ubuntu 12.04.<br>
<br>
</div>I still think we should keep the Wayland web site instructions mostly<br>
generic, at least the main build guide, and have another page or<br>
external site for distribution specfic guides.<br>
<br>
It is a question of maintenance, and who gets the blame when the page<br>
goes out of date.<br>
<br>
Also the process of editing the Wayland web site is much more involved<br>
than e.g. a wiki has, so it is more likely end users don't bother<br>
contributing.<br>
<div class=""><br>
> >> -export WLD LD_LIBRARY_PATH PKG_CONFIG_PATH ACLOCAL ACLOCAL_PATH<br>
> >> +<pre><br>
> >> +export WLD=$HOME/install   <font color=#800># change this to another location if you prefer</font><br>
> >> +export LD_LIBRARY_PATH=$WLD/lib<br>
> >> +export PKG_CONFIG_PATH=$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/<br>
> >> +export ACLOCAL_PATH="$WLD/share/aclocal"<br>
> >> +export ACLOCAL="aclocal -I $ACLOCAL_PATH"<br>
> >>   </pre><br>
> ><br>
> > This is a good hunk IMO, and the boxing is nice, but I'd like to keep<br>
> > (and add) the $ in front for manually typed commands.<br>
><br>
> I removed the $ signs so that multiple lines could be cut & pasted to a<br>
> terminal. I agree it looks better with them, but this seems much more<br>
> important. Maybe there is some trick so that both can work but I have<br>
> not come up with one.<br>
<br>
</div>I think you don't want to paste multiple commands in one go. If one<br>
fails, the following will fail even harder, and maybe obscure the first<br>
error.<br>
<div class=""><br>
> >> +mkdir -p $WLD/share/aclocal <font color=#800># avoid a bug in aclocal</font><br>
> ><br>
> > A good addition, though might also use $ACLOCAL_PATH directly.<br>
><br>
> Yes good idea.<br>
><br>
> Previously I have compiled without setting any of the ACLOCAL variables<br>
> at all, and it worked (at least as well as this), so I'm wondering if<br>
> they really are necessary.<br>
<br>
</div>They are likely necessary for anything that still uses<br>
wayland-scanner.m4.<br>
<div class=""><br>
><br>
> >> +sudo apt-get install libpciaccess-dev <font color=#800># needed by drm</font><br>
> ><br>
> > Distribution specifics.<br>
><br>
> Yes but this is a good example. The error message said only "pci" I<br>
> think. I had to do a lot of searching and test-installs before I found<br>
> that this package (with the word "lib" on the start, and "access-dev" on<br>
> the end) was the one. That is not something we should require everybody<br>
> to repeat. I think it is making people give up on wayland long before<br>
> they get anywhere.<br>
<br>
</div>Are you sure it is needed?<br>
<br>
Nothing in Weston refers to pciaccess.h or pciaccess.pc.<br>
<br>
Maybe it was the Xorg server when it still was used for xwayland, but<br>
nowadays we have Xwayland server that I don't think should be requiring<br>
that.<br>
<div class=""><br>
> >> (all the proto git packages)<br>
> ><br>
> > These should not usually be needed. I think it would be enough to<br>
> > just mention --disable-dri3 in case someone has a problem with these<br>
> > dependencies. The rest are only because you used such an old<br>
> > distribution as a base. I don't think we should go that far in the<br>
> > generic guide.<br>
><br>
> Some of those git repositories were updated at the same time xserver<br>
> was. About 2 months ago it compiled with the packaged ones, and it does<br>
> not now, and in fact in one day another package was added. Since it<br>
> changes that fast I doubt any distribution is going to be up to date.<br>
<br>
</div>Do you think we can keep this guide up-to-date? Would you commit to<br>
that?<br>
<br>
Another idea: keep the main build guide short, but have another page<br>
for "configure failed with .... " sections with hints how to solve it.<br>
That way people only need to read what they actually require.<br>
<br>
I'd like to avoid manual building of dependencies for which the<br>
distribution packages would be just fine.<br>
<div class=""><br>
> I did have --disable-dri3 in there for a while, but eventually the<br>
> xserver required most of the same packages as mesa, so I removed that,<br>
> wanting to configure mesa exactly like you are doing.<br>
<br>
</div>Maybe worth re-checking, if building only the Xwayland servers gets rid<br>
of some of those.<br>
<div class=""><br>
> >> +<p>And finally you can compile Mesa:</p><br>
> >> +<br>
> >> +<pre><br>
> >> +git clone git://<a href="http://anongit.freedesktop.org/mesa/mesa" target="_blank">anongit.freedesktop.org/mesa/mesa</a><br>
> >> +cd mesa<br>
> >> +./autogen.sh --prefix=$WLD --enable-gles2 --disable-gallium-egl \<br>
> >> + --with-egl-platforms=x11,wayland,drm --enable-gbm --enable-shared-glapi \<br>
> >> + --with-gallium-drivers=r300,r600,swrast,nouveau \<br>
> >> + --disable-llvm-shared-libs <font color=#800># this may be a bug in the llvm package</font><br>
> >> +make &amp;&amp; make install<br>
> >> +cd ..<br>
> ><br>
> > I'm not sure should tell people to use --disable-llvm-shared-libs, the<br>
> > Mesa default must be good enough, or it is a distribution problem with<br>
> > the dependencies. Anyway, this is not really a Mesa build guide but<br>
> > just enough details to configure Mesa properly for Wayland needs in<br>
> > general.<br>
><br>
>  From what I read on the web it is a problem with the llvm packages. I<br>
> feel like this is not fixable without recompiling llvm from source...<br>
<br>
</div>In a specfic distribution, right?<br>
<div class=""><br>
> The configure error is pretty clear that adding<br>
> "--disable-llvm-shared-libs" will work so I suppose removing it is not<br>
> that bad. Despite what I am trying to do, mesa changes so fast that it<br>
> is very unlikely the next code update will compile without changing<br>
> these instructions anyway. Maybe putting it in a comment will help.<br>
<br>
</div>Sure.<br>
<div class=""><br>
> I also discovered that it does not complain about a missing llvm if you<br>
> remove the r300 driver. However I think this also silently removed all<br>
> shader compilation from all backends, right?<br>
<br>
</div>Err, I don't know. I wouldn't think so. Something has to build the<br>
shaders, but I'm not sure what.<br>
<div class=""><br>
> > Distribution specifics. Just drop the Cairo and Pixman parts.<br>
><br>
> The versions included with my system have bugs that I thought were bugs<br>
> in wayland or the wayland xserver. It might be a good idea that people<br>
> don't see such errors the first time they run it.<br>
<br>
</div>Did these bugs appear with cairo-image, or cairo-gl only? If cairo-gl<br>
only, then we can just forget about it. If cairo-image is affected, we<br>
should consider bumping the version requirements in Weston's<br>
<a href="http://configure.ac" target="_blank">configure.ac</a>.<br>
<div class=""><br>
><br>
> >> +sudo apt-get install libmtdev-dev libpam0g-dev<br>
> ><br>
> > Distribution specifics.<br>
><br>
> Again these are good examples of mystery package names that I had to<br>
> figure out by trial and error and installing a lot of incorrect<br>
> packages. Nobody is going to guess that pam has "0g" on the end. This is<br>
> the important information I was trying to add to the instructions.<br>
><br>
> Compiling these from git might be more acceptable?<br>
<br>
</div>libpam I would say definitely better to use the distribution version.<br>
OTOH mtdev is not that critical.<br>
<br>
But still, this is distribution specific all, and would be better on a<br>
separate ubuntu 12.04 page.<br>
<div class=""><br>
> >> +PATH=$WLD/bin:$PATH ./autogen.sh --prefix=$WLD --disable-setuid-install<br>
> ><br>
> > No need for PATH, we have a proper fix coming.<br>
><br>
> Well it sounds like there is some disagreement about the fix. I think I<br>
> should leave the text in there until I can confirm the version in git<br>
> has this fixed.<br>
<br>
</div>Yes indeed. Now it seem like the PATH is actually the better way, and<br>
it would also work without patching Weston, so I take that back. You<br>
could add PATH into the generic environment setup section.<br>
<div class=""><br>
> >> +<font color=#800># remove --disable-setuid-install if installing system-wide</font><br>
> ><br>
> > No, system-wide has nothing to do with needing or not needing<br>
> > setuid-install. weston-launch needs to be setuid if it used, at least<br>
> > without proper systemd I believe.<br>
><br>
> Okay got that. Does it only set setuid on the weston-launch executable?<br>
> I have not gotten any indication that this works at all. I only get the<br>
> error about needing to add myself to the weston-launch group, which I<br>
> certainly did!<br>
<br>
</div>Yes, only weston-launch binary will be setuid-root. This is to ensure,<br>
that it has proper rights to access all input devices and the VT/TTY,<br>
when systemd does not provide those services. There is also<br>
drmSetMaster(), but I am not sure how that works here.<br>
<br>
It is also possible that a distribution would be configured to give<br>
access to the locally logged in user anyway, in which case setuid-root<br>
would not be needed.<br>
<br>
<br>
Thanks,<br>
pq<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>  Jasper<br>
</div></div>