[OE-core] [PATCH 4/4] scripts/postinst-intercepts: create separete hooks for multilib

Mark Hatle mark.hatle at windriver.com
Thu Apr 25 13:51:26 UTC 2013


On 4/25/13 7:24 AM, Laurentiu Palcu wrote:
> When using multilib, the hooks for lib32/lib64 must be different because
> the libdir/base_libdir point to different locations. Nothing has to be
> done in the postinstalls for this. When a hook is installed, it will be
> detected automatically if this is a ML package (from the libXX- package
> prefix) and a separate hook will be created.
>
> Signed-off-by: Laurentiu Palcu <laurentiu.palcu at intel.com>
> ---
>   scripts/postinst-intercepts/postinst_intercept |   18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
>
> diff --git a/scripts/postinst-intercepts/postinst_intercept b/scripts/postinst-intercepts/postinst_intercept
> index ed32f27..5969eba 100755
> --- a/scripts/postinst-intercepts/postinst_intercept
> +++ b/scripts/postinst-intercepts/postinst_intercept
> @@ -17,9 +17,27 @@
>
>   intercept_script=$INTERCEPT_DIR/$1 && shift
>   package_name=$1 && shift
> +mlprefix=$(echo $package_name|sed -rn 's/^(lib32|lib64|libx32)-.*/\1/p')

The mlprefix is theoretically arbitrary.  It would be better to base the parse 
list off of a given machines available multilibs.  If you can dump the multilib 
list from bitbake, that would be best.

> +# if the hook we want to install does not exist, then there's nothing we can do
>   [ -f "$intercept_script" ] || exit 1
>
> +# if the postinstall wanting to install the hook belongs to a multilib package,
> +# then we'd better have a separate hook for this because the default ${libdir} and
> +# ${base_libdir} will point to the wrong locations
> +if [ -n "$mlprefix" ]; then
> +	ml_intercept_script=$intercept_script-$mlprefix
> +	# if the multilib hook does not exist, create it from the default one
> +	if [ ! -f "$ml_intercept_script" ]; then
> +		cp $intercept_script $ml_intercept_script
> +
> +		# clear the ##PKGS: line and the already set variables
> +		[ -x "$ml_intercept_script" ] && sed -i -e "2,$(($#+1)) {/.*/d}" -e "/^##PKGS: .*/d" $ml_intercept_script
> +	fi
> +
> +	intercept_script=$ml_intercept_script
> +fi
> +
>   chmod +x "$intercept_script"
>
>   pkgs_line="$(cat $intercept_script|grep "##PKGS:")"
>





More information about the Openembedded-core mailing list