unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#36601: Patch series for guile-2.9.2 on mingw-w64
@ 2019-07-11 16:32 Hannes Müller
  2019-07-15 15:23 ` Hannes Müller
  2019-07-25 17:37 ` Thompson, David
  0 siblings, 2 replies; 3+ messages in thread
From: Hannes Müller @ 2019-07-11 16:32 UTC (permalink / raw)
  To: 36601


[-- Attachment #1.1: Type: text/plain, Size: 1320 bytes --]

Hi, 
I propose the following patch series for current guile 3 development.
With these patches applied, on i686 and x86_64 I got until

  CCLD     guile.exe
  GEN      guile-procedures.texi
Backtrace:
           0 (primitive-load-path "C:/Users/hm/Documents/msys32/…")

ERROR: In procedure primitive-load-path:
In procedure primitive-load-path: Unable to find file
"C:/Users/hm/Documents/msys32/home/hm/mingw-w64-guile-2.9.2/src/build-
i686-w64-mingw32/libguile/C:/Users/hm/Documents/msys32/home/hm/mingw-
w64-guile-2.9.2/src/build-i686-w64-mingw32/meta/guild" in load path
make[3]: *** [Makefile:4295: guile-procedures.texi] Error 1

The latest error is related to building absolute path names, which
seems not new but I do not know how to fix it.

But I was able on i686 and x86_64 to run simple guile commands with
relative path names 
GUILE_AUTO_COMPILE=0 ../meta/build-env ./.libs/guile -l
../../../../test.scm

My configuration was:
autoreconf -fi
configure \
    --prefix=${MINGW_PREFIX} \
    --build=${MINGW_CHOST} \
    --host=${MINGW_CHOST} \
    --enable-shared \
    --enable-static \
    --enable-error-on-warning=no \
    --enable-jit=no

Attached also the used draft PKGBUILD file for mingw-w64.

Thanks
Hannes

[-- Attachment #1.2: Type: text/html, Size: 1892 bytes --]

[-- Attachment #2: 0001-Get-latest-poll-module-from-gnulib-to-fix-compilatio.patch --]
[-- Type: text/x-patch, Size: 9814 bytes --]

From 5ce32fcfbeca6c4f647303f4ccf0b1e1c7688901 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20M=C3=BCller?= <h.c.f.mueller@gmx.de>
Date: Tue, 2 Jul 2019 08:25:40 +0200
Subject: [PATCH] Get latest poll module from gnulib to fix compilation error
 on mingw-w64

mainly struct pollfd definition caused compilation failure on mingw-w64
* lib/Makefile.am: update target poll.h:
* lib/poll.c:
* lib/poll.in.h:
* m4/poll.m4:
* m4/poll_h.m4: update from gnulib git
---
 lib/Makefile.am |  1 +
 lib/poll.c      | 49 ++++++++++++++++++++++++++++++++++++++-----------
 lib/poll.in.h   | 32 +++++++++++++++++++++++++++-----
 m4/poll.m4      | 26 +++++++++++++++-----------
 m4/poll_h.m4    |  6 ++++--
 5 files changed, 85 insertions(+), 29 deletions(-)

diff --git a/lib/Makefile.am b/lib/Makefile.am
index f1b83a13b..fcaabccb6 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1741,6 +1741,7 @@ poll.h: poll.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
 	      -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
 	      -e 's|@''NEXT_POLL_H''@|$(NEXT_POLL_H)|g' \
 	      -e 's/@''GNULIB_POLL''@/$(GNULIB_POLL)/g' \
+	      -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \
 	      -e 's|@''HAVE_POLL''@|$(HAVE_POLL)|g' \
 	      -e 's|@''REPLACE_POLL''@|$(REPLACE_POLL)|g' \
 	      -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
diff --git a/lib/poll.c b/lib/poll.c
index e700ac358..2b590bd42 100644
--- a/lib/poll.c
+++ b/lib/poll.c
@@ -1,22 +1,22 @@
 /* Emulation for poll(2)
    Contributed by Paolo Bonzini.
 
-   Copyright 2001-2003, 2006-2017 Free Software Foundation, Inc.
+   Copyright 2001-2003, 2006-2019 Free Software Foundation, Inc.
 
    This file is part of gnulib.
 
    This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
+   it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License along
-   with this program; if not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, see <https://www.gnu.org/licenses/>.  */
 
 /* Tell gcc not to warn about the (nfd < 0) tests, below.  */
 #if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
@@ -34,14 +34,18 @@
 #include <errno.h>
 #include <limits.h>
 
-#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+#if defined _WIN32 && ! defined __CYGWIN__
 # define WINDOWS_NATIVE
 # include <winsock2.h>
 # include <windows.h>
 # include <io.h>
 # include <stdio.h>
 # include <conio.h>
-# include "msvc-nothrow.h"
+# if GNULIB_MSVC_NOTHROW
+#  include "msvc-nothrow.h"
+# else
+#  include <io.h>
+# endif
 #else
 # include <sys/time.h>
 # include <unistd.h>
@@ -72,6 +76,29 @@
 
 #ifdef WINDOWS_NATIVE
 
+/* Do *not* use the function WSAPoll
+   <https://docs.microsoft.com/en-us/windows/desktop/api/winsock2/nf-winsock2-wsapoll>
+   because there is a bug named “Windows 8 Bugs 309411 - WSAPoll does not
+   report failed connections” that Microsoft won't fix.
+   See Daniel Stenberg: "WASPoll is broken"
+   <https://daniel.haxx.se/blog/2012/10/10/wsapoll-is-broken/>.  */
+
+/* Here we need the recv() function from Windows, that takes a SOCKET as
+   first argument, not any possible gnulib override.  */
+# undef recv
+
+/* Here we need the select() function from Windows, because we pass bit masks
+   of SOCKETs, not bit masks of FDs.  */
+# undef select
+
+/* Here we need timeval from Windows since this is what the select() function
+   from Windows requires.  */
+# undef timeval
+
+/* Avoid warnings from gcc -Wcast-function-type.  */
+# define GetProcAddress \
+   (void *) GetProcAddress
+
 static BOOL IsConsoleHandle (HANDLE h)
 {
   DWORD mode;
@@ -335,13 +362,13 @@ poll (struct pollfd *pfd, nfds_t nfd, int timeout)
   int maxfd, rc;
   nfds_t i;
 
-  if (nfd < 0)
+  if (nfd > INT_MAX)
     {
       errno = EINVAL;
       return -1;
     }
-  /* Don't check directly for NFD too large.  Any practical use of a
-     too-large NFD is caught by one of the other checks below, and
+  /* Don't check directly for NFD greater than OPEN_MAX.  Any practical use
+     of a too-large NFD is caught by one of the other checks below, and
      checking directly for getdtablesize is too much of a portability
      and/or performance and/or correctness hassle.  */
 
@@ -433,7 +460,7 @@ poll (struct pollfd *pfd, nfds_t nfd, int timeout)
   int rc = 0;
   nfds_t i;
 
-  if (nfd < 0 || timeout < -1)
+  if (nfd > INT_MAX || timeout < -1)
     {
       errno = EINVAL;
       return -1;
diff --git a/lib/poll.in.h b/lib/poll.in.h
index e9b141d8f..0b115dcb3 100644
--- a/lib/poll.in.h
+++ b/lib/poll.in.h
@@ -1,22 +1,22 @@
 /* Header for poll(2) emulation
    Contributed by Paolo Bonzini.
 
-   Copyright 2001-2003, 2007, 2009-2017 Free Software Foundation, Inc.
+   Copyright 2001-2003, 2007, 2009-2019 Free Software Foundation, Inc.
 
    This file is part of gnulib.
 
    This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU Lesser General Public License as published by
+   it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, or (at your option)
    any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU Lesser General Public License for more details.
+   GNU General Public License for more details.
 
-   You should have received a copy of the GNU Lesser General Public License along
-   with this program; if not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, see <https://www.gnu.org/licenses/>.  */
 
 #ifndef _@GUARD_PREFIX@_POLL_H
 
@@ -33,6 +33,13 @@
 #ifndef _@GUARD_PREFIX@_POLL_H
 #define _@GUARD_PREFIX@_POLL_H
 
+/* On native Windows, get the 'struct pollfd' type and the POLL* macro
+   definitions before we override them.  mingw defines them in <winsock2.h>
+   if _WIN32_WINNT >= 0x0600.  */
+#if @HAVE_WINSOCK2_H@
+# include <winsock2.h>
+#endif
+
 
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
@@ -41,6 +48,21 @@
 
 #if !@HAVE_POLL_H@
 
+# if @HAVE_WINSOCK2_H@
+/* Override the definitions from <winsock2.h>.  */
+#  undef POLLIN
+#  undef POLLPRI
+#  undef POLLOUT
+#  undef POLLERR
+#  undef POLLHUP
+#  undef POLLNVAL
+#  undef POLLRDNORM
+#  undef POLLRDBAND
+#  undef POLLWRNORM
+#  undef POLLWRBAND
+#  define pollfd rpl_pollfd
+# endif
+
 /* fake a poll(2) environment */
 # define POLLIN      0x0001      /* any readable data available   */
 # define POLLPRI     0x0002      /* OOB/Urgent readable data      */
diff --git a/m4/poll.m4 b/m4/poll.m4
index 5706ab514..354d1666b 100644
--- a/m4/poll.m4
+++ b/m4/poll.m4
@@ -1,5 +1,5 @@
-# poll.m4 serial 17
-dnl Copyright (c) 2003, 2005-2007, 2009-2017 Free Software Foundation, Inc.
+# poll.m4 serial 19
+dnl Copyright (c) 2003, 2005-2007, 2009-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -8,6 +8,7 @@ AC_DEFUN([gl_FUNC_POLL],
 [
   AC_REQUIRE([gl_POLL_H])
   AC_REQUIRE([gl_SOCKETS])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   if test $ac_cv_header_poll_h = no; then
     ac_cv_func_poll=no
     gl_cv_func_poll=no
@@ -53,16 +54,19 @@ AC_DEFUN([gl_FUNC_POLL],
 #if (defined(__APPLE__) && defined(__MACH__)) || defined(_AIX)
 This is MacOSX or AIX
 #endif
-], [gl_cv_func_poll=no], [gl_cv_func_poll=yes])])])
-  fi
-  if test $gl_cv_func_poll != yes; then
-    AC_CHECK_FUNC([poll], [ac_cv_func_poll=yes], [ac_cv_func_poll=no])
-    if test $ac_cv_func_poll = no; then
-      HAVE_POLL=0
-    else
-      REPLACE_POLL=1
-    fi
+], [gl_cv_func_poll="guessing no"], [gl_cv_func_poll="guessing yes"])])])
   fi
+  case "$gl_cv_func_poll" in
+    *yes) ;;
+    *)
+      AC_CHECK_FUNC([poll], [ac_cv_func_poll=yes], [ac_cv_func_poll=no])
+      if test $ac_cv_func_poll = no; then
+        HAVE_POLL=0
+      else
+        REPLACE_POLL=1
+      fi
+      ;;
+  esac
   if test $HAVE_POLL = 0 || test $REPLACE_POLL = 1; then
     :
   else
diff --git a/m4/poll_h.m4 b/m4/poll_h.m4
index b3d6dab5a..8f0e10528 100644
--- a/m4/poll_h.m4
+++ b/m4/poll_h.m4
@@ -1,5 +1,5 @@
-# poll_h.m4 serial 2
-dnl Copyright (C) 2010-2017 Free Software Foundation, Inc.
+# poll_h.m4 serial 3
+dnl Copyright (C) 2010-2019 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -23,6 +23,8 @@ AC_DEFUN([gl_POLL_H],
   dnl <poll.h> is always overridden, because of GNULIB_POSIXCHECK.
   gl_CHECK_NEXT_HEADERS([poll.h])
 
+  gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H
+
   dnl Check for declarations of anything we want to poison if the
   dnl corresponding gnulib module is not in use.
   gl_WARN_ON_USE_PREPARE([[#include <poll.h>]],
-- 
2.22.0


[-- Attachment #3: 0002-Fix-error-missing-netinet-tcp_h-on-mingw-w64.patch --]
[-- Type: text/x-patch, Size: 736 bytes --]

From 88729a1d3d136013419c60cb022255af6112208a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20M=C3=BCller?= <h.c.f.mueller@gmx.de>
Date: Wed, 3 Jul 2019 11:33:21 +0200
Subject: [PATCH] Fix compilation error for missing <netinet/tcp.h> on
 mingw-w64

* libguile/socket.c: exclude <netinet/tcp.h> on mingw-w64
---
 libguile/socket.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libguile/socket.c b/libguile/socket.c
index 64354f1f1..f080cb8a0 100644
--- a/libguile/socket.c
+++ b/libguile/socket.c
@@ -40,7 +40,9 @@
 #include <sys/un.h>
 #endif
 #include <netinet/in.h>
-#include <netinet/tcp.h>
+#ifndef __MINGW32__
+# include <netinet/tcp.h>
+#endif
 #include <netdb.h>
 #include <arpa/inet.h>
 
-- 
2.22.0


[-- Attachment #4: 0003-Fix-compilation-error-libguile-posix-w32_h.patch --]
[-- Type: text/x-patch, Size: 1262 bytes --]

From b44824b1b1bce957e56b0bbc1135b60834cd6842 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20M=C3=BCller?= <h.c.f.mueller@gmx.de>
Date: Fri, 5 Jul 2019 11:22:02 +0200
Subject: [PATCH] Fix compilation error libguile/posix-w32.h

* libguile/posix-w32.h: add missing headers, for x86_64 also start_child
  requires return type pid_t
---
 libguile/posix-w32.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libguile/posix-w32.h b/libguile/posix-w32.h
index 8fe4f1c65..8cf37f593 100644
--- a/libguile/posix-w32.h
+++ b/libguile/posix-w32.h
@@ -21,6 +21,11 @@
    <https://www.gnu.org/licenses/>.  */
 
 #include <string.h>
+#include <BaseTsd.h>
+#include <IntSafe.h>
+
+#include "scm.h"
+
 
 #define _UTSNAME_LENGTH 65
 #define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH
@@ -74,7 +79,7 @@ SCM_INTERNAL int uname (struct utsname * uts);
 SCM_INTERNAL int waitpid (intptr_t, int *, int);
 SCM_INTERNAL int w32_status_to_termsig (DWORD status);
 
-SCM_INTERNAL int start_child (const char *exec_file, char **argv,
+SCM_INTERNAL pid_t start_child (const char *exec_file, char **argv,
                               int reading, int c2p[2], int writing, int p2c[2],
                               int infd, int outfd, int errfd);
 
-- 
2.22.0


[-- Attachment #5: 0004-Fix-posix.c-for-mingw-w64.patch --]
[-- Type: text/x-patch, Size: 978 bytes --]

From d0fa92bc6f44c27a483521a9aa08d719763efcc5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Hannes=20M=C3=BCller?= <h.c.f.mueller@gmx.de>
Date: Thu, 11 Jul 2019 09:49:33 +0200
Subject: [PATCH] Fix posix.c for mingw-w64

Fix warning "Please include winsock2.h before windows.h" on i686
Fix link error with gethostname on x86_64
* libguile/posix.c: for mingw-w64 add #undef gethostname
  directly after unitstd.h which otherwise is
  gethostname_used_without_requesting_gnulib_module_gethostname
  on x86_64 and causes an link error
  also add #include <winsock2.h> to fix warning on i686
---
 libguile/posix.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libguile/posix.c b/libguile/posix.c
index 728b18b67..c4ed4e6b6 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -33,6 +33,11 @@
 #include <uniconv.h>
 #include <unistd.h>
 
+#ifdef __MINGW32__
+# undef gethostname
+# include <winsock2.h>
+#endif
+
 #ifdef HAVE_SCHED_H
 # include <sched.h>
 #endif
-- 
2.22.0


[-- Attachment #6: PKGBUILD --]
[-- Type: text/plain, Size: 2387 bytes --]

# Maintainer: Alexey Pavlov <alexpux@gmail.com>

_realname=guile

pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=2.9.2
pkgrel=1
pkgdesc="a portable, embeddable Scheme implementation written in C (mingw-w64)"
arch=('any')
url="https://www.gnu.org/software/guile/"
license=("GPL")
makedepends=("${MINGW_PACKAGE_PREFIX}-gcc"
    "${MINGW_PACKAGE_PREFIX}-pkg-config"
    "${MINGW_PACKAGE_PREFIX}-libtool"
    "texinfo"
    "${MINGW_PACKAGE_PREFIX}-crt"
)
depends=(
    "${MINGW_PACKAGE_PREFIX}-pdcurses"
    "${MINGW_PACKAGE_PREFIX}-gmp"
    "${MINGW_PACKAGE_PREFIX}-libunistring"
    "${MINGW_PACKAGE_PREFIX}-gc"
    "${MINGW_PACKAGE_PREFIX}-readline"
    "${MINGW_PACKAGE_PREFIX}-libffi"
    )
options=('strip' 'staticlibs')
#source=("https://ftp.gnu.org/pub/gnu/${_realname}/${_realname}-${pkgver}.tar.gz"
source=("guile-2.9.2.tar.gz"
        0001-Get-latest-poll-module-from-gnulib-to-fix-compilatio.patch
        0002-Fix-error-missing-netinet-tcp_h-on-mingw-w64.patch
        0003-Fix-compilation-error-libguile-posix-w32_h.patch
        0004-Fix-posix.c-for-mingw-w64.patch
)
sha256sums=('823dce6c89a993663dbd3eba058cb65daa7a67ef120fcf0295f6ba5682c05fef'
	    'SKIP'
	    'SKIP'
	    'SKIP'
	    'SKIP'           
            )

prepare() {
  cd "${srcdir}"/${_realname}-${pkgver}
  patch -p1 -i ${srcdir}/0001-Get-latest-poll-module-from-gnulib-to-fix-compilatio.patch
  patch -p1 -i ${srcdir}/0002-Fix-error-missing-netinet-tcp_h-on-mingw-w64.patch
  patch -p1 -i ${srcdir}/0003-Fix-compilation-error-libguile-posix-w32_h.patch
  patch -p1 -i ${srcdir}/0004-Fix-posix.c-for-mingw-w64.patch
  
  autoreconf -fi
}

build() {
  mkdir -p "${srcdir}/build-${MINGW_CHOST}"
  export lt_cv_deplibs_check_method='pass_all'
  cd "${srcdir}/build-${MINGW_CHOST}"
  "${srcdir}"/${_realname}-${pkgver}/configure \
    --prefix=${MINGW_PREFIX} \
    --build=${MINGW_CHOST} \
    --host=${MINGW_CHOST} \
    --enable-shared \
    --enable-static \
    --enable-error-on-warning=no \
    --enable-jit=no
#    --without-threads \ causes sigprocmask failure in null-threads.h
    make
#   make V=1
}



package() {
  cd "${srcdir}/build-${MINGW_CHOST}"
  make DESTDIR="$pkgdir" install
  find "${pkgdir}${MINGW_PREFIX}" -name '*.def' -o -name '*.exp' | xargs -rtl1 rm

  rm -r "${pkgdir}${MINGW_PREFIX}"/share/info
  rm -r "${pkgdir}${MINGW_PREFIX}"/share/man
}

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* bug#36601: Patch series for guile-2.9.2 on mingw-w64
  2019-07-11 16:32 bug#36601: Patch series for guile-2.9.2 on mingw-w64 Hannes Müller
@ 2019-07-15 15:23 ` Hannes Müller
  2019-07-25 17:37 ` Thompson, David
  1 sibling, 0 replies; 3+ messages in thread
From: Hannes Müller @ 2019-07-15 15:23 UTC (permalink / raw)
  To: 36601

[-- Attachment #1: Type: text/plain, Size: 934 bytes --]

The error regarding the wrong absolute path names is related to
the prebuilt modulesprebuilt\64-bit-little-endian\ice-9\boot-9
.goprebuilt\32-bit-little-endian\ice-9\boot-9.go
They have been built with system-file-name-convention set to posix. In
fact on mingw-w64 this value is set to windows. I forcedrecompilation
of related modules by touch module\ice-9\boot-9.scm 
For i686 the compilation process succeeded, for x86_64 recompilation of
modules depending on boot-9 failed.
I recommend not to compile the posix/windows setting of  system-file-
name-convention into the prebuilt modules in boot-9.scm: (compile-time-
case (system-file-name-convention) ...
Instead it could be evaluated during runtime. Otherwise formally
different prebuilts are required, e.g.:  prebuilt\64-bit-little-endian-
posixprebuilt\32-bit-little-endian-posixprebuilt\64-bit-little-endian-
windowsprebuilt\32-bit-little-endian-windows


[-- Attachment #2: Type: text/html, Size: 1868 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#36601: Patch series for guile-2.9.2 on mingw-w64
  2019-07-11 16:32 bug#36601: Patch series for guile-2.9.2 on mingw-w64 Hannes Müller
  2019-07-15 15:23 ` Hannes Müller
@ 2019-07-25 17:37 ` Thompson, David
  1 sibling, 0 replies; 3+ messages in thread
From: Thompson, David @ 2019-07-25 17:37 UTC (permalink / raw)
  To: Hannes Müller; +Cc: 36601

Hi Hannes,

On Thu, Jul 11, 2019 at 12:33 PM Hannes Müller <h.c.f.mueller@gmx.de> wrote:
>
> Hi,
> I propose the following patch series for current guile 3 development.
> With these patches applied, on i686 and x86_64 I got until
>
>   CCLD     guile.exe
>   GEN      guile-procedures.texi
> Backtrace:
>            0 (primitive-load-path "C:/Users/hm/Documents/msys32/…")
>
> ERROR: In procedure primitive-load-path:
> In procedure primitive-load-path: Unable to find file "C:/Users/hm/Documents/msys32/home/hm/mingw-w64-guile-2.9.2/src/build-i686-w64-mingw32/libguile/C:/Users/hm/Documents/msys32/home/hm/mingw-w64-guile-2.9.2/src/build-i686-w64-mingw32/meta/guild" in load path
> make[3]: *** [Makefile:4295: guile-procedures.texi] Error 1
>
> The latest error is related to building absolute path names, which seems not new but I do not know how to fix it.
>
> But I was able on i686 and x86_64 to run simple guile commands with relative path names
> GUILE_AUTO_COMPILE=0 ../meta/build-env ./.libs/guile -l ../../../../test.scm
>
> My configuration was:
> autoreconf -fi
> configure \
>     --prefix=${MINGW_PREFIX} \
>     --build=${MINGW_CHOST} \
>     --host=${MINGW_CHOST} \
>     --enable-shared \
>     --enable-static \
>     --enable-error-on-warning=no \
>     --enable-jit=no
>
> Attached also the used draft PKGBUILD file for mingw-w64.

Thanks for sharing these patches. I tried to write a Guix package
recipe for Guile 2.9.2 that could be built for i686-w64-mingw32 (for
starters), but failed. I used your patches and disabled JIT but got a
failure in numbers.h:

    numbers.h:43:34: error: expression in static assertion is not constant

Also, on the subject of JIT support, it seems that the reason it has
to be disabled is because gnulib does not have sys/mman.h, or maybe
it's because MinGW doesn't support mmap.  This is my first time
building things for windows with mingw so I don't really understand
this stuff.

Does anyone have thoughts on a path forward here?

- Dave





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-07-25 17:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-11 16:32 bug#36601: Patch series for guile-2.9.2 on mingw-w64 Hannes Müller
2019-07-15 15:23 ` Hannes Müller
2019-07-25 17:37 ` Thompson, David

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).