[OE-core] [PATCH 1/1] package_manager.py: fix for "Argument list too long"

Robert Yang liezhi.yang at windriver.com
Thu Oct 13 09:45:38 UTC 2016


Fixed when len(TMPDIR) = 410:
$ bitbake core-image-sato-sdk
[snip]
Subprocess output:
/bin/sh: /bin/cp: Argument list too long

ERROR: core-image-sato-sdk-1.0-r0 do_rootfs: Function failed: do_rootfs
[snip]

This is because "copyhardlinktree(deploy_arch_dir, arch_channel)" does:
"cp -afl deploy_arch_dir/* arch_channel", while the deploy_arch_dir/* is
expanded to "deploy_arch_dir/pkg1 deploy_arch_dir/pkg2
deploy_arch_dir/pkg3 ..." which causes the "Argument list too long",
change cwd to deploy_arch_dir can avoid the error.

Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
---
 meta/lib/oe/package_manager.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index 3cee973..e0e203b 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -1024,7 +1024,11 @@ class RpmPM(PackageManager):
 
             lockfilename = self.d.getVar('DEPLOY_DIR_RPM', True) + "/rpm.lock"
             lf = bb.utils.lockfile(lockfilename, False)
-            oe.path.copyhardlinktree(deploy_arch_dir, arch_channel)
+            # chdir() to deploy_arch_dir to avoid "Argument list too long" error
+            oldcwd = os.getcwd()
+            os.chdir(deploy_arch_dir)
+            oe.path.copyhardlinktree('.', arch_channel)
+            os.chdir(oldcwd)
             bb.utils.unlockfile(lf)
 
             if not arch in ch_already_added:
-- 
2.9.0




More information about the Openembedded-core mailing list