Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory
Date: Sat, 11 May 2013 12:20:06 +0200	[thread overview]
Message-ID: <20130511122006.694f3942@skate> (raw)
In-Reply-To: <1368129212-4892-2-git-send-email-h.fijnvandraat@inter.nl.net>

Dear Henk Fijnvandraat,

Arnout made some good comments, I have a few others below.

On Thu,  9 May 2013 21:53:32 +0200, Henk Fijnvandraat wrote:

> diff --git a/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk
> new file mode 100644
> index 0000000..d003443
> --- /dev/null
> +++ b/package/freescale-imx/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.mk
> @@ -0,0 +1,77 @@
> +#############################################################
> +#
> +# gpu-viv-bin-mx6q
> +#
> +#############################################################
> +
> +GPU_VIV_BIN_MX6Q_VERSION = $(IMX_VERSION_LEVEL)
> +GPU_VIV_BIN_MX6Q_SITE    = $(IMX_MIRROR_SITE)
> +GPU_VIV_BIN_MX6Q_SOURCE  = gpu-viv-bin-mx6q-$(GPU_VIV_BIN_MX6Q_VERSION).bin
> +
> +GPU_VIV_BIN_MX6Q_INSTALL_STAGING = YES
> +
> +# GPU_VIV_BIN_MX6Q_LICENSE = Freescale Semiconductor Software License Agreement

Why is this in a comment?

> +# No license file is included in the archive; we could extract it from
> +# the self-extractor, but that's just too much effort.
> +# This is a legal minefield: the EULA specifies that
> +# the Board Support Package includes software and hardware (sic!)
> +# for which a separate license is needed...
> +GPU_VIV_BIN_MX6Q_REDISTRIBUTE = NO
> +
> +# The archive is a shell-self-extractor of a bzipped tar. It happens
> +# to extract in the correct directory (gpu-viv-bin-mx6q-x.y.z)
> +# The --force makes sure it doesn't fail if the source dir already exists.
> +# The --auto-accept skips the license check - not needed for us
> +# because we have legal-info.
> +define GPU_VIV_BIN_MX6Q_EXTRACT_CMDS
> +	cd $(BUILD_DIR); \
> +	sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept
> +endef

I think we generally prefer to have the entire command executed in a
sub-shell, i.e:

	(cd $(BUILD_DIR); \
	 sh $(DL_DIR)/$(GPU_VIV_BIN_MX6Q_SOURCE) --force --auto-accept)

Also, what guarantees us that it will actually be extracted to the
right subfilter in $(BUILD_DIR) ?

> +define GPU_VIV_BIN_MX6Q_INSTALL_STAGING_CMDS
> +	cp -r $(@D)/usr/* $(STAGING_DIR)/usr
> +endef
> +
> +ifdef $(BR2_PACKAGE_GPU_VIV_BIN_IMX6Q_EXAMPLES)
> +define GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES
> +	cp -r $(@D)/opt/* $(TARGET_DIR)/opt
> +endef
> +endif

Maybe usr/share/gpu-viv-imx6q/examples/ is a better location than opt/ ?

Also, the installation steps should be after the build steps. It
doesn't change anything from a functional point of view, but it's the
way we write all packages, just because it is more logical.

> +ifeq ($(BR2_PACKAGE_XORG7),y)
> +GPU_VIV_BIN_MX6Q_LIB_TARGET = x11
> +else
> +# DirectFB is not supported (wrong version)
> +GPU_VIV_BIN_MX6Q_LIB_TARGET = fb
> +endif

Hum, so if X.org is not selected, this package installs something that
doesn't work? Seems strange.

Also, I see that this installs EGL libraries, I thought EGL was here to
allow the creation of OpenGL contexts when there is no windowing system
such as X.org. For example, with the Rasberry Pi libraries, you can
have EGL+OpenGL and Qt running on top of it, without DirectFB or X.org.
Isn't that also possible here?

Are you sure that the "fb" target actually requires DirectFB ?

> +# Instead of building, we fix up the inconsistencies that exist
> +# in the upstream archive here.
> +# Make sure these commands are idempotent.
> +define GPU_VIV_BIN_MX6Q_BUILD_CMDS
> +	$(SED) 's/defined(LINUX)/defined(__linux__)/g' $(@D)/usr/include/*/*.h
> +	for lib in EGL GAL VIVANTE; do \
> +		ln -sf lib$${lib}-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so \
> +			$(@D)/usr/lib/lib$${lib}.so; \
> +	done
> +	ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so.1
> +	ln -sf libGL.so.1.2 $(@D)/usr/lib/libGL.so
> +endef
> +
> +# On the target, remove the unused libraries.
> +# Note that this is _required_, else ldconfig may create symlinks
> +# to the wrong library
> +define GPU_VIV_BIN_MX6Q_INSTALL_TARGET_CMDS
> +	$(GPU_VIV_BIN_MX6Q_INSTALL_EXAMPLES)
> +	cp -a $(@D)/usr/lib $(TARGET_DIR)/usr
> +	for lib in EGL GAL VIVANTE; do \
> +		for f in $(TARGET_DIR)/usr/lib/lib$${lib}-*.so; do \
> +			case $$f in \
> +				*-$(GPU_VIV_BIN_MX6Q_LIB_TARGET).so) : ;; \
> +				*) $(RM) $$f ;; \
> +			esac; \
> +		done; \
> +	done

Isn't it either to only copy the relevant libraries instead of copying
everything, and then remove everything that's not useful?

Thanks!

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

  parent reply	other threads:[~2013-05-11 10:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-09 19:53 [Buildroot] adding package gpu-viv-bin-mx6q Henk Fijnvandraat
2013-05-09 19:53 ` [Buildroot] [PATCH] Add package gpu-viv-bin-mx6q to the freescale-imx directory Henk Fijnvandraat
2013-05-10 22:26   ` Arnout Vandecappelle
2013-05-11 10:20   ` Thomas Petazzoni [this message]
2013-05-12 18:43     ` Arnout Vandecappelle

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130511122006.694f3942@skate \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox