libfsl*: fix install path + update conf opts
cover libfsl*: fix install path + update conf opts
Hi all,
I meant to do this series for a long time:
http://patchwork.ozlabs.org/patch/409684/
I tried to split what Jeff offered into separate patches.
Some are taking care of the install path that was causing troubles to gst-fsl-plugins at runtime since we don't use ldconfig.
The other patches enable some missing configure options (hard float and vpu) as pointed by Jeff.
Here is the defconfig that has been used to test those patches:
BR2_arm=y
BR2_cortex_a9=y
BR2_ARM_EABIHF=y
BR2_ARM_ENABLE_NEON=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y
BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y
BR2_TARGET_GENERIC_GETTY_PORT="ttymxc1"
BR2_ROOTFS_POST_BUILD_SCRIPT="board/boundarydevices/nitrogen6x/post-build.sh"
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_TARBALL=y BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="https://github.com/boundarydevices/linux-imx6/tarball/d7a412b/linux-imx6-d7a412b.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="boundary"
BR2_LINUX_KERNEL_ZIMAGE=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6q-nitrogen6_max imx6q-sabrelite" BR2_LINUX_KERNEL_INSTALL_TARGET=y
BR2_PACKAGE_ALSA_UTILS=y
BR2_PACKAGE_ALSA_UTILS_ALSACONF=y
BR2_PACKAGE_ALSA_UTILS_AMIDI=y
BR2_PACKAGE_ALSA_UTILS_AMIXER=y
BR2_PACKAGE_ALSA_UTILS_APLAY=y
BR2_PACKAGE_ALSA_UTILS_APLAYMIDI=y
BR2_PACKAGE_ALSA_UTILS_SPEAKER_TEST=y
BR2_PACKAGE_GSTREAMER=y
BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
BR2_PACKAGE_GST_PLUGINS_BASE_PLUGIN_ALSA=y
BR2_PACKAGE_GST_PLUGINS_GOOD=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_AUTODETECT=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_DEBUGUTILS=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_FLV=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_ID3DEMUX=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_MATROSKA=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_VIDEOBOX=y
BR2_PACKAGE_GST_PLUGINS_GOOD_PLUGIN_V4L2=y
BR2_PACKAGE_GST_FSL_PLUGINS=y
BR2_PACKAGE_GSTREAMER1=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORATE=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ENCODING=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_GIO=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_SUBPARSE=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_TCP=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC=y
BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_ALSA=y
BR2_PACKAGE_GST1_PLUGINS_GOOD=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUDIOPARSERS=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_DEBUGUTILS=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_FLV=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_ID3DEMUX=y
BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_MATROSKA=y
BR2_PACKAGE_GST1_IMX=y
BR2_PACKAGE_STRACE=y
BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q=y
BR2_PACKAGE_IMX_GPU_VIV=y
BR2_PACKAGE_IMX_GPU_VIV_APITRACE=y
BR2_PACKAGE_IMX_GPU_VIV_EXAMPLES=y
BR2_PACKAGE_IMX_GPU_VIV_GMEM_INFO=y
BR2_PACKAGE_FONTCONFIG=y
BR2_PACKAGE_IPERF3=y
BR2_PACKAGE_OPENSSH=y
BR2_PACKAGE_RSYNC=y
BR2_PACKAGE_HOST_MKE2IMG=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
I'll detail on each patch what has been done.
Regards,
Gary
Gary Bisson (4):
libfslcodec: add install hooks to fix libraries path
libfslcodec: add missing configure options
libfslparser: add install hooks to fix libraries path
libfslparser: add missing configure options
package/libfslcodec/libfslcodec.mk | 24 ++++++++++++++++++++++++ package/libfslparser/libfslparser.mk | 12 ++++++++++++ 2 files changed, 36 insertions(+)
Signature · 1 line
2.6.1
PATCH 1/4 libfslcodec: add install hooks to fix libraries path
By default, all the libraries are installed under /usr/lib/imx-mm which causes problems at runtime.
The hooks are inspired from the mechanism used in the Yocto recipe:
https://github.com/Freescale/meta-fsl-arm/blob/fido/recipes-
multimedia/libfslcodec/libfslcodec.inc
This has been tested implicitely by running Gstreamer without any special setup (no ld.so.conf nor LD_LIBRARY_PATH modification):
# gst-launch-0.10 playbin uri=file:///root/tears_of_steel_1080p.webm # gst-launch-0.10 audiotestsrc ! mfw_mp3encoder ! fakesink # gst-launch-1.0 playbin uri=file:///root/tears_of_steel_1080p.webm
---
Here are the dependencies the pipelines above are testing:
$ for i in `find target/usr/lib/gstreamer*/*`; do readelf -d $i | grep NEEDED | grep lib_ && echo "($i)"; done 0x00000001 (NEEDED) Shared library: [lib_nb_amr_dec_arm9_elinux.so.2] 0x00000001 (NEEDED) Shared library: [lib_wb_amr_dec_arm9_elinux.so.2] (target/usr/lib/gstreamer-0.10/libmfw_gst_amrdec.so) 0x00000001 (NEEDED) Shared library: [lib_peq_arm11_elinux.so.1.fhw] (target/usr/lib/gstreamer-0.10/libmfw_gst_audio_pp.so) 0x00000001 (NEEDED) Shared library: [lib_mp3_enc_arm12_elinux.so.2] (target/usr/lib/gstreamer-0.10/libmfw_gst_mp3enc.so) 0x00000001 (NEEDED) Shared library: [lib_mp3_enc_arm12_elinux.so.2] (target/usr/lib/gstreamer-1.0/libgstimxaudio.so)
Note that I added a staging install hook as well because otherwise the gst1-imx plugin doesn't find lib_mp3_enc_arm12_elinux.so at build time.
Not to copy the same library twice I decided to go with a symlink. Let me know if that's acceptable.
Regards,
Gary
--- package/libfslcodec/libfslcodec.mk | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
package/libfslcodec/libfslcodec.mk +16 -0
@@ -20,4 +20,20 @@ endef # FIXME The Makefile installs both the arm9 and arm11 versions of the # libraries, but we only need one of them. +# do the symlink in staging area as some packages like gst-fsl-plugins is +# looking for libraries in imx-mm whereas gst1-imx doesn't +define LIBFSLCODEC_FIXUP_STAGING_PATH + find $(STAGING_DIR)/usr/lib/imx-mm -mindepth 2 -maxdepth 2 -not -type d \ + -exec ln -fs {} $(STAGING_DIR)/usr/lib \; +endef +LIBFSLCODEC_POST_INSTALL_STAGING_HOOKS += LIBFSLCODEC_FIXUP_STAGING_PATH + +# no need to symlink in target image, just move libraries around +define LIBFSLCODEC_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -mindepth 2 -maxdepth 2 -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -fr $(TARGET_DIR)/usr/lib/imx-mm +endef +LIBFSLCODEC_POST_INSTALL_TARGET_HOOKS += LIBFSLCODEC_FIXUP_TARGET_PATH + $(eval $(autotools-package))
Signature · 1 line
2.6.1
PATCH 2/4 libfslcodec: add missing configure options
In reply to Gary BissonEnable VPU and hard float support when the proper configuration is setup. BR2_ARM_EABIHF=y
BR2_PACKAGE_IMX_VPU=y
See Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/blob/fido/recipes-
multimedia/libfslcodec/libfslcodec.inc
Tested with the Linaro ARM 2014.09 toolchain.
---
Thanks to those options, I could see that:
- lib_jpeg_dec_arm11_elinux_novpu.so isn't copied
- lib_peq_arm11_elinux.so.1.fhw is copied instead of the fsw version
Regards,
Gary
--- package/libfslcodec/libfslcodec.mk | 8 ++++++++ 1 file changed, 8 insertions(+)
package/libfslcodec/libfslcodec.mk +8 -0
@@ -13,6 +13,14 @@ LIBFSLCODEC_LICENSE = Freescale Semiconductor Software License Agreement, BSD-3c LIBFSLCODEC_LICENSE_FILES = EULA COPYING LIBFSLCODEC_REDISTRIBUTE = NO +ifeq ($(BR2_ARM_EABIHF),y) +LIBFSLCODEC_CONF_OPTS += --enable-fhw +endif + +ifeq ($(BR2_PACKAGE_IMX_VPU),y) +LIBFSLCODEC_CONF_OPTS += --enable-vpu +endif + define LIBFSLCODEC_EXTRACT_CMDS $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(LIBFSLCODEC_SOURCE)) endef
Signature · 1 line
2.6.1
PATCH 3/4 libfslparser: add install hooks to fix libraries path
In reply to Gary BissonBy default, all the libraries are installed under /usr/lib/imx-mm which causes problems at runtime.
This has been tested implicitely by running Gstreamer without any special setup (no ld.so.conf nor LD_LIBRARY_PATH modification):
# gst-launch-0.10 playbin uri=file:///root/tears_of_steel_1080p.webm # gst-launch-0.10 audiotestsrc ! mfw_mp3encoder ! fakesink
---
I'm actually not sure if libfslparser is needed at all. I couldn't find a library depending on any of the one from the package. But Yocto still has depency on the package for gst-fsl-plugins:
https://github.com/Freescale/meta-fsl-arm/blob/fido/recipes-multimedia/gstreamer/gst-fsl-plugin.inc#L9
Regards,
Gary
--- package/libfslparser/libfslparser.mk | 8 ++++++++ 1 file changed, 8 insertions(+)
package/libfslparser/libfslparser.mk +8 -0
@@ -20,4 +20,12 @@ endef # The Makefile installs several versions of the libraries, but we only # need one of them, depending on the platform. +# no need to symlink in target image, just move libraries around +define LIBFSLPARSER_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -mindepth 2 -maxdepth 2 -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -fr $(TARGET_DIR)/usr/lib/imx-mm +endef +LIBFSLPARSER_POST_INSTALL_TARGET_HOOKS += LIBFSLPARSER_FIXUP_TARGET_PATH + $(eval $(autotools-package))
Signature · 1 line
2.6.1
PATCH 3/4 libfslparser: add install hooks to fix libraries path
Hello Garry,
On Thursday 29 October 2015 21:06:51 Gary Bisson wrote:
[...]
Quoted 4 lines
b/package/libfslparser/libfslparser.mkindex 2b53d62..aa02f19 100644
package/libfslparser/libfslparser.mk endef · line 29
Quoted 10 lines
package/libfslparser/libfslparser.mk +7
-0@@ -20,4 +20,12 @@ endef # The Makefile installs several versions of the libraries, but we only # need one of them, depending on the platform. +# no need to symlink in target image, just move libraries around +define LIBFSLPARSER_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -mindepth 2 -maxdepth 2 -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -fr $(TARGET_DIR)/usr/lib/imx-mm +endef +LIBFSLPARSER_POST_INSTALL_TARGET_HOOKS += LIBFSLPARSER_FIXUP_TARGET_PATH
A POST_INSTALL_STAGING_HOOKS is not necessary for libfslparser?
Regards,
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 3/4 libfslparser: add install hooks to fix libraries path
Hi Jerome,
Quoted 12 lines · J?r?me Pouiller
Hello Garry,
On Thursday 29 October 2015 21:06:51 Gary Bisson wrote:
[...]Quoted 7 lines
b/package/libfslparser/libfslparser.mkindex 2b53d62..aa02f19 100644package/libfslparser/libfslparser.mk +0
-0@@ -20,4 +20,12 @@ endef # The Makefile installs several versions of the libraries, but we only # need one of them, depending on the platform.
Quoted 8 lines
package/libfslparser/libfslparser.mk endef · line 29
Quoted 7 lines
package/libfslparser/libfslparser.mk +7
-0+# no need to symlink in target image, just move libraries around +define LIBFSLPARSER_FIXUP_TARGET_PATH + find $(TARGET_DIR)/usr/lib/imx-mm -mindepth 2 -maxdepth 2 -not -type d \ + -exec mv {} $(TARGET_DIR)/usr/lib \; + rm -fr $(TARGET_DIR)/usr/lib/imx-mm +endef +LIBFSLPARSER_POST_INSTALL_TARGET_HOOKS += LIBFSLPARSER_FIXUP_TARGET_PATHA
POST_INSTALL_STAGING_HOOKSis not necessary for libfslparser?
No, libfslparser is only needed by gst-fsl-plugins which looks for the libs at the right location at build time (usr/lib/imx-mm).
The staging hook is needed for libfslcodec since it is used by both gst-fsl-plugins and gst1-imx (not looking at the imx-mm path at build time).
Although it might have been more consistent to have the staging hook in both, I chose to reduce the patch as much as possible. Plus I'm not sure people will like my symlink approach in the staging directory.
Regards,
Gary
PATCH 3/4 libfslparser: add install hooks to fix libraries path
Quoted 3 lines · On Friday 30 October 2015 11:36:21 Gary Bisson wrote:
Hi Jerome,
On Fri, Oct 30, 2015 at 11:27 AM, J?r?me Pouiller <[email protected]>
wrote:
[...]
Quoted 5 lines
Quoted 1 line
A
POST_INSTALL_STAGING_HOOKSis not necessary for libfslparser?No, libfslparser is only needed by gst-fsl-plugins which looks for the libs at the right location at build time (
usr/lib/imx-mm).
Quoted 7 lines
The staging hook is needed for libfslcodec since it is used by both gst-fsl-plugins and gst1-imx (not looking at the imx-mm path at build time).
Although it might have been more consistent to have the staging hook in both, I chose to reduce the patch as much as possible. Plus I'm not sure people will like my symlink approach in the staging directory.
IMHO, target/ should be a subset of staging/ (even if today, this is far from the case). So, I would prefer to also create symlinks in staging/.
Regards,
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 3/4 libfslparser: add install hooks to fix libraries path
Hi J?r?me,
Quoted 15 lines · J?r?me Pouiller
Quoted 3 lines · On Friday 30 October 2015 11:36:21 Gary Bisson wrote:
Hi Jerome,
On Fri, Oct 30, 2015 at 11:27 AM, J?r?me Pouiller <[email protected]>
wrote:
[...]Quoted 9 lines
Quoted 1 line
A
POST_INSTALL_STAGING_HOOKSis not necessary for libfslparser?No, libfslparser is only needed by gst-fsl-plugins which looks for the libs at the right location at build time (
usr/lib/imx-mm).The staging hook is needed for libfslcodec since it is used by both gst-fsl-plugins and gst1-imx (not looking at the imx-mm path at build time).
Quoted 5 lines
Quoted 3 lines
Although it might have been more consistent to have the staging hook in both, I chose to reduce the patch as much as possible. Plus I'm not sure people will like my symlink approach in the staging directory.
IMHO, target/ should be a subset of staging/ (even if today, this is far from the case). So, I would prefer to also create symlinks in staging/.
So I'm ok with adding the symlinks to the fslparser staging as well. But if we'd really like to have target as a subset of staging, shouldn't we use symlinks for the target too?
Regards,
Gary
PATCH 3/4 libfslparser: add install hooks to fix libraries path
Quoted 3 lines · On Sunday 08 November 2015 17:08:43 Gary Bisson wrote:
Hi J?r?me,
On Fri, Oct 30, 2015 at 11:43 AM, J?r?me Pouiller <[email protected]>
Quoted 1 line · wrote:
Quoted 1 line · On Friday 30 October 2015 11:36:21 Gary Bisson wrote:
[...]
Quoted 11 lines
Quoted 8 lines
Quoted 5 lines
Although it might have been more consistent to have the staging hook
in both, I chose to reduce the patch as much as possible. Plus I'm not sure people will like my symlink approach in the staging directory.>IMHO, target/ should be a subset of staging/ (even if today, this is far from the case). So, I would prefer to also create symlinks in staging/.
So I'm ok with adding the symlinks to the fslparser staging as well. But if we'd really like to have target as a subset of staging, shouldn't we use symlinks for the target too?
Sure, I am in favor to use symlinks for target/ also.
BR,
Signature · 3 lines
J?r?me Pouiller, Sysmic Embedded Linux specialist http://www.sysmic.fr
PATCH 4/4 libfslparser: add missing configure options
In reply to Gary BissonEnable hard float support when the proper configuration is setup. BR2_ARM_EABIHF=y
See Yocto equivalent:
https://github.com/Freescale/meta-fsl-arm/blob/fido/recipes-
multimedia/libfslparser/libfslparser.inc
Tested with Linaro ARM 2014.09 toolchain.
---
Thanks to those options, I could see that libraries from copied from release/lib/yocto/hw instead of release/lib/yocto/sw.
Regards,
Gary
--- package/libfslparser/libfslparser.mk | 4 ++++ 1 file changed, 4 insertions(+)
package/libfslparser/libfslparser.mk +4 -0
@@ -13,6 +13,10 @@ LIBFSLPARSER_LICENSE = Freescale Semiconductor Software License Agreement LIBFSLPARSER_LICENSE_FILES = EULA COPYING LIBFSLPARSER_REDISTRIBUTE = NO +ifeq ($(BR2_ARM_EABIHF),y) +LIBFSLPARSER_CONF_OPTS += --enable-fhw +endif + define LIBFSLPARSER_EXTRACT_CMDS $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(LIBFSLPARSER_SOURCE)) endef
Signature · 1 line
2.6.1