From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Seiderer Date: Tue, 25 Sep 2018 22:21:04 +0200 Subject: [Buildroot] [PATCH v1] e2fsprogs: fix musl compile (__GNUC_PREREQ related) Message-ID: <20180925202104.19603-1-ps.report@gmx.net> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Add void-linux provided patch to use __GNUC_PREREQ macro only in case it is defined (patch taken from [1]). Fixes [2]: In file included from ../../lib/ext2fs/ext2fs.h:97:0, from feature.c:20: ../../lib/ext2fs/hashmap.h:20:19: error: missing binary operator before token "(" #if __GNUC_PREREQ (4, 8) ^ ../../lib/ext2fs/hashmap.h:25:19: error: missing binary operator before token "(" #if __GNUC_PREREQ (4, 8) ^ Problem already upstream reported by Baruch Siach (see [3]). [1] https://raw.githubusercontent.com/void-linux/void-packages/1f3b51493031cc0309009804475e3db572fc89ad/srcpkgs/e2fsprogs/patches/fix-glibcism.patch [2] http://autobuild.buildroot.net/results/e49d9333086ed714fa193b79b49c53e9cc511fec [3] https://www.spinics.net/lists/linux-ext4/msg62290.html Signed-off-by: Peter Seiderer --- ...x-musl-compile-__GNUC_PREREQ-related.patch | 306 ++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 package/e2fsprogs/0001-Fix-musl-compile-__GNUC_PREREQ-related.patch diff --git a/package/e2fsprogs/0001-Fix-musl-compile-__GNUC_PREREQ-related.patch b/package/e2fsprogs/0001-Fix-musl-compile-__GNUC_PREREQ-related.patch new file mode 100644 index 0000000000..7027347bc6 --- /dev/null +++ b/package/e2fsprogs/0001-Fix-musl-compile-__GNUC_PREREQ-related.patch @@ -0,0 +1,306 @@ +From 2b826d09c0c0033f52d47c477ae43655f3ae0fa9 Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Tue, 25 Sep 2018 21:31:16 +0200 +Subject: [PATCH] Fix musl compile (__GNUC_PREREQ related) + +Use __GNUC_PREREQ only if defined, patch taken frrom [1]. + +[1] https://raw.githubusercontent.com/void-linux/void-packages/1f3b51493031cc0309009804475e3db572fc89ad/srcpkgs/e2fsprogs/patches/fix-glibcism.patch + +Signed-off-by: Peter Seiderer +--- + debugfs/set_fields.c | 5 ++++- + e2fsck/problem.c | 4 ++++ + lib/ext2fs/ext4_acl.h | 4 ++++ + lib/ext2fs/fiemap.h | 4 ++++ + lib/ext2fs/hashmap.h | 4 ++++ + lib/ext2fs/mmp.c | 4 ++++ + lib/ext2fs/unix_io.c | 4 ++++ + lib/uuid/gen_uuid.c | 4 ++++ + misc/e2undo.c | 4 ++++ + misc/filefrag.c | 4 ++++ + misc/fuse2fs.c | 4 ++++ + 11 files changed, 44 insertions(+), 1 deletion(-) + +diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c +index e1e23a5..834a19b 100644 +--- a/debugfs/set_fields.c ++++ b/debugfs/set_fields.c +@@ -74,11 +74,12 @@ static errcode_t parse_bmap(struct field_set_info *info, char *field, char *arg) + static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *arg); + static errcode_t parse_mmp_clear(struct field_set_info *info, char *field, + char *arg); +- ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wmissing-field-initializers" + #endif ++#endif + + static struct field_set_info super_fields[] = { + { "inodes_count", &set_sb.s_inodes_count, NULL, 4, parse_uint }, +@@ -291,9 +292,11 @@ static struct field_set_info mmp_fields[] = { + { "checksum", &set_mmp.mmp_checksum, NULL, 4, parse_uint }, + { 0, 0, 0, 0 } + }; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic pop + #endif ++#endif + + #ifdef UNITTEST + +diff --git a/e2fsck/problem.c b/e2fsck/problem.c +index 0f60396..68eb79f 100644 +--- a/e2fsck/problem.c ++++ b/e2fsck/problem.c +@@ -99,10 +99,12 @@ static const char *preen_msg[] = { + "", /* 20 */ + }; + ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wmissing-field-initializers" + #endif ++#endif + + static struct e2fsck_problem problem_table[] = { + +@@ -2094,9 +2096,11 @@ static struct latch_descr pr_latch_info[] = { + { PR_LATCH_OPTIMIZE_EXT, PR_1E_OPTIMIZE_EXT_HEADER, PR_1E_OPTIMIZE_EXT_END }, + { -1, 0, 0 }, + }; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic pop + #endif ++#endif + + static struct e2fsck_problem *find_problem(problem_t code) + { +diff --git a/lib/ext2fs/ext4_acl.h b/lib/ext2fs/ext4_acl.h +index 8d4d974..c1a2801 100644 +--- a/lib/ext2fs/ext4_acl.h ++++ b/lib/ext2fs/ext4_acl.h +@@ -50,13 +50,17 @@ typedef struct { + + typedef struct { + __le32 a_version; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" ++#endif + #endif + posix_acl_xattr_entry a_entries[0]; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic pop + #endif ++#endif + } posix_acl_xattr_header; + +diff --git a/lib/ext2fs/fiemap.h b/lib/ext2fs/fiemap.h +index 0d1072a..76860ac 100644 +--- a/lib/ext2fs/fiemap.h ++++ b/lib/ext2fs/fiemap.h +@@ -31,14 +31,18 @@ struct fiemap { + __u32 fm_mapped_extents;/* number of extents that were mapped (out) */ + __u32 fm_extent_count; /* size of fm_extents array (in) */ + __u32 fm_reserved; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" ++#endif + #endif + struct fiemap_extent fm_extents[0]; /* array of mapped extents (out) */ ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic pop + #endif ++#endif + }; + + #if defined(__linux__) && !defined(FS_IOC_FIEMAP) +diff --git a/lib/ext2fs/hashmap.h b/lib/ext2fs/hashmap.h +index 228f439..a6ba686 100644 +--- a/lib/ext2fs/hashmap.h ++++ b/lib/ext2fs/hashmap.h +@@ -17,14 +17,18 @@ struct ext2fs_hashmap { + struct ext2fs_hashmap_entry *next; + struct ext2fs_hashmap_entry *list_next; + struct ext2fs_hashmap_entry *list_prev; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" ++#endif + #endif + } *entries[0]; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic pop + #endif ++#endif + }; + + struct ext2fs_hashmap *ext2fs_hashmap_create( +diff --git a/lib/ext2fs/mmp.c b/lib/ext2fs/mmp.c +index 2da935e..f4069c2 100644 +--- a/lib/ext2fs/mmp.c ++++ b/lib/ext2fs/mmp.c +@@ -34,8 +34,10 @@ + #define O_DIRECT 0 + #endif + ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic push ++#endif + #ifndef CONFIG_MMP + #pragma GCC diagnostic ignored "-Wunused-parameter" + #endif +@@ -467,6 +469,8 @@ mmp_error: + return EXT2_ET_OP_NOT_SUPPORTED; + #endif + } ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic pop + #endif ++#endif +diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c +index 7a4c9bf..9e863a5 100644 +--- a/lib/ext2fs/unix_io.c ++++ b/lib/ext2fs/unix_io.c +@@ -1127,10 +1127,12 @@ unimplemented: + } + + /* parameters might not be used if OS doesn't support zeroout */ ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wunused-parameter" + #endif ++#endif + static errcode_t unix_zeroout(io_channel channel, unsigned long long block, + unsigned long long count) + { +@@ -1197,9 +1199,11 @@ err: + unimplemented: + return EXT2_ET_UNIMPLEMENTED; + } ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic pop + #endif ++#endif + + static struct struct_io_manager struct_unix_manager = { + .magic = EXT2_ET_MAGIC_IO_MANAGER, +diff --git a/lib/uuid/gen_uuid.c b/lib/uuid/gen_uuid.c +index 0198363..cc26ddc 100644 +--- a/lib/uuid/gen_uuid.c ++++ b/lib/uuid/gen_uuid.c +@@ -484,7 +484,9 @@ static void close_all_fds(void) + } + #endif /* defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) */ + ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) ++#endif + #pragma GCC diagnostic push + #if !defined(USE_UUIDD) || !defined(HAVE_SYS_UN_H) + #pragma GCC diagnostic ignored "-Wunused-parameter" +@@ -572,9 +574,11 @@ fail: + #endif + return -1; + } ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 6) + #pragma GCC diagnostic pop + #endif ++#endif + + void uuid__generate_time(uuid_t out, int *num) + { +diff --git a/misc/e2undo.c b/misc/e2undo.c +index 71991e0..4f5dd9f 100644 +--- a/misc/e2undo.c ++++ b/misc/e2undo.c +@@ -81,14 +81,18 @@ struct undo_key_block { + __le32 magic; /* KEYBLOCK_MAGIC number */ + __le32 crc; /* block checksum */ + __le64 reserved; /* zero */ ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" ++#endif + #endif + struct undo_key keys[0]; /* keys, which come immediately after */ ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic pop + #endif ++#endif + }; + + struct undo_key_info { +diff --git a/misc/filefrag.c b/misc/filefrag.c +index 56f84ed..4d63ef3 100644 +--- a/misc/filefrag.c ++++ b/misc/filefrag.c +@@ -535,9 +535,11 @@ int main(int argc, char**argv) + char *end; + blocksize = strtoul(optarg, &end, 0); + if (end) { ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (7, 0) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wimplicit-fallthrough" ++#endif + #endif + switch (end[0]) { + case 'g': +@@ -555,8 +557,10 @@ int main(int argc, char**argv) + default: + break; + } ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (7, 0) + #pragma GCC diagnostic pop ++#endif + #endif + } + } else { /* Allow -b without argument for compat. Remove +diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c +index 5c73895..bf09b55 100644 +--- a/misc/fuse2fs.c ++++ b/misc/fuse2fs.c +@@ -118,14 +118,18 @@ typedef struct { + + typedef struct { + u_int32_t a_version; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wpedantic" ++#endif + #endif + acl_ea_entry a_entries[0]; ++#ifdef __GNUC_PREREQ + #if __GNUC_PREREQ (4, 8) + #pragma GCC diagnostic pop + #endif ++#endif + } acl_ea_header; + + static inline size_t acl_ea_size(int count) +-- +2.19.0 + -- 2.19.0