[Buildroot] [PATCH] infra: fix autotools .la fixing when no .la files are present

Thomas De Schampheleire patrickdepinguin at gmail.com
Sun Jul 6 14:23:04 UTC 2014


Commit 6f638ea9c9c7bacc646430a74ad3dd2740eae676 ("infra: /usr support:
STAGING_DIR can be outside BASE_DIR") changed a for-construct around 'sed
-i' in a 'find | xargs sed -i'. However, if the find returns no results,
sed complains with:
    '/bin/sed: no input files'

Since a for construct is not very nice to handle this case, this commit
changes the 'find | xargs sed -i' into 'find -exec sed -i'.

Reported-by: Rohit Kumar <rkthebest at gmail.com>
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire at gmail.com>

---
 package/pkg-autotools.mk |  8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff -r c8ed6565ea09 -r 297a83abd058 package/pkg-autotools.mk
--- a/package/pkg-autotools.mk	Thu Jul 03 12:35:57 2014 +0300
+++ b/package/pkg-autotools.mk	Sun Jul 06 16:19:04 2014 +0200
@@ -277,16 +277,20 @@
 # of these directories as @BASE_DIR@ and @STAGING_DIR at . Note that
 # STAGING_DIR can be outside BASE_DIR when the user sets BR2_HOST_DIR
 # to a custom value.
+# We use 'find ... -exec sed' instead of 'find ... | xargs sed' because
+# find may return no results and 'sed -i' requires at least one input
+# file.
 #
 ifndef $(2)_INSTALL_STAGING_CMDS
 define $(2)_INSTALL_STAGING_CMDS
 	$$(TARGET_MAKE_ENV) $$($$(PKG)_MAKE_ENV) $$($$(PKG)_MAKE) $$($$(PKG)_INSTALL_STAGING_OPT) -C $$($$(PKG)_SRCDIR)
-	find $$(STAGING_DIR)/usr/lib* -name "*.la" | xargs \
+	find $$(STAGING_DIR)/usr/lib* -name "*.la" -exec \
 		$$(SED) "s:$$(BASE_DIR):@BASE_DIR@:g" \
 			-e "s:$$(STAGING_DIR):@STAGING_DIR@:g" \
 			-e "s:\(['= ]\)/usr:\\1 at STAGING_DIR@/usr:g" \
 			-e "s:@STAGING_DIR@:$$(STAGING_DIR):g" \
-			-e "s:@BASE_DIR@:$$(BASE_DIR):g"
+			-e "s:@BASE_DIR@:$$(BASE_DIR):g" \
+		{} \;
 endef
 endif
 



More information about the buildroot mailing list