Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0005305OCamlOCamlbuild (the tool)public2011-06-29 12:202012-05-15 11:02
ReporterDmitry Grebeniuk 
Assigned Tolefessan 
PrioritynormalSeveritymajorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version3.12.1+dev 
Target VersionFixed in Version4.00.0+dev 
Summary0005305: ocamlbuild creates link for some files in .itarget
Descriptionocamlbuild creates links for .cm{i,o,a,xa,xs}-files in current directory and then complains that the directory is dirty:

$ ocamlc -version
3.12.1+rc1

$ ls -lab
total 16
drwxr-xr-x 2 gds gds 4096 Jun 29 13:14 .
drwxrwxrwt 23 root root 4096 Jun 29 13:09 ..
-rw-r--r-- 1 gds gds 6 Jun 29 13:08 a.itarget
-rw-r--r-- 1 gds gds 28 Jun 29 13:03 a.ml

$ cat a.itarget
a.cma

$ cat a.ml
let () = print_string "q\n"

$ ocamlbuild a.otarget
Finished, 4 targets (0 cached) in 00:00:00.

$ ls -lab
total 20
drwxr-xr-x 3 gds gds 4096 Jun 29 13:15 .
drwxrwxrwt 23 root root 4096 Jun 29 13:09 ..
drwxr-xr-x 2 gds gds 4096 Jun 29 13:15 _build
lrwxrwxrwx 1 gds gds 12 Jun 29 13:15 a.cma -> _build/a.cma
-rw-r--r-- 1 gds gds 6 Jun 29 13:08 a.itarget
-rw-r--r-- 1 gds gds 28 Jun 29 13:03 a.ml

$ ocamlbuild a.otarget
SANITIZE: a total of 1 file that should probably not be in your source tree
  has been found. A script shell file "_build/sanitize.sh" is being created.
  Check this script and run it to remove unwanted files or use other options
  (such as defining hygiene exceptions or using the -no-hygiene option).
IMPORTANT: I cannot work with leftover compiled files.
ERROR: Leftover Ocaml compilation files:
  File a.cma in . has suffix .cma
Exiting due to hygiene violations.
Compilation unsuccessful after building 0 targets (0 cached) in 00:00:00.

$
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0006037)
Dmitry Grebeniuk (reporter)
2011-06-29 12:27

As I see now, the problem is not in the created symlinks, but in the way the ocamlbuild determines whether the directory is dirty. For example, in a slightly modified example the .byte and .native files are handled as "clean" (look at the list with "Leftover Ocaml compilation files"):

$ ls -lab
total 20
drwxr-xr-x 3 gds gds 4096 Jun 29 13:21 .
drwxrwxrwt 24 root root 4096 Jun 29 13:21 ..
drwxr-xr-x 2 gds gds 4096 Jun 29 13:21 _build
lrwxrwxrwx 1 gds gds 13 Jun 29 13:21 a.byte -> _build/a.byte
lrwxrwxrwx 1 gds gds 12 Jun 29 13:21 a.cma -> _build/a.cma
lrwxrwxrwx 1 gds gds 12 Jun 29 13:21 a.cmi -> _build/a.cmi
lrwxrwxrwx 1 gds gds 12 Jun 29 13:21 a.cmo -> _build/a.cmo
lrwxrwxrwx 1 gds gds 13 Jun 29 13:21 a.cmxa -> _build/a.cmxa
lrwxrwxrwx 1 gds gds 13 Jun 29 13:21 a.cmxs -> _build/a.cmxs
-rw-r--r-- 1 gds gds 48 Jun 29 13:20 a.itarget
-rw-r--r-- 1 gds gds 28 Jun 29 13:17 a.ml
lrwxrwxrwx 1 gds gds 15 Jun 29 13:21 a.native -> _build/a.native

$ ocamlbuild a.otarget
SANITIZE: a total of 4 files that should probably not be in your source tree
has been found. A script shell file "_build/sanitize.sh" is being created.
Check this script and run it to remove unwanted files or use other options
(such as defining hygiene exceptions or using the -no-hygiene option).
IMPORTANT: I cannot work with leftover compiled files.
ERROR: Leftover Ocaml compilation files:
File a.cmo in . has suffix .cmo
File a.cmi in . has suffix .cmi
File a.cma in . has suffix .cma
File a.cmxa in . has suffix .cmxa
Exiting due to hygiene violations.
Compilation unsuccessful after building 0 targets (0 cached) in 00:00:00.

$
(0006038)
Dmitry Grebeniuk (reporter)
2011-06-29 13:08

I've found this bug while installing "batteries": "make install" failed after "make all".
(0006047)
elehack (reporter)
2011-07-17 01:13

Passing -no-links to ocamlbuild serves as a workround for this bug, and that is what we are currently doing in the Batteries sources.
(0007432)
lefessan (developer)
2012-05-15 11:02

ocamlbuild won't complain anymore about remaining links to the _build/ directory.

- Issue History
Date Modified Username Field Change
2011-06-29 12:20 Dmitry Grebeniuk New Issue
2011-06-29 12:27 Dmitry Grebeniuk Note Added: 0006037
2011-06-29 13:08 Dmitry Grebeniuk Note Added: 0006038
2011-07-17 01:13 elehack Note Added: 0006047
2012-02-02 15:17 protz Category OCamlbuild => OCamlbuild (the tool)
2012-03-26 16:16 lefessan Assigned To => lefessan
2012-03-26 16:16 lefessan Status new => assigned
2012-05-15 11:02 lefessan Note Added: 0007432
2012-05-15 11:02 lefessan Status assigned => resolved
2012-05-15 11:02 lefessan Fixed in Version => 4.00.0+dev
2012-05-15 11:02 lefessan Resolution open => fixed


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker