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

Bug#646372: ocaml: Lacks support for ENOTSUP



Package: ocaml
Version: 3.12.0-7
Severity: normal
Tags: upstream patch

Hello,

http://caml.inria.fr/mantis/view.php?id=5382

“
On some systems such as Solaris or GNU/Hurd, ENOTSUP and EOPNOSUPP do
not have the same value, but ocaml code only deals with EOPNOSUPP, and
thus ocaml applications only handle the EOPNOSUPP case. The attached
patch fixes it by making ocaml convert ENOTSUP errors into EOPNOSUPP
errors.
”

This patch fixes omake build on hurd-i386.

Samuel

-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.0.4 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages ocaml depends on:
ii  libx11-dev                      2:1.4.4-2
ii  ocaml-base [ocaml-base-3.12.0]  3.12.0-7 
ii  ocaml-nox [ocaml-nox-3.12.0]    3.12.0-7 

ocaml recommends no packages.

Versions of packages ocaml suggests:
ii  tcl8.5-dev  8.5.10-1
ii  tk8.5-dev   8.5.10-1

-- no debconf information

-- 
Samuel Thibault <samuel.thibault@fnac.net>
 RM> Mauvais OS, changer d'OS (c)(r)(tm)
 J'ai windows 98 et comment faire pour changer l'os de windows 98?
 Dans ajout et suppression du programme et il ne parle pas d'os.
 -+- DN in : GNU -+- L'O.S. est las, hélas, c'est là qu'est l'os -+-
--- ./otherlibs/unix/unixsupport.c.original	2011-10-23 17:57:40.000000000 +0200
+++ ./otherlibs/unix/unixsupport.c	2011-10-23 18:09:09.000000000 +0200
@@ -165,7 +165,11 @@
 #define ESOCKTNOSUPPORT (-1)
 #endif
 #ifndef EOPNOTSUPP
-#define EOPNOTSUPP (-1)
+#  ifdef ENOTSUP
+#    define EOPNOTSUPP ENOTSUP
+#  else
+#    define EOPNOTSUPP (-1)
+#  endif
 #endif
 #ifndef EPFNOSUPPORT
 #define EPFNOSUPPORT (-1)
@@ -252,6 +256,11 @@
   int errconstr;
   value err;
 
+#if defined(ENOTSUP) && (EOPNOTSUPP != ENOTSUP)
+  if (errcode == ENOTSUP)
+    errcode = EOPNOTSUPP;
+#endif
+
   errconstr =
       cst_to_constr(errcode, error_table, sizeof(error_table)/sizeof(int), -1);
   if (errconstr == Val_int(-1)) {

Reply to: