Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#4421 closed defect (fixed)

Issues with dependencies on individual Xorg parts

Reported by: Chris Staub Owned by: Igor Živković
Priority: normal Milestone:
Component: BOOK Version: SVN
Severity: normal Keywords:
Cc:

Description

There are several packages in BLFS that have dependencies listed for various components of Xorg, such as "Xorg Applications" or "Mesa." The problem is, these individual pages for X make the assumption that anyone using them must be installing all of X as a whole. For example, each subpage for X says to use "$XORG_CONFIG", but never explain where it comes from or what it should be, and if you're just following dependency links in the book, you'd never know about it.

If different individual components of X are to be used as dependencies, then they should each be able to be used independently. Alternately (and this would be my preferred solution), any dependency on some part of X can just be changed to "Xorg" as a whole.

Change History (20)

comment:1 by Igor Živković, 10 years ago

I also prefer changing dependencies to the X Window System as a whole. While you don't need the whole system to compile depending packages you most certainly need it at runtime.

comment:2 by Fernando de Oliveira, 10 years ago

Yes, but in other packages where this happens, we have the required package and the runtime required package.

comment:3 by Armin K, 10 years ago

The X Window System dependency might be "a lie" for most of the packages. It might be true for a window manager or a desktop, but for most packages you only need it to satisfy build time dep for something, you wouldn't need to run it at all. Stick to build deps, one might not want to build entire X Window System to build GTK+3, lets say, which can also run on Wayland (you need X libraries for Mesa only, not the XServer and such).

comment:4 by Fernando de Oliveira, 10 years ago

This is a good point. To satisfy all above, what about

Required (Runtime): Xorg or Wayland (or something else that I do not know?)

ISTR some package(s) needing some xorg package or mesa or gtk+ at buildtime and not necessarily needing Xorg at runtime.

Last edited 10 years ago by Fernando de Oliveira (previous) (diff)

comment:5 by Fernando de Oliveira, 10 years ago

One further thought: Chris, wouldn't be better for all to list the packages you are referring to individually? It would facilitate the discussion.

Last edited 10 years ago by Fernando de Oliveira (previous) (diff)

comment:6 by Armin K, 10 years ago

From the current svn checkout

pst/printing/gs.xml:      <xref linkend="x-window-system"/> and
pst/typesetting/texlive.xml:      <xref linkend="x-window-system"/>,
pst/scanning/sane.xml:      <xref linkend="x-window-system"/>,

How would any of these strictly need x-window-system? They might require the libraries to build them for some functionality, ie a gui program which is only small part of the package, but how would one need x window system to print something? to scan something? to write a LaTeX document and compile it?

general/prog/php.xml:    <xref linkend="x-window-system"/>,
general/genutils/imagemagick.xml:      <xref linkend="x-window-system"/>

Really? To build php and ImageMagick (and both only use a library to provide image functionality - libXpm) I need an entire X Window System. Even on my server? :O

general/graphlib/jasper.xml:    <xref linkend="x-window-system"/>, and
general/graphlib/imlib2.xml:      <xref linkend="x-window-system"/>,
general/graphlib/aalib.xml:    <para role="optional"><xref linkend="x-window-system"/>,

These are image libraries, they might only expect libraries at build time, and might be used in a non-x11 environment (ie, server) while still having the functionality. It should be obvious that you need a gui to view the image (well, except the ascii art).

server/mail/exim.xml:      <xref linkend="x-window-system"/>,

I don't even want to mention this one.

multimedia/libdriv/libdv.xml:      <xref linkend="x-window-system"/>
multimedia/libdriv/libao.xml:      <xref linkend="x-window-system"/>,
multimedia/libdriv/xine-lib.xml:      <xref linkend="x-window-system"/>,
multimedia/libdriv/sdl.xml:      <xref linkend="x-window-system"/>,
multimedia/libdriv/libmpeg2.xml:    <para role="optional"><xref linkend="x-window-system"/> and
multimedia/videoutils/ffmpeg.xml:      <xref linkend="x-window-system"/>,

Multimedia libraries might require entire X to function in some conditions, but given that mostly programs of these use x libs, it shouldn't list X window system as a dep at all.

postlfs/security/openssh.xml:      <xref linkend="x-window-system"/>,

This is a lie. OpenSSH only needs xauth app from xorg applications to set up x server remoting.

networking/textweb/links.xml:    <xref linkend="x-window-system"/></para>
pst/ps/a2ps.xml:      <xref linkend="x-window-system"/>,
x/wm/icewm.xml:      <xref linkend="x-window-system"/> and
x/wm/openbox.xml:      <xref linkend="x-window-system"/> and
x/wm/fluxbox.xml:    <para role="required"><xref linkend="x-window-system"/></para>
x/wm/other-wms.xml:  window manager installed by the <xref linkend="x-window-system"/>
general/genutils/rxvt-unicode.xml:      <xref linkend="x-window-system"/>
general/sysutils/mc.xml:      <xref linkend="x-window-system"/>, and
multimedia/videoutils/vlc.xml:      <xref linkend="x-window-system"/>,
postlfs/virtualization/qemu.xml:      <xref linkend="x-window-system"/>
postlfs/editors/emacs.xml:    <para role="optional"><xref linkend="x-window-system"/>,
postlfs/editors/vim.xml:    <para role="recommended"><xref linkend="x-window-system"/></para>

I have no comment for these.

As you can see, most of the x-window-system deps are currently "a lie". I'd rather suggest that everything depends either on Mesa or Xorg Libraries, but with a note on these respective pages that Xorg Server might be expected to be running at app runtime.

in reply to:  4 comment:7 by Fernando de Oliveira, 10 years ago

Replying to fo:

Required (Runtime): Xorg or Wayland (or something else that I do not know?)

ISTR some package(s) needing some xorg package or mesa or gtk+ at buildtime and not necessarily needing Xorg at runtime.

I have edited that comment, to clarify and fix some typos.

in reply to:  6 comment:8 by Fernando de Oliveira, 10 years ago

Replying to Krejzi:

As you can see, most of the x-window-system deps are currently "a lie". I'd rather suggest that everything depends either on Mesa or Xorg Libraries, but with a note on these respective pages that Xorg Server might be expected to be running at app runtime.

I think you were not addressing this to me, because we are in very close points of view here. However, I do not fully understand the word "lie":-)

About the note, for the packages that would need it, wolud not Wayland be also an alternative at runtime?

I am discussing it here, but think that Igor, who is maintaining Xorg, would be more indicated to do the modifications, if any.

comment:9 by Armin K, 10 years ago

First of all, Wayland is a protocol that is being developed to replace X Window System in the future. It's not quite ready, but it's mostly usable for some GTK+3, Qt5 and Efl based apps.

As for a word "lie", it is important why it's between " ". It simply isn't true that for most of the packages I listed entire Xorg is required (not true -> "lie" -> word play).

In reply to comment 4,

I don't think you really want to list X window system for every package. I believe that a note on Xorg Libraries page will be enough, as I mentioned at the end of comment 6, in the same fashion as the note on the Clutter page saying that working DRI setup is required.

in reply to:  9 comment:10 by Fernando de Oliveira, 10 years ago

Replying to Krejzi:

OK. Again, I think we are agreeing in all points, with a small difference.

First of all, Wayland is a protocol that is being developed to replace X Window System in the future. It's not quite ready, but it's mostly usable for some GTK+3, Qt5 and Efl based apps.

Wayland: I only went once to see their page when someone wrote about it in the list (I thought you did, but apparently I am wrong). After that, it is appearing in some pages of the book: libva, mesalib, clutter, gtk+3, cogl, cairo, gst-plugins-bad. That is the reason I mentioned it, even knowing that is still being developed. And the other one I do not remember the name is that from Canonical.

As for a word "lie", it is important why it's between " ". It simply isn't true that for most of the packages I listed entire Xorg is required (not true -> "lie" -> word play).

Again, I completely agree, as I wrote before. Perhaps you thought I was saying the contrary.

In reply to comment 4,

I don't think you really want to list X window system for every package. I believe that a note on Xorg Libraries page will be enough, as I mentioned at the end of comment 6, in the same fashion as the note on the Clutter page saying that working DRI setup is required.

No, I do not want, but I do not care. Again, agreeing with you. That is another reason I thought that Igor should be the one deciding, and it is OK with me, if he wants.

I think that the only difference between our opinions is that you really would prefer X not being listed. Although I would prefer to leave the book as is, it is no problem at all for me if Igor and Chris want them listed and do so, and gave a suggestion.

So, I think we two are in peace, about this.

And thanks for the list you gave, I was thinking about that, to produce a discussion similar as the one you did (though not at the same high level as yours) but did not find a way to create it so fast as you did, and asked Chris, who is the one proposing the modifications, to do it.

comment:11 by Armin K, 10 years ago

I have no power here though, I was just pointing what might be the better solution. It's up to you guys to decide.

I merely entered the conversation because I've started (and did most of the) replacing x-window-system dependencies with only xorg7-lib and such but never actually told why.

in reply to:  6 comment:12 by ken@…, 10 years ago

Replying to Krejzi:

From the current svn checkout

pst/printing/gs.xml:      <xref linkend="x-window-system"/> and
pst/typesetting/texlive.xml:      <xref linkend="x-window-system"/>,
pst/scanning/sane.xml:      <xref linkend="x-window-system"/>,

How would any of these strictly need x-window-system? They might require the libraries to build them for some functionality, ie a gui program which is only small part of the package, but how would one need x window system to print something? to scan something? to write a LaTeX document and compile it?

I suggest that you read each package's page before you jump to the conclusion that something is *required*. Unless somebody has changed the ghostscript page since 12th November, X Window System is optional there (it allows the builder to get the tiger picture on the desktop, so proving that gs works).

For the bigger question of this ticket, I don't have strong feelings - much of BLFS is not to my exact taste, so I usually go along with whatever is already there.

comment:13 by Armin K, 10 years ago

Replying to Ken:

I wasn't talking about requirement, but deps in general, be it required, recommended or optional.

Only Xorg Libraries are required to get the functionality. You don't need entire X stack (not even Mesa) at the building machine at all. One could run (if desired) the app via ssh X forwarding (some of the devs do that iirc).

comment:14 by bdubbs@…, 10 years ago

Let me throw in my two cents here. First I'd like to address the "lie" discussion. The word, in English and in this context, has negative connotations beyond incorrect or inaccurate. It implies deliberate misleading for some sinister motive. That's clearly not not appropriate here.

On the technical point, I've run into a couple of situations where I've wanted to build an application on a system without X installed. One was Qt4. It can be used for it's general capabilities, but --without-x did not work. We ended up building Xorg and installing in a temporary location. After building Qt, we removed the libraries that referenced Xorg libraries as well as the temporary Xorg build.

The second situation was when we wanted to be able to manipulate images programmatically for a web server (capcha manipulation). We had to search for a program that would build without X. I don't recall what we ended up with, but it wasn't our first choice.

Although most users will probably want all of X anyway and since Wayland is not yet ready, I think that specifying the specific dependency would be the most appropriate in many cases. In some cases it may not be possible though. In the case of texlive, there are a lot of individual programs and breaking out all the needed dependencies is not easy. ...

On the other hand, a little checking texlive with ldd gives:

libICE.so.6 
libSM.so.6 
libX11.so.6 
libXau.so.6 
libXaw.so.7 
libXdmcp.so.6 
libXext.so.6 
libXmu.so.6 
libXpm.so.4 
libXt.so.6 
libxcb.so.1 

In this case, specifying Xorg seems to be reasonable.

In the example of emacs or vim, the reason to have Xorg is to be able to build the graphical versions. Every part may not be needed for building, but Xorg is certainly needed at runtime for the graphical version.

For the issue of Wayland, as mentioned earlier, it is not ready for prime time. I think that mentions of Wayland should not be in BLFS right now. It just makes a complicated set of build dependencies more complicated for what is right now a (at best) beta product. I would wahttp://wiki.linuxfromscratch.org/blfs/ticket/4421#trac-add-commentit until one of the more mainstream distros starts including it as an option.

The bottom line is that I feel that the call on referencing Xorg or individual Xorg packages should be made on a package-by-package basis.

comment:15 by Armin K, 10 years ago

First, I apologize for using the "lie" word. I didn't mean to insult anyone. I wanted to point out "correctness" of the current instructions.

Secondly, for TexLive case: On my machine I have binary installation I have 5 binaries which use X11 libraries and that's 5 out of 316. The main executables used to create pdf and dvi documents are not dependant on X11. The ones that are actually dependent are some kind of viewers (for which should be better alternative out there, I suppose) which are not necessarry on a machine used to build pdf/dvi/whatever documents TexLive supports.

Third, for Vim - yes you are right, but still it's a runtime dependency and anyone building X11 functionality into Vim and probably anything else would have it installed anyways if the libraries are present. Also, I believe yourself run/test packages using ssh X forwarding (correct me if I'm wrong) and because vim itself isn't a GL app, it can run just fine without an Xorg server using X forwarding (Entire X setup not required). Same applies for most of the X apps that don't strictly use GLX - GLX can't be used over the network from what I know.

Fourth, for Qt and Imaging libraries - you do require Xorg Libraries (but libraries only) to build the package, while you might use it even without Xorg Server (again Xorg Server not necessarry). Ie, iirc Imlib has X window system as a dependency (where it just needs for libXpm support which doesn't need X server to generate and read .xpm images) but it can be used in one of the text browsers for displaying images in a fbdev console.

And at last, Wayland. First, you are wrong about beta product - maybe you thought about canonical's mir which isn't even considered alpha. It's fully working solution, same way X was in its early days. It might need to be extended with missing features for prime time use, but there's already gnome-shell wayland port which sort of works. It isn't yet ready for prime time use because it's missing backwards compatibility with X (using XWayland which isn't upstream as of yet). Fedora does ship gnome wayland preview, Enlightenment 18 supports wayland clients while Enlightenment 19 will be a wayland compositor. KDE's KWin5 is being ported to Wayland. I'm sorry but I think Wayland isn't for BLFS since main Wayland reference compositor, Weston requires Systemd. So does Gnome Wayland, so will probably KWin5 and Enlightenment 19.

And to sum up: Seperate build time dependencies from runtime dependencies. You don't need X Window System to build ie GTK+3, but to use an app (run it - runtime) you actually need a working window system solution which is currently X on Linux.

It's up to you to decide, I have no more time for this topic.

comment:16 by Fernando de Oliveira, 10 years ago

Actually, the only thing I wanted to say are in comment 3 and 5: packages required to build and required to run are separate dependencies in many pages. Therefore, consistency would need not the specific required to be replace by "X Window System", but, additional "XWS" runtime requirement, if Igor wants to make the modifications. But it is just an opinion, it could help some users, I myself would leave as is now, but ĸen's sentence is the one I should have written first, as it is a good summary of what I think: "for the bigger question of this ticket, I don't have strong feelings".

comment:17 by Igor Živković, 10 years ago

Owner: changed from blfs-book@… to Igor Živković
Status: newassigned

comment:18 by Igor Živković, 10 years ago

Resolution: fixed
Status: assignedclosed

We will deal with this on a package-by-package basis. One thing I'd like to avoid is having both X libs as a build time and Xorg as a runtime dependency. In such cases I think it's reasonable to just list Xorg as a whole (with a note where needed).

comment:19 by Fernando de Oliveira, 10 years ago

IMHO, it is a good solution. I tried to think how to resolve this, but had never a good conclusion, as you did here. Please, remember Bruce's comment about some packages that may be useful in a server without X but some parts of X as dependency. The note could refer to this special need, while I agree that for most packages, the user really wants the entire X to be installed.

comment:20 by bdubbs@…, 10 years ago

Milestone: current

Milestone current deleted

Note: See TracTickets for help on using tickets.