Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
xfce:building [2012/04/03 13:15] – [Xfce's dependency chain] nick | xfce:building [2022/02/18 14:36] – skunnyk | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Building Xfce ====== | + | ~~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. | 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. | ||
- | ===== Version ===== | + | * **[[building# |
+ | * **[[building# | ||
+ | * **[[building# | ||
+ | * **[[building# | ||
+ | * **[[building# | ||
- | First you need to decide which version of Xfce you want to compile. Version numbers are mostly build like this: 1.2.3 => major.minor.micro. If the minor version is an even number, it is a stable release, odd number are development snapshots. The micro number increases each release. Also keep the major.minor version the same for the core components (some packages don't follow those numbers) else you will most likely get dependency version problems during compiling. | + | ---- |
- | The latest releases available can be found on the [[http:// | + | ===== Choosing your Xfce version ===== |
- | ===== Source ===== | + | 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, |
- | If you've decided which version you want to compile, there are a couple of ways to download | + | The latest releases available can be found on the [[https:// |
- | If your not sure what to choose: easiest | + | ---- |
+ | |||
+ | ===== 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 | ||
==== Released packages ==== | ==== Released packages ==== | ||
- | Xfce packages have two types of releases. Click the links to open the the download | + | Xfce packages have two types of releases: collection releases and individual |
- | * [[http:// | + | * [[https:// |
- | * [[http:// | + | * [[https:// |
==== From the code repository ==== | ==== From the code repository ==== | ||
- | For the latest code you need to make local copies of the GIT repositories, this is the place where developers submit their code. If you decide to use GIT, try to use the same branch for all the packages to avoid dependency version problems. | + | For the latest code, you need to make local copies of the [[https:// |
- | You first need to make clones of each GIT repository, like the command below, where '' | + | <note information> |
- | git clone git://git.xfce.org/$category/ | + | You first need to make clones of each GIT repository, like the command below, where '' |
- | After the repository is cloned you need to choose which branch you want to compile. By default the '' | + | git clone https:// |
- | To switch | + | After the repository is cloned, you will need to choose which branch |
- | | + | To switch to another branch ('' |
- | After this you can update your local copy of the repository with git pull and switch to another branch with '' | + | |
- | ===== Dependencies ===== | + | 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 | ||
==== Build requirements ==== | ==== Build requirements ==== | ||
Line 46: | Line 63: | ||
* [[http:// | * [[http:// | ||
* Gtk+ and Glib headers, in some distributions called the -devel packages | * Gtk+ and Glib headers, in some distributions called the -devel packages | ||
+ | * Xfce 4.14 requires Gtk+ 3.22 and Glib 2.50 | ||
+ | * pkgconfig | ||
+ | * Coffee or tea | ||
+ | |||
+ | |||
+ | For history, here are the versions needed for older xfce releases, which are not supported anymore | ||
+ | * Xfce 4.16 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.10 requires Gtk+ 2.20 and Glib 2.24 | ||
* Xfce 4.8 requires Gtk+ 2.14 and Glib 2.20 | * Xfce 4.8 requires Gtk+ 2.14 and Glib 2.20 | ||
* Xfce 4.6 requires Gtk+ 2.10 and Glib 2.12 | * Xfce 4.6 requires Gtk+ 2.10 and Glib 2.12 | ||
- | * pkgconfig | + | |
- | * Coffee | + | |
==== Xfce's dependency chain ==== | ==== Xfce's dependency chain ==== | ||
Line 59: | Line 83: | ||
* libxfce4util | * libxfce4util | ||
* xfconf | * xfconf | ||
- | * libxfce4ui, garcon, libxfcegui4 ((deprecated since 4.8 but still required for some plugins)) | + | * libxfce4ui |
- | * exo | + | * garcon, |
- | * xfce4-panel | + | |
* thunar | * thunar | ||
- | * xfce4-settings, | + | * xfce4-panel, |
==== Package specific dependencies ==== | ==== Package specific dependencies ==== | ||
Line 73: | Line 96: | ||
| ^ Dependency(-ies) ^ Optional Dependency(-ies) ^ | | ^ Dependency(-ies) ^ Optional Dependency(-ies) ^ | ||
^ xfce4-dev-tools | autoconf, automake, intltool, pkgconfig | | | ^ xfce4-dev-tools | autoconf, automake, intltool, pkgconfig | | | ||
- | ^ libxfce4util | glib ((new in 4.10, was gobject in previous releaes)) | + | ^ libxfce4util | glib2 | | |
- | ^ xfconf | libxfce4util, | + | ^ xfconf | libxfce4util, |
- | ^ libxfce4ui | libxfce4util, | + | ^ libxfce4ui | libxfce4util, |
- | ^ garcon | gio, libxfce4util | + | ^ garcon | gio, libxfce4util | | |
- | ^ libxfcegui4 ((deprecated, | + | ^ exo | libxfce4util, |
- | ^ exo | libxfce4util, | + | |
^ xfce4-panel | libxfce4ui, exo, garcon, libwnck | libstartup-notification | | ^ xfce4-panel | libxfce4ui, exo, garcon, libwnck | libstartup-notification | | ||
- | ^ thunar | libxfce4ui, exo, libpng, gtk+, glib | libexif, | + | ^ thunar | libxfce4ui, exo, libpng, gtk+, glib | libexif, |
- | ^ xfce4-settings | libxfce4ui, exo, xfconf, | + | ^ xfce4-settings | libxfce4ui, exo, xfconf, |
- | ^ xfce4-session | libxfce4ui, perl-xml-parser, | + | ^ xfce4-session | libxfce4ui, perl-xml-parser, |
- | ^ xfwm4 | libxfce4util, | + | ^ xfwm4 | libxfce4util, |
- | ^ xfdesktop | libxfce4ui, xfconf, libwnck, exo ((was optional in 4.8)) | thunarx, garcon, libnotify | | + | ^ xfdesktop | libxfce4ui, xfconf, libwnck, exo garcon |
- | ^ xfce4-appfinder | libxfce4ui, garcon, gio ((new dependency since 4.10)) | | | + | ^ xfce4-appfinder | libxfce4ui, garcon, gio | | |
- | ^ xfce-utils ((deprecated fince Xfce 4.10, file conflicts with other packages)) | libxfce4ui | dbus-glib | | + | ^ 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) | |
- | ^ gtk-xfce-engine-2 | gtk+ | | | + | |
- | ^ tumbler | dbus-glib, gio, gmodule, gdk-pixbuf | freetype-config (fonts), jpeg (jpeg thumbnails from exif), libffmpegthumbnailer (video), gstreamer-0.10 (video), poppler-glib (pdf), libgsf (odf), libopenraw-gnome (various raw images) | | + | |
- | ===== Building ===== | + | |
+ | [[|Back To Top]] | ||
+ | ---- | ||
+ | |||
+ | ===== Building the packages ===== | ||
==== Installation location and variables ==== | ==== Installation location and variables ==== | ||
Line 102: | Line 125: | ||
export CFLAGS=" | export CFLAGS=" | ||
+ | |||
+ | If you want a debugging environment, | ||
+ | |||
+ | export CFLAGS="" | ||
| | ||
==== Compiling and installing ==== | ==== Compiling and installing ==== | ||
- | Next step is compiling the various packages following the dependency chain above. If you have downloaded the tarballs, you need to unpack them before going on. Inside each package directory you should run the following command: | + | 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 | ./configure --prefix=${PREFIX} && make && make install | ||
Line 111: | Line 138: | ||
To build from GIT you need to install the xfce4-dev-tools package first, all other packages should be installed with this command: | 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 // | ||
- | Specific configure options for each package can be shown with '' | + | ? 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 | ||
- | ===== Help ===== | + | [[|Back To Top]] |
+ | ---- | ||
+ | ===== Finding additional | ||
- | Hopefully everything went fine after reading this guide. If you still have problems or questions you can ask on the [[http:// | + | Hopefully everything went fine after reading this guide. If you still have problems or questions you can ask on the [[https://www.xfce.org/ |
Have fun building Xfce! | Have fun building Xfce! | ||
+ | [[|Back To Top]] | ||
+ | ---- | ||
+ | [[: |