WeiDUorg / weidu

WeiDU is a program used to develop, distribute and install modifications for games based on the Infinity Engine.
http://www.weidu.org
GNU General Public License v2.0
90 stars 20 forks source link

Missing implementation of Xdiff during linking #107

Closed waebbl closed 7 years ago

waebbl commented 7 years ago

Hello, when I try to compile weidu on linux I get a link error like so: Linking native code obj/x86_LINUX/weidu.asm.exe /usr/bin/ocamlopt.opt -compact -o obj/x86_LINUX/weidu.asm.exe \ unix.cmxa str.cmxa \ -cclib -lunix -cclib -lcamlstr \ \ obj/x86_LINUX/batList.cmx obj/x86_LINUX/batteriesInit.cmx obj/x86_LINUX/case_ins.cmx obj/x86_LINUX/stats.cmx obj/x86_LINUX/arch.cmx obj/x86_LINUX/version.cmx obj/x86_LINUX/parsing.cmx obj/x86_LINUX/tph.cmx obj/x86_LINUX/util.cmx obj/x86_LINUX/modder.cmx obj/x86_LINUX/var.cmx obj/x86_LINUX/arch2.cmx obj/x86_LINUX/xor.cmx obj/x86_LINUX/key.cmx obj/x86_LINUX/cbif.cmx obj/x86_LINUX/biff.cmx obj/x86_LINUX/tlk.cmx obj/x86_LINUX/load.cmx obj/x86_LINUX/cre.cmx obj/x86_LINUX/ids.cmx obj/x86_LINUX/idslexer.cmx obj/x86_LINUX/idslexer2.cmx obj/x86_LINUX/idsparser.cmx obj/x86_LINUX/bcs.cmx obj/x86_LINUX/bcslexer.cmx obj/x86_LINUX/bcsparser.cmx obj/x86_LINUX/dlg.cmx obj/x86_LINUX/dc.cmx obj/x86_LINUX/refactorbaf.cmx obj/x86_LINUX/refactorbaflexer.cmx obj/x86_LINUX/refactorbafparser.cmx obj/x86_LINUX/refactordlexer.cmx obj/x86_LINUX/refactordparser.cmx obj/x86_LINUX/baflexer.cmx obj/x86_LINUX/bafparser.cmx obj/x86_LINUX/diff.cmx obj/x86_LINUX/sav.cmx obj/x86_LINUX/mos.cmx obj/x86_LINUX/tp.cmx obj/x86_LINUX/dlexer.cmx obj/x86_LINUX/dparser.cmx obj/x86_LINUX/sql.cmx obj/x86_LINUX/json.cmx obj/x86_LINUX/smutil.cmx obj/x86_LINUX/useract.cmx obj/x86_LINUX/lexerint.cmx obj/x86_LINUX/parsetables.cmx obj/x86_LINUX/arraystack.cmx obj/x86_LINUX/objpool.cmx obj/x86_LINUX/glr.cmx obj/x86_LINUX/lrparse.cmx obj/x86_LINUX/automate.cmx obj/x86_LINUX/kit.cmx obj/x86_LINUX/tpstate.cmx obj/x86_LINUX/tphelp.cmx obj/x86_LINUX/trealparser.cmx obj/x86_LINUX/tlexer.cmx obj/x86_LINUX/toldparser.cmx obj/x86_LINUX/toldlexer.cmx obj/x86_LINUX/tparser.cmx obj/x86_LINUX/parsewrappers.cmx obj/x86_LINUX/mymarshal.cmx obj/x86_LINUX/tppe.cmx obj/x86_LINUX/tpuninstall.cmx obj/x86_LINUX/tppatch.cmx obj/x86_LINUX/tpaction.cmx obj/x86_LINUX/tpwork.cmx obj/x86_LINUX/changelog.cmx obj/x86_LINUX/myarg.cmx obj/x86_LINUX/autoupdate.cmx obj/x86_LINUX/main.cmx obj/x86_LINUX/nix.o obj/x86_LINUX/zlib.o obj/x86_LINUX/adler32.o obj/x86_LINUX/inflate.o obj/x86_LINUX/uncompr.o obj/x86_LINUX/inftrees.o obj/x86_LINUX/zutil.o obj/x86_LINUX/inffast.o obj/x86_LINUX/glob_unix.o obj/x86_LINUX/xdiff.o obj/x86_LINUX/xemit.o obj/x86_LINUX/xpatchi.o obj/x86_LINUX/xutils.o obj/x86_LINUX/xdiffi.o obj/x86_LINUX/xprepare.o obj/x86_LINUX/crc32.o obj/x86_LINUX/compress.o obj/x86_LINUX/deflate.o obj/x86_LINUX/trees.o File "none", line 1: Error: No implementations provided for the following modules: Xdiff referenced from obj/x86_LINUX/diff.cmx make: *** [Makefile:69: obj/x86_LINUX/weidu.asm.exe] Error 2

The xdiff.o file is present in the obj/x86_LINUX dir, there's also an xdiff.cmi file. The other object files from the xdiff dir are also present.

Any ideas what's going on here and how I can solve this? TIA

FredrikLindgren commented 7 years ago

Fixed. It was caused by breakage by some version of OCaml more recent than 4.02.3. Specifically, it appears to have been complaining about the absence of a .cmx file. There wouldn't be one since all the implementation is in the .o file.

waebbl commented 7 years ago

Thanks for the quick fix! :)