[Buildroot] [PATCH v5 04/36] package/efl/libefl: new package
Romain Naour
romain.naour at openwide.fr
Mon Oct 26 21:53:26 UTC 2015
Hi Yann, All,
Le 25/10/2015 14:55, Yann E. MORIN a écrit :
> Romain, All,
>
> On 2015-10-24 23:00 +0200, Romain Naour spake thusly:
>> Add the libefl package which contains an updated version of the following
>> libraries:
>> libecore, libedje, libeet, libfreet, libeina, libeio, libembryo, libthumb
>> and libevas. It also contains eldbus, ephysics, and escape, see [1].
>>
>> For now, the bump to efl 1.15.x is not complete.
>> This allows to build at least a default configuration whithout X11 support
>> or graphics acceleration.
>> This support will be added by a follow up patches in the series.
>>
>> Also, add BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG config option in order to
>> select all recommended packages that allows to build efl-core whithout the
>> extra-long --enable-i-really-know-what-i-am-doing...
>>
>> At the end of the configure script, the summary tab will show that
>> alsa support is allways disabled even if alsa-utils has been build
>> before efl-core package.
>>
>> "Ecore_Audio.....: yes (-alsa +pulseaudio +sndfile)"
>> This is intentional.
>>
>> An initial runtime test has been done under Qemu with a glibc x86 toolchain.
>>
>> An additional runtime test has been done with a uClibc-ng 1.0.5 toolchain
>> patched with [2] in order to add mkstemps() which is used by Eina library.
>> This patch has been upstreamed in uClubc-ng 1.0.6 release.
>>
>> Another test has been done with a musl toolchain by Vicente Bergas (Thanks!)
>>
>> Add a dependency on threads support since clearly efl libraries are
>> not even built without thread support [3].
>>
>> [1] See https://phab.enlightenment.org/phame/live/3/post/efl_1_8/
>> [2] http://mailman.uclibc-ng.org/pipermail/devel/2015-August/000432.html
>> [3] https://git.enlightenment.org/core/efl.git/tree/configure.ac#n5032
>>
>> Signed-off-by: Romain Naour <romain.naour at openwide.fr>
>> Cc: Vicente Bergas <vicencb at gmail.com>
>> ---
>> v4: rename to libefl
>> EFL needs a toolchain with threads support
>> v3: fix same typo again
>> Add a note about multisense support
>> v2: remove glibc only dependency
>> update commit log accordingly
>> fix typo in Config.in (Vicente Bergas)
>>
>> Vicente, can you test this new series and resend your Tested-By tag ? Thanks !
>> ---
>> package/efl/Config.in | 16 +++--
>> package/efl/libefl/Config.in | 65 +++++++++++++++++
>> package/efl/libefl/libefl.mk | 161 +++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 237 insertions(+), 5 deletions(-)
>> create mode 100644 package/efl/libefl/Config.in
>>
>> diff --git a/package/efl/Config.in b/package/efl/Config.in
>> index 7ce5a36..2860cd6 100644
>> --- a/package/efl/Config.in
>> +++ b/package/efl/Config.in
>> @@ -1,8 +1,12 @@
>> menuconfig BR2_PACKAGE_EFL
>> bool "Enlightenment Foundation Libraries"
>> - depends on BR2_USE_WCHAR
>> - # libeina uses madvise(). To revisit when bumping EFL to 1.8
>> - depends on BR2_USE_MMU
>> + depends on BR2_INSTALL_LIBSTDCPP # libefl
>> + depends on BR2_PACKAGE_HAS_UDEV # libefl -> libudev
>> + depends on BR2_TOOLCHAIN_HAS_THREADS # libefl
>> + depends on BR2_USE_MMU # libefl
>> + depends on BR2_USE_WCHAR # libefl
>> + depends on !BR2_STATIC_LIBS # libefl
>> + select BR2_PACKAGE_LIBEFL
>> help
>> Enlightenment Foundation Libraries
>>
>> @@ -13,6 +17,7 @@ if BR2_PACKAGE_EFL
>> source "package/efl/libeina/Config.in"
>> source "package/efl/libecore/Config.in"
>> source "package/efl/libeet/Config.in"
>> +source "package/efl/libefl/Config.in"
>> source "package/efl/libefreet/Config.in"
>> source "package/efl/libeio/Config.in"
>> source "package/efl/libevas/Config.in"
>> @@ -24,5 +29,6 @@ source "package/efl/libedbus/Config.in"
>>
>> endif # BR2_PACKAGE_EFL
>>
>> -comment "EFL needs a toolchain w/ wchar"
>> - depends on !BR2_USE_WCHAR
>> +comment "EFL needs udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
>> + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
>
> Please, split this very long line...
Ok, but...
>
>> + depends on BR2_USE_MMU
>> diff --git a/package/efl/libefl/Config.in b/package/efl/libefl/Config.in
>> new file mode 100644
>> index 0000000..2b758f0
>> --- /dev/null
>> +++ b/package/efl/libefl/Config.in
>> @@ -0,0 +1,65 @@
>> +config BR2_PACKAGE_LIBEFL
>> + bool "libefl"
>> + depends on BR2_INSTALL_LIBSTDCPP
>> + depends on BR2_PACKAGE_HAS_UDEV # libudev
>> + depends on BR2_TOOLCHAIN_HAS_THREADS # untested without threads
>> + depends on BR2_USE_MMU
>> + depends on BR2_USE_WCHAR # use wchar_t
>> + depends on !BR2_STATIC_LIBS # dlfcn.h
>> + select BR2_PACKAGE_DBUS
>> + select BR2_PACKAGE_FREETYPE
>> + select BR2_PACKAGE_JPEG # Emile needs libjpeg
>> + select BR2_PACKAGE_LUA # Evas lua 5.1 or 5.2
>
> You can not select Lua, as it is a provider of the virtual package
> luainterpreter: it is not alowed to select the provider of a virtual
> package, see the manual:
> http://buildroot.org/downloads/manual/manual.html#_notes_on_depending_on_a_specific_provider
>
> If your package really requires a specific provider, then you’ll
> have to make your package depends on this provider; you can not
> select a provider.
>
> You'll have to make libefl (and efl) both depend on BR2_PACKAGE_LUA.
>
> That's unfortunate, but the manual has explanations on why this is so.
...the comments line start to be very long, should I do something like:
comment "EFL needs Lua, udev /dev management and a toolchain w/ C++, dynamic library, threads, wchar"
depends on !BR2_PACKAGE_LUA || !BR2_PACKAGE_HAS_UDEV || !BR2_INSTALL_LIBSTDCPP \
|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR
depends on BR2_USE_MMU
>
>> + help
>> + Enlightenment Foundation Libraries
>> +
>> + https://enlightenment.org
>> +
>> +if BR2_PACKAGE_LIBEFL
>> +
>> +config BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG
>> + bool "Use recommended and tested configurations"
>> + select BR2_PACKAGE_BULLET
>> + select BR2_PACKAGE_FONTCONFIG
>> + select BR2_PACKAGE_GSTREAMER1
>> + select BR2_PACKAGE_GST1_PLUGINS_BASE
>> + select BR2_PACKAGE_LIBFRIBIDI
>> + select BR2_PACKAGE_LIBSNDFILE
>> + select BR2_PACKAGE_PULSEAUDIO
>
> You forgot to propagate P.A.'s dependency on BR2_ARCH_HAS_ATOMICS.
OK
>
>> + select BR2_PACKAGE_UTIL_LINUX
>> + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT
>> + default y
>> + help
>> + Avoid to use untested or not recommended configurations,
>> + otherwise we need to add a very long and obscure option
>> + to start the build.
>
> No need to explain the nitty-gritty implementation details on why this
> is so. Just state something like:
>
> Enable the basic set of recommended features.
>
> Without that, the EFL developpers consider the build to be
> potentially broken and won't provide any support for it.
>
> This turns on the following features:
>
> - util-linux' libmount: Libmount is used heavily inside Eeze for
> support of removable devices etc... and disabling this will hurt
> support for Enlightenment and its filemanager.
>
> - fontconfig: If fontconfig is disabled, this is going to make
> general font searching not work, and only some very direct 'load
> /path/file.ttf' will work alongside some old-school ttf file
> path searching. This is very likely not what you want, so highly
> reconsider turning fontconfig off. Having it off will lead to
> visual problems like missing text in many UI areas etc...
>
> And so on, you get the idea. ;-)
>
> Drop the corresponding comment in the .mk file. It is better to thave
> those comments in the Config.in, so the user can actually see them and
> act accordingly.
Ok, done.
>
> [--SNIP--]
>> diff --git a/package/efl/libefl/libefl.mk b/package/efl/libefl/libefl.mk
>> index 4dca733..781f397 100644
>> --- a/package/efl/libefl/libefl.mk
>> +++ b/package/efl/libefl/libefl.mk
>> @@ -11,6 +11,167 @@ LIBEFL_SITE = http://download.enlightenment.org/rel/libs/efl
>> LIBEFL_LICENSE = BSD-2c, LGPLv2.1+, GPLv2+
>> LIBEFL_LICENSE_FILES = COPYING
>>
>> +LIBEFL_INSTALL_STAGING = YES
>> +
>> +LIBEFL_DEPENDENCIES = host-pkgconf host-libefl dbus freetype jpeg lua udev zlib
>> +
>> +# Configure options:
>> +# --disable-cxx-bindings: disable C++11 bindings.
>> +# --enable-lua-old: disable Elua and remove luajit dependency.
>> +# --with-x11=none: remove dependency on X.org.
>> +LIBEFL_CONF_OPTS = \
>> + --with-edje-cc=$(HOST_DIR)/usr/bin/edje_cc \
>> + --with-eolian-gen=$(HOST_DIR)/usr/bin/eolian_gen \
>> + --disable-cxx-bindings \
>> + --enable-lua-old \
>> + --with-x11=none
>> +
>> +# Disable untested configuration warning.
>> +ifeq ($(BR2_PACKAGE_LIBEFL_RECOMMENDED_CONFIG),)
>> +LIBEFL_CONF_OPTS += --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
>> +endif
>> +
>> +# Libmount is used heavily inside Eeze for support of removable devices etc.
>> +# and disabling this will hurt support for Enlightenment and its filemanager.
>> +ifeq ($(BR2_PACKAGE_UTIL_LINUX_LIBMOUNT),y)
>> +LIBEFL_DEPENDENCIES += util-linux
>> +LIBEFL_CONF_OPTS += --enable-libmount
>> +else
>> +LIBEFL_CONF_OPTS += --disable-libmount
>> +endif
>> +
>> +# If fontconfig is disabled, this is going to make general font
>> +# searching not work, and only some very direct 'load /path/file.ttf'
>> +# will work alongside some old-school ttf file path searching. This
>> +# is very likely not what you want, so highly reconsider turning
>> +# fontconfig off. Having it off will lead to visual problems like
>> +# missing text in many UI areas etc.
>> +ifeq ($(BR2_PACKAGE_FONTCONFIG),y)
>> +LIBEFL_CONF_OPTS += --enable-fontconfig
>> +LIBEFL_DEPENDENCIES += fontconfig
>> +else
>> +LIBEFL_CONF_OPTS += --disable-fontconfig
>> +endif
>> +
>> +# Fribidi is used for handling right-to-left text (like Arabic,
>> +# Hebrew, Farsi, Persian etc.) and is very likely not a feature
>> +# you want to disable unless you know for absolute certain you
>> +# will never encounter and have to display such scripts. Also
>> +# note that we don't test with fribidi disabled so you may also
>> +# trigger code paths with bugs that are never normally used.
>> +ifeq ($(BR2_PACKAGE_LIBFRIBIDI),y)
>> +LIBEFL_CONF_OPTS += --enable-fribidi
>> +LIBEFL_DEPENDENCIES += libfribidi
>> +else
>> +LIBEFL_CONF_OPTS += --disable-fribidi
>> +endif
>> +
>> +# If Gstreamer 1.x support is disabled, it will heavily limit your media
>> +# support options and render some functionality as useless, leading to
>> +# visible application bugs.
>> +ifeq ($(BR2_PACKAGE_GSTREAMER1)$(BR2_PACKAGE_GST1_PLUGINS_BASE),yy)
>> +LIBEFL_CONF_OPTS += --enable-gstreamer1
>> +LIBEFL_DEPENDENCIES += gstreamer1 gst1-plugins-base
>> +else
>> +LIBEFL_CONF_OPTS += --disable-gstreamer1
>> +endif
>> +
>> +# You have chosen to disable physics support. This disables lots of
>> +# core functionality and is effectively never tested. You are going
>> +# to find features that suddenly don't work and as a result cause
>> +# a series of breakages. This is simply not tested so you are on
>> +# your own in terms of ensuring everything works if you do this
>> +ifeq ($(BR2_PACKAGE_BULLET),y)
>> +LIBEFL_CONF_OPTS += --enable-physics
>> +LIBEFL_DEPENDENCIES += bullet
>> +else
>> +LIBEFL_CONF_OPTS += --disable-physics
>> +endif
>> +
>> +# You disabled audio support in Ecore. This is not tested and may
>> +# Create bugs for you due to it creating untested code paths.
>> +# Reconsider disabling audio.
>> +ifeq ($(BR2_PACKAGE_LIBSNDFILE),y)
>> +LIBEFL_CONF_OPTS += --enable-audio
>> +LIBEFL_DEPENDENCIES += libsndfile
>> +else
>> +LIBEFL_CONF_OPTS += --disable-audio
>> +endif
>> +
>> +# The only audio output method supported by Ecore right now is via
>> +# Pulseaudio. You have disabled that and likely have broken a whole
>> +# bunch of things in the process. Reconsider your configure options.
>> +# NOTE: multisense support is automatically enabled with pulseaudio.
>> +ifeq ($(BR2_PACKAGE_PULSEAUDIO),y)
>> +LIBEFL_CONF_OPTS += --enable-pulseaudio
>> +LIBEFL_DEPENDENCIES += pulseaudio
>> +else
>> +LIBEFL_CONF_OPTS += --disable-pulseaudio
>> +endif
>
> As I previously suggested, move all the above comments to the Config.in
> file, to help user make an enlighted (muahahaha!) decision.
Lol :)
>
>> +# There is no alsa support yet in Ecore_Audio.
>> +# configure will disable alsa support even if alsa-lib is selected.
>
> So what? Having this comment stand alone is not much use. You should
> probably add "LIBEFL_CONF_OPTS += --disable-alsa", then, no?
I'll add it to LIBEFL_CONF_OPTS at the top of the mk file.
>
>> +ifeq ($(BR2_PACKAGE_TSLIB),y)
>> +LIBEFL_DEPENDENCIES += tslib
>> +LIBEFL_CONF_OPTS += --enable-tslib
>> +else
>> +LIBEFL_CONF_OPTS += --disable-tslib
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBGLIB2),y)
>> +LIBEFL_DEPENDENCIES += libglib2
>> +# we can also say "always"
>
> Useless comment, drop it.
ok
>
>> +LIBEFL_CONF_OPTS += --with-glib=yes
>> +else
>> +LIBEFL_CONF_OPTS += --with-glib=no
>> +endif
>> +
>> +# Prefer openssl (the default) over gnutls.
>> +ifeq ($(BR2_PACKAGE_OPENSSL),y)
>> +LIBEFL_DEPENDENCIES += openssl
>> +LIBEFL_CONF_OPTS += --with-crypto=openssl
>> +else
>> +ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy)
>
> use the else ifeq construct rather than nested if-blocks, ...
>
>> +LIBEFL_DEPENDENCIES += gnutls libgcrypt
>> +LIBEFL_CONF_OPTS += --with-crypto=gnutls \
>> + --with-libgcrypt-prefix=$(STAGING_DIR)/usr
>> +else
>> +LIBEFL_CONF_OPTS += --with-crypto=none
>> +endif
>> +endif # BR2_PACKAGE_OPENSSL
>
> .. you'll gain one endif here.
ok
>
>> +# image loader: handle only loaders that requires dependencies.
>> +# All other loaders are builded by default statically.
>> +ifeq ($(BR2_PACKAGE_LIBEFL_PNG),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-png=yes
>> +LIBEFL_DEPENDENCIES += libpng
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-png=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_JPEG),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=yes
>
> Maybe add a comment that the 'jpeg' dependency is already covered as a
> global dependency of libefl. Otherwise, it is strange to not see it here
> (I only remembered it because I previously checked if the dependencies
> of jpeg were prorerly propagated).
ok.
>
> Regards,
> Yann E. MORIN.
>
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-jpeg=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_GIF),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=yes
>> +LIBEFL_DEPENDENCIES += giflib
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-gif=no
>> +endif
>> +
>> +ifeq ($(BR2_PACKAGE_LIBEFL_TIFF),y)
>> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=yes
>> +LIBEFL_DEPENDENCIES += tiff
>> +else
>> +LIBEFL_CONF_OPTS += --enable-image-loader-tiff=no
>> +endif
>> +
>> +$(eval $(autotools-package))
>> +
>> ################################################################################
>> #
>> # host-libefl
>> --
>> 2.4.3
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
More information about the buildroot
mailing list