Xfce Wiki

Sub domains
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
xfce:building [2013/03/15 04:27]
kevinbowen [Source] Improved grammar
xfce:building [2018/01/03 18:37] (current)
skunnyk [Build requirements]
Line 17: Line 17:
 ===== Released packages ===== ===== Released packages =====
  
-Xfce packages have two types of releases. Click the links to open the the download locations.+Xfce packages have two types of releases. Click the links, below, ​to open the the download locations.
  
-  * [[http://​archive.xfce.org/​xfce/​|Collection releases of the core modules]]\\ From time to time a new collection release ​if Xfce is made. A collection release consists of a number of individual tarballs and a fat-tarball that contains all the individual tarballs.\\ The collection releases always ​contain ​the correct versions to build the other packages in the release. If you want the latest version of each package, you can start with a collection release and then look for individual bug fix releases, explained in the item below. ​+  * [[http://​archive.xfce.org/​xfce/​|Collection releases of the core modules]]\\ From time to time a new collection release ​of Xfce is made. A collection release consists of a number of individual tarballs and a fat-tarball that contains all of the individual tarballs.\\ The collection releases always ​contains ​the correct versions ​needed ​to build the other packages in the release. If you want the latest version of each package, you can start with a collection release and then look for individual bug fix releases, explained in the item below. ​
   * [[http://​archive.xfce.org/​src/​xfce/​|Individual releases]]\\ Each package in Xfce is allowed to make development and stable releases at any time, see the [[http://​xfce.org/​about/​releasemodel|release model]] documentation for more information. ​   * [[http://​archive.xfce.org/​src/​xfce/​|Individual releases]]\\ Each package in Xfce is allowed to make development and stable releases at any time, see the [[http://​xfce.org/​about/​releasemodel|release model]] documentation for more information. ​
  
 ===== 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 codeyou need to make local copies of the [[http://​git.xfce.org/​|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.
  
-You first need to make clones of each GIT repository, like the command below, where ''​$category''​ is for example ''​xfce''​ and ''​$module''​ ''​xfce4-panel''​. If you click on a module in the [[http://​git.xfce.org/​xfce|online repository]] list the clone uri is shown at the bottom of the page.+You first need to make clones of each GIT repository, like the command below, where ''​$category''​ is for example ''​xfce''​ and ''​$module''​ ''​xfce4-panel''​. If you click on a module in the [[http://​git.xfce.org/​xfce|online repository]] listthe clone uri is shown at the bottom of the page.
  
   git clone git://​git.xfce.org/​$category/​$module   git clone git://​git.xfce.org/​$category/​$module
  
-After the repository is cloned you need to choose which branch you want to compile. By default the ''​master''​ branch is selected, but there are also branches for stable releases like ''​xfce-4.8''​. The stable branches contain the latest bug fixes without any major new feature, the master branch is the development version for the next release of Xfce. Both should not be used in a production environment.+After the repository is clonedyou will need to choose which branch you want to compile. By defaultthe ''​master''​ branch is selected, but there are also branches for stable releases like ''​xfce-4.10''​. The stable branches contain the latest bug fixes without any major new features, the master branch is the development version for the next release of Xfce. Both should not be used in a production environment.
  
-To switch to another branch (''​git branch -a''​ lists all available branches) run the following command inside the cloned directory to switch to, for example, the ''​xfce-4.8''​ branch:+To switch to another branch (''​git branch -a''​ lists all available branches) run the following command inside the cloned directory to switch to, for example, the ''​xfce-4.10''​ branch:
  
-  git checkout --track origin/​xfce-4.+  git checkout --track origin/​xfce-4.10
- +
-After this you can update your local copy of the repository with git pull and switch to another branch with ''​git checkout $branchname''​. Read the [[http://​git-scm.com/​documentation|GIT manuals]] for more information about using GIT.+
  
 +After this, you can update your local copy of the repository with git pull and switch to another branch with ''​git checkout $branchname''​. Read the [[http://​git-scm.com/​documentation|GIT manuals]] for more information about using GIT.
 ====== Dependencies ====== ====== Dependencies ======
  
Line 46: Line 45:
   * [[http://​en.wikipedia.org/​wiki/​GNU_toolchain|A working GNU toolchain]]   * [[http://​en.wikipedia.org/​wiki/​GNU_toolchain|A working GNU toolchain]]
   * 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.42
 +    * Xfce 4.12 requires Gtk+ 2.24 and Glib 2.30
     * 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
Line 86: Line 87:
 ^ xfdesktop | libxfce4ui, xfconf, libwnck, exo ((was optional in 4.8)) | thunarx, garcon, libnotify | ^ xfdesktop | libxfce4ui, xfconf, libwnck, exo ((was optional in 4.8)) | thunarx, garcon, libnotify |
 ^ xfce4-appfinder | libxfce4ui, garcon, gio ((new dependency since 4.10)) | | ^ xfce4-appfinder | libxfce4ui, garcon, gio ((new dependency since 4.10)) | |
-^ xfce-utils ((deprecated fince Xfce 4.10, file conflicts with other packages)) | libxfce4ui | dbus-glib |+<del>xfce-utils</​del> ​((deprecated fince Xfce 4.10, file conflicts with other packages)) | libxfce4ui | dbus-glib |
 ^ gtk-xfce-engine-2 | gtk+ | | ^ 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) | ^ 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) |
Line 103: Line 104:
  
   export CFLAGS="​-O2 -pipe"   export CFLAGS="​-O2 -pipe"
-  ​+  
 +If you want a debugging environment,​ unset the CFLAGS and use ''​%%--enable-debug%%'',​ see below for the different debug levels. 
 + 
 +  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 114: Line 118:
   ./​autogen.sh --prefix=${PREFIX} && make && make install   ./​autogen.sh --prefix=${PREFIX} && make && make install
  
-Specific configure options for each package can be shown with ''​%%./​configure --help%%''​. Note that most packages benefit ​speed if you pass the configure option ''​%%--disable-debug%%'', ​however ​if you want to provide backtraces or test new code, no ''​$CFLAGS'',​ no binary stripping and ''​%%--enable-debug=full%%''​ are recommended. Please note that ''​%%--disable-debug%%''​ is not available for xfce4-dev-tools.+Specific configure options for each package can be shown with ''​%%./​configure --help%%''​. Note that most packages ​will see a performance ​benefit if passed ​the configure option ''​%%--disable-debug%%''​.  
 + 
 +However, if you want to provide backtraces or test new code, no ''​$CFLAGS'',​ no binary stripping and ''​%%--enable-debug=full%%''​ are recommended. Please note that ''​%%--disable-debug%%''​ is not available for xfce4-dev-tools.
  
 <​note>​When reusing the ''​%%./​configure%%''​ script while building from GIT remember to pass the flag ''​%%--enable-maintainer-mode%%''​.</​note>​ <​note>​When reusing the ''​%%./​configure%%''​ script while building from GIT remember to pass the flag ''​%%--enable-maintainer-mode%%''​.</​note>​
  
-If you install the package in a public prefix, for example ''/​usr''​ or ''/​usr/​local'',​ you need to run ''​make install'' ​in sudo. This way you will be asked for the system administrator password and have write permissions in those locations.+If you install the package in a public prefix, for example ''/​usr''​ or ''/​usr/​local'',​ you will need to run ''​make install'' ​using sudo. This wayyou will be asked for the system administrator password and will have write permissions ​to install ​in those locations.
  
   sudo make install   sudo make install
 +
 +==== Debug Levels ====
 +
 +Most Xfce modules use the m4 macro //​XDT_FEATURE_DEBUG//​ to manage the debug compiler levels. If so there are a number of options possible for ''​%%--enable-debug=%%''​
 +
 +? 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 ''​%%--disable-debug%%''​. No additional compiler options are added, but checks in Glib are not disabled. This is the recommended level for users and distributions. ​
 +? yes
 +! A number of ''​$CFLAGS''​ are set to check the code for different errors. During configure you'll see all the options are tested to avoid binaries that do not work.
 +? full
 +! Same as the level above, including ''​-Werror''​ so the compilers aborts during compiler errors. The compiler will also generate binaries with debug information suitable for [[:​contribute:​bugs:​|backtraces]] and memory checks. This is the recommended level for developers or users who want to report bugs.
  
 ====== Help ====== ====== Help ======