Message ID | 1455920889-14777-1-git-send-email-romain.naour@gmail.com |
---|---|
State | Rejected |
Headers | show |
On 02/19/16 23:28, Romain Naour wrote: > This patch is not needed anymore since the uClibc support > has been removed from Buildroot. > This patch was needed for uClibc <= 0.9.33 support. > > Signed-off-by: Romain Naour <romain.naour@gmail.com> > --- > Build tested with 2014R1 bfin toolchain. But that toolchain is using uClibc 0.9.33, no? So how come it still works then? Regards, Arnout > The arc-1015.12 toolchain shouldn't trigger the build issue > since it's based on uClibc-snapshot (upstream HEAD) > --- > ...fine-mkostemp-for-older-version-of-uClibc.patch | 50 ---------------------- > 1 file changed, 50 deletions(-) > delete mode 100644 package/util-linux/0003-c.h-define-mkostemp-for-older-version-of-uClibc.patch [snip]
Dear Arnout Vandecappelle, On Sun, 21 Feb 2016 00:31:39 +0100, Arnout Vandecappelle wrote: > On 02/19/16 23:28, Romain Naour wrote: > > This patch is not needed anymore since the uClibc support > > has been removed from Buildroot. > > This patch was needed for uClibc <= 0.9.33 support. > > > > Signed-off-by: Romain Naour <romain.naour@gmail.com> > > --- > > Build tested with 2014R1 bfin toolchain. > > But that toolchain is using uClibc 0.9.33, no? So how come it still works then? mkostemp is used in three places: lib/fileutils.c: fd = mkostemp(localtmp, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); libblkid/src/save.c: fd = mkostemp(tmp, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); libmount/src/utils.c: fd = mkostemp(n, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); Both libblkid and libmount are "depends on BR2_USE_MMU", so they are not built on Blackfin. However, I don't see how it can work with lib/fileutils. And indeed, at build time I get: CC lib/libcommon_la-match.lo lib/fileutils.c: In function ‘xmkstemp’: lib/fileutils.c:36: warning: implicit declaration of function ‘mkostemp’ lib/fileutils.c:36: warning: nested extern declaration of ‘mkostemp’ And indeed: $ ./output/host/usr/bin/bfin-linux-uclibc-gcc -o foo foo.c -lsmartcols /home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-linux-uclibc/sysroot/usr/lib/libsmartcols.so: undefined reference to `_fork' /home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-linux-uclibc/sysroot/usr/lib/libsmartcols.so: undefined reference to `_mkostemp' collect2: ld returned 1 exit status Though it looks like this smartcols library also uses fork(), so it anyway cannot work properly. Romain, it seems like your patch is not completely correct, so I've marked it as Rejected. Best regards, Thomas
Hi Thomas, Arnout, Le 21/02/2016 15:10, Thomas Petazzoni a écrit : > Dear Arnout Vandecappelle, > > On Sun, 21 Feb 2016 00:31:39 +0100, Arnout Vandecappelle wrote: >> On 02/19/16 23:28, Romain Naour wrote: >>> This patch is not needed anymore since the uClibc support >>> has been removed from Buildroot. >>> This patch was needed for uClibc <= 0.9.33 support. >>> >>> Signed-off-by: Romain Naour <romain.naour@gmail.com> >>> --- >>> Build tested with 2014R1 bfin toolchain. >> >> But that toolchain is using uClibc 0.9.33, no? So how come it still works then? > > mkostemp is used in three places: > > lib/fileutils.c: fd = mkostemp(localtmp, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); > libblkid/src/save.c: fd = mkostemp(tmp, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); > libmount/src/utils.c: fd = mkostemp(n, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); > > Both libblkid and libmount are "depends on BR2_USE_MMU", so they are > not built on Blackfin. > > However, I don't see how it can work with lib/fileutils. And indeed, at > build time I get: > > CC lib/libcommon_la-match.lo > lib/fileutils.c: In function ‘xmkstemp’: > lib/fileutils.c:36: warning: implicit declaration of function ‘mkostemp’ > lib/fileutils.c:36: warning: nested extern declaration of ‘mkostemp’ > > And indeed: > > $ ./output/host/usr/bin/bfin-linux-uclibc-gcc -o foo foo.c -lsmartcols > /home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-linux-uclibc/sysroot/usr/lib/libsmartcols.so: undefined reference to `_fork' > /home/thomas/projets/buildroot/output/host/usr/bfin-buildroot-linux-uclibc/sysroot/usr/lib/libsmartcols.so: undefined reference to `_mkostemp' > collect2: ld returned 1 exit status > > Though it looks like this smartcols library also uses fork(), so it > anyway cannot work properly. > > Romain, it seems like your patch is not completely correct, so I've > marked it as Rejected. Ok no problem, I probably didn't selected the good util-linux option... my bad. Best regards, Romain > > Best regards, > > Thomas >
Hello, On Sun, 21 Feb 2016 17:34:05 +0100, Romain Naour wrote: > > Though it looks like this smartcols library also uses fork(), so it > > anyway cannot work properly. > > > > Romain, it seems like your patch is not completely correct, so I've > > marked it as Rejected. > > Ok no problem, I probably didn't selected the good util-linux option... my bad. util-linux itself build fine. It's then if you try to link a program with libsmartcols. But on the other hand, libsmartcols uses fork(), which cannot be used on no-MMU platforms... So the fact that libsmartcols uses mkostemp() is maybe not that relevant. Best regards, Thomas
Thomas, Le 21/02/2016 18:20, Thomas Petazzoni a écrit : > Hello, > > On Sun, 21 Feb 2016 17:34:05 +0100, Romain Naour wrote: > >>> Though it looks like this smartcols library also uses fork(), so it >>> anyway cannot work properly. >>> >>> Romain, it seems like your patch is not completely correct, so I've >>> marked it as Rejected. >> >> Ok no problem, I probably didn't selected the good util-linux option... my bad. > > util-linux itself build fine. It's then if you try to link a program > with libsmartcols. > > But on the other hand, libsmartcols uses fork(), which cannot be used > on no-MMU platforms... So the fact that libsmartcols uses mkostemp() > is maybe not that relevant. So let's disable libsmartcols for no-MMU platforms and remove the patch :) Best regards, Romain > > Best regards, > > Thomas >
diff --git a/package/util-linux/0003-c.h-define-mkostemp-for-older-version-of-uClibc.patch b/package/util-linux/0003-c.h-define-mkostemp-for-older-version-of-uClibc.patch deleted file mode 100644 index 0dfe7be..0000000 --- a/package/util-linux/0003-c.h-define-mkostemp-for-older-version-of-uClibc.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 42a84250fc78bae3e885ecd1379e713663fe6487 Mon Sep 17 00:00:00 2001 -From: Romain Naour <romain.naour@openwide.fr> -Date: Sun, 6 Apr 2014 12:12:41 +0200 -Subject: [PATCH 1/1] c.h: define mkostemp for older version of uClibc - -Signed-off-by: Romain Naour <romain.naour@openwide.fr> ---- - configure.ac | 2 ++ - include/c.h | 14 ++++++++++++++ - 2 files changed, 16 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 35a1f26..a9b8d34 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -321,6 +321,8 @@ AC_CHECK_FUNCS([ \ - ]) - AC_FUNC_FSEEKO - -+AC_CHECK_FUNCS([mkostemp]) -+ - AC_CHECK_FUNCS([openat fstatat unlinkat], [have_openat=yes], [have_openat=no]) - AC_CHECK_FUNCS([ioperm iopl], [have_io=yes]) - -diff --git a/include/c.h b/include/c.h -index 4a9bf3d..1b880ed 100644 ---- a/include/c.h -+++ b/include/c.h -@@ -300,4 +300,18 @@ static inline int usleep(useconds_t usec) - # define SEEK_HOLE 4 - #endif - -+/* -+ * mkostemp() may be missing with older version of uClibc -+ */ -+#ifndef HAVE_MKOSTEMP -+static inline int mkostemp(char *template, int flags) -+{ -+ int fd; -+ fd = mkstemp(template); -+ if (flags & O_CLOEXEC && fd >= 0) -+ fcntl(fd, F_SETFD, FD_CLOEXEC); -+ return fd; -+} -+#endif -+ - #endif /* UTIL_LINUX_C_H */ --- -1.9.0 -
This patch is not needed anymore since the uClibc support has been removed from Buildroot. This patch was needed for uClibc <= 0.9.33 support. Signed-off-by: Romain Naour <romain.naour@gmail.com> --- Build tested with 2014R1 bfin toolchain. The arc-1015.12 toolchain shouldn't trigger the build issue since it's based on uClibc-snapshot (upstream HEAD) --- ...fine-mkostemp-for-older-version-of-uClibc.patch | 50 ---------------------- 1 file changed, 50 deletions(-) delete mode 100644 package/util-linux/0003-c.h-define-mkostemp-for-older-version-of-uClibc.patch