Difference between pages "Portage Tree" and "News:New OpenGL management in Funtoo"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
 
(explanation of the new system)
 
Line 1: Line 1:
This page describes the Funtoo Linux distributed Portage tree, which contains all the ebuilds of the Funtoo Linux distribution.  
{{News
|Summary=Funtoo is switching to an improved system for managing multiple OpenGL providers (Mesa/Xorg, AMD and nVidia). The update may involve blockers and file collisions.
|News Format=Extended
|News Category=Packages
|Author=Mgorny
|Publication Status=Draft
|Publication Date=2015/02/28
}}
== New OpenGL management ==
=== System principles ===
The new OpenGL management design assumes that the reference OpenGL implementation (mesa/Xorg) is to be used to build packages. After switching to the new system, all packages will use the mesa/Xorg headers and link to the mesa/Xorg libraries. This improves portability of software built on Funtoo and solves some of the build failures when non-standard OpenGL provider was enabled.


== Community-Extensible and Distributed ==
The third-party OpenGL libraries and modules provided by proprietary driver vendors can be enabled for run-time program use. They will not affect how the program is built. However, they will be loaded by the dynamic loader when starting executables. The Xorg server will also load the modules provided by blob driver vendor if appropriate.


Daniel Robbins has recently added the ability for the Portage tree to be extended and improved by the community. This allows Funtoo Linux users to contribute ebuilds of interest very easily, by simply committing their ebuilds to their own git-based portage repository. Your updated ebuilds are then auto-merged into the mainline Funtoo Portage tree every 12 hours. If you are interested in contributing to the Funtoo Linux Portage tree, please post an email to the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list] describing your overlay and its contents and we will consider the request.
=== Implementation ===
The reference implementation (mesa/Xorg) packages install headers and libraries into standard system locations (/usr/include, /usr/lib*). The compiler and linker finds them using the usual rules and uses them.


== Mini-Manifest Tree ==
The third-party OpenGL vendors install libraries and server extension modules into vendor-named subdirectories of /usr/lib*/opengl. Those files are not used directly.


Funtoo Linux provides two Portage tree repositories, available at the following location:
{{Package|app-admin/eselect-opengl}} is used to select OpenGL implementation used at run-time. The choice of implementation is controlled via dynamic linker configuration (ld.so.conf) and Xorg server configuration. If the reference implementation is selected, the eselect module outputs null configuration that causes the linker and server to use the standard paths. If an another implementation is selected, the configuration prepends /usr/lib*/opengl paths to linker and server configuration, causing them to prefer the third-party libraries over reference.
 
{{NewsFooter}}
* http://github.com/funtoo/ports-2012
 
The first tree is a full Portage tree with full Manifests and ChangeLogs, and includes branches for Funtoo Linux as well as Gentoo Linux. The second tree is a minimized tree that contains only the unified Funtoo Linux Portage tree, all the ebuilds in the first tree, but contains "mini" Manifests (that only contain distfile digests) and has ChangeLogs removed. The first tree is used by Funtoo Linux internallly while the second tree is intended to be used by end-users, since it is much smaller.
 
== How the Tree is Built ==
 
New versions of the Funtoo Linux Portage tree are generated every 12 hours using a special merge script that combines the Gentoo Portage tree with the Funtoo Linux funtoo-overlay as well as other 3rd-party overlays. The overlays currently being merged are:
 
* http://github.com/funtoo/portage (gentoo.org branch)
* http://github.com/funtoo/funtoo-overlay (all ebuilds replacing those in Gentoo, including some eclass and profile patches)
* http://github.com/slashbeast/foo-overlay (all ebuilds being added, with two ebuilds replacing an upstream Gentoo version)
* http://github.com/adessemond/bar-overlay (all ebuilds replacing those in Gentoo)
* http://github.com/funtoo/flora [[Flora]] (all ebuilds being added, with no ebuilds replacing upstream Gentoo versions)
 
This list is likely to expand in the future.
 
The script used to merge the Portage overlays can be viewed here:
 
https://github.com/funtoo/funtoo-overlay/blob/master/funtoo/scripts/merge.py
 
If you are interested in contributing ebuilds to Funtoo Linux, please contact us on the [http://groups.google.com/group/funtoo-dev funtoo-dev mailing list].
 
[[Category:Portage]]
[[Category:Funtoo features]]

Revision as of 18:53, February 28, 2015

New OpenGL management in Funtoo

Funtoo is switching to an improved system for managing multiple OpenGL providers (Mesa/Xorg, AMD and nVidia). The update may involve blockers and file collisions.

By Mgorny / February 28, 2015

New OpenGL management

System principles

The new OpenGL management design assumes that the reference OpenGL implementation (mesa/Xorg) is to be used to build packages. After switching to the new system, all packages will use the mesa/Xorg headers and link to the mesa/Xorg libraries. This improves portability of software built on Funtoo and solves some of the build failures when non-standard OpenGL provider was enabled.

The third-party OpenGL libraries and modules provided by proprietary driver vendors can be enabled for run-time program use. They will not affect how the program is built. However, they will be loaded by the dynamic loader when starting executables. The Xorg server will also load the modules provided by blob driver vendor if appropriate.

Implementation

The reference implementation (mesa/Xorg) packages install headers and libraries into standard system locations (/usr/include, /usr/lib*). The compiler and linker finds them using the usual rules and uses them.

The third-party OpenGL vendors install libraries and server extension modules into vendor-named subdirectories of /usr/lib*/opengl. Those files are not used directly.

app-admin/eselect-opengl is used to select OpenGL implementation used at run-time. The choice of implementation is controlled via dynamic linker configuration (ld.so.conf) and Xorg server configuration. If the reference implementation is selected, the eselect module outputs null configuration that causes the linker and server to use the standard paths. If an another implementation is selected, the configuration prepends /usr/lib*/opengl paths to linker and server configuration, causing them to prefer the third-party libraries over reference.