Instructions to Package Enlightenment

Introduction

This page describes the general aspects of Enlightenment and its foundation libraries for packagers. It is not distribution specific, these should go into specific pages, linked at the bottom of this one.

Important Notice for Upcoming DR17 + EFL 1.0

We're about to do a release that will be a major milestone. It is the release that covers our 17th version of window manager and the first version of new generation libraries. It will be our first stable release after 10 years.



That said, level of expectation is high and we need to cope with that. We're doing so by reducing the noise and focusing on what matters. That means:

  • No third party modules;
  • No third party themes;
  • No applications;
  • No secondary or lesser important libraries;
  • No language bindings.
Please hold on these items publicity, recommendation and if possible even the distribution of binaries. The reasoning is simple:
  • We don't want to introduce stability problems and bugs out of our focus;
  • We keep the look and feel unique, we really need a visual identity;
  • We better focus on the single application we work most, that drove the whole thing: DR17.
Of course users are free to go and adventure themselves into these, but it is not recommended by us at this moment.



Please stick with the following package list and follow recommendations whenever applicable. Please discuss any suggestions or questions in our development mail list. The official release is:

  • Eina
  • Eet
  • Evas
  • Ecore
  • Embryo
  • Edje
  • Efreet
  • E_DBus
  • Elementary
  • Enlightenment DR17

PS: note that some other libraries may be listed in this wiki page, but the above list is what should be released.

Libraries

Most libraries are highly customizable by means of --enable-FEATURE or --with-FEATURE, with most dependencies being handled by pkg-config. Our software use autotools (autoconf/automake), thus exact dependencies can be found in configure.ac files and associated m4/*.m4 (do not forget to look there, as some macros are used to reduce significantly the code in configure.ac, like in ecore and evas!).

Important: being highly customizable and being able to run on a variety of systems do not mean you should enable all features and systems! Some systems are targeted at a very small audience and may bring extra overhead (space, memory, dynamic linkage...) for no good to majority. Try to weight options and prioritize your main public.

For instance, Ecore_Evas does not dynamic loads plugins for different systems, so if you compile it with X11, DirectFB, FrameBuffer? and SDL, all these libraries must be present when the library is used, their symbols will be resolved, doing no good if your target audience will likely just use X11. In such case we recommend you to ship with different packages that collide and replace each other, for example libecore-evas-x11only and libecore-evas-generic, with the former being used on systems that do not require the other alternatives. The same applies to Evas, that do have dynamic loaders for its engines and image loaders, but these add a good overhead that could be avoided if such modules were compiled in.

The following subsections will highlight some specific options for core libraries.

Eina

description
Enlightenment's data types library (List, hash, etc) in C.
url
 http://trac.enlightenment.org/e/wiki/Eina
online docs
 http://docs.enlightenment.org/auto/eina/
source
 http://svn.enlightenment.org/svn/e/trunk/eina/
license
LGPL-2.1
categories
system, development, programming, c
dependencies
options
  • --enable-cpu-mmx --enable-cpu-sse --enable-cpu-sse2 --enable-cpu-altivec: cpu specific extensions and report support.
  • --enable-pthread: enable support for threads (also need to be turned on during runtime)
  • --enable-default-mempool: do not use an actual memory pool allocator, go directly to malloc() (uses mempool-pass-through)
  • --enable-mempool-*: see specific documentation at  Eina Docs
  • --enable-amalgamation: concatenate all source files into one before compiling so compiler can optimize even more. (recommended)
  • --disable-assert: remove asserts and error checking conditions (minimal gains)
  • --enable-magic-debug: check if given pointers are the correct type using random identifiers attached to its data, avoiding some crashes (recommended)
  • --enable-safety-checks: checks for NULL pointers and other incorrect values where they should not be used (recommended)
  • --with-internal-maximum-log-level=2: compile out Eina's own debugging messages (minimal gains)
  • --enable-tests: will enable compiling and testing using make check
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Eet

description
Enlightenment's file chunk reading/writing library.
url
 http://trac.enlightenment.org/e/wiki/Eet
online docs
 http://docs.enlightenment.org/auto/eet/
source
 http://svn.enlightenment.org/svn/e/trunk/eet/
license
BSD
categories
system, development, programming, c, archiving
dependencies
options
  • --enable-pthread: enable support for using Eet from different threads (required by Evas's async image loader)
  • --enable-cipher --enable-signature: supports using either gnutls or openssl to sign + crypt Eet entries
  • --enable-amalgamation: concatenate all source files into one before compiling so compiler can optimize even more. (recommended)
  • --disable-assert: remove asserts and error checking conditions (minimal gains)
  • --enable-tests: will enable compiling and testing using make check
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Evas

description
hardware-accelerated retained canvas API
url
 http://trac.enlightenment.org/e/wiki/Evas
online docs
 http://docs.enlightenment.org/auto/evas/
source
 http://svn.enlightenment.org/svn/e/trunk/evas/
license
BSD
categories
system, development, programming, c, canvas, drawing, rendering
dependencies
options
  • --enable-pthreads: enable internal thread support (Evas itself is not thread safe!)
  • --enable-async-preload: enable evas to load images in different threads if requested by application developer (recommended)
  • --enable-async-events: enable evas to return a file descriptor to be polled by main loop in order to let Evas report asynchronous events from its threads (required by async-preload) (recommended)
  • --enable-pipe-render: pipe rendering using threads to paint non-overlapping regions
  • --enable-cpu-mmx --enable-cpu-sse --enable-cpu-sse2 --enable-cpu-altivec: cpu specific extensions for faster rendering of software fallbacks (recommended)
  • --enable-cpu-c: enable C fallbacks whenever cpu specific extensions are unknown for software operations (recommended)
  • --enable-scale-sample: enable faster scaling using samples (non-smooth, uglier) (recommended)
  • --enable-scale-smooth: enable slower scaling using average/smoothing (recommended)
  • --enable-convert-yuv: supports YUV surfaces, converting YUV to RGB on the fly (also with cpu/engine specifics) (recommended)
  • --enable-small-dither-mask: use a smaller (4x4, default is 128x128) dither mask when converting from 32 to other pixel depths (minor speedups, trades quality)
  • --enable-line-dither-mask: use an even smaller (line) dither mask when converting from 32 to other pixel depths (reasonable speedups, trades quality)
  • --enable-no-dither-mask: don't do dithering when converting from 32 to other pixel depths (major speedups, awful quality)
  • --enable-evas-cserve: enable sharing of image pixels among different processes using cache server, saving memory. needs to be explicitly enabled using environment variables.
  • --enable-fontconfig: find and load fonts using fontconfig facilities (recommended)
  • --enable-fribidi: bi-directional text support (hebrew, arabic) using fribidi
  • --enable-convert-*: enable on-the-fly converters to different output color depths and rotations (all recommended)
  • --enable-image-loader-*: enable specific image loaders (and savers if exists). One may also use =static to compile these built-in the libevas binary, saving on runtime.
  • --enable-(software|xrender|gl)*: enable specific engines. One may also use =static to compile these built-in the libevas binary, saving on runtime.
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Ecore

description
Enlightenment's core event abstraction layer and OS abstraction layer
url
 http://trac.enlightenment.org/e/wiki/Ecore
online docs
 http://docs.enlightenment.org/auto/ecore/
source
 http://svn.enlightenment.org/svn/e/trunk/ecore/
license
BSD
categories
system, development, programming, c, main loop, input/output
dependencies
options
  • --enable-pthread: enable support for ecore_thread_run() helper (Ecore itself is not thread-safe!) (recommended)
  • --enable-ecore-con: compile connection/communication/download support (recommended)
  • --enable-curl: enable downloads using libcurl for ecore-con (recommended)
  • --enable-gnutls: enable ssl communication for ecore-con using gnutls (recommended)
  • --enable-openssl: enable ssl communication for ecore-con using openssl (recommended)
  • --enable-ecore-file: compile filesystem helpers (recommended)
  • --enable-inotify: enable Linux inotify support for ecore-file, monitoring files and directories for changes (recommended)
  • --enable-glib: enable runtime enable of glib-ecore main loop integration, allowing !GMainLoop dependent libraries to be used with ecore (recommended)
  • --enable-xim: enable XIM (X Input Methods) (recommended)
  • --enable-ecore-imf: enable Input Method Framework (recommended)
  • --enable-ecore-input: enable input support (recommended)
  • --enable-ecore-fb: enable framebuffer (/dev/fb*) access
  • --enable-tslib: enable touchscreen input for framebuffer (ecore-fb)
  • --enable-sdl: enable i/o using libsdl
  • --enable-directfb: enable i/o using directfb
  • --enable-ecore-x: enable i/o using X11 (recommended)
  • --enable-ecore-x-xcb:use xcb instead of xlib (not recommended, still immature)
  • --enable-ecore-x-*: select X11 features and submodules, like screensaver, xprint, xinerama, xrandr... (all recommended)
  • --enable-ecore-evas: enable glue of different i/o with Evas, creating windows with Evas canvas, feeding events automatically
  • --enable-ecore-evas-*: select modules to be glued. Depend on module to be compiled in Evas and enabled in ecore. Watch out since these will not be dynamically loaded, but compiled in, adding runtime overhead even when not used.
  • --with-internal-maximum-log-level=2: compile out Ecore's own debugging messages (minimal gains)
  • --enable-tests: will enable compiling and testing using make check
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Embryo

description
Enlightenment's virtual machine engine and bytecode compiler used in Edje.
url
 http://trac.enlightenment.org/e/wiki/Embryo
online docs
 http://docs.enlightenment.org/auto/embryo/
source
 http://svn.enlightenment.org/svn/e/trunk/embryo/
license
BSD
categories
system, development, programming, c, virtual machine, compiler
dependencies
none
options
none
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Edje

description
Enlightenment's graphical layout and animation library.
url
 http://trac.enlightenment.org/e/wiki/Edje
online docs
 http://docs.enlightenment.org/auto/edje/
source
 http://svn.enlightenment.org/svn/e/trunk/edje/
license
BSD
categories
system, development, programming, c, theme engine, layout engine
dependencies
  • default options: lua5 ( http://www.lua.org/), eina, eet, embryo, ecore and evas (with jpeg, eet and png loaders)
options
  • --enable-amalgamation: concatenate all source files into one before compiling so compiler can optimize even more. (recommended)
  • --enable-fixed-point: don't use floating point, but fixed point arithmetic when required (recommended for architectures without FPU)
  • --enable-edje-calc-cache: enable cache of edje calculations, might bring great speedups, but bugs may appear more often (experimental, recommended for slower architectures)
  • --enable-edje-program-cache: enable cache of program matching, might bring great speedups with slightly more memory used, but bugs may appear more often (experimental, recommended for slower architectures)
  • --disable-edje-(cc|decc|recc): disable generation of compiler, decompiler and recompiler binaries.
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Efreet

description
Enlightenment's library for handling of freedesktop.org specs (desktop/icon/theme/etc...)
url
 http://trac.enlightenment.org/e/wiki/Efreet
online docs
 http://docs.enlightenment.org/auto/efreet/
source
 http://svn.enlightenment.org/svn/e/trunk/efreet
license
BSD
categories
system, development, programming, c, freedesktop.org, menus
dependencies
  • default options: eina, ecore
options
  • --disable-strict-spec: disable strict specification compliance (recommended, default)
  • --enable-sloppy-spec: enable sloppy specification compliance (recommended, default)
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

E_DBus

description
Enlightenment's (Ecore) integration to DBus
url
 http://trac.enlightenment.org/e/wiki/E_Dbus
online docs
<none>
source
 http://svn.enlightenment.org/svn/e/trunk/e_dbus
license
BSD
categories
system, development, programming, c, dbus, ipc
dependencies
options
  • --enable-ehal: enable libehal to help with access to  HAL services, like mounting filesystem volumes
  • --enable-econnman: enabe libeconnman to help with access to network connection manager  ConnMan
  • --enable-enotify: enable libenotify to communicate with  Notify-OSD and other notification implementations using  Desktop Notification specification
  • --enable-ebluez: enable libebluz to communicate with  BlueZ, the Linux bluetooth stack.
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Emotion

description
Enlightenment's (Ecore/Evas?) audio and video integration.
url
 http://trac.enlightenment.org/e/wiki/Emotion
online docs
 http://docs.enlightenment.org/auto/emotion/
source
 http://svn.enlightenment.org/svn/e/trunk/emotion/
license
BSD
categories
system, development, programming, c, multimedia, video, audio
dependencies
options
  • --enable-xine: enable xine backend (the most correct and supported backend, recommended)
  • --enable-gstreamer: enable gstreamer backend (quite good, but not as supported)
  • --enable-vlc: enable vlc backend (not supported, currently broken)
  • --disable-emotion-test: disable compile of emotion test application (recommended)
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Ethumb

description
Enlightenment's thumbnailing library and dbus service.
url
 http://trac.enlightenment.org/e/wiki/Ethumb
online docs
 http://docs.enlightenment.org/auto/ethumb/
source
 http://svn.enlightenment.org/svn/e/trunk/ethumb/
license
LGPL-3
categories
system, development, programming, c, thumbnailing
dependencies
  • default options: eina, ecore, evas, edje
  • --enable-ethumbd: e_dbus
  • --enable-emotion: emotion
  • --enable-epdf: epdf
options
  • --enable-ethumbd: enable dbus services implemented by ethumbd server and ethumb_client library. (recommended)
  • --enable-emotion: enable video thumbnails using emotion. (recommended)
  • --enable-epdf: enable pdf documents thumbnails using epdf (still immature)
  • --with-internal-maximum-log-level=2: compile out Ethumb's own debugging messages (minimal gains)
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Elementary

description
Enlightenment's basic widget set, based on EFL with focus mobile touch-screen devices.
url
 http://trac.enlightenment.org/e/wiki/Elementary
online docs
 http://docs.enlightenment.org/auto/elementary/
source
 http://svn.enlightenment.org/svn/e/trunk/TMP/st/elementary/
license
LGPL-2.1
categories
system, development, programming, c, widget set, toolkit
dependencies
  • default options: eina, ecore, evas, edje
  • --enable-edbus: e_dbus
  • --enable-efreet: efreet
  • --enable-eweather: eweather
options
  • --enable-edbus: enable integration with dbus using edbus, needs runtime enable as well. (recommended)
  • --enable-efreet: enable integration with freedesktop.org specifications, needs runtime enable as well. (recommended)
  • --enable-eweather: enable weather fetch and display widget (still immature)
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Window Manager

description
Enlightenment DR17 Window Manager and Desktop Shell
url
http://www.enlightenment.org/
online docs
<none>
source
 http://svn.enlightenment.org/svn/e/trunk/e/
license
BSD
categories
window manager, desktop shell
dependencies
options
  • --enable-pam: enable authentication (ie: desklock) using PAM (recommended)
  • --enable-battery: enable battery monitor (recommended)
  • --enable-clock: enable clock (recommended)
  • --enable-comp: enable composite manager with !OpenGL and software engines and shadows. (recommended)
  • --enable-conf_applications: enable configuration of applications in menus and startup (recommended)
  • --enable-conf_borders: enable configuration of window border properties (recommended)
  • --enable-conf_clientlist: enable configuration of the list of existing clients (recommended)
  • --enable-conf_colors: enable configuration of system colors (recommended)
  • --enable-conf_desk: enable configuration of desktops (quantity, name, background, etc) (recommended)
  • --enable-conf_desklock: enable configuration of desklock (desktop lock/protection using password) (recommended)
  • --enable-conf_desks: enable configuration of virtual desktops (recommended)
  • --enable-conf_dialogs: enable configuration of Enlightenment's internal dialogs (basic or advanced, etc) (recommended)
  • --enable-conf_display: enable configuration of display (recommended)
  • --enable-conf_dpms: enable configuration of display power management (recommended)
  • --enable-conf_edgebindings: enable configuration of screen edge bindings (recommended)
  • --enable-conf: enable configuration system (recommended)
  • --enable-conf_engine: enable configuration of Enlightenment's engine (xrender, software) (recommended)
  • --enable-conf_exebuf: enable configuration of application launcher ("run command") exebuf (recommended)
  • --enable-conf_fonts: enable configuration of fonts (recommended)
  • --enable-conf_icon_theme: enable configuration of icon theme (recommended)
  • --enable-conf_imc: enable configuration of input methods (recommended)
  • --enable-conf_interaction: enable configuration of user interaction (thumbnail usage, kinetic scrolling, ...) (recommended)
  • --enable-conf_intl: enable configuration of internationalization (language, locale) (recommended)
  • --enable-conf_keybindings: enable configuration of keyboard bindings (recommended)
  • --enable-conf_menus: enable configuration of menus (recommended)
  • --enable-conf_mime: enable configuration of mime-type associations (recommended)
  • --enable-conf_mousebindings: enable configuration of mouse bindings (recommended)
  • --enable-conf_mouse_cursor: enable configuration of mouse cursor (recommended)
  • --enable-conf_mouse: enable configuration of mouse (left/right and acceleration) (recommended)
  • --enable-conf_paths: enable configuration of extra system paths (recommended)
  • --enable-conf_performance: enable advanced configuration of performance (frames per second, caches, ...) (recommended)
  • --enable-conf_profiles: enable configuration of execution profiles (recommended)
  • --enable-conf_scale: enable configuration of user interface scale (for embedded systems)
  • --enable-conf_screensaver: enable configuration of screensaver timeouts (recommended)
  • --enable-conf_shelves: enable configuration of shelves/panels (recommended)
  • --enable-conf_startup: enable configuration startup splash screen (recommended)
  • --enable-conf_theme: enable configuration of theme in use (recommended)
  • --enable-conf_transitions: enable configuration of wallpaper transitions (startup, desktop changes...) (recommended)
  • --enable-conf_wallpaper2: enable configuration of wallpaper (fancier graphics) (recommended)
  • --enable-conf_wallpaper: enable configuration of wallpaper (recommended)
  • --enable-conf_window_display: enable configuration of window display (initial placement, animations, details while move and resize) (recommended)
  • --enable-conf_window_focus: enable configuration of window focus (sloppy, follows mouse, click to focus) (recommended)
  • --enable-conf_window_manipulation: enable configuration of window manipulation (stacking, moving and resistance) (recommended)
  • --enable-conf_window_remembers: enable configuration of window remembers and locks (recommended)
  • --enable-conf_winlist: enable configuration of window list (for alt-tab) (recommended)
  • --enable-connman: enable connman shelf gadget (recommended)
  • --enable-cpufreq: enable cpu frequency shelf gadget (recommended)
  • --enable-dropshadow: enable simple dropshadow (just on background, but light on memory and cpu, uses/needs no composite manager) (recommended)
  • --enable-everything: enable fancier command runner called "everything", based on !MacOS QuickSilver, browse files, previews pictures, talks to tracker, aspell and calculator (bc) (recommended)
  • --enable-exebuf: enable simple command runner called "exebuf" (recommended)
  • --enable-fileman: enable simple and fast file manager (recommended)
  • --enable-fileman_opinfo: enable file manager operation info (progress report and cancellation) (recommended)
  • --enable-gadman: enable gadget manager (recommended)
  • --enable-ibar: enable ibar, shelf gadget with applications to launch. (recommended)
  • --enable-ibox: enable ibox, shelf gadget with applications iconified/minimized (recommended)
  • --enable-illume2: enable illume2, infrastructure to tune Enlightenment for mobile phones, pda and other embedded systems. (recommended for systems that may run in such form factor)
  • --enable-illume: enable illume, older version (not recommended)
  • --enable-mixer: enable sound volume control/mixer, includes shelf gadget (recommended)
  • --enable-msgbus_lang: enable !DBus extensions (recommended)
  • --enable-pager: enable shelf gadget with pager with desktop overview of open windows (recommended)
  • --enable-start: enable start button shelf gadget (recommended)
  • --enable-syscon: enable system dialog (shutdown, reboot, logout) (recommended)
  • --enable-systray: enable old fashioned system tray (recommended)
  • --enable-temperature: enable temperature shelf gadget (recommended)
  • --enable-winlist: enable windown list (for alt-tab) (recommended)
  • --enable-wizard: enable welcome wizard to do initial setup, choosing basic settings (recommended)
compile flags
  • CFLAGS=-fvisibility=hidden -O2
  • LDFLAGS=-fvisibility=hidden

Applications

No application is recommended so far

Distro Specific

See also Binary packaging with other binary packaging efforts.