Repository: conan-io/conan

Issue:
Message with package ID "Can't find a XXX package for the specified settings"
To help us debug your issue please explain:

- [x] I've read the [CONTRIBUTING guide](https://raw.githubusercontent.com/conan-io/conan/develop/.github/CONTRIBUTING.md).
- [x] I've specified the Conan version, operating system version and any tool that can be relevant.
- [x] I've explained the steps to reproduce the error or the motivation/use case of the question/suggestion.

1.0.4

It helps if Conan shows the package ID when a package is missing, so you can, for example, search for it in local or remote. 

UX improvement: show the sha of the missing package
When a binary package is not available we could show the SHA. In case we have it in a different repository would be nice to see what is the package missing, not only the settings and options. 

```
OpenSSL/1.0.2l@conan/stable: WARN: Can't find a 'OpenSSL/1.0.2l@conan/stable' package for the specified options and settings:
- Settings: arch=x86, build_type=Release, compiler=apple-clang, compiler.version=9.0, os=Macos
- Options: 386=False, no_asm=False, no_bf=False, no_cast=False, no_des=False, no_dh=False, no_dsa=False, no_hmac=False, no_md2=False, no_md5=False, no_mdc2=False, no_rc2=False, no_rc4=False, no_rc5=False, no_rsa=False, no_sha=False, no_sse2=False, no_threads=False, no_zlib=False, shared=False, zlib:shared=False

ERROR: Missing prebuilt package for 'OpenSSL/1.0.2l@conan/stable'
Try to build it from sources with "--build OpenSSL"
Or read "http://docs.conan.io/en/latest/faq/troubleshooting.html#error-missing-prebuilt-package"
```


Discussion:

Resolving patch:
diff --git a/conans/client/installer.py b/conans/client/installer.py
--- a/conans/client/installer.py
+++ b/conans/client/installer.py
@@ -186,14 +186,15 @@ def _build_package(self):
                         self._out.warn("Unable to remove imported file from build: %s" % f)
 
 
-def _raise_package_not_found_error(conan_file, conan_ref, out):
+def _raise_package_not_found_error(conan_file, conan_ref, package_id, out):
     settings_text = ", ".join(conan_file.info.full_settings.dumps().splitlines())
     options_text = ", ".join(conan_file.info.full_options.dumps().splitlines())
 
     out.warn('''Can't find a '%s' package for the specified options and settings:
 - Settings: %s
 - Options: %s
-''' % (conan_ref, settings_text, options_text))
+- Package ID: %s
+''' % (conan_ref, settings_text, options_text, package_id))
 
     raise ConanException('''Missing prebuilt package for '%s'
 Try to build it from sources with "--build %s"
@@ -354,7 +355,7 @@ def _build(self, nodes_by_level, skip_private_nodes, deps_graph, profile_build_r
                 package_ref = PackageReference(conan_ref, package_id)
                 build_allowed = self._build_mode.allowed(conan_file, conan_ref)
                 if not build_allowed:
-                    _raise_package_not_found_error(conan_file, conan_ref, output)
+                    _raise_package_not_found_error(conan_file, conan_ref, package_id, output)
 
                 skip_build = conan_file.develop and keep_build
                 if skip_build:
@@ -434,7 +435,8 @@ def _get_remote_package(self, conan_file, package_reference, output):
                 make_read_only(package_folder)
             return True
 
-        _raise_package_not_found_error(conan_file, package_reference.conan, output)
+        _raise_package_not_found_error(conan_file, package_reference.conan,
+                                       package_reference.package_id, output)
 
     def _log_built_package(self, conan_file, package_ref, duration):
         build_folder = self._client_cache.build(package_ref, conan_file.short_paths)


Test patch:
diff --git a/conans/test/integration/package_id_test.py b/conans/test/integration/package_id_test.py
--- a/conans/test/integration/package_id_test.py
+++ b/conans/test/integration/package_id_test.py
@@ -165,6 +165,7 @@ def test_version_full_package_schema(self):
         with self.assertRaises(Exception):
             self.client.run("install .")
         self.assertIn("Can't find a 'Hello2/2.3.8@lasote/stable' package", self.client.user_io.out)
+        self.assertIn("Package ID:", self.client.user_io.out)
 
     def test_nameless_mode(self):
         self._export("Hello", "1.2.0", package_id_text=None, requires=None)