From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- ...shfs.c-get-inline-functions-work-with-C99.patch | 154 +++++++++++++++++++++ .../squashfs-tools/squashfs-tools/fix-compat.patch | 63 +++++++++ .../squashfs-tools-4.3-sysmacros.patch | 32 +++++ .../squashfs-tools/squashfs-tools_git.bb | 41 ++++++ 4 files changed, 290 insertions(+) create mode 100644 poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch create mode 100644 poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch create mode 100644 poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch create mode 100644 poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb (limited to 'poky/meta/recipes-devtools/squashfs-tools') diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch new file mode 100644 index 000000000..a5bab0544 --- /dev/null +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch @@ -0,0 +1,154 @@ +From ac6268e843c43286eebff2a1052182c2393cdb2e Mon Sep 17 00:00:00 2001 +From: Roy Li +Date: Mon, 14 Sep 2015 12:31:42 +0800 +Subject: [PATCH] mksquashfs.c: get inline functions work with both gnu11 and gnu89 + +Upstream-Status: Pending + +After gcc upgraded to gcc5, and if the codes is compiled without optimization(-O0), +and the below error will happen: + +| mksquashfs.o: In function `create_inode': +| git/squashfs-tools/mksquashfs.c:897: undefined reference to `get_inode_no' +| git/squashfs-tools/mksquashfs.c:960: undefined reference to `get_parent_no' +| git/squashfs-tools/mksquashfs.c:983: undefined reference to `get_parent_no' +| mksquashfs.o: In function `reader_read_process': +| git/squashfs-tools/mksquashfs.c:2132: undefined reference to `is_fragment' +| mksquashfs.o: In function `reader_read_file': +| git/squashfs-tools/mksquashfs.c:2228: undefined reference to `is_fragment' +| mksquashfs.o: In function `dir_scan': +| git/squashfs-tools/mksquashfs.c:3101: undefined reference to `create_dir_entry' + +gcc5 defaults to -std=gnu11 instead of -std=gnu89, and it requires that exactly one C +source file has the callable copy of the inline function. Consider the following +program: + + inline int + foo (void) + { + return 42; + } + + int + main (void) + { + return foo (); + } + +The program above will not link with the C99 inline semantics, because no out-of-line +function foo is generated. To fix this, either mark the function foo as static, or +add the following declaration: + static inline int foo (void); + +more information refer to: https://gcc.gnu.org/gcc-5/porting_to.html; + +but the use of "extern inline" will lead to the compilation issue if gcc is not +gcc5, as the commit in oe-core d0af30c92fde [alsa-lib: Change function type to +"static __inline__"] + "extern __inline__ function()" is the inlined version that + can be used in this compilation unit, but there will be another + definition of this function somewhere, so compiler will not emit + any code for the function body. This causes problem in -O0, + where functions are never inlined, the function call is preserved, + but linker can't find the symbol, thus the error happens. + +so replace "inline" with "static inline" to make it work with both gnu11 and gnu89 + +Signed-off-by: Roy Li +--- + squashfs-tools/mksquashfs.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c +index d221c35..6bba1d2 100644 +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -828,13 +828,13 @@ char *subpathname(struct dir_ent *dir_ent) + } + + +-inline unsigned int get_inode_no(struct inode_info *inode) ++static inline unsigned int get_inode_no(struct inode_info *inode) + { + return inode->inode_number; + } + + +-inline unsigned int get_parent_no(struct dir_info *dir) ++static inline unsigned int get_parent_no(struct dir_info *dir) + { + return dir->depth ? get_inode_no(dir->dir_ent->inode) : inode_no; + } +@@ -2027,7 +2027,7 @@ struct file_info *duplicate(long long file_size, long long bytes, + } + + +-inline int is_fragment(struct inode_info *inode) ++static inline int is_fragment(struct inode_info *inode) + { + off_t file_size = inode->buf.st_size; + +@@ -2996,13 +2996,13 @@ struct inode_info *lookup_inode2(struct stat *buf, int pseudo, int id) + } + + +-inline struct inode_info *lookup_inode(struct stat *buf) ++static inline struct inode_info *lookup_inode(struct stat *buf) + { + return lookup_inode2(buf, 0, 0); + } + + +-inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) ++static inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) + { + if (inode->inode_number == 0) { + inode->inode_number = use_this ? : inode_no ++; +@@ -3013,7 +3013,7 @@ inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) + } + + +-inline struct dir_ent *create_dir_entry(char *name, char *source_name, ++static inline struct dir_ent *create_dir_entry(char *name, char *source_name, + char *nonstandard_pathname, struct dir_info *dir) + { + struct dir_ent *dir_ent = malloc(sizeof(struct dir_ent)); +@@ -3031,7 +3031,7 @@ inline struct dir_ent *create_dir_entry(char *name, char *source_name, + } + + +-inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, ++static inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, + struct inode_info *inode_info) + { + struct dir_info *dir = dir_ent->our_dir; +@@ -3047,7 +3047,7 @@ inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, + } + + +-inline void add_dir_entry2(char *name, char *source_name, ++static inline void add_dir_entry2(char *name, char *source_name, + char *nonstandard_pathname, struct dir_info *sub_dir, + struct inode_info *inode_info, struct dir_info *dir) + { +@@ -3059,7 +3059,7 @@ inline void add_dir_entry2(char *name, char *source_name, + } + + +-inline void free_dir_entry(struct dir_ent *dir_ent) ++static inline void free_dir_entry(struct dir_ent *dir_ent) + { + if(dir_ent->name) + free(dir_ent->name); +@@ -3080,7 +3080,7 @@ inline void free_dir_entry(struct dir_ent *dir_ent) + } + + +-inline void add_excluded(struct dir_info *dir) ++static inline void add_excluded(struct dir_info *dir) + { + dir->excluded ++; + } +-- +1.9.1 + diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch new file mode 100644 index 000000000..0ce7b4e8c --- /dev/null +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch @@ -0,0 +1,63 @@ +Define FNM_EXTMATCH if not defined its glibc specific define +include missing sys/stat.h for stat* function declarations + +Upstream-Status: Pending +Signed-off-by: Khem Raj + +Index: squashfs-tools/action.c +=================================================================== +--- squashfs-tools.orig/action.c ++++ squashfs-tools/action.c +@@ -44,6 +44,10 @@ + #include "action.h" + #include "error.h" + ++#if !defined(FNM_EXTMATCH) ++#define FNM_EXTMATCH 0 ++#endif ++ + /* + * code to parse actions + */ +Index: squashfs-tools/mksquashfs.c +=================================================================== +--- squashfs-tools.orig/mksquashfs.c ++++ squashfs-tools/mksquashfs.c +@@ -1261,6 +1261,10 @@ void write_dir(squashfs_inode *inode, st + dir_size + 3, directory_block, directory_offset, NULL, NULL, + dir, 0); + ++#if !defined(FNM_EXTMATCH) ++#define FNM_EXTMATCH 0 ++#endif ++ + #ifdef SQUASHFS_TRACE + { + unsigned char *dirp; +Index: squashfs-tools/pseudo.c +=================================================================== +--- squashfs-tools.orig/pseudo.c ++++ squashfs-tools/pseudo.c +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + #include + + #include "pseudo.h" +Index: squashfs-tools/unsquashfs.c +=================================================================== +--- squashfs-tools.orig/unsquashfs.c ++++ squashfs-tools/unsquashfs.c +@@ -42,6 +42,10 @@ + #include + #endif + ++#ifndef FNM_EXTMATCH ++#define FNM_EXTMATCH 0 ++#endif ++ + struct cache *fragment_cache, *data_cache; + struct queue *to_reader, *to_inflate, *to_writer, *from_writer; + pthread_t *thread, *inflator_thread; diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch new file mode 100644 index 000000000..39521a7d8 --- /dev/null +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch @@ -0,0 +1,32 @@ +From https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-fs/squashfs-tools/files/squashfs-tools-4.3-sysmacros.patch + +Signed-off-by: Martin Jansa + +Upstream-Status: Pending + + +sys/types.h might not always include sys/sysmacros.h for major/minor/makedev + +--- a/squashfs-tools/mksquashfs.c ++++ b/squashfs-tools/mksquashfs.c +@@ -59,6 +59,7 @@ + #else + #include + #include ++#include + #endif + + #include "squashfs_fs.h" +--- a/squashfs-tools/unsquashfs.c ++++ b/squashfs-tools/unsquashfs.c +@@ -38,6 +38,10 @@ + #include + #include + ++#ifdef linux ++#include ++#endif ++ + struct cache *fragment_cache, *data_cache; + struct queue *to_reader, *to_inflate, *to_writer, *from_writer; + pthread_t *thread, *inflator_thread; diff --git a/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb new file mode 100644 index 000000000..a8baca51e --- /dev/null +++ b/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb @@ -0,0 +1,41 @@ +# Note, we can probably remove the lzma option as it has be replaced with xz, +# and I don't think the kernel supports it any more. +SUMMARY = "Tools for manipulating SquashFS filesystems" +SECTION = "base" +LICENSE = "GPL-2 & PD" +LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ + file://../../7zC.txt;beginline=12;endline=16;md5=2056cd6d919ebc3807602143c7449a7c \ +" +DEPENDS = "attr zlib xz lzo lz4" + +PV = "4.3+gitr${SRCPV}" +SRCREV = "9c1db6d13a51a2e009f0027ef336ce03624eac0d" +SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \ + http://downloads.sourceforge.net/sevenzip/lzma465.tar.bz2;name=lzma \ + file://0001-mksquashfs.c-get-inline-functions-work-with-C99.patch;striplevel=2 \ + file://squashfs-tools-4.3-sysmacros.patch;striplevel=2 \ + file://fix-compat.patch \ +" +UPSTREAM_CHECK_COMMITS = "1" +SRC_URI[lzma.md5sum] = "29d5ffd03a5a3e51aef6a74e9eafb759" +SRC_URI[lzma.sha256sum] = "c935fd04dd8e0e8c688a3078f3675d699679a90be81c12686837e0880aa0fa1e" + +S = "${WORKDIR}/git/squashfs-tools" + +# EXTRA_OEMAKE is typically: -e MAKEFLAGS= +# the -e causes problems as CFLAGS is modified in the Makefile, so +# we redefine EXTRA_OEMAKE here +EXTRA_OEMAKE = "MAKEFLAGS= LZMA_SUPPORT=1 LZMA_DIR=../.. XZ_SUPPORT=1 LZO_SUPPORT=1 LZ4_SUPPORT=1" + +do_compile() { + oe_runmake mksquashfs unsquashfs +} +do_install () { + install -d ${D}${sbindir} + install -m 0755 mksquashfs ${D}${sbindir}/ + install -m 0755 unsquashfs ${D}${sbindir}/ +} + +ARM_INSTRUCTION_SET = "arm" + +BBCLASSEXTEND = "native nativesdk" -- cgit v1.2.3