Patchwork [1/1] dpkg 1.15.8.7: bad interpreter when long tmpdir

login
register
mail settings
Submitter Robert Yang
Date July 4, 2012, 10:15 a.m.
Message ID <bb2efe6415a880bcc733e2d30e3eb0ea3524b877.1341391695.git.liezhi.yang@windriver.com>
Download mbox | patch
Permalink /patch/31159/
State Accepted
Commit 7d3281be18567207de8ce2cabce03957bf2cbca8
Headers show

Comments

Robert Yang - July 4, 2012, 10:15 a.m.
When use PACKAGE_CLASSES = "package_deb", and the length of tmpdir is
longer than 177, the error occurs during the image generation:

/very/long/path/totmp/sysroots/x86_64-linux/usr/bin/dpkg-scanpackages:
bad interpreter: No such file or directory

The interpreter is perl, and it does exist, this is because the first
line:

  #!/very/long/path/to/perl

in the script can't be very long.

Create a wrapper for it would fix the problem.

[YOCTO #2640]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 meta/recipes-devtools/dpkg/dpkg.inc |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

Patch

diff --git a/meta/recipes-devtools/dpkg/dpkg.inc b/meta/recipes-devtools/dpkg/dpkg.inc
index 09bfbbc..7f4f620 100644
--- a/meta/recipes-devtools/dpkg/dpkg.inc
+++ b/meta/recipes-devtools/dpkg/dpkg.inc
@@ -2,7 +2,7 @@  DESCRIPTION = "Package maintenance system for Debian."
 LICENSE = "GPLv2.0+"
 SECTION = "base"
 
-INC_PR = "r16"
+INC_PR = "r17"
 
 SRC_URI = "${DEBIAN_MIRROR}/main/d/dpkg/dpkg_${PV}.tar.bz2 \
            file://ignore_extra_fields.patch"
@@ -56,6 +56,15 @@  do_install_append () {
 	fi
 }
 
+# Create a wrapper for the perl script to avoid the "bad interpreter"
+# error when the tmpdir is longer than 150.
+do_install_append_virtclass-native () {
+	tmp=`find ${D}${bindir} -type f -exec grep -m 1 -l '#!/.*/perl-native/perl' {} \;`
+	for i in $tmp; do
+		create_wrapper $i ${STAGING_BINDIR_NATIVE}/perl-native/perl
+	done
+}
+
 PROV = "virtual/update-alternatives"
 PROV_virtclass-native = ""