Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
xfce:building [2024/11/23 03:27] – Update build dependency versions kevinbowen | xfce:building [2024/12/04 06:35] (current) – kevinbowen | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~NOTOC~~ | ||
- | {{ : | ||
- | ====== Building Xfce from source ====== | ||
- | |||
- | To compile a complete Xfce desktop from source requires some information about the dependency chain and the various configure options available in each module. This page will describe this in detail, so you can compile your own Xfce desktop; both system wide as well as in your $HOME directory. | ||
- | |||
- | * **[[building# | ||
- | * **[[building# | ||
- | * **[[building# | ||
- | * **[[building# | ||
- | * **[[building# | ||
- | |||
- | ---- | ||
- | |||
- | ===== Choosing your Xfce version ===== | ||
- | |||
- | First you will need to decide on which version of Xfce that you want to compile. Xfce version numbers are constructed like this: 1.2.3 => major.minor.micro. If the minor version is an even number, this means that it is a stable release. An odd numbered minor version indicate a development, | ||
- | |||
- | The latest releases available can be found on the [[https:// | ||
- | |||
- | ---- | ||
- | |||
- | ===== Obtaining the Xfce source code ===== | ||
- | |||
- | Once you have decided which version that you want to compile, there are a couple of ways to download the source code. You can either choose to build official released packages, or clone the source repositories. Choosing the released packages is the recommended option. The source repositories could possibly be broken and are not generally suitable for production environments. However, they always contain the latest features, bug fixes and translations. | ||
- | |||
- | If you are not sure which to choose, it is easiest to begin with the latest stable fat-tarball of a collection release. | ||
- | |||
- | ==== Released packages ==== | ||
- | |||
- | Xfce packages have two types of releases: collection releases and individual releases. Click the links below to open the relevant download location. | ||
- | |||
- | * [[https:// | ||
- | * [[https:// | ||
- | |||
- | ==== From the code repository ==== | ||
- | |||
- | For the latest code, you need to make local copies of the [[https:// | ||
- | |||
- | <note information> | ||
- | |||
- | You first need to make clones of each GIT repository, like the command below, where '' | ||
- | |||
- | git clone https:// | ||
- | |||
- | After the repository is cloned, you will need to choose which branch you want to compile. By default, the '' | ||
- | |||
- | To switch to another branch ('' | ||
- | |||
- | git checkout --track origin/ | ||
- | |||
- | After this, you can update your local copy of the repository with git pull and switch to another branch with '' | ||
- | |||
- | [[|Back To Top]] | ||
- | ---- | ||
- | |||
- | ===== Xfce Dependencies explained ===== | ||
- | |||
- | ==== Build requirements ==== | ||
- | |||
- | Before you can start compiling, you need a couple of packages that are required to compile Xfce. Use your distributions package manager to install those packages. Additional packages are required too for some modules, but we'll get to that later. | ||
- | |||
- | * [[http:// | ||
- | * Gtk+ and Glib headers, in some distributions called the -devel packages | ||
- | * Xfce 4.18 requires Gtk+ 3.24 and Glib 2.66 (See also: [[https:// | ||
- | * pkgconfig | ||
- | * Coffee or tea | ||
- | |||
- | |||
- | For history, here are the versions needed for older Xfce releases: | ||
- | * Xfce 4.16 requires Gtk+ 3.22 and Glib 2.50 | ||
- | * Xfce 4.14 requires Gtk+ 3.22 and Glib 2.42 | ||
- | * Xfce 4.12 requires Gtk+ 2.24 and Glib | ||
- | * Xfce 4.10 requires Gtk+ 2.20 and Glib 2.24 | ||
- | * Xfce 4.8 requires Gtk+ 2.14 and Glib 2.20 | ||
- | * Xfce 4.6 requires Gtk+ 2.10 and Glib 2.12 | ||
- | |||
- | |||
- | ==== Xfce's dependency chain ==== | ||
- | |||
- | The Xfce packages need to be built in a specific order. If you don't follow this, compile options might not be available or the configure stage will abort because of missing dependencies. | ||
- | |||
- | * xfce4-dev-tools (only required if you build from GIT) | ||
- | * libxfce4util | ||
- | * xfconf | ||
- | * libxfce4ui | ||
- | * garcon, exo | ||
- | * thunar | ||
- | * xfce4-panel, | ||
- | |||
- | ==== Package specific dependencies ==== | ||
- | |||
- | Some core packages in Xfce have additional or optional dependencies, | ||
- | |||
- | <note tip>Note that some of the package-names may vary between distributions.</ | ||
- | |||
- | | ^ Dependency(-ies) ^ Optional Dependency(-ies) ^ | ||
- | ^ xfce4-dev-tools | autoconf, automake, intltool, pkgconfig | | | ||
- | ^ libxfce4util | glib2 | | | ||
- | ^ xfconf | libxfce4util, | ||
- | ^ libxfce4ui | libxfce4util, | ||
- | ^ garcon | gio, libxfce4util | | | ||
- | ^ exo | libxfce4util, | ||
- | ^ xfce4-panel | libxfce4ui, exo, garcon, libwnck | libstartup-notification | | ||
- | ^ thunar | libxfce4ui, exo, libpng, gtk+, glib | libexif, gdbus, libnotify, libstartup-notification, | ||
- | ^ xfce4-settings | libxfce4ui, exo, xfconf, gdbus, libXi, libXrandr | libXcursor, libnotify | | ||
- | ^ xfce4-session | libxfce4ui, perl-xml-parser, | ||
- | ^ xfwm4 | libxfce4util, | ||
- | ^ xfdesktop | libxfce4ui, xfconf, libwnck, exo garcon | thunarx, garcon, libnotify | | ||
- | ^ xfce4-appfinder | libxfce4ui, garcon, gio | | | ||
- | ^ tumbler | dbus-glib, gio, gmodule, gdk-pixbuf | freetype-config (fonts), jpeg (jpeg thumbnails from exif), libffmpegthumbnailer (video), gstreamer-1.0 (video), poppler-glib (pdf), libgsf (odf), libopenraw-gnome (various raw images) | | ||
- | |||
- | [[|Back To Top]] | ||
- | ---- | ||
- | |||
- | ===== Building the packages ===== | ||
- | ==== Installation location and variables ==== | ||
- | |||
- | Now it is finally time to start compiling the Xfce desktop. Last remaining thing is to choose an installation location. Possible examples are ''/ | ||
- | |||
- | You need to make sure the '' | ||
- | |||
- | export PKG_CONFIG_PATH=" | ||
- | |||
- | You can also set some optimization flags for the compiler. This may speed up Xfce, but can also make debugging impossible on some systems. Even worse, this can also cause gcc to generate broken code, so be careful with this. The line below should be safe for most system. | ||
- | |||
- | export CFLAGS=" | ||
- | |||
- | If you want a debugging environment, | ||
- | |||
- | export CFLAGS="" | ||
- | | ||
- | ==== Compiling and installing ==== | ||
- | |||
- | Next step is compiling the various packages following the dependency chain above. If you have downloaded the tarballs, you will need to unpack them before going on. Inside each package directory you should run the following command: | ||
- | |||
- | ./configure --prefix=${PREFIX} && make && make install | ||
- | |||
- | To build from GIT you need to install the xfce4-dev-tools package first, all other packages should be installed with this command: | ||
- | |||
- | ./ | ||
- | |||
- | Specific configure options for each package can be shown with '' | ||
- | |||
- | However, if you want to provide backtraces or test new code, no '' | ||
- | |||
- | < | ||
- | |||
- | If you install the package in a public prefix, for example ''/ | ||
- | |||
- | sudo make install | ||
- | |||
- | ==== Understanding Debug levels ==== | ||
- | |||
- | Most Xfce modules use the m4 macro // | ||
- | |||
- | ? no | ||
- | ! Cast checks and asserts in the Glib macros are disabled, this might be a tad faster, but it can results in segfaults and unexpected crashes. | ||
- | ? minimum | ||
- | ! This is the same as '' | ||
- | ? yes | ||
- | ! A number of '' | ||
- | ? full | ||
- | ! Same as the level above, including '' | ||
- | |||
- | [[|Back To Top]] | ||
- | ---- | ||
- | ===== Finding additional Help ===== | ||
- | |||
- | Hopefully everything went fine after reading this guide. If you still have problems or questions you can ask on the [[https:// | ||
- | |||
- | Have fun building Xfce! | ||
- | |||
~~NOTOC~~ | ~~NOTOC~~ | ||
{{ : | {{ : | ||
Line 354: | Line 181: | ||
[[|Back To Top]] | [[|Back To Top]] | ||
---- | ---- | ||
- | + | [[: | |
- | [[: | + |