Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Name clash with memory.h header file with the Android NDK #5887

Closed
vicuna opened this issue Jan 12, 2013 · 30 comments

Comments

Projects
None yet
2 participants
@vicuna
Copy link

commented Jan 12, 2013

Original bug ID: 5887
Reporter: vouillon
Assigned to: @gasche
Status: closed (set by @xavierleroy on 2017-02-16T14:14:12Z)
Resolution: fixed
Priority: high
Severity: minor
Version: 4.00.1
Target version: 4.02.2+dev / +rc1
Fixed in version: 4.02.2+dev / +rc1
Category: runtime system and C interface
Tags: patch
Has duplicate: #4175
Related to: #6266
Monitored by: @whitequark @protz Camarade_Tux

Bug description

In the Android NDK, the stdlib.h header file includes memory.h.
When compiling the native runtime and the libraries in otherlibs, it's the OCaml memory.h file that gets included. The compilation then breaks when misc.h is included, as it includes stdlib.h before providing definitions need by memory.h.

A work-around is to temporarily define CAML_MEMORY_H before including stdlib.h
(see patch) in misc.h. As the memory.h system header file is empty, this is safe to do.

A better fix, which would also fix the name clash on io.h under Windows (#4175),
would be to move OCaml header files into a subdirectory "caml" of directory "byterun". I could implement that if there is some interest.

File attachments

@vicuna

This comment has been minimized.

Copy link
Author

commented Jan 14, 2013

Comment author: vouillon

I have uploaded a tentative script to move most include files in byterun to byterun/caml. The file instruct.h and the generated files jumptbl.h, opnames.h, and version.h are left in byterun. They could be moved as well but several makefiles have to be patched for that.

"make world" and "make opt" works, but I see now that myocamlbuild.ml and some files in the build directory need to be updated as well. Also, the .depend.nt files are not updated.

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 23, 2013

Comment author: Camarade_Tux

I've uploaded 0001-Move-byterun-.h-to-byterun-caml.patch.gz .

I've used your script to create it and also moved {instruct,jumptbl,opnames,version}.h and updated myocamlbuild.ml.

Build using world.opt works. I haven't touched the .depend.nt files.

The patch is huge (8000 lines added and removed). Half of that is because of the .depend files. Another half is the .h files themselves (since being moved counts as additions and deletions) and the renaming in the #include directives of the .c files.

My git commit message (which is in the patch file too) is as follows:

Move byterun/*.h to byterun/caml/.

There are name clashes between ocaml headers and system headers (android
and mingw at least). Names such as "io.h" or "memory.h" are too common.

Moving these files means that they won't be refered to as "io.h" but
rather "caml/io.h", therefore avoiding clashes.

An alternative solution would be to name them "caml_io.h" but
"caml/io.h" looks much nicer.

As far as I can tell, this doesn't change installed files so it's fairly
safe and packagers won't hate me.
@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 23, 2013

Comment author: meyer

My only comment: if we plan to move the files around - which I think is a good idea, then we should be using svn machinery for that e.g. svn mv command, as svn is aware about files that are moved, unlike git which just track contents. But many thanks for the patches, it really helps to know what should be done.

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 23, 2013

Comment author: meyer

"make world" and "make opt" works, but I see now that myocamlbuild.ml and some files in the build directory need to be updated as well. Also, the .depend.nt files are not updated.

Don't need to care about myocamlbuild.ml at the moment, I don't know if anybody builds OCaml with ocamlbuild at all, and we plan to just remove these files from the tree.

As for .depend.nt, it's crucial that somebody would test it on Windows.

Thanks

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 23, 2013

Comment author: Camarade_Tux

Well, I can't "svn mv" myself but here's the diffstat I got in git here, "=>" shows the renames:

.depend | 14 +-
Makefile | 10 +-
Makefile.nt | 8 +-
asmrun/.depend | 1743 ++++++++++++++-----------
asmrun/backtrace.c | 10 +-
asmrun/fail.c | 18 +-
asmrun/natdynlink.c | 16 +-
asmrun/roots.c | 16 +-
asmrun/signals_asm.c | 10 +-
asmrun/startup.c | 32 +-
byterun/.depend | 1070 +++++++++------
byterun/.ignore | 6 +-
byterun/Makefile | 2 +-
byterun/Makefile.common | 24 +-
byterun/alloc.c | 12 +-
byterun/array.c | 10 +-
byterun/backtrace.c | 26 +-
byterun/callback.c | 16 +-
byterun/{ => caml}/alloc.h | 0
byterun/{ => caml}/backtrace.h | 0
byterun/{ => caml}/callback.h | 0
byterun/{ => caml}/compact.h | 0
byterun/{ => caml}/compare.h | 0
byterun/{ => caml}/compatibility.h | 0
byterun/{ => caml}/config.h | 8 +-
byterun/{ => caml}/custom.h | 0
byterun/{ => caml}/debugger.h | 0
byterun/{ => caml}/dynlink.h | 0
byterun/{ => caml}/exec.h | 0
byterun/{ => caml}/fail.h | 0
byterun/{ => caml}/finalise.h | 0
byterun/{ => caml}/fix_code.h | 0
byterun/{ => caml}/freelist.h | 0
byterun/{ => caml}/gc.h | 0
byterun/{ => caml}/gc_ctrl.h | 0
byterun/{ => caml}/globroots.h | 0
byterun/{ => caml}/hash.h | 0
byterun/{ => caml}/instrtrace.h | 0
byterun/{ => caml}/instruct.h | 0
byterun/{ => caml}/int64_emul.h | 0
byterun/{ => caml}/int64_format.h | 0
byterun/{ => caml}/int64_native.h | 0
byterun/{ => caml}/interp.h | 0
byterun/{ => caml}/intext.h | 0
byterun/{ => caml}/io.h | 0
byterun/{ => caml}/major_gc.h | 0
byterun/{ => caml}/md5.h | 0
byterun/{ => caml}/memory.h | 0
byterun/{ => caml}/minor_gc.h | 0
byterun/{ => caml}/misc.h | 0
byterun/{ => caml}/mlvalues.h | 0
byterun/{ => caml}/osdeps.h | 0
byterun/{ => caml}/prims.h | 0
byterun/{ => caml}/printexc.h | 0
byterun/{ => caml}/reverse.h | 0
byterun/{ => caml}/roots.h | 0
byterun/{ => caml}/signals.h | 0
byterun/{ => caml}/signals_machdep.h | 0
byterun/{ => caml}/stacks.h | 0
byterun/{ => caml}/startup.h | 0
byterun/{ => caml}/sys.h | 0
byterun/{ => caml}/ui.h | 0
byterun/{ => caml}/weak.h | 0
byterun/compact.c | 20 +-
byterun/compare.c | 10 +-
byterun/custom.c | 10 +-
byterun/debugger.c | 26 +-
byterun/dynlink.c | 18 +-
byterun/extern.c | 24 +-
byterun/fail.c | 20 +-
byterun/finalise.c | 10 +-
byterun/fix_code.c | 20 +-
byterun/floats.c | 16 +-
byterun/freelist.c | 16 +-
byterun/gc_ctrl.c | 24 +-
byterun/globroots.c | 10 +-
byterun/hash.c | 16 +-
byterun/instrtrace.c | 12 +-
byterun/intern.c | 26 +-
byterun/interp.c | 34 +-
byterun/ints.c | 20 +-
byterun/io.c | 20 +-
byterun/lexing.c | 6 +-
byterun/main.c | 6 +-
byterun/major_gc.c | 26 +-
byterun/md5.c | 14 +-
byterun/memory.c | 22 +-
byterun/meta.c | 26 +-
byterun/minor_gc.c | 26 +-
byterun/misc.c | 6 +-
byterun/obj.c | 20 +-
byterun/parsing.c | 8 +-
byterun/printexc.c | 14 +-
byterun/roots.c | 18 +-
byterun/signals.c | 22 +-
byterun/signals_byt.c | 10 +-
byterun/stacks.c | 10 +-
byterun/startup.c | 58 +-
byterun/str.c | 12 +-
byterun/sys.c | 20 +-
byterun/terminfo.c | 10 +-
byterun/unix.c | 8 +-
byterun/weak.c | 10 +-
byterun/win32.c | 14 +-
debugger/.depend | 12 +-
lex/.depend | 8 +-
myocamlbuild.ml | 8 +-
ocamldoc/.depend | 12 +-
otherlibs/bigarray/.depend | 41 +-
otherlibs/bigarray/bigarray.h | 6 +-
otherlibs/bigarray/bigarray_stubs.c | 18 +-
otherlibs/bigarray/mmap_unix.c | 12 +-
otherlibs/bigarray/mmap_win32.c | 10 +-
otherlibs/graph/.depend | 125 +-
otherlibs/graph/draw.c | 2 +-
otherlibs/graph/dump_img.c | 4 +-
otherlibs/graph/events.c | 4 +-
otherlibs/graph/fill.c | 2 +-
otherlibs/graph/image.c | 4 +-
otherlibs/graph/libgraph.h | 2 +-
otherlibs/graph/make_img.c | 2 +-
otherlibs/graph/open.c | 8 +-
otherlibs/graph/text.c | 2 +-
otherlibs/labltk/browser/winmain.c | 6 +-
otherlibs/labltk/support/cltkCaml.c | 8 +-
otherlibs/labltk/support/cltkDMain.c | 14 +-
otherlibs/labltk/support/cltkEval.c | 6 +-
otherlibs/labltk/support/cltkEvent.c | 4 +-
otherlibs/labltk/support/cltkFile.c | 4 +-
otherlibs/labltk/support/cltkImg.c | 6 +-
otherlibs/labltk/support/cltkMain.c | 12 +-
otherlibs/labltk/support/cltkMisc.c | 4 +-
otherlibs/labltk/support/cltkTimer.c | 4 +-
otherlibs/labltk/support/cltkUtf.c | 6 +-
otherlibs/labltk/support/cltkVar.c | 8 +-
otherlibs/labltk/support/cltkWait.c | 6 +-
otherlibs/num/.depend | 25 +-
otherlibs/num/bng.c | 2 +-
otherlibs/num/bng.h | 2 +-
otherlibs/num/nat_stubs.c | 16 +-
otherlibs/str/.depend | 14 +-
otherlibs/str/strstubs.c | 8 +-
otherlibs/systhreads/.depend | 25 +-
otherlibs/systhreads/st_stubs.c | 28 +-
otherlibs/threads/.depend | 47 +-
otherlibs/threads/scheduler.c | 28 +-
otherlibs/unix/.depend | 994 +++++++-------
otherlibs/unix/accept.c | 10 +-
otherlibs/unix/access.c | 4 +-
otherlibs/unix/addrofstr.c | 6 +-
otherlibs/unix/alarm.c | 2 +-
otherlibs/unix/bind.c | 4 +-
otherlibs/unix/chdir.c | 2 +-
otherlibs/unix/chmod.c | 2 +-
otherlibs/unix/chown.c | 2 +-
otherlibs/unix/chroot.c | 2 +-
otherlibs/unix/close.c | 2 +-
otherlibs/unix/closedir.c | 2 +-
otherlibs/unix/connect.c | 6 +-
otherlibs/unix/cst2constr.c | 4 +-
otherlibs/unix/cstringv.c | 4 +-
otherlibs/unix/dup.c | 2 +-
otherlibs/unix/dup2.c | 2 +-
otherlibs/unix/envir.c | 4 +-
otherlibs/unix/errmsg.c | 4 +-
otherlibs/unix/execv.c | 4 +-
otherlibs/unix/execve.c | 4 +-
otherlibs/unix/execvp.c | 4 +-
otherlibs/unix/exit.c | 2 +-
otherlibs/unix/fchmod.c | 4 +-
otherlibs/unix/fchown.c | 4 +-
otherlibs/unix/fcntl.c | 4 +-
otherlibs/unix/fork.c | 4 +-
otherlibs/unix/ftruncate.c | 6 +-
otherlibs/unix/getaddrinfo.c | 10 +-
otherlibs/unix/getcwd.c | 6 +-
otherlibs/unix/getegid.c | 2 +-
otherlibs/unix/geteuid.c | 2 +-
otherlibs/unix/getgid.c | 2 +-
otherlibs/unix/getgr.c | 8 +-
otherlibs/unix/getgroups.c | 6 +-
otherlibs/unix/gethost.c | 10 +-
otherlibs/unix/gethostname.c | 6 +-
otherlibs/unix/getlogin.c | 4 +-
otherlibs/unix/getnameinfo.c | 10 +-
otherlibs/unix/getpeername.c | 4 +-
otherlibs/unix/getpid.c | 2 +-
otherlibs/unix/getppid.c | 2 +-
otherlibs/unix/getproto.c | 8 +-
otherlibs/unix/getpw.c | 8 +-
otherlibs/unix/getserv.c | 8 +-
otherlibs/unix/getsockname.c | 4 +-
otherlibs/unix/gettimeofday.c | 6 +-
otherlibs/unix/getuid.c | 2 +-
otherlibs/unix/gmtime.c | 8 +-
otherlibs/unix/initgroups.c | 6 +-
otherlibs/unix/isatty.c | 2 +-
otherlibs/unix/itimer.c | 8 +-
otherlibs/unix/kill.c | 6 +-
otherlibs/unix/link.c | 2 +-
otherlibs/unix/listen.c | 4 +-
otherlibs/unix/lockf.c | 6 +-
otherlibs/unix/lseek.c | 8 +-
otherlibs/unix/mkdir.c | 2 +-
otherlibs/unix/mkfifo.c | 4 +-
otherlibs/unix/nice.c | 2 +-
otherlibs/unix/open.c | 8 +-
otherlibs/unix/opendir.c | 4 +-
otherlibs/unix/pipe.c | 4 +-
otherlibs/unix/putenv.c | 6 +-
otherlibs/unix/read.c | 6 +-
otherlibs/unix/readdir.c | 6 +-
otherlibs/unix/readlink.c | 6 +-
otherlibs/unix/rename.c | 2 +-
otherlibs/unix/rewinddir.c | 4 +-
otherlibs/unix/rmdir.c | 2 +-
otherlibs/unix/select.c | 10 +-
otherlibs/unix/sendrecv.c | 10 +-
otherlibs/unix/setgid.c | 2 +-
otherlibs/unix/setgroups.c | 8 +-
otherlibs/unix/setsid.c | 4 +-
otherlibs/unix/setuid.c | 2 +-
otherlibs/unix/shutdown.c | 4 +-
otherlibs/unix/signals.c | 10 +-
otherlibs/unix/sleep.c | 4 +-
otherlibs/unix/socket.c | 4 +-
otherlibs/unix/socketaddr.c | 6 +-
otherlibs/unix/socketaddr.h | 2 +-
otherlibs/unix/socketpair.c | 6 +-
otherlibs/unix/sockopt.c | 8 +-
otherlibs/unix/stat.c | 8 +-
otherlibs/unix/strofaddr.c | 6 +-
otherlibs/unix/symlink.c | 4 +-
otherlibs/unix/termios.c | 6 +-
otherlibs/unix/time.c | 4 +-
otherlibs/unix/times.c | 6 +-
otherlibs/unix/truncate.c | 6 +-
otherlibs/unix/umask.c | 2 +-
otherlibs/unix/unixsupport.c | 10 +-
otherlibs/unix/unlink.c | 2 +-
otherlibs/unix/utimes.c | 4 +-
otherlibs/unix/wait.c | 10 +-
otherlibs/unix/write.c | 6 +-
otherlibs/win32graph/dib.c | 4 +-
otherlibs/win32graph/draw.c | 10 +-
otherlibs/win32graph/events.c | 4 +-
otherlibs/win32graph/open.c | 6 +-
otherlibs/win32unix/accept.c | 8 +-
otherlibs/win32unix/bind.c | 2 +-
otherlibs/win32unix/channels.c | 8 +-
otherlibs/win32unix/close.c | 4 +-
otherlibs/win32unix/close_on.c | 2 +-
otherlibs/win32unix/connect.c | 4 +-
otherlibs/win32unix/createprocess.c | 4 +-
otherlibs/win32unix/dup.c | 2 +-
otherlibs/win32unix/dup2.c | 2 +-
otherlibs/win32unix/errmsg.c | 4 +-
otherlibs/win32unix/getpeername.c | 2 +-
otherlibs/win32unix/getpid.c | 2 +-
otherlibs/win32unix/getsockname.c | 2 +-
otherlibs/win32unix/gettimeofday.c | 4 +-
otherlibs/win32unix/link.c | 4 +-
otherlibs/win32unix/listen.c | 2 +-
otherlibs/win32unix/lockf.c | 8 +-
otherlibs/win32unix/lseek.c | 4 +-
otherlibs/win32unix/mkdir.c | 2 +-
otherlibs/win32unix/nonblock.c | 4 +-
otherlibs/win32unix/open.c | 4 +-
otherlibs/win32unix/pipe.c | 6 +-
otherlibs/win32unix/read.c | 6 +-
otherlibs/win32unix/rename.c | 2 +-
otherlibs/win32unix/select.c | 10 +-
otherlibs/win32unix/sendrecv.c | 8 +-
otherlibs/win32unix/shutdown.c | 2 +-
otherlibs/win32unix/sleep.c | 4 +-
otherlibs/win32unix/socket.c | 2 +-
otherlibs/win32unix/socketaddr.h | 2 +-
otherlibs/win32unix/sockopt.c | 8 +-
otherlibs/win32unix/startup.c | 2 +-
otherlibs/win32unix/stat.c | 6 +-
otherlibs/win32unix/system.c | 8 +-
otherlibs/win32unix/times.c | 4 +-
otherlibs/win32unix/unixsupport.c | 12 +-
otherlibs/win32unix/windir.c | 8 +-
otherlibs/win32unix/winwait.c | 8 +-
otherlibs/win32unix/winworker.c | 8 +-
otherlibs/win32unix/write.c | 6 +-
stdlib/.depend | 392 ++++--
stdlib/headernt.c | 4 +-
testsuite/tests/basic-manyargs/manyargsprim.c | 2 +-
testsuite/tests/callback/callbackprim.c | 6 +-
testsuite/tests/gc-roots/globrootsprim.c | 6 +-
testsuite/tests/lib-bigarray-2/bigarrfstub.c | 2 +-
testsuite/tests/lib-marshal/intextaux.c | 4 +-
tools/.depend | 66 +-
tools/Makefile.shared | 4 +-
tools/objinfo_helper.c | 4 +-
297 files changed, 3604 insertions(+), 2898 deletions(-)

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 24, 2013

Comment author: Camarade_Tux

I've found two issues so far:

In byterun/debugger.c:
#ifdef _WIN32
#include <caml/io.h>
#endif /* _WIN32 */

In byterun/win32.c:
#include <caml/io.h>

These should be <io.h>, not <caml/io.h>. :-)

EDIT:
And these two lines have to be corrected in stdlib/header.c:
#include "../byterun/mlvalues.h"
#include "../byterun/exec.h"

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 14, 2013

Comment author: Camarade_Tux

Another issue. From tools/cleanup-header:
//* <include ../config/m.h> *// {
and
//* <include ../config/s.h> *// {

These regular expressions need to be changed to match "../../" instead of only "../".

@vicuna

This comment has been minimized.

Copy link
Author

commented Oct 17, 2014

Comment author: @whitequark

What is the status of this patchset?

@vicuna

This comment has been minimized.

Copy link
Author

commented Oct 18, 2014

Comment author: Camarade_Tux

Also, re my comment above, the following needs can be run after applying the patches:

sed -i 's;\.\.\/;\0\0;g' tools/cleanup-header

(you can copy-paste this directly after the application of the patches)

@vicuna

This comment has been minimized.

Copy link
Author

commented Oct 20, 2014

Comment author: @whitequark

It would be very nice to have this integrated in 4.02.2, or maybe 4.03. I could assist with this if someone lists what is wrong with the current state of the patch so that I could fix it.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 13, 2014

Comment author: @gasche

I could apply the patch if you had something ready-to-apply.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 21, 2014

Comment author: @whitequark

@gasche, I have attached a set of three patches. make world world.opt with all otherlibs works.

The first patch is "0001-rename.patch". You should not apply it. Rather you should use svn mv, I believe:

mkdir -p byterun/caml; for i in byterun/*.h; do svn mv $i byterun/caml/; done

The second patch is handwritten "0002-fix.patch" (an adaptation of adrien's patch).

The third patch is the result of:

./configure
make -C byterun depend
make coldstart
make ocamltools
make beforedepend
make alldepend

Both of these can be applied.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 21, 2014

Comment author: @whitequark

By the way, if you could apply it to 4.02.2, that would be great. 4.02.2 will have excellent support for cross-compiling if this and another issue, which I will file shortly, will be fixed.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 21, 2014

Comment author: @gasche

Trying to apply the patch on the current trunk gives me a test failure (apparently some tests in testsuite/ refer to .h files directly). Could you provide the extra patch to fix theses, or merge it into 0002-fix?

The testsuite is run by the target make tests, or by manually doing
cd testsuite; make all
after opt.opt or world.opt is built -- note that no installation is needed.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 21, 2014

Comment author: @whitequark

I've attached the patch that fixes all failures related to header files.
Curiously, there are also a few tests in typing-modules and typing-gadts that fail, entirely unrelated to the headers issue.

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 21, 2014

Comment author: @gasche

There typing-* failures are already fixed in trunk, they were caused by your *_ascii patches :-)

@vicuna

This comment has been minimized.

Copy link
Author

commented Dec 27, 2014

Comment author: @gasche

I applied the patchset in trunk; I'm waiting to see how the continuous-integration reacts (in particular on Windows builds).

@vicuna

This comment has been minimized.

Copy link
Author

commented Jan 23, 2015

Comment author: @whitequark

Looks like everything is OK--this PR together #4175 are resolved. (I'm not sure whether it is appropriate to mark the PRs as resolved or closed, so I will leave this to someone else.)

@vicuna

This comment has been minimized.

Copy link
Author

commented Jan 23, 2015

Comment author: @gasche

I'm not decided on whether I want to propagate the change to the 4.02 branch.

Pros:

  • You may get this released earlier
  • It may simplify cherry-picking changes between both branches (if they refer to the moved headers)

Cons:

  • I cannot anticipate the kind of issues that this change may raise, and thus I'm not sure it's fitting to inflect them to users in a minor version.
@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 6, 2015

Comment author: @damiendoligez

@gasche, could you create a patch for the 4.02 branch? I'll test it against OPAM packages.

I'd like to get it in 4.02.2 if it doesn't break anything in practice, as @whitequark is eager to have it.

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 15, 2015

Comment author: @gasche

I'm sorry, but I won't have time to work on this soon. Would anyone (whitequark, Jérôme, Adrien ?) be willing to do the work of backporting the patches applied to trunk? It's not an issue if they are large diff rather than proper "mv" commands, during the testing phase at least.

I had to apply a handful of tweaks after the patches as suggested in this PR. The additional patches are the following:

(The "big" patch is:
7ca29ef )

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 15, 2015

Comment author: @whitequark

I did so.

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 15, 2015

Comment author: @gasche

Thanks !

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 20, 2015

Comment author: @damiendoligez

I'll test the patch on OPAM and report here.

@vicuna

This comment has been minimized.

Copy link
Author

commented Feb 24, 2015

Comment author: @damiendoligez

I'm not seeing any impact on the 770 OPAM packages that compile on my machine, so green light for this change for 4.02.2.

@vicuna

This comment has been minimized.

Copy link
Author

commented Apr 12, 2015

Comment author: @gasche

I'm in the process of applying the change to 4.02 as well. The commits have been done. Hopefully everything goes well and we can close this issue.

@vicuna

This comment has been minimized.

Copy link
Author

commented Apr 12, 2015

Comment author: @gasche

There seems to be a problem on Windows builds (at least the CI complains), but I don't have a Windows machine at hand so I can't test/debug the problem. Volunteer help warmly welcome -- otherwise it will just wait for a few extra weeks, I suppose.

@vicuna

This comment has been minimized.

Copy link
Author

commented Apr 13, 2015

Comment author: @alainfrisch

I haven't build able to reproduce the problem on a fresh checkout of 4.02 (tested with the msvc32 port). What's weird is that byterun/.depend in the repository doesn't list fail.h as a dependency for win32.o (but rather caml/fail.h as expected).

@vicuna

This comment has been minimized.

Copy link
Author

commented May 5, 2015

Comment author: @damiendoligez

The patch is applied and the windows builds have fixed themselves.

@gasche, can we close this PR?

@vicuna

This comment has been minimized.

Copy link
Author

commented Jun 3, 2015

Comment author: @gasche

Thomas Refis reports a potential compatiblity issue with user code accessing gc.h in
#191

It looks like the problem is rather specific to code using -no-naked-pointers, which is probably not very common in the wild yet, explaining why OPAM testing found no issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.