diff mbox series

[1/3] external-arm-toolchain: wrap base_libdir vs libdir manipulations under usrmerge check

Message ID 20240417113042.91880-2-vvavrychuk@gmail.com
State New
Headers show
Series external-arm-toolchain: fix build when usrmege enabled | expand

Commit Message

Vasyl Vavrychuk April 17, 2024, 11:30 a.m. UTC
With `usrmerge` disto feature `base_libdir` and `libdir` are the same,
so it does not make sense to:

* removing "duplicates" between them
* move files from `base_libdir` to `libdir`

This fixes build error

| mv: '.../tmp/work/cortexa15t2hf-neon-poky-linux-gnueabi/external-arm-toolchain/12.2.Rel1/image/usr/lib/libasan.a' and '.../tmp/work/cortexa15t2hf-neon-poky-linux-gnueabi/external-arm-toolchain/12.2.Rel1/image/usr/lib/libasan.a' are the same file

in case of `usrmerge` feature enabled.

Signed-off-by: Vasyl Vavrychuk <vvavrychuk@gmail.com>
---
 .../external-arm-toolchain.bb                 | 62 ++++++++++---------
 1 file changed, 32 insertions(+), 30 deletions(-)

Comments

Denys Dmytriyenko April 17, 2024, 8:06 p.m. UTC | #1
On Wed, Apr 17, 2024 at 02:30:40PM +0300, Vasyl Vavrychuk wrote:
> With `usrmerge` disto feature `base_libdir` and `libdir` are the same,
> so it does not make sense to:
> 
> * removing "duplicates" between them
> * move files from `base_libdir` to `libdir`
> 
> This fixes build error
> 
> | mv: '.../tmp/work/cortexa15t2hf-neon-poky-linux-gnueabi/external-arm-toolchain/12.2.Rel1/image/usr/lib/libasan.a' and '.../tmp/work/cortexa15t2hf-neon-poky-linux-gnueabi/external-arm-toolchain/12.2.Rel1/image/usr/lib/libasan.a' are the same file
> 
> in case of `usrmerge` feature enabled.
> 
> Signed-off-by: Vasyl Vavrychuk <vvavrychuk@gmail.com>

Acked-by: Denys Dmytriyenko <denys@konsulko.com>


> ---
>  .../external-arm-toolchain.bb                 | 62 ++++++++++---------
>  1 file changed, 32 insertions(+), 30 deletions(-)
> 
> diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> index fab17611..27aadffd 100644
> --- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> +++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
> @@ -135,37 +135,39 @@ do_install() {
>  	ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
>  	ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
>  
> -	# remove potential .so duplicates from base_libdir
> -	# for all symlinks created above in libdir
> -	rm -f ${D}${base_libdir}/librt.so
> -	rm -f ${D}${base_libdir}/libcrypt.so
> -	rm -f ${D}${base_libdir}/libresolv.so
> -	rm -f ${D}${base_libdir}/libnss_hesiod.so
> -	rm -f ${D}${base_libdir}/libutil.so
> -	rm -f ${D}${base_libdir}/libBrokenLocale.so
> -	rm -f ${D}${base_libdir}/libpthread.so
> -	rm -f ${D}${base_libdir}/libthread_db.so
> -	rm -f ${D}${base_libdir}/libanl.so
> -	rm -f ${D}${base_libdir}/libdl.so
> -	rm -f ${D}${base_libdir}/libnss_db.so
> -	rm -f ${D}${base_libdir}/libnss_dns.so
> -	rm -f ${D}${base_libdir}/libnss_files.so
> -	rm -f ${D}${base_libdir}/libnss_compat.so
> -	rm -f ${D}${base_libdir}/libm.so
> -
> -	# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> -	for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> -		if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
> -			mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
> -		fi
> -		if [ -e ${D}${base_libdir}/lib${lib}.a ] ; then
> -			mv ${D}${base_libdir}/lib${lib}.a ${D}${libdir}
> -		fi
> -		rm -f ${D}${base_libdir}/lib${lib}*
> -	done
> +	if ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'false', 'true', d)}; then
> +		# remove potential .so duplicates from base_libdir
> +		# for all symlinks created above in libdir
> +		rm -f ${D}${base_libdir}/librt.so
> +		rm -f ${D}${base_libdir}/libcrypt.so
> +		rm -f ${D}${base_libdir}/libresolv.so
> +		rm -f ${D}${base_libdir}/libnss_hesiod.so
> +		rm -f ${D}${base_libdir}/libutil.so
> +		rm -f ${D}${base_libdir}/libBrokenLocale.so
> +		rm -f ${D}${base_libdir}/libpthread.so
> +		rm -f ${D}${base_libdir}/libthread_db.so
> +		rm -f ${D}${base_libdir}/libanl.so
> +		rm -f ${D}${base_libdir}/libdl.so
> +		rm -f ${D}${base_libdir}/libnss_db.so
> +		rm -f ${D}${base_libdir}/libnss_dns.so
> +		rm -f ${D}${base_libdir}/libnss_files.so
> +		rm -f ${D}${base_libdir}/libnss_compat.so
> +		rm -f ${D}${base_libdir}/libm.so
> +
> +		# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
> +		for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
> +			if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
> +				mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
> +			fi
> +			if [ -e ${D}${base_libdir}/lib${lib}.a ] ; then
> +				mv ${D}${base_libdir}/lib${lib}.a ${D}${libdir}
> +			fi
> +			rm -f ${D}${base_libdir}/lib${lib}*
> +		done
>  
> -	# Clean up duplicate libs that are both in base_libdir and libdir
> -	rm -f ${D}${libdir}/libgcc*
> +		# Clean up duplicate libs that are both in base_libdir and libdir
> +		rm -f ${D}${libdir}/libgcc*
> +	fi
>  
>  	# Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
>  	# Only remove them if both are regular files and are identical
> -- 
> 2.40.0
diff mbox series

Patch

diff --git a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
index fab17611..27aadffd 100644
--- a/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
+++ b/meta-arm-toolchain/recipes-devtools/external-arm-toolchain/external-arm-toolchain.bb
@@ -135,37 +135,39 @@  do_install() {
 	ln -sf ../../lib/libm.so.6 ${D}${libdir}/libm.so
 	ln -sf ../../lib/libc_malloc_debug.so.0 ${D}${libdir}/libc_malloc_debug.so
 
-	# remove potential .so duplicates from base_libdir
-	# for all symlinks created above in libdir
-	rm -f ${D}${base_libdir}/librt.so
-	rm -f ${D}${base_libdir}/libcrypt.so
-	rm -f ${D}${base_libdir}/libresolv.so
-	rm -f ${D}${base_libdir}/libnss_hesiod.so
-	rm -f ${D}${base_libdir}/libutil.so
-	rm -f ${D}${base_libdir}/libBrokenLocale.so
-	rm -f ${D}${base_libdir}/libpthread.so
-	rm -f ${D}${base_libdir}/libthread_db.so
-	rm -f ${D}${base_libdir}/libanl.so
-	rm -f ${D}${base_libdir}/libdl.so
-	rm -f ${D}${base_libdir}/libnss_db.so
-	rm -f ${D}${base_libdir}/libnss_dns.so
-	rm -f ${D}${base_libdir}/libnss_files.so
-	rm -f ${D}${base_libdir}/libnss_compat.so
-	rm -f ${D}${base_libdir}/libm.so
-
-	# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
-	for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
-		if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
-			mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
-		fi
-		if [ -e ${D}${base_libdir}/lib${lib}.a ] ; then
-			mv ${D}${base_libdir}/lib${lib}.a ${D}${libdir}
-		fi
-		rm -f ${D}${base_libdir}/lib${lib}*
-	done
+	if ${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'false', 'true', d)}; then
+		# remove potential .so duplicates from base_libdir
+		# for all symlinks created above in libdir
+		rm -f ${D}${base_libdir}/librt.so
+		rm -f ${D}${base_libdir}/libcrypt.so
+		rm -f ${D}${base_libdir}/libresolv.so
+		rm -f ${D}${base_libdir}/libnss_hesiod.so
+		rm -f ${D}${base_libdir}/libutil.so
+		rm -f ${D}${base_libdir}/libBrokenLocale.so
+		rm -f ${D}${base_libdir}/libpthread.so
+		rm -f ${D}${base_libdir}/libthread_db.so
+		rm -f ${D}${base_libdir}/libanl.so
+		rm -f ${D}${base_libdir}/libdl.so
+		rm -f ${D}${base_libdir}/libnss_db.so
+		rm -f ${D}${base_libdir}/libnss_dns.so
+		rm -f ${D}${base_libdir}/libnss_files.so
+		rm -f ${D}${base_libdir}/libnss_compat.so
+		rm -f ${D}${base_libdir}/libm.so
+
+		# Move these completely to ${libdir} and delete duplicates in ${base_libdir}
+		for lib in asan hwasan atomic gfortran gomp itm lsan sanitizer stdc++ tsan ubsan; do
+			if [ -e ${D}${base_libdir}/lib${lib}.spec ] ; then
+				mv ${D}${base_libdir}/lib${lib}.spec ${D}${libdir}
+			fi
+			if [ -e ${D}${base_libdir}/lib${lib}.a ] ; then
+				mv ${D}${base_libdir}/lib${lib}.a ${D}${libdir}
+			fi
+			rm -f ${D}${base_libdir}/lib${lib}*
+		done
 
-	# Clean up duplicate libs that are both in base_libdir and libdir
-	rm -f ${D}${libdir}/libgcc*
+		# Clean up duplicate libs that are both in base_libdir and libdir
+		rm -f ${D}${libdir}/libgcc*
+	fi
 
 	# Besides ld-${EAT_VER_LIBC}.so, other libs can have duplicates like lib*-${EAT_VER_LIBC}.so
 	# Only remove them if both are regular files and are identical