[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#897061: libuv1: FTBFS on hurd-i386: PATH_MAX undefined (and kfreebsd as well)



Package: libuv1
Version: 1.18.0-3
Severity: important
Tags: patch

Hello,

libuv1 currently FTBFS on hurd-i386 because it unconditionally uses
PATH_MAX. The attached patch fixes this.

Also, the symbols file is only accurate for the Linux port, here is a
fix for that too.  Some symbols are really Linux-only in the source
code, they pose problem on kfreebsd as seen in buildd logs, so the patch
should fix the build there too.

Samuel

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'stable-debug'), (500, 'oldoldstable'), (500, 'buildd-unstable'), (500, 'unstable'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental-debug'), (1, 'buildd-experimental'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.16.0 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libuv1 depends on:
ii  libc6  2.27-3

libuv1 recommends no packages.

libuv1 suggests no packages.

-- no debconf information

-- 
Samuel
<d> bah à défaut de ligne TGV, ils ont un GR
 -+- #ens-mim - comment ça, paumé ?! -+-
Index: libuv1-1.18.0/src/unix/fs.c
===================================================================
--- libuv1-1.18.0.orig/src/unix/fs.c
+++ libuv1-1.18.0/src/unix/fs.c
@@ -436,8 +436,14 @@ static ssize_t uv__fs_pathmax_size(const
 static ssize_t uv__fs_readlink(uv_fs_t* req) {
   ssize_t len;
   char* buf;
+  struct stat st;
+  int ret;
 
-  len = uv__fs_pathmax_size(req->path);
+  ret = lstat(req->path, &st);
+  if (ret != 0) {
+    return -1;
+  }
+  len = st.st_size;
   buf = uv__malloc(len + 1);
 
   if (buf == NULL) {
@@ -451,7 +457,6 @@ static ssize_t uv__fs_readlink(uv_fs_t*
   len = readlink(req->path, buf, len);
 #endif
 
-
   if (len == -1) {
     uv__free(buf);
     return -1;
@@ -464,9 +469,16 @@ static ssize_t uv__fs_readlink(uv_fs_t*
 }
 
 static ssize_t uv__fs_realpath(uv_fs_t* req) {
-  ssize_t len;
   char* buf;
 
+#if _POSIX_VERSION >= 200809L
+  buf = realpath(req->path, NULL);
+  if (buf == NULL) {
+    return -1;
+  }
+#else
+  ssize_t len;
+
   len = uv__fs_pathmax_size(req->path);
   buf = uv__malloc(len + 1);
 
@@ -479,6 +491,7 @@ static ssize_t uv__fs_realpath(uv_fs_t*
     uv__free(buf);
     return -1;
   }
+#endif
 
   req->ptr = buf;
 
--- debian/libuv1.symbols.orig	2018-04-27 19:23:52.000000000 +0000
+++ debian/libuv1.symbols	2018-04-27 19:37:32.000000000 +0000
@@ -1,5 +1,5 @@
 libuv.so.1 libuv1 #MINVER#
- uv__accept4@Base 1.11.0
+ (arch=linux-any)uv__accept4@Base 1.11.0
  uv__accept@Base 1.11.0
  uv__async_close@Base 1.11.0
  uv__async_fork@Base 1.18.0
@@ -12,37 +12,37 @@
  uv__close_nocheckstdio@Base 1.11.0
  uv__count_bufs@Base 1.11.0
  uv__dup2_cloexec@Base 1.11.0
- uv__dup3@Base 1.11.0
+ (arch=linux-any)uv__dup3@Base 1.11.0
  uv__dup@Base 1.11.0
- uv__epoll_create1@Base 1.11.0
- uv__epoll_create@Base 1.11.0
- uv__epoll_ctl@Base 1.11.0
- uv__epoll_pwait@Base 1.11.0
- uv__epoll_wait@Base 1.11.0
- uv__eventfd2@Base 1.11.0
- uv__eventfd@Base 1.11.0
+ (arch=linux-any)uv__epoll_create1@Base 1.11.0
+ (arch=linux-any)uv__epoll_create@Base 1.11.0
+ (arch=linux-any)uv__epoll_ctl@Base 1.11.0
+ (arch=linux-any)uv__epoll_pwait@Base 1.11.0
+ (arch=linux-any)uv__epoll_wait@Base 1.11.0
+ (arch=linux-any)uv__eventfd2@Base 1.11.0
+ (arch=linux-any)uv__eventfd@Base 1.11.0
  uv__free@Base 1.11.0
- uv__fs_event_close@Base 1.11.0
+ (arch=!hurd-any)uv__fs_event_close@Base 1.11.0
  uv__fs_poll_close@Base 1.11.0
  uv__fs_scandir_cleanup@Base 1.11.0
  uv__getaddrinfo_translate_error@Base 1.11.0
  uv__getiovmax@Base 1.11.0
  uv__getpwuid_r@Base 1.11.0
  uv__handle_type@Base 1.11.0
- uv__hrtime@Base 1.11.0
+ (arch=!hurd-any)uv__hrtime@Base 1.11.0
  uv__idle_close@Base 1.11.0
- uv__inotify_add_watch@Base 1.11.0
- uv__inotify_fork@Base 1.18.0
- uv__inotify_init1@Base 1.11.0
- uv__inotify_init@Base 1.11.0
- uv__inotify_rm_watch@Base 1.11.0
+ (arch=linux-any)uv__inotify_add_watch@Base 1.11.0
+ (arch=linux-any)uv__inotify_fork@Base 1.18.0
+ (arch=linux-any)uv__inotify_init1@Base 1.11.0
+ (arch=linux-any)uv__inotify_init@Base 1.11.0
+ (arch=linux-any)uv__inotify_rm_watch@Base 1.11.0
  uv__io_active@Base 1.11.0
- uv__io_check_fd@Base 1.11.0
+ (arch=!hurd-any)uv__io_check_fd@Base 1.11.0
  uv__io_close@Base 1.11.0
  uv__io_feed@Base 1.11.0
- uv__io_fork@Base 1.18.0
+ (arch=!hurd-any)uv__io_fork@Base 1.18.0
  uv__io_init@Base 1.11.0
- uv__io_poll@Base 1.11.0
+ (arch=!hurd-any)uv__io_poll@Base 1.11.0
  uv__io_start@Base 1.11.0
  uv__io_stop@Base 1.11.0
  uv__loop_close@Base 1.11.0
@@ -56,26 +56,26 @@
  uv__nonblock_ioctl@Base 1.11.0
  uv__open_cloexec@Base 1.11.0
  uv__open_file@Base 1.11.0
- uv__pipe2@Base 1.11.0
+ (arch=linux-any)uv__pipe2@Base 1.11.0
  uv__pipe_close@Base 1.11.0
- uv__platform_invalidate_fd@Base 1.11.0
- uv__platform_loop_delete@Base 1.11.0
- uv__platform_loop_init@Base 1.11.0
+ (arch=!hurd-any)uv__platform_invalidate_fd@Base 1.11.0
+ (arch=!hurd-any)uv__platform_loop_delete@Base 1.11.0
+ (arch=!hurd-any)uv__platform_loop_init@Base 1.11.0
  uv__poll_close@Base 1.11.0
- uv__preadv@Base 1.11.0
+ (arch=linux-any)uv__preadv@Base 1.11.0
  uv__prepare_close@Base 1.11.0
  uv__process_close@Base 1.11.0
- uv__pwritev@Base 1.11.0
+ (arch=linux-any)uv__pwritev@Base 1.11.0
  uv__realloc@Base 1.11.0
- uv__recvmmsg@Base 1.11.0
+ (arch=linux-any)uv__recvmmsg@Base 1.11.0
  uv__recvmsg@Base 1.11.0
  uv__run_check@Base 1.11.0
  uv__run_idle@Base 1.11.0
  uv__run_prepare@Base 1.11.0
  uv__run_timers@Base 1.11.0
- uv__sendmmsg@Base 1.11.0
+ (arch=linux-any)uv__sendmmsg@Base 1.11.0
  uv__server_io@Base 1.11.0
- uv__set_process_title@Base 1.11.0
+ (arch=!hurd-any !kfreebsd-any)uv__set_process_title@Base 1.11.0
  uv__signal_close@Base 1.11.0
  uv__signal_global_once_init@Base 1.11.0
  uv__signal_loop_cleanup@Base 1.11.0
@@ -102,7 +102,7 @@
  uv__udp_recv_stop@Base 1.11.0
  uv__udp_send@Base 1.11.0
  uv__udp_try_send@Base 1.11.0
- uv__utimesat@Base 1.11.0
+ (arch=linux-any)uv__utimesat@Base 1.11.0
  uv__work_done@Base 1.11.0
  uv__work_submit@Base 1.11.0
  uv_accept@Base 1.4.2

Reply to: