[Buildroot] [PATCH v5] vlc: New package

Arnout Vandecappelle arnout at mind.be
Sun Mar 25 19:48:57 UTC 2012


On Thursday 22 March 2012 02:54:20 Ismael Luceno wrote:
> Signed-off-by: Ismael Luceno <ismael.luceno at gmail.com>

 Not done yet, unfortunately...  But for a big patch like this that's
to be expected.

 If you're in a hurry to get this integrated, it may be worthwhile to
split the patch into a basic one that includes a minimal feature set,
and an extension that adds all the config options for the different
components.

 You should also test it with a minimal internal toolchain, i.e.
without any largefile, wchar and gettext stuff.  That will expose
a great number of errors right away.  For instance, the v4l2 stuff
fails because of LARGEFILE.

[snip]
> +config BR2_PACKAGE_VLC_PULSE
> +       bool "PulseAudio support"
> +       select BR2_PACKAGE_PULSEAUDIO

 pulseaudio depends on BR2_USE_WCHAR, so this dependency should be
repeated here.  And there should be a comment explaining that
WCHAR is needed.  Like this:

config BR2_PACKAGE_VLC_PULSE
	bool "PulseAudio support"
	select BR2_PACKAGE_PULSEAUDIO
	depends on BR2_USE_WCHAR # pulseaudio

comment "PulseAudio support requires a toolchain with WCHAR support"
	depends on !BR2_USE_WCHAR

 You should check for such a situation for each package for which you
add a select statement.  There are quite a few more like that, I've
checked it for just this one.  I mention a few more below, but there
are probably even more.


 Also, it would be nice to have a short help text for each option.
Doesn't have to be much, something like "pulseaudio is a proxy
between the audio hardware and audio applications.  See
http://pulseaudio.org" is sufficient.  But I realize it's a lot of
effort to write help texts for all these options.


[snip]
> +config BR2_PACKAGE_VLC_AVCODEC
> +       bool "FFmpeg (Many CODECs)"
> +       select BR2_PACKAGE_FFMPEG
> +       help
> +	 There is an awful lot of CODECs in libavcodec. You might want to avoid
> +	 duplication.

 This help text isn't very clear.  How about:

There is a large number of codecs in FFmpeg/libavcodec.  It is 
advisable to avoid duplication: select either the FFmpeg or the
vlc implementation for each codec, not both.

[snip]
> +config BR2_PACKAGE_VLC_GVFS
> +       bool "Gnome VFS support"
> +       select BR2_PACKAGE_GFVS
 Typo here: _GVFS.  And missing depends on BR2_LARGEFILE and 
BR2_USE_WCHAR.


> +config BR2_PACKAGE_VLC_V4L2
> +       bool "Video4Linux 2 support"
> +       select BR2_PACKAGE_LIBV4L
 depends on BR2_LARGEFILE

[snip]
> +config BR2_PACKAGE_VLC_UDEV
> +       bool "Udev support"
> +       select BR2_PACKAGE_UDEV

 udev is a special case, because it depends on the /dev management
option BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  You can't use a
select for that one (it would be too confusing).  So just set a
depends on BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_UDEV.  The comment
is not needed in this case, because it's quite obvious that udev
support only makes sense if you have udev.

[snip]
> diff --git a/package/multimedia/vlc/vlc-uclibc-fixes.patch b/package/multimedia/vlc/vlc-uclibc-fixes.patch
> new file mode 100644
> index 0000000..5471b08
> --- /dev/null
> +++ b/package/multimedia/vlc/vlc-uclibc-fixes.patch
> @@ -0,0 +1,25 @@
> +Fixes compilation with uClibc, which doesn't provide gnu/libc-version.h nor
> +gnu_get_libc_version.
> +
> +Signed-off-by: Ismael Luceno <ismael.luceno at gmail.com>

 Did you send this patch upstream to vlc?  If not, could you do so?

[snip]
> +VLC_CONF_OPT += $(foreach i,avcodec avformat postproc swscale,--disable-$i)

 Nice!

[snip]
> +# The configure script fails to detect vasprintf on uClibc.
> +VLC_POST_CONFIGURE_HOOKS += VLC_FIX_CONF
> +define VLC_FIX_CONF
> +	$(SED) '1i#define HAVE_VASPRINTF 1' $(@D)/config.h
> +endef

 Nice!  Maybe remove the existing HAVE_VASPRINTF line too:

$(SED) '/HAVE_VASPRINTF/d; 1i#define HAVE_VASPRINTF 1' $(@D)/config.h

 Also, it's a bit more natural to put the 
VLC_POST_CONFIGURE_HOOKS += VLC_FIX_CONF
after the definition of VLC_FIX_CONF.  But it doesn't make a
difference, of course.


> +# The following rmoves the relink_command. If not removed, libtool tries to
                   ^^^removes
> +# relink against the host libraries, instead of the sysroot.
> +VLC_POST_BUILD_HOOKS += VLC_FIX_LA_FILES
> +define VLC_FIX_LA_FILES
> +	find $(@D) -name '*.la' -exec $(SED) '/^relink_command=/d' '{}' +

 For which .la's is this needed?  I've compiled various configurations with
several toolchains and I don't see a relink_command in any of the .la
files...

> +	touch $(@D)/modules/access/zip/libzip_plugin.la \
> +		$(@D)/modules/misc/liblogger_plugin.la

 And why is this needed?

> +endef
> +
> +$(eval $(call AUTOTARGETS))


 Regards,
 Arnout

-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F



More information about the buildroot mailing list