diff --git a/src/dune_pkg/local_package.ml b/src/dune_pkg/local_package.ml index 7dd392c8684..b3cb60177cf 100644 --- a/src/dune_pkg/local_package.ml +++ b/src/dune_pkg/local_package.ml @@ -145,7 +145,26 @@ let of_package (t : Dune_lang.Package.t) = let name = Package.name t in match Package.original_opam_file t with | None -> - let dependencies = t |> Package.depends |> Dependency_formula.of_dependencies in + let depends = + match Package.depends t, Package.has_opam_file t with + | [], Exists true -> + let name = t |> Package.name |> Package_name.to_string in + let hints = + [ Pp.textf "Add a `depends` field in the `package` stanza of package %S or" name + ; Pp.textf "Delete the package %S from `dune-project`" name + ] + in + User_warning.emit + ~hints + [ Pp.textf + "Package %S loaded from `dune-project` but does not declare any \ + dependencies" + name + ]; + [] + | otherwise, _ -> otherwise + in + let dependencies = Dependency_formula.of_dependencies depends in { name ; version ; dependencies diff --git a/test/blackbox-tests/test-cases/pkg/pin-stanza/mixed-opam-dune.t b/test/blackbox-tests/test-cases/pkg/pin-stanza/mixed-opam-dune.t index 0d2ab582158..6e2cdb44fbf 100644 --- a/test/blackbox-tests/test-cases/pkg/pin-stanza/mixed-opam-dune.t +++ b/test/blackbox-tests/test-cases/pkg/pin-stanza/mixed-opam-dune.t @@ -29,18 +29,34 @@ should favor the dune metadata in such a case. > EOF $ dune pkg lock + Warning: Package "bar" loaded from `dune-project` but does not declare any + dependencies + Hint: Add a `depends` field in the `package` stanza of package "bar" or + Hint: Delete the package "bar" from `dune-project` + Warning: Package "bar" loaded from `dune-project` but does not declare any + dependencies + Hint: Add a `depends` field in the `package` stanza of package "bar" or + Hint: Delete the package "bar" from `dune-project` + Warning: Package "bar" loaded from `dune-project` but does not declare any + dependencies + Hint: Add a `depends` field in the `package` stanza of package "bar" or + Hint: Delete the package "bar" from `dune-project` + Warning: Package "bar" loaded from `dune-project` but does not declare any + dependencies + Hint: Add a `depends` field in the `package` stanza of package "bar" or + Hint: Delete the package "bar" from `dune-project` Solution for dune.lock: - bar.dev - foo.dev - $ cat dune.lock/bar.pkg | sed "/source/,//d" + $ cat dune.lock/bar.pkg | sed "/source/,//d" (version dev) (dune) (dev) - $ cat dune.lock/foo.pkg | sed "/source/,//d" + $ cat dune.lock/foo.pkg | sed "/source/,//d" (version dev) (dune)