Fixed Bazel deb package dependency on Ubuntu 16.04

Declare openjdk-9-jdk as Conflicts
Progress towards #1456

--
Change-Id: I67c17b78f90f81dbcc9c39bf6f3915789662fa94
Reviewed-on: https://bazel-review.googlesource.com/#/c/3951
MOS_MIGRATED_REVID=126402113
diff --git a/scripts/packages/BUILD b/scripts/packages/BUILD
index 38fc2f3..05702d1 100644
--- a/scripts/packages/BUILD
+++ b/scripts/packages/BUILD
@@ -111,6 +111,9 @@
     name = "bazel-debian",
     architecture = "amd64",
     built_using = "bazel (HEAD)",
+    conflicts = [
+        "openjdk-9-jdk",
+    ],
     data = ":debian-data",
     depends = select({
         "//tools/jdk:jdk7": [
diff --git a/tools/build_defs/pkg/README.md b/tools/build_defs/pkg/README.md
index 8095647..4e6b8a6 100644
--- a/tools/build_defs/pkg/README.md
+++ b/tools/build_defs/pkg/README.md
@@ -227,7 +227,7 @@
 ### pkg_deb
 
 ```python
-pkg_deb(name, data, package, architecture, maintainer, preinst, postinst, prerm, postrm, version, version_file, description, description_file, built_using, built_using_file, priority, section, homepage, depends, suggests, enhances, predepends, recommends)
+pkg_deb(name, data, package, architecture, maintainer, preinst, postinst, prerm, postrm, version, version_file, description, description_file, built_using, built_using_file, priority, section, homepage, depends, suggests, enhances, conflicts, predepends, recommends)
 ```
 
 Create a debian package. See <a
@@ -358,7 +358,7 @@
     <tr>
       <td>
         <code>depends</code>, <code>suggests</code>, <code>enhances</code>,
-        <code>predepends</code> and <code>recommends</code>.
+        <code>conflicts</code>, <code>predepends</code> and <code>recommends</code>.
       </td>
       <td>
         <code>String list, optional</code>
diff --git a/tools/build_defs/pkg/make_deb.py b/tools/build_defs/pkg/make_deb.py
index 54c5ee9..c232928 100644
--- a/tools/build_defs/pkg/make_deb.py
+++ b/tools/build_defs/pkg/make_deb.py
@@ -26,22 +26,16 @@
 # list of debian fields : (name, mandatory, wrap[, default])
 # see http://www.debian.org/doc/debian-policy/ch-controlfields.html
 DEBIAN_FIELDS = [
-    ('Package', True, False),
-    ('Version', True, False),
+    ('Package', True, False), ('Version', True, False),
     ('Section', False, False, 'contrib/devel'),
     ('Priority', False, False, 'optional'),
-    ('Architecture', True, False, 'all'),
-    ('Depends', False, True, []),
-    ('Recommends', False, True, []),
-    ('Suggests', False, True, []),
-    ('Enhances', False, True, []),
-    ('Pre-Depends', False, True, []),
-    ('Installed-Size', False, False),
-    ('Maintainer', True, False),
-    ('Description', True, True),
-    ('Homepage', False, False),
-    ('Built-Using', False, False, 'Bazel')
-    ]
+    ('Architecture', True, False, 'all'), ('Depends', False, True, []),
+    ('Recommends', False, True, []), ('Suggests', False, True, []),
+    ('Enhances', False, True, []), ('Conflicts', False, True, []),
+    ('Pre-Depends', False, True, []), ('Installed-Size', False, False),
+    ('Maintainer', True, False), ('Description', True, True),
+    ('Homepage', False, False), ('Built-Using', False, False, 'Bazel')
+]
 
 gflags.DEFINE_string('output', None, 'The output file, mandatory')
 gflags.MarkFlagAsRequired('output')
@@ -254,20 +248,27 @@
 
 
 def main(unused_argv):
-  CreateDeb(FLAGS.output, FLAGS.data,
+  CreateDeb(FLAGS.output,
+            FLAGS.data,
             preinst=GetFlagValue(FLAGS.preinst, False),
             postinst=GetFlagValue(FLAGS.postinst, False),
             prerm=GetFlagValue(FLAGS.prerm, False),
             postrm=GetFlagValue(FLAGS.postrm, False),
-            package=FLAGS.package, version=GetFlagValue(FLAGS.version),
+            package=FLAGS.package,
+            version=GetFlagValue(FLAGS.version),
             description=GetFlagValue(FLAGS.description),
             maintainer=FLAGS.maintainer,
-            section=FLAGS.section, architecture=FLAGS.architecture,
-            depends=FLAGS.depends, suggests=FLAGS.suggests,
-            enhances=FLAGS.enhances, preDepends=FLAGS.pre_depends,
-            recommends=FLAGS.recommends, homepage=FLAGS.homepage,
+            section=FLAGS.section,
+            architecture=FLAGS.architecture,
+            depends=FLAGS.depends,
+            suggests=FLAGS.suggests,
+            enhances=FLAGS.enhances,
+            preDepends=FLAGS.pre_depends,
+            recommends=FLAGS.recommends,
+            homepage=FLAGS.homepage,
             builtUsing=GetFlagValue(FLAGS.built_using),
             priority=FLAGS.priority,
+            conflicts=FLAGS.conflicts,
             installedSize=GetFlagValue(FLAGS.installed_size))
   CreateChanges(
       FLAGS.changes,
diff --git a/tools/build_defs/pkg/pkg.bzl b/tools/build_defs/pkg/pkg.bzl
index 55d15f2..0f00fc3 100644
--- a/tools/build_defs/pkg/pkg.bzl
+++ b/tools/build_defs/pkg/pkg.bzl
@@ -117,6 +117,7 @@
   args += ["--depends=" + d for d in ctx.attr.depends]
   args += ["--suggests=" + d for d in ctx.attr.suggests]
   args += ["--enhances=" + d for d in ctx.attr.enhances]
+  args += ["--conflicts=" + d for d in ctx.attr.conflicts]
   args += ["--pre_depends=" + d for d in ctx.attr.predepends]
   args += ["--recommends=" + d for d in ctx.attr.recommends]
 
@@ -181,6 +182,7 @@
         "depends": attr.string_list(default=[]),
         "suggests": attr.string_list(default=[]),
         "enhances": attr.string_list(default=[]),
+        "conflicts": attr.string_list(default=[]),
         "predepends": attr.string_list(default=[]),
         "recommends": attr.string_list(default=[]),
         # Implicit dependencies.