diff options
author | Ross Burton <ross.burton@intel.com> | 2015-10-16 23:02:26 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-10-27 07:24:29 +0000 |
commit | 698c3deebe21906d8c8470a735fcb72d543b0ccf (patch) | |
tree | 11bc7a917f530289793b865d71c049204df45ab3 | |
parent | 83a2bde15d79432c16cb03e9098bd0cd9cab3b43 (diff) | |
download | poky-698c3deebe21906d8c8470a735fcb72d543b0ccf.tar.gz |
file: don't replace host file when built natively
To avoid races over the file binaries being replaced mid-build we made
file-native an assume-provided binary and check for it at startup, but target
file still needs a native file binary of the same version to compile the magic
data.
The least invasive way of doing this is to build a native file don't put it on
PATH, and tell the target build where to find the native binary. We do however
want the native libmagic to be installed normally (as for example rpm and
subversion need it) so we can't use NATIVE_PACKAGE_PATH_SUFFIX as that change
libdir.
[ YOCTO #8144 ]
(From OE-Core rev: d48c0191871ce6b6fbf17d89b8f9d2750b64d671)
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-devtools/file/file/host-file.patch | 32 | ||||
-rw-r--r-- | meta/recipes-devtools/file/file_5.24.bb | 10 |
2 files changed, 41 insertions, 1 deletions
diff --git a/meta/recipes-devtools/file/file/host-file.patch b/meta/recipes-devtools/file/file/host-file.patch new file mode 100644 index 0000000000..a7efbdcbcc --- /dev/null +++ b/meta/recipes-devtools/file/file/host-file.patch | |||
@@ -0,0 +1,32 @@ | |||
1 | Upstream-Status: Submitted (http://bugs.gw.com/view.php?id=485) | ||
2 | Signed-off-by: Ross Burton <ross.burton@intel.com> | ||
3 | |||
4 | From 3cde199d03b39632361c275cd30fa0612a03138b Mon Sep 17 00:00:00 2001 | ||
5 | From: Ross Burton <ross.burton@intel.com> | ||
6 | Date: Mon, 19 Oct 2015 10:30:57 +0100 | ||
7 | Subject: [PATCH 2/2] When using the host file, respect FILE_COMPILE | ||
8 | |||
9 | If we're cross-compiling and not using the file binary that was just built, | ||
10 | execute the binary that we've been told to use (via FILE_COMPILE) when checking | ||
11 | the version instead of assuming that "file" is correct as the actual compile | ||
12 | uses FILE_COMPILE so different binaries may be used. | ||
13 | --- | ||
14 | magic/Makefile.am | 2 +- | ||
15 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
16 | |||
17 | diff --git a/magic/Makefile.am b/magic/Makefile.am | ||
18 | index 89ac844..67067fe 100644 | ||
19 | --- a/magic/Makefile.am | ||
20 | +++ b/magic/Makefile.am | ||
21 | @@ -293,7 +293,7 @@ ${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP) | ||
22 | @(if expr "${FILE_COMPILE}" : '.*/.*' > /dev/null; then \ | ||
23 | echo "Using ${FILE_COMPILE} to generate ${MAGIC}" > /dev/null; \ | ||
24 | else \ | ||
25 | - v=$$(file --version | sed -e s/file-// -e q); \ | ||
26 | + v=$$(${FILE_COMPILE} --version | sed -e s/file-// -e q); \ | ||
27 | if [ "$$v" != "${PACKAGE_VERSION}" ]; then \ | ||
28 | echo "Cannot use the installed version of file ($$v) to"; \ | ||
29 | echo "cross-compile file ${PACKAGE_VERSION}"; \ | ||
30 | -- | ||
31 | 2.1.4 | ||
32 | |||
diff --git a/meta/recipes-devtools/file/file_5.24.bb b/meta/recipes-devtools/file/file_5.24.bb index 08b95d7b61..d04f1218a9 100644 --- a/meta/recipes-devtools/file/file_5.24.bb +++ b/meta/recipes-devtools/file/file_5.24.bb | |||
@@ -8,12 +8,13 @@ SECTION = "console/utils" | |||
8 | LICENSE = "BSD" | 8 | LICENSE = "BSD" |
9 | LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=6a7382872edb68d33e1a9398b6e03188" | 9 | LIC_FILES_CHKSUM = "file://COPYING;beginline=2;md5=6a7382872edb68d33e1a9398b6e03188" |
10 | 10 | ||
11 | DEPENDS = "zlib file-native" | 11 | DEPENDS = "zlib file-replacement-native" |
12 | DEPENDS_class-native = "zlib-native" | 12 | DEPENDS_class-native = "zlib-native" |
13 | 13 | ||
14 | SRC_URI = "git://github.com/file/file.git \ | 14 | SRC_URI = "git://github.com/file/file.git \ |
15 | file://debian-742262.patch \ | 15 | file://debian-742262.patch \ |
16 | file://0001-Add-P-prompt-into-Usage-info.patch \ | 16 | file://0001-Add-P-prompt-into-Usage-info.patch \ |
17 | file://host-file.patch \ | ||
17 | " | 18 | " |
18 | 19 | ||
19 | SRCREV = "3c0874be4d3232d672b20f513451a39cfd7c585a" | 20 | SRCREV = "3c0874be4d3232d672b20f513451a39cfd7c585a" |
@@ -21,6 +22,9 @@ S = "${WORKDIR}/git" | |||
21 | 22 | ||
22 | inherit autotools | 23 | inherit autotools |
23 | 24 | ||
25 | EXTRA_OEMAKE_append_class-target = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file" | ||
26 | EXTRA_OEMAKE_append_class-nativesdk = "-e FILE_COMPILE=${STAGING_BINDIR_NATIVE}/file-native/file" | ||
27 | |||
24 | FILES_${PN} += "${datadir}/misc/*.mgc" | 28 | FILES_${PN} += "${datadir}/misc/*.mgc" |
25 | 29 | ||
26 | do_install_append_class-native() { | 30 | do_install_append_class-native() { |
@@ -34,3 +38,7 @@ do_install_append_class-nativesdk() { | |||
34 | } | 38 | } |
35 | 39 | ||
36 | BBCLASSEXTEND = "native nativesdk" | 40 | BBCLASSEXTEND = "native nativesdk" |
41 | PROVIDES_append_class-native = " file-replacement-native" | ||
42 | # Don't use NATIVE_PACKAGE_PATH_SUFFIX as that hides libmagic from anyone who | ||
43 | # depends on file-replacement-native. | ||
44 | bindir_append_class-native = "/file-native" | ||