From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: [PATCH 1/4] gnu: Add XFILESEARCH path to profiles' environment. Date: Tue, 29 Nov 2016 15:34:11 +0100 Message-ID: <878ts273to.fsf@gnu.org> References: <1480100924-23868-1-git-send-email-jmd@gnu.org> <87zikkk485.fsf@gnu.org> <20161128131926.GA6466@jocasta.intra> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:48825) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cBjUB-0007He-6E for guix-devel@gnu.org; Tue, 29 Nov 2016 09:34:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cBjU7-0005AW-7R for guix-devel@gnu.org; Tue, 29 Nov 2016 09:34:19 -0500 In-Reply-To: <20161128131926.GA6466@jocasta.intra> (John Darrington's message of "Mon, 28 Nov 2016 14:19:26 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: John Darrington Cc: guix-devel@gnu.org, John Darrington John Darrington skribis: >=20=20=20=20=20 > > * gnu/system.scm (operating-system-etc-service): Add new environment > variable: >=20=20=20=20=20 > The guix.texi change is missing from the log. > > Thanks for noticing. >=20=20=20=20=20 > > diff --git a/doc/guix.texi b/doc/guix.texi > > index e64c361..9d133bb 100644 > > --- a/doc/guix.texi > > +++ b/doc/guix.texi > > @@ -1209,6 +1209,36 @@ data in the right format. > > This is important because the locale data format used by different= libc > > versions may be incompatible. > >=20=20 > > address@hidden X Window System > > address@hidden XFILESEARCHPATH > > address@hidden @code{Xt} > > address@hidden X Toolkit Intrinsics > > address@hidden @command{xterm} > > + > > +If you intend to use X Toolkit Intrinsics client applications such > > +as @command{xterm} then you should define the @code{XFILESEARCHPAT= H} > > +environment variable: > > + > > address@hidden > > +$ export XFILESEARCHPATH=3D"$HOME/.guix-profile/share/X11/%L/%T/%N= %C%S: > > + $HOME/.guix-profile/share/X11/%l/%T/%N%C%S: > > + $HOME/.guix-profile/share/X11/%T/%N%C%S: > > + $HOME/.guix-profile/share/X11/%L/%T/%N%S: > > + $HOME/.guix-profile/share/X11/%l/%T/%N%S: > > + $HOME/.guix-profile/share/X11/%T/%N%S: > > + $HOME/.guix-profile/lib/X11/%L/%T/%N%C%S: > > + $HOME/.guix-profile/lib/X11/%l/%T/%N%C%S: > > + $HOME/.guix-profile/lib/X11/%T/%N%C%S: > > + $HOME/.guix-profile/lib/X11/%L/%T/%N%S: > > + $HOME/.guix-profile/lib/X11/%l/%T/%N%S: > > + $HOME/.guix-profile/lib/X11/%T/%N%S" > > address@hidden example >=20=20=20=20=20 > Seriously?! I mean, we can reasonably ask people to do that, can we? > Is there another way? > > *shrug?* It's one more variable to set. Granted it's a long one. But it's > not *us* that's asking them to do it. We are merely passing along advice > from the Xt lib developers (see below). If people want to use Xt then > that's what they're supposed to do. Fortunately people don=E2=80=99t =E2=80=9Cwant=E2=80=9D to use Xt nowadays.= ;-) At any rate, I=E2=80=99m surprised this is so involved. > > +export XFILESEARCHPATH=3D\"$HOME/.guix-profile/share/X11/%L/%T/%N%= C%S:\\ > > +$HOME/.guix-profile/share/X11/%l/%T/%N%C%S:\\ > > +$HOME/.guix-profile/share/X11/%T/%N%C%S:\\ > > +$HOME/.guix-profile/share/X11/%L/%T/%N%S:\\ > > +$HOME/.guix-profile/share/X11/%l/%T/%N%S:\\ > > +$HOME/.guix-profile/share/X11/%T/%N%S:\\ > > +$HOME/.guix-profile/lib/X11/%L/%T/%N%C%S:\\ > > +$HOME/.guix-profile/lib/X11/%l/%T/%N%C%S:\\ > > +$HOME/.guix-profile/lib/X11/%T/%N%C%S:\\ > > +$HOME/.guix-profile/lib/X11/%L/%T/%N%S:\\ > > +$HOME/.guix-profile/lib/X11/%l/%T/%N%S:\\ > > +$HOME/.guix-profile/lib/X11/%T/%N%S:\\ > > +/run/current-system/profile/share/X11/%L/%T/%N%C%S:\\ > > +/run/current-system/profile/share/X11/%l/%T/%N%C%S:\\ > > +/run/current-system/profile/share/X11/%T/%N%C%S:\\ > > +/run/current-system/profile/share/X11/%L/%T/%N%S:\\ > > +/run/current-system/profile/share/X11/%l/%T/%N%S:\\ > > +/run/current-system/profile/share/X11/%T/%N%S:\\ > > +/run/current-system/profile/lib/X11/%L/%T/%N%C%S:\\ > > +/run/current-system/profile/lib/X11/%l/%T/%N%C%S:\\ > > +/run/current-system/profile/lib/X11/%T/%N%C%S:\\ > > +/run/current-system/profile/lib/X11/%L/%T/%N%S:\\ > > +/run/current-system/profile/lib/X11/%l/%T/%N%S:\\ > > +/run/current-system/profile/lib/X11/%T/%N%S\" >=20=20=20=20=20 > That=E2=80=99s unreasonable IMO. > > This is merely the default value that the Xt library sets, but I > have simply substituted "/usr" with "$HOME/.guix-profile" and > repeated it substituting "/run/current-system/profile". > It is a large string, but why is that a problem? It=E2=80=99s ugly, there=E2=80=99s duplication, and hackers will not dare t= o touch it. > We can cut down on the size of this string iff we can somehow > guarantee that no package ever ships a file in any of those locations. > > Some "solutions" (in my order of preference) are: > > * The size of the above list can be halved, by dropping either the > .../lib/... or the .../share/... items - we just have to then make > sure that no package ships resource files in the one we drop. Historical= ly, > resource files were always in .../lib (as still are all official > sources from x.org) but recently third party packages have started > putting them in .../share. > > * I *think* we could also get away with further reducing the set to=20 > "$HOME/.guix-profile/lib/X11/%T/%N%S: > /run/current-system/profile/lib/X11/%T/%N%S" > because, all the Xt dependent packages I've seen so far, put their > resource files there. However, we cannot know what might get added > in the future. Right, if we do both, that=E2=80=99s already much better. > * Hack the hard coded defaults in the libXt source to use the profile > settings instead of /usr Maybe we should just do that, no? It=E2=80=99d be a local change, it would achieve the same effect, and it would provide a good default. WDYT? I suppose there=E2=80=99s trickiness due to the fact that it=E2=80=99s C an= d we have to concatenate strings=E2=80=A6 > * Do what we had before: Wrap *every* program which uses libXt in > a script setting XAPPLRESDIR - This is sure to annoy users because > it would override any XUSERFILESEARCHPATH they had set themselves. Doesn=E2=80=99t sound great. > Is this motivated by the broken ctrl-click in xterm? That thing used= to > work, I wonder what happened. > > Xterm has never worked properly for me under GuixSD. It "worked" under > Guix on Debian, presumably because it found the resource files from > the native installation. > > Xterm not working was what prompted me to find out the cause. > But it will affect all and every package which provides X resource > files as a shipped file. > > Anyway my general opinion is, that I agree that the value of this variable > is rather long, but: > 1. I don't see why that is a problem. > 2. It is how the X Consortium intends and recommends it to be used. > 3. A competent user will not be intimidated by it. > 4. A naive user will never be aware of it anyway. > > > For background information, see: > > * http://www.faqs.org/faqs/Xt-FAQ > * The man page for XtResolvePathname > * The file specs/CH11.xml in the libXt source. OK. Thanks for the info and everything! Ludo=E2=80=99.