Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0005406OCamlOCamlbuild (the tool)public2011-11-22 23:552014-08-19 13:23
Reporterwilliam 
Assigned Togasche 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version3.12.0 
Target Version4.02.0+devFixed in Version4.02.0+dev 
Summary0005406: tag does not expect a parameter, but is used with parameter ...
Descriptionocamlbuild warns for something strange. For example :

# ocamlbuild -pkgs lablgtk2 -tags warn_s tree.byte
Warning: tag "package" does not expect a parameter, but is used with parameter "lablgtk2"
Finished, 3 targets (0 cached) in 00:00:00.

Attached is file tree.ml taken from lablgtk2
Tagsjunior_job
Attached Files? file icon tree.ml [^] (3,352 bytes) 2011-11-22 23:55 [Show Content]

- Relationships
related to 0005547acknowledged Enable the "-use-ocamlfind" option by default 

-  Notes
(0006208)
xclerc (developer)
2011-11-23 10:39

This is not really a bug; if you use any ocamlfind feature,
you should pass the "-use-ocamlfind" command-line
switch to ocamlbuild. It will make the warning disappear.
(0006210)
william (reporter)
2011-11-26 12:17

ok that works. But we are not supposed to know that using "pkgs" option also requires "use-ocamlfind" option. If "pkgs" is an ocamlfind feature, then why not activate "use-ocamlfind" at the same time? Or why not activate ocamlfind all the time?
(0006211)
ygrek (reporter)
2011-11-28 13:56

or make the warning say what it means. I.e. when tag with unexpected parameter is "package" hint the user that -use-ocamlfind is required.
(0008044)
meyer (developer)
2012-09-10 05:36

Since the problem will go away after we implement -use-ocamlfind by default, I think the good fix for that would be to document the command line options that are not available with -no-ocamlfind, but also implement proper messages for all of them, and just halt the compilation with error if they are used with -no-ocamlfind.
(0009972)
gasche (developer)
2013-07-29 09:09

Recording which command-line options and tags depend on the `-use-ocamlfind` option and reporting an error when they're used otherwise should be reasonably easy (marked as "junior job"). The trunk now uses -use-ocamlfind by default, but supporting -no-ocamlfind scenarios will still be useful for 4.01 (and possibly bugfixes releases).
(0010011)
meyer (developer)
2013-07-30 19:18

The problem should go away on trunk even when not using -use-ocamlfind, william, could you test it, and indeed see it's working?
(0010046)
william (reporter)
2013-08-01 00:55
edited on: 2013-08-01 00:56

* ocamlbuild -pkgs lablgtk2 -tags warn_s tree.byte
works straight

* ocamlbuild -no-ocamlfind -pkgs lablgtk2 -tags warn_s tree.byte
gets the same strange warning : tag "package" does not expect a parameter, but is used with parameter "lablgtk2".
then there is an error (as modules from lablgtk2 are not found).
raising error explaining that "-pkgs" is not compatible with "-no-ocamlfind" would be more expressive for an end user point of view.

(0010084)
meyer (developer)
2013-08-03 00:28

Right, it's not so obvious how to do this, and I'd like to postpone it for the next release. I care about the quality of such patches. If you write a good patch for it I will apply it straight away. And we need proper testing of these, preferable through the ocamlbuild testsuite.

There are two things that matter here:

* with the switches certain order is important, some of the flags just preclude other ones, but still you have a space for detecting these, and marking them redundant
* with the tags, the predicates might not trigger the tags to be included, especially the check might happen dynamically as the dependencies come.

so proper fix, is to just use proper heuristics, and just be simple.

Patches are always warmly welcome. Thank you.
(0010086)
gasche (developer)
2013-08-03 06:46

> with the tags, the predicates might not trigger the tags to be included,
> especially the check might happen dynamically as the dependencies come.

I think that a tag that is never triggered by any dependency of any reasonable target for the project should ultimately trigger a warning, because it may be a typo (and is useless). I mentioned this in PR#5212, and I think that would an important but difficult improvement to OCamlbuild's usability.

So I think it's fine if we warn on cases where the tag would actually never have been used. I would be of the opinion to have a way to mark dependencies of some tags over some configuration options (may also be useful for, say, potential menhir-specific tags), and simply refuse to work (with a proper error message) when those dependencies are not satisfied.
(0012020)
gasche (developer)
2014-08-19 13:23

Fixed in 4.02@15112.

There is something subtle here, which is that the -pkg option *can work* without -use-ocamlfind, it only uses a different (and somewhat complex and possibly fragile that I'm glad most users don't rely on anymore) way to do things, which is to call Findlib internally instead of offloading the work to ocamlfind. So the patch disables the warning, but it does not make mandatory to pass -use-ocamlfind in these circumstances.

- Issue History
Date Modified Username Field Change
2011-11-22 23:55 william New Issue
2011-11-22 23:55 william File Added: tree.ml
2011-11-23 10:39 xclerc Note Added: 0006208
2011-11-23 10:39 xclerc Status new => closed
2011-11-23 10:39 xclerc Resolution open => no change required
2011-11-26 12:17 william Note Added: 0006210
2011-11-26 12:17 william Status closed => feedback
2011-11-26 12:17 william Resolution no change required => reopened
2011-11-28 13:56 ygrek Note Added: 0006211
2012-02-02 15:17 protz Category OCamlbuild => OCamlbuild (the tool)
2012-03-29 19:14 gasche Relationship added related to 0005547
2012-07-10 13:08 doligez Target Version => 4.01.0+dev
2012-07-31 13:36 doligez Target Version 4.01.0+dev => 4.00.1+dev
2012-09-10 05:30 meyer Assigned To => meyer
2012-09-10 05:30 meyer Status feedback => assigned
2012-09-10 05:36 meyer Note Added: 0008044
2012-09-20 16:50 doligez Target Version 4.00.1+dev => 4.01.0+dev
2013-07-29 09:09 gasche Note Added: 0009972
2013-07-29 09:09 gasche Tag Attached: junior_job
2013-07-30 19:18 meyer Note Added: 0010011
2013-07-30 19:18 meyer Status assigned => feedback
2013-08-01 00:55 william Note Added: 0010046
2013-08-01 00:55 william Status feedback => assigned
2013-08-01 00:56 william Note Edited: 0010046 View Revisions
2013-08-03 00:28 meyer Note Added: 0010084
2013-08-03 06:46 gasche Note Added: 0010086
2013-08-14 09:22 doligez Target Version 4.01.0+dev => 4.01.1+dev
2014-01-21 14:01 doligez Assigned To meyer =>
2014-05-25 20:20 doligez Target Version 4.01.1+dev => 4.02.0+dev
2014-08-19 13:23 gasche Note Added: 0012020
2014-08-19 13:23 gasche Status assigned => resolved
2014-08-19 13:23 gasche Fixed in Version => 4.02.0+dev
2014-08-19 13:23 gasche Resolution reopened => fixed
2014-08-19 13:23 gasche Assigned To => gasche


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker