From 300defd71205bf350a6e956451e0cc87c4e92902 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 9 Jan 2016 20:23:49 -0800 Subject: dosfstools: Correct cross-compile CFLAGS and fix build with musl enable largefile support if its in DISTRO_FEATURES Signed-off-by: Khem Raj --- .../0001-mkfs.fat-fix-incorrect-int-type.patch | 46 ++++++++++++++++++++++ .../dosfstools/dosfstools/largefile.patch | 19 +++++++++ .../dosfstools/dosfstools_3.0.28.bb | 7 +++- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch create mode 100644 meta/recipes-devtools/dosfstools/dosfstools/largefile.patch diff --git a/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch b/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch new file mode 100644 index 0000000000..3497ca5409 --- /dev/null +++ b/meta/recipes-devtools/dosfstools/dosfstools/0001-mkfs.fat-fix-incorrect-int-type.patch @@ -0,0 +1,46 @@ +From 3b95786af13e28157d889bd90a384ee255f2d91d Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 16 Aug 2015 15:55:43 +0200 +Subject: [PATCH] mkfs.fat: fix incorrect int type + +u_int32_t is not a stanard type, while uint32_t is. This fixes builds +with the musl C library, which only defines so-called "clean" headers; +build failures are like (back-quotes and elision manually added for +readability): + + http://autobuild.buildroot.org/results/a09/a0923d7f6d4dbae02eba4c5024bbdae3a52aa85a/build-end.log + + /home/peko/autobuild/instance-1/output/host/usr/bin/x86_64-linux-gcc -D_LARGEFILE_SOURCE \ + -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -D_GNU_SOURCE -D_LARGEFILE_SOURCE \ + -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -c -o mkfs.fat.o src/mkfs.fat.c + src/mkfs.fat.c: In function 'main': + src/mkfs.fat.c:1415:18: error: 'u_int32_t' undeclared (first use in this function) + volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); [...] + ^ + src/mkfs.fat.c:1415:18: note: each undeclared identifier is reported only once for each + function it appears in + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Andreas Bombe +--- +Upstream-Status: Backport + + src/mkfs.fat.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/mkfs.fat.c b/src/mkfs.fat.c +index b38d116..dddbe24 100644 +--- a/src/mkfs.fat.c ++++ b/src/mkfs.fat.c +@@ -1412,7 +1412,7 @@ int main(int argc, char **argv) + + gettimeofday(&create_timeval, NULL); + create_time = create_timeval.tv_sec; +- volume_id = (u_int32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); /* Default volume ID = creation time, fudged for more uniqueness */ ++ volume_id = (uint32_t) ((create_timeval.tv_sec << 20) | create_timeval.tv_usec); /* Default volume ID = creation time, fudged for more uniqueness */ + check_atari(); + + printf("mkfs.fat " VERSION " (" VERSION_DATE ")\n"); +-- +2.7.0 + diff --git a/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch b/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch new file mode 100644 index 0000000000..7f7d8359df --- /dev/null +++ b/meta/recipes-devtools/dosfstools/dosfstools/largefile.patch @@ -0,0 +1,19 @@ +defer setting largefile flags to build makery +in a cross build we can not do runtime config tests + +Signed-off-by: Khem Raj +Upstream-Status: Inappropriate[Cross compile Specific] +Index: dosfstools-3.0.28/Makefile +=================================================================== +--- dosfstools-3.0.28.orig/Makefile ++++ dosfstools-3.0.28/Makefile +@@ -27,8 +27,7 @@ SBINDIR = $(PREFIX)/sbin + DOCDIR = $(PREFIX)/share/doc + MANDIR = $(PREFIX)/share/man + +-#OPTFLAGS = -O2 -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +-OPTFLAGS = -O2 -fomit-frame-pointer -D_GNU_SOURCE $(shell getconf LFS_CFLAGS) ++OPTFLAGS = -O2 -fomit-frame-pointer + #WARNFLAGS = -Wall -pedantic -std=c99 + WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings + DEBUGFLAGS = -g diff --git a/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb b/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb index addcbf607c..6fc3e41dfe 100644 --- a/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb +++ b/meta/recipes-devtools/dosfstools/dosfstools_3.0.28.bb @@ -9,12 +9,17 @@ SECTION = "base" LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" -SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v3.0.28/dosfstools-3.0.28.tar.xz" +SRC_URI = "https://github.com/dosfstools/dosfstools/releases/download/v3.0.28/dosfstools-3.0.28.tar.xz \ + file://largefile.patch \ + file://0001-mkfs.fat-fix-incorrect-int-type.patch \ + " SRC_URI[md5sum] = "6a047a6c65186b9ebb1853709adb36db" SRC_URI[sha256sum] = "ee95913044ecf2719b63ea11212917649709a6e53209a72d622135aaa8517ee2" UPSTREAM_CHECK_URI = "https://github.com/dosfstools/dosfstools/releases" +CFLAGS += "-D_GNU_SOURCE ${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', '', d)}" + FILES_${PN} = "${base_sbindir}" FILES_${PN}-doc = "${mandir} ${docdir}" -- cgit 1.2.3-korg