PR#5371: a partial patch by Edwin Török to fix the FreeBSD failure

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14890 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
last commit before tagging 4.02.0+beta1

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14892 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#5547: ocamlbuild reverts to using -no-ocamlfind by default

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14953 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Missing dependencies on the pack, causing parallel make to fail.


git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14958 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6482: ocamlbuild fails when _tags file in unhygienic directory

ocamlbuild lazily traverses directory to build a vision of the
filesystem tree in which the build happens. During that traversals, it
parses any configuration file `_tags` it encouters. PR#6482 was caused
by the fact that the configuration-parsing code used the relative path
of the _tags file, which was correct at the time of traversal, but
stale at the time the lazy thunk was in fact forced (a Sys.chdir had
occured in between).

The first fix is to detect when relative paths become stale, and use
the correct absolute path in that situation.

The reason why this lazy thunk was only forced after a Sys.chdir is
that, at hygiene time, only the subtrees that are selected for hygiene
checking are forced. It is an unexpected behavior that non-hygienic
subtrees could remain unforced for so long (in particular, the
semantics of parsing a configuration file only much later in the build
process is more than unclear); this commit also removes this behavior
by always forcing the whole traversed subtree just before hygiene.

Conflicts:
	Changes

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@14999 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6445: ocamlbuild fails to find ocamlfind.exe

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15014 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6502: spurious warning on "use_menhir" tag

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15043 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6495: add a safe_string tag to ocamlbuild (patch by Anil Madhavapeddy)

It kicks in for interface inference and compiler invocations.
safe_string does also alter the output of inferred types if
short_paths is used (since "bytes" is shorter than "string"),
but this requires a change to the ocamldoc driver and isn't
addressed in this PR.

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15049 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6495: also add unsafe_string tag to ocamlbuild

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15050 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: add no_alias_deps tag (patch by Daniel Bünzli)

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15051 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: add an interface knob to decide whether we are in an ocamlbuild project

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15109 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: interpret tag-line before slurp, in case it contains "<foo>: traverse"

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15110 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#5851: ocamlbuild: hint when no _tags or myocamlbuild.ml are present

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15111 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#5406 ocamlbuild: "tag 'package' does not expect a parameter"

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15112 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: fix the -use-ocamlfind documentation (not the default)

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15113 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6300: ocamlbuild -use-ocamlfind conflicts with -ocamlc

Note: there is a known issue with how -use-ocamlfind work: its
semantics is to change the compilation commands (ocamlc etc.) during
the option initialisation phase. This new change make it still take
into account changes to the command that would have been requested by
the user at option time (-ocamlc ...) or before (Before_option
dispatch in a plugin). But if you only activate use_ocamlfind after
the options (After_option dispatch), the command will not be changed,
but the "-package ..." ocamlfind-specific flags will still be passed
at compiler invocation.
In other words, use-ocamlfind must always be set *strictly* before
After_options (in a plugin or through the command-line), otherwise
weird stuff happens.

This glitch would be fixable in this commit (by moving
ocamlfind-command-initialization after After_options), but doing so
could have bad backward-compatibility consequences: current users may
very-well work-around PR#6300 by manually setting the command
(eg. Options.ocamlc := "ocamlfind ocamlcp") at After_options
dispatch. If we moved ocamlfind's initialization after After_options,
plugins using this manual workaround would stop doing what the users
expect (the ocaml command would become "ocamlfind ocamlfind ocamlcp"
in this example: not cool).

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15114 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: better provenance for syntax error messages

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15115 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Revert "ocamlbuild: better provenance for syntax error messages"

(Still-in-development commit sent by mistake)

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15116 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
ocamlbuild: better provenance for syntax error messages -- full

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15117 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
PR#6087 ocamlbuild: improve _tags parsing of escaped newlines

git-svn-id: http://caml.inria.fr/svn/ocaml/version/4.02@15118 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02