|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Trying to build on FreeBSD
Hi all, this project looks very exciting. I was trying to build it for
FreeBSD, and can only get so far. Maybe someone more familiar with with
this project and with OCamlbuild can make some suggestions?
Here are the changes I've made to the git repo, in an attempt to get
things working on FreeBSD:
------------------- patch -------------------
diff --git a/lib/myocamlbuild.ml b/lib/myocamlbuild.ml
index f5d02e8..7d92d92 100644
--- a/lib/myocamlbuild.ml
+++ b/lib/myocamlbuild.ml
@@ -84,18 +84,20 @@ end
(* OS detection *)
module OS = struct
- type u = Linux | Darwin
+ type u = Linux | Darwin | FreeBSD
type t = Unix of u | Xen | Node
let host =
match String.lowercase (Util.run_and_read "uname -s") with
| "linux" -> Unix Linux
| "darwin" -> Unix Darwin
+ | "freebsd" -> Unix FreeBSD
| os -> Printf.eprintf "`%s` is not a supported host OS\n" os; exit
(-1)
let unix_ext = match host with
| Unix Linux -> "linux"
| Unix Darwin -> "macosx"
+ | Unix FreeBSD -> "freebsd"
| _ -> Printf.eprintf "unix_ext called on a non-UNIX host OS\n";
exit (-1)
end
diff --git a/regress/fs/readdir.sh b/regress/fs/readdir.sh
index b3aeec5..d36be30 100755
--- a/regress/fs/readdir.sh
+++ b/regress/fs/readdir.sh
@@ -28,6 +28,17 @@ case `uname -s` in
sudo umount tmpmount
;;
+ FreeBSD )
+ dd if=/dev/zero of=${OUTPUT} bs=1 seek=128M count=0
+ /sbin/newfs_msdos -L MirageFAT -F 16 -v ${OUTPUT}
+ rm -rf tmpmount && mkdir tmpmount
+ MD=$(sudo mdconfig ${OUTPUT})
+ mount /dev/$MD tmpmount
+ sudo cp -r ${INPUT} tmpmount
+ sudo umount tmpmount && rmdir tmpmount
+ sudo mdconfig -d -u $MD
+ ;;
+
* )
echo Unknown OS detected
exit 1
diff --git a/scripts/mir-fat-create b/scripts/mir-fat-create
index b6acaf2..b604ef7 100755
--- a/scripts/mir-fat-create
+++ b/scripts/mir-fat-create
@@ -38,6 +38,17 @@ case `uname -s` in
sudo umount tmpmount && rmdir tmpmount
;;
+ FreeBSD )
+ dd if=/dev/zero of=${OUTPUT} bs=1 seek=128M count=0
+ /sbin/newfs_msdos -L MirageFAT -F 16 -v ${OUTPUT}
+ rm -rf tmpmount && mkdir tmpmount
+ MD=$(sudo mdconfig ${OUTPUT})
+ mount /dev/$MD tmpmount
+ sudo cp -r ${INPUT}/* tmpmount
+ sudo umount tmpmount && rmdir tmpmount
+ sudo mdconfig -d -u $MD
+ ;;
+
* )
echo Unknown OS detected
exit 1
diff --git a/scripts/myocamlbuild.ml b/scripts/myocamlbuild.ml
index 90b7156..63e72cb 100644
--- a/scripts/myocamlbuild.ml
+++ b/scripts/myocamlbuild.ml
@@ -56,19 +56,20 @@ end
(** Host OS detection *)
module OS = struct
- type unix = Linux | Darwin
+ type unix = Linux | Darwin | FreeBSD
type arch = X86_32 | X86_64
let host =
match String.lowercase (Util.run_and_read "uname -s") with
| "linux" -> Linux
| "darwin" -> Darwin
+ | "freebsd" -> FreeBSD
| os -> eprintf "`%s` is not a supported host OS\n" os; exit (-1)
let arch =
match String.lowercase (Util.run_and_read "uname -m") with
| "x86_32" | "i686" -> X86_32
- | "i386" -> (match host with Linux -> X86_32 | Darwin -> X86_64)
+ | "i386" -> (match host with Linux | FreeBSD -> X86_32 | Darwin ->
X86_64)
| "x86_64" -> X86_64
| arch -> eprintf "`%s` is not a supported arch\n" arch; exit (-1)
@@ -89,8 +90,8 @@ module Mir = struct
let unixmain mode = lib / mode / "lib" / "main.o" in
let mode = sprintf "unix-%s" (env "%(mode)") in
let dl_libs = match host with
- |Linux -> [A"-lm"; A"-lasmrun"; A"-lcamlstr"; A"-ldl"]
- |Darwin -> [A"-lm"; A"-lasmrun"; A"-lcamlstr"] in
+ |Linux -> [A"-lm"; A"-lasmrun"; A"-lcamlstr"; A"-ldl"]
+ |Darwin |FreeBSD -> [A"-lm"; A"-lasmrun"; A"-lcamlstr"] in
let tags = tags++"cc"++"c" in
Cmd (S (A cc :: [ T(tags++"link"); A ocamlc_libdir; A"-o"; Px out;
A (unixmain mode); P arg; A (unixrun mode); ] @ dl_libs))
--------------- end patch -------------------
And I get up to this point in the build process:
/usr/local/bin/ocamlopt.opt -a std/pervasives.cmx std/array.cmx
std/char.cmx std/list.cmx std/string.cmx std/sys.cmx std/buffer.cmx
std/int32.cmx std/marshal.cmx std/obj.cmx std/printf.cmx std/base64.cmx
std/stack.cmx std/sort.cmx std/set.cmx std/queue.cmx std/printexc.cmx
std/nativeint.cmx std/map.cmx std/camlinternalLazy.cmx std/lazy.cmx
std/stream.cmx std/lexing.cmx std/int64.cmx std/hashtbl.cmx std/gc.cmx
std/digest.cmx std/complex.cmx std/callback.cmx std/weak.cmx
std/scanf.cmx std/random.cmx std/format.cmx std/parsing.cmx
std/camlinternalOO.cmx std/camlinternalMod.cmx std/std_exit.cmx
std/log.cmx std/oo.cmx std/lwt_sequence.cmx std/lwt.cmx std/lwt_util.cmx
std/lwt_mutex.cmx std/lwt_stream.cmx std/lwt_mvar.cmx std/lwt_list.cmx
std/lwt_pool.cmx std/lwt_condition.cmx std/lwt_pqueue.cmx
std/lwt_switch.cmx std/bitstring_types.cmx std/bitstring_config.cmx
std/bitstring.cmx std/bitstring_stream.cmx std/regexp.cmx std/oS.cmx
std/net.cmx std/block.cmx std/dns.cmx std/http.cmx std/utf8.cmx
std/ulexing.cmx std/utf16.cmx std/dyntype.cmx std/cow.cmx
std/openflow.cmx std/oUnit.cmx std/fs.cmx -o std/stdlib.cmxa
cc -c -Wall -g -O3 -I /usr/local/lib/ocaml -fPIC -o
os/runtime_unix/main.o os/runtime_unix/main.c
../../../tools/ocp-pack/_build/split.native std/base64.annot
../../../tools/ocp-pack/_build/split.native std/string.annot
../../../tools/ocp-pack/_build/split.native std/stack.annot
../../../tools/ocp-pack/_build/split.native std/sort.annot
../../../tools/ocp-pack/_build/split.native std/set.annot
../../../tools/ocp-pack/_build/split.native std/queue.annot
../../../tools/ocp-pack/_build/split.native std/printexc.annot
../../../tools/ocp-pack/_build/split.native std/pervasives.annot
../../../tools/ocp-pack/_build/split.native std/nativeint.annot
../../../tools/ocp-pack/_build/split.native std/marshal.annot
../../../tools/ocp-pack/_build/split.native std/map.annot
../../../tools/ocp-pack/_build/split.native std/lazy.annot
../../../tools/ocp-pack/_build/split.native std/stream.annot
../../../tools/ocp-pack/_build/split.native std/list.annot
../../../tools/ocp-pack/_build/split.native std/lexing.annot
../../../tools/ocp-pack/_build/split.native std/int64.annot
../../../tools/ocp-pack/_build/split.native std/int32.annot
../../../tools/ocp-pack/_build/split.native std/hashtbl.annot
../../../tools/ocp-pack/_build/split.native std/gc.annot
../../../tools/ocp-pack/_build/split.native std/digest.annot
../../../tools/ocp-pack/_build/split.native std/complex.annot
../../../tools/ocp-pack/_build/split.native std/char.annot
../../../tools/ocp-pack/_build/split.native std/camlinternalLazy.annot
../../../tools/ocp-pack/_build/split.native std/callback.annot
../../../tools/ocp-pack/_build/split.native std/buffer.annot
../../../tools/ocp-pack/_build/split.native std/array.annot
../../../tools/ocp-pack/_build/split.native std/weak.annot
../../../tools/ocp-pack/_build/split.native std/sys.annot
../../../tools/ocp-pack/_build/split.native std/scanf.annot
../../../tools/ocp-pack/_build/split.native std/random.annot
../../../tools/ocp-pack/_build/split.native std/obj.annot
../../../tools/ocp-pack/_build/split.native std/format.annot
../../../tools/ocp-pack/_build/split.native std/printf.annot
../../../tools/ocp-pack/_build/split.native std/parsing.annot
../../../tools/ocp-pack/_build/split.native std/camlinternalOO.annot
../../../tools/ocp-pack/_build/split.native std/camlinternalMod.annot
../../../tools/ocp-pack/_build/split.native std/std_exit.annot
../../../tools/ocp-pack/_build/split.native std/log.annot
../../../tools/ocp-pack/_build/split.native std/oo.annot
../../../tools/ocp-pack/_build/split.native std/lwt.annot
../../../tools/ocp-pack/_build/split.native std/lwt_util.annot
../../../tools/ocp-pack/_build/split.native std/lwt_stream.annot
../../../tools/ocp-pack/_build/split.native std/lwt_sequence.annot
../../../tools/ocp-pack/_build/split.native std/lwt_mvar.annot
../../../tools/ocp-pack/_build/split.native std/lwt_mutex.annot
../../../tools/ocp-pack/_build/split.native std/lwt_list.annot
../../../tools/ocp-pack/_build/split.native std/lwt_pool.annot
../../../tools/ocp-pack/_build/split.native std/lwt_condition.annot
../../../tools/ocp-pack/_build/split.native std/lwt_pqueue.annot
../../../tools/ocp-pack/_build/split.native std/lwt_switch.annot
../../../tools/ocp-pack/_build/split.native std/bitstring.annot
../../../tools/ocp-pack/_build/split.native std/bitstring_types.annot
../../../tools/ocp-pack/_build/split.native std/bitstring_config.annot
../../../tools/ocp-pack/_build/split.native std/bitstring_stream.annot
../../../tools/ocp-pack/_build/split.native std/regexp.annot
../../../tools/ocp-pack/_build/split.native std/oS.annot
../../../tools/ocp-pack/_build/split.native std/net.annot
../../../tools/ocp-pack/_build/split.native std/block.annot
../../../tools/ocp-pack/_build/split.native std/dns.annot
../../../tools/ocp-pack/_build/split.native std/http.annot
../../../tools/ocp-pack/_build/split.native std/utf8.annot
../../../tools/ocp-pack/_build/split.native std/utf16.annot
../../../tools/ocp-pack/_build/split.native std/ulexing.annot
../../../tools/ocp-pack/_build/split.native std/dyntype.annot
../../../tools/ocp-pack/_build/split.native std/cow.annot
../../../tools/ocp-pack/_build/split.native std/openflow.annot
../../../tools/ocp-pack/_build/split.native std/oUnit.annot
../../../tools/ocp-pack/_build/split.native std/fs.annot
Solver failed:
Ocamlbuild knows of no rules that apply to a target named
std/unix.itarget. This can happen if you ask Ocamlbuild to build a
target with the wrong extension (e.g. .opt instead of .native) or if
the source files live in directories that have not been specified as
include directories.
Backtrace:
- Failed to build the target unix.otarget
- Failed to build all of these:
- Building std/unix.otarget:
- Building std/unix.itarget
- Building unix.otarget:
- Building os/runtime_unix/libunixrun.a:
- Failed to build all of these:
- Building os/runtime_unix/libunixrun.cmx:
- Failed to build all of these:
- Building os/runtime_unix/libunixrun.ml:
- Failed to build all of these:
- Building
os/runtime_unix/libunixrun.mly
- Building
os/runtime_unix/libunixrun.mll
- Building
os/runtime_unix/libunixrun.smlpack
- Building
os/runtime_unix/libunixrun.mlpack
- Building os/runtime_unix/libunixrun.mllib
- Failed to build all of these:
- Building std/tap_stubs_os.o:
- Failed to build all of these:
- Building std/tap_stubs_os.c:
- Building std/tap_stubs_freebsd.c
- Building std/tap_stubs_os.ml:
- Failed to build all of these:
- Building
std/tap_stubs_os.mly
- Building
std/tap_stubs_os.mll
- Building
std/tap_stubs_os.smlpack
- Building std/tap_stubs_os.mlpack
- Building std/tap_stubs_os.S
- Building std/tap_stubs_os.c:
- Building std/tap_stubs_freebsd.c
- Building tap_stubs_os.o:
- Failed to build all of these:
- Building tap_stubs_os.c:
- Building tap_stubs_freebsd.c
- Building tap_stubs_os.ml:
- Failed to build all of these:
- Building tap_stubs_os.mly
- Building tap_stubs_os.mll
- Building
tap_stubs_os.smlpack
- Building tap_stubs_os.mlpack
- Building tap_stubs_os.S
- Building tap_stubs_os.c:
- Building tap_stubs_freebsd.c
- Building os/runtime_unix/tap_stubs_os.o:
- Failed to build all of these:
- Building
os/runtime_unix/tap_stubs_os.c:
- Building
os/runtime_unix/tap_stubs_freebsd.c
- Building
os/runtime_unix/tap_stubs_os.ml:
- Failed to build all of these:
- Building
os/runtime_unix/tap_stubs_os.mly
- Building
os/runtime_unix/tap_stubs_os.mll
- Building
os/runtime_unix/tap_stubs_os.smlpack
- Building
os/runtime_unix/tap_stubs_os.mlpack
- Building
os/runtime_unix/tap_stubs_os.S
- Building
os/runtime_unix/tap_stubs_os.c:
- Building
os/runtime_unix/tap_stubs_freebsd.c
- Building os/runtime_unix/libunixrun.cclib
gmake[1]: *** [unix-direct] Error 6
gmake[1]: Leaving directory `.../mirage/git.build/lib'
gmake: *** [all] Error 2
--
Jim Pryor
jim@xxxxxxxxxxxx
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |