16851082 build_release (aka build version) should not be displayed
authorYiteng Zhang <yiteng.zhang@oracle.com>
Fri, 27 Sep 2013 11:38:34 -0700
changeset 2958 868e07939116
parent 2955 796cde775790
child 2959 21474d6ff9f0
16851082 build_release (aka build version) should not be displayed
src/client.py
src/modules/actions/depend.py
src/modules/catalog.py
src/modules/client/api.py
src/modules/client/image.py
src/modules/client/imageplan.py
src/modules/client/linkedimage/common.py
src/modules/client/pkg_solver.py
src/modules/config.py
src/modules/fmri.py
src/modules/lint/engine.py
src/modules/lint/pkglint_action.py
src/modules/lint/pkglint_manifest.py
src/modules/manifest.py
src/modules/mediator.py
src/modules/publish/dependencies.py
src/modules/server/api.py
src/modules/version.py
src/pkgrepo.py
src/publish.py
src/pull.py
src/sign.py
src/tests/api/t_api_list.py
src/tests/api/t_catalog.py
src/tests/api/t_fmri.py
src/tests/api/t_p5i.py
src/tests/api/t_pkg_api_install.py
src/tests/api/t_version.py
src/tests/cli/t_depot_config.py
src/tests/cli/t_fix.py
src/tests/cli/t_pkg_composite.py
src/tests/cli/t_pkg_info.py
src/tests/cli/t_pkg_install.py
src/tests/cli/t_pkg_linked.py
src/tests/cli/t_pkg_temp_sources.py
src/tests/cli/t_pkgdep_resolve.py
src/tests/cli/t_pkgmerge.py
src/tests/cli/t_pkgrecv.py
src/tests/cli/t_pkgrepo.py
src/tests/cli/t_pkgsend.py
src/tests/cli/t_publish_api.py
src/tests/cli/t_util_merge.py
src/tests/perf/fmribench.py
src/tests/perf/membench.py
src/util/publish/pkglint.py
src/util/publish/pkgmerge.py
src/util/publish/pkgsurf.py
src/web/en/catalog.shtml
src/web/en/search.shtml
--- a/src/client.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/client.py	Fri Sep 27 11:38:34 2013 -0700
@@ -530,9 +530,15 @@
                         else:
                                 spub = " (" + pub + ")"
 
-                        # Display full FMRI for verbose case.
+                        # Display full FMRI (without build version) for
+                        # verbose case.
+                        # Use class method instead of creating an object for
+                        # performance reasons.
                         if verbose:
-                                pfmri = "pkg://%s/%s@%s" % (pub, stem, ver)
+                                release, build_release, branch, ts = \
+                                    version.Version.split(ver)[0]
+                                pfmri = "pkg://%s/%s@%s-%s:%s" % \
+                                    (pub, stem, release, branch, ts)
                                 msg(fmt_str % (pfmri, status))
                                 continue
 
@@ -1122,17 +1128,24 @@
                                 else:
                                         pparent = dest.publisher
                                 pname = dest.pkg_stem
-                                pver = str(src.fmri.version)
+                                pver = src.fmri.version.get_version(
+                                    include_build=False)
                                 if src != dest:
-                                        pver += " -> %s" % dest.fmri.version
+                                        pver += " -> %s" % \
+                                            dest.fmri.version.get_version(
+                                                include_build=False)
                         elif dest:
                                 pparent = dest.publisher
                                 pname = dest.pkg_stem
-                                pver = "None -> %s" % dest.fmri.version
+                                pver = "None -> %s" % \
+                                    dest.fmri.version.get_version(
+                                        include_build=False)
                         else:
                                 pparent = src.publisher
                                 pname = src.pkg_stem
-                                pver = "%s -> None" % src.fmri.version
+                                pver = "%s -> None" % \
+                                    src.fmri.version.get_version(
+                                        include_build=False)
 
                         changed[pparent].append((pname, pver))
 
@@ -1323,7 +1336,8 @@
                 lic = dest.license
                 if show_req:
                         logger.info("-" * 60)
-                        logger.info(_("Package: %s") % pfmri)
+                        logger.info(_("Package: %s") % pfmri.get_fmri(
+                            include_build=False))
                         logger.info(_("License: %s\n") % lic)
                         logger.info(dest.get_text())
                         logger.info("\n")
@@ -3002,11 +3016,10 @@
                             (pi.version, hum_ver[0]))
                 else:
                         msg(_("       Version:"), pi.version)
-                msg(_(" Build Release:"), pi.build_release)
                 msg(_("        Branch:"), pi.branch)
                 msg(_("Packaging Date:"), pi.packaging_date)
                 msg(_("          Size:"), misc.bytes_to_str(pi.size))
-                msg(_("          FMRI:"), pi.fmri)
+                msg(_("          FMRI:"), pi.fmri.get_fmri(include_build=False))
                 # XXX add license/copyright info here?
 
         if notfound:
--- a/src/modules/actions/depend.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/actions/depend.py	Fri Sep 27 11:38:34 2013 -0700
@@ -203,8 +203,7 @@
 
                 # XXX Exclude and range between min and max not yet handled
                 def __min_version():
-                        return pkg.version.Version("0",
-                            image.attrs["Build-Release"])
+                        return pkg.version.Version("0")
 
                 ctype = self.attrs["type"]
 
@@ -216,7 +215,7 @@
                 # get a list of fmris and do fmri token substitution
                 pfmris = []
                 for i in self.attrlist("fmri"):
-                        f = pkg.fmri.PkgFmri(i, image.attrs["Build-Release"])
+                        f = pkg.fmri.PkgFmri(i)
                         if f.pkg_name == DEPEND_SELF:
                                 f = pfmri
                         pfmris.append(f)
@@ -253,8 +252,7 @@
                         min_fmri = pfmri.copy()
                         min_fmri.version = __min_version()
                 elif ctype == "conditional":
-                        cfmri = pkg.fmri.PkgFmri(self.attrs["predicate"],
-                            image.attrs["Build-Release"])
+                        cfmri = pkg.fmri.PkgFmri(self.attrs["predicate"])
                         installed_cversion = image.get_version_installed(cfmri)
                         if installed_cversion is not None and \
                             installed_cversion.is_successor(cfmri):
@@ -477,7 +475,7 @@
                 for attr in ("predicate", "fmri"):
                         for f in self.attrlist(attr):
                                 try:
-                                        pkg.fmri.PkgFmri(f, "5.11")
+                                        pkg.fmri.PkgFmri(f)
                                 except (pkg.version.VersionError,
                                     pkg.fmri.FmriError), e:
                                         if attr == "fmri" and f == "__TBD":
--- a/src/modules/catalog.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/catalog.py	Fri Sep 27 11:38:34 2013 -0700
@@ -830,9 +830,8 @@
                 sorted."""
 
                 def order(a, b):
-                        # XXX version requires build string; 5.11 is not sane.
-                        v1 = pkg.version.Version(a["version"], "5.11")
-                        v2 = pkg.version.Version(b["version"], "5.11")
+                        v1 = pkg.version.Version(a["version"])
+                        v2 = pkg.version.Version(b["version"])
                         return cmp(v1, v2)
 
                 self.load()
@@ -1825,7 +1824,6 @@
                                 wildcards.
                 """
 
-                brelease = "5.11"
                 for pat in patterns:
                         error = None
                         matcher = None
@@ -1846,11 +1844,9 @@
                                         matcher = fmri.fmri_match
 
                                 if matcher == fmri.glob_match:
-                                        npat = fmri.MatchingPkgFmri(pat_stem,
-                                            brelease)
+                                        npat = fmri.MatchingPkgFmri(pat_stem)
                                 else:
-                                        npat = fmri.PkgFmri(pat_stem,
-                                            brelease)
+                                        npat = fmri.PkgFmri(pat_stem)
 
                                 if not pat_ver:
                                         # Do nothing.
@@ -1858,12 +1854,10 @@
                                 elif "*" in pat_ver or "?" in pat_ver or \
                                     pat_ver == "latest":
                                         npat.version = \
-                                            pkg.version.MatchingVersion(pat_ver,
-                                                brelease)
+                                            pkg.version.MatchingVersion(pat_ver)
                                 else:
                                         npat.version = \
-                                            pkg.version.Version(pat_ver,
-                                                brelease)
+                                            pkg.version.Version(pat_ver)
 
                         except (fmri.FmriError, pkg.version.VersionError), e:
                                 # Whatever the error was, return it.
@@ -2927,8 +2921,6 @@
                 an FMRI object should be returned in place of the (pub, stem,
                 ver) tuple that is normally returned."""
 
-                brelease = "5.11"
-
                 # Each pattern in patterns can be a partial or full FMRI, so
                 # extract the individual components for use in filtering.
                 newest = False
@@ -3038,8 +3030,7 @@
                                                         # version object more
                                                         # than once for each
                                                         # entry.
-                                                        ever = pkg.version.Version(ver,
-                                                            brelease)
+                                                        ever = pkg.version.Version(ver)
                                                 if not ever.is_successor(pat_ver,
                                                     pkg.version.CONSTRAINT_AUTO):
                                                         if omit_package is None:
@@ -3152,8 +3143,8 @@
 
                         # Return the requested package data.
                         if return_fmris:
-                                pfmri = fmri.PkgFmri(build_release=brelease,
-                                    name=stem, publisher=pub, version=ver)
+                                pfmri = fmri.PkgFmri(name=stem, publisher=pub,
+                                    version=ver)
                                 yield (pfmri, states, attrs)
                         else:
                                 yield (t, states, attrs)
@@ -3213,8 +3204,6 @@
                 pat_data = []
                 wildcard_patterns = set()
 
-                brelease = "5.11"
-
                 # Each pattern in patterns can be a partial or full FMRI, so
                 # extract the individual components for use in filtering.
                 latest_pats = set()
--- a/src/modules/client/api.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/client/api.py	Fri Sep 27 11:38:34 2013 -0700
@@ -2871,7 +2871,7 @@
                             self._img.IMG_CATALOG_KNOWN)
                 return sorted(pkg_cat.categories(excludes=excludes, pubs=pubs))
 
-        def __map_installed_newest(self, brelease, pubs, known_cat=None):
+        def __map_installed_newest(self, pubs, known_cat=None):
                 """Private function.  Maps incorporations and publisher
                 relationships for installed packages and returns them
                 as a tuple of (pub_ranks, inc_stems, inc_vers, inst_stems,
@@ -2918,7 +2918,7 @@
                                         elif a.attrs["type"] == "incorporate":
                                                 # Record incorporated packages.
                                                 tgt = fmri.PkgFmri(
-                                                    a.attrs["fmri"], brelease)
+                                                    a.attrs["fmri"])
                                                 tver = tgt.version
                                                 # incorporates without a version
                                                 # should be ignored.
@@ -2944,7 +2944,7 @@
 
                         if pkgr:
                                 for f in targets:
-                                        tgt = fmri.PkgFmri(f, brelease)
+                                        tgt = fmri.PkgFmri(f)
                                         ren_stems[tgt.pkg_name] = stem
                                         ren_inst_stems.setdefault(stem,
                                             set())
@@ -3026,7 +3026,7 @@
                         if pkgr:
                                 pub, stem, ver = t
                                 for f in targets:
-                                        tgt = fmri.PkgFmri(f, brelease)
+                                        tgt = fmri.PkgFmri(f)
                                         ren_stems[tgt.pkg_name] = stem
 
                 # Determine highest ranked publisher for package stems
@@ -3521,8 +3521,6 @@
                 elif pkg_list == self.LIST_UPGRADABLE:
                         upgradable = True
 
-                brelease = self._img.attrs["Build-Release"]
-
                 # Each pattern in patterns can be a partial or full FMRI, so
                 # extract the individual components for use in filtering.
                 illegals = []
@@ -3575,7 +3573,7 @@
                 if inst_newest:
                         pub_ranks, inc_stems, inc_vers, inst_stems, ren_stems, \
                             ren_inst_stems = self.__map_installed_newest(
-                            brelease, pubs, known_cat=known_cat)
+                            pubs, known_cat=known_cat)
                 else:
                         pub_ranks = inc_stems = inc_vers = inst_stems = \
                             ren_stems = ren_inst_stems = misc.EmptyDict
@@ -3657,7 +3655,7 @@
                                         return False
 
                                 # XXX version should not require build release.
-                                ever = pkg.version.Version(ver, brelease)
+                                ever = pkg.version.Version(ver)
 
                                 # If the entry's version is a successor to
                                 # the incorporated version, then this is the
@@ -3800,8 +3798,7 @@
                                                         # version object more
                                                         # than once for each
                                                         # entry.
-                                                        ever = pkg.version.Version(ver,
-                                                            brelease)
+                                                        ever = pkg.version.Version(ver)
                                                 if not ever.is_successor(pat_ver,
                                                     pkg.version.CONSTRAINT_AUTO):
                                                         if omit_package is None:
@@ -4004,8 +4001,8 @@
                                 ranked_stems.setdefault(stem, pub)
 
                         if return_fmris:
-                                pfmri = fmri.PkgFmri(build_release=brelease,
-                                    name=stem, publisher=pub, version=ver)
+                                pfmri = fmri.PkgFmri(name=stem, publisher=pub,
+                                        version=ver)
                                 yield (pfmri, summ, pcats, states, attrs)
                         else:
                                 yield (t, summ, pcats, states, attrs)
@@ -4659,7 +4656,6 @@
                 # This maps fmris to the version at which they're incorporated.
                 inc_vers = {}
                 inst_stems = {}
-                brelease = self._img.attrs["Build-Release"]
 
                 img_cat = self._img.get_catalog(
                     self._img.IMG_CATALOG_INSTALLED)
@@ -4674,8 +4670,7 @@
                                     a.attrs["type"] != "incorporate":
                                         continue
                                 # Record incorporated packages.
-                                tgt = fmri.PkgFmri(
-                                    a.attrs["fmri"], brelease)
+                                tgt = fmri.PkgFmri(a.attrs["fmri"])
                                 tver = tgt.version
                                 # incorporates without a version should be
                                 # ignored.
@@ -5195,7 +5190,6 @@
                                 wildcards.
                 """
 
-                brelease = self._img.attrs["Build-Release"]
                 for pat in patterns:
                         error = None
                         matcher = None
@@ -5216,10 +5210,9 @@
                                         matcher = self.MATCH_FMRI
 
                                 if matcher == self.MATCH_GLOB:
-                                        npat = fmri.MatchingPkgFmri(pat_stem,
-                                            brelease)
+                                        npat = fmri.MatchingPkgFmri(pat_stem)
                                 else:
-                                        npat = fmri.PkgFmri(pat_stem, brelease)
+                                        npat = fmri.PkgFmri(pat_stem)
 
                                 if not pat_ver:
                                         # Do nothing.
@@ -5227,12 +5220,10 @@
                                 elif "*" in pat_ver or "?" in pat_ver or \
                                     pat_ver == "latest":
                                         npat.version = \
-                                            pkg.version.MatchingVersion(pat_ver,
-                                                brelease)
+                                            pkg.version.MatchingVersion(pat_ver)
                                 else:
                                         npat.version = \
-                                            pkg.version.Version(pat_ver,
-                                                brelease)
+                                            pkg.version.Version(pat_ver)
 
                         except (fmri.FmriError, pkg.version.VersionError), e:
                                 # Whatever the error was, return it.
--- a/src/modules/client/image.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/client/image.py	Fri Sep 27 11:38:34 2013 -0700
@@ -167,7 +167,6 @@
                 self.__imgdir = None
                 self.__root = root
 
-                self.attrs = { "Build-Release": "5.11" } # XXX real data needed
                 self.blocking_locks = False
                 self.cfg = None
                 self.history = history.History()
@@ -2232,10 +2231,8 @@
 
                         med_version = act.attrs.get("mediator-version")
                         if med_version:
-                                # 5.11 doesn't matter here and is never exposed
-                                # to users.
                                 med_version = pkg.version.Version(
-                                    med_version, "5.11")
+                                    med_version)
                         med_impl = act.attrs.get("mediator-implementation")
 
                         return med_version == cfg_med_version and \
@@ -3135,8 +3132,7 @@
                                 if stem in frozen_pkgs:
                                         f_ver = frozen_pkgs[stem].version
                                         if f_ver == ver or \
-                                            pkg.version.Version(ver,
-                                            self.attrs["Build-Release"]
+                                            pkg.version.Version(ver
                                             ).is_successor(f_ver,
                                             constraint=
                                             pkg.version.CONSTRAINT_AUTO):
@@ -3815,11 +3811,10 @@
                 return cat.publishers()
 
         def strtofmri(self, myfmri):
-                return pkg.fmri.PkgFmri(myfmri, self.attrs["Build-Release"])
+                return pkg.fmri.PkgFmri(myfmri)
 
         def strtomatchingfmri(self, myfmri):
-                return pkg.fmri.MatchingPkgFmri(myfmri,
-                    self.attrs["Build-Release"])
+                return pkg.fmri.MatchingPkgFmri(myfmri)
 
         def get_user_by_name(self, name):
                 uid = self._usersbyname.get(name, None)
@@ -4123,7 +4118,7 @@
                 """
 
                 def __make_publisherless_fmri(pat):
-                        p = pkg.fmri.MatchingPkgFmri(pat, "5.11")
+                        p = pkg.fmri.MatchingPkgFmri(pat)
                         p.publisher = None
                         return p
 
@@ -4337,11 +4332,8 @@
                                 valid, error = med.valid_mediator_version(
                                     med_version)
                                 if valid:
-                                        # 5.11 doesn't matter here and is never
-                                        # exposed to users.
                                          new_mediators[m]["version"] = \
-                                            pkg.version.Version(
-                                            med_version, "5.11")
+                                            pkg.version.Version(med_version)
                                 else:
                                         invalid_mediations[m]["version"] = \
                                             (med_version, error)
@@ -4618,8 +4610,7 @@
                 and the reason it was frozen."""
 
                 return [
-                    (pkg.fmri.MatchingPkgFmri(v[0], build_release="5.11"),
-                        v[1], v[2])
+                    (pkg.fmri.MatchingPkgFmri(v[0]), v[1], v[2])
                     for v in self.__freeze_dict_load().values()
                 ]
 
--- a/src/modules/client/imageplan.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/client/imageplan.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1943,8 +1943,6 @@
                 objects which is used so the same string isn't translated into
                 the same PkgFmri object multiple times."""
 
-                build_release = self.image.attrs["Build-Release"]
-
                 for key in keys:
                         offsets = []
                         for klass in action_classes:
@@ -1978,7 +1976,7 @@
                                                 pfmri = fmri_dict[fmristr]
                                         except KeyError:
                                                 pfmri = pkg.fmri.PkgFmri(
-                                                    fmristr, build_release)
+                                                    fmristr)
                                                 fmri_dict[fmristr] = pfmri
                                         if skip_dups and self.__act_dup_check(
                                             tgt, key, actstr, fmristr):
@@ -2562,7 +2560,7 @@
 
                 for fmristr in act.attrlist("release-note"):
                         try:
-                                pfmri = pkg.fmri.PkgFmri(fmristr, "5.11")
+                                pfmri = pkg.fmri.PkgFmri(fmristr)
                         except pkg.fmri.FmriError:
                                 continue # skip malformed fmris
                         # any special handling here?
@@ -2746,9 +2744,7 @@
                                 continue
                         med_ver = a.attrs.get("mediator-version")
                         if med_ver:
-                                # 5.11 doesn't matter here and is never exposed
-                                # to users.
-                                med_ver = pkg.version.Version(med_ver, "5.11")
+                                med_ver = pkg.version.Version(med_ver)
                         med_impl = a.attrs.get("mediator-implementation")
                         if not (med_ver or med_impl):
                                 # Link mediation is incomplete.
@@ -2883,10 +2879,7 @@
 
                                 med_ver = ap.dst.attrs.get("mediator-version")
                                 if med_ver:
-                                        # 5.11 doesn't matter here and is never
-                                        # exposed to users.
-                                        med_ver = pkg.version.Version(med_ver,
-                                            "5.11")
+                                        med_ver = pkg.version.Version(med_ver)
                                 med_impl = ap.dst.attrs.get(
                                     "mediator-implementation")
 
@@ -4108,7 +4101,6 @@
                 # avoid checking everywhere
                 if not patterns:
                         return set()
-                brelease = image.attrs["Build-Release"]
 
                 illegals      = []
                 nonmatch      = []
@@ -4145,10 +4137,9 @@
 
                                 if matcher == pkg.fmri.glob_match:
                                         fmri = pkg.fmri.MatchingPkgFmri(
-                                            pat_stem, brelease)
+                                            pat_stem)
                                 else:
-                                        fmri = pkg.fmri.PkgFmri(
-                                            pat_stem, brelease)
+                                        fmri = pkg.fmri.PkgFmri(pat_stem)
 
                                 sfmri = str(fmri)
                                 if sfmri in seen:
@@ -4325,7 +4316,6 @@
                         ))
 
                 # figure out which kind of matching rules to employ
-                brelease = image.attrs["Build-Release"]
                 latest_pats = set()
                 seen = set()
                 npatterns = []
@@ -4348,10 +4338,10 @@
 
                                 if matcher == pkg.fmri.glob_match:
                                         fmri = pkg.fmri.MatchingPkgFmri(
-                                            pat_stem, brelease)
+                                            pat_stem)
                                 else:
                                         fmri = pkg.fmri.PkgFmri(
-                                            pat_stem, brelease)
+                                            pat_stem)
 
                                 if not pat_ver:
                                         # Do nothing.
@@ -4359,12 +4349,10 @@
                                 elif "*" in pat_ver or "?" in pat_ver or \
                                     pat_ver == "latest":
                                         fmri.version = \
-                                            pkg.version.MatchingVersion(pat_ver,
-                                                brelease)
+                                            pkg.version.MatchingVersion(pat_ver)
                                 else:
                                         fmri.version = \
-                                            pkg.version.Version(pat_ver,
-                                                brelease)
+                                            pkg.version.Version(pat_ver)
 
                                 sfmri = str(fmri)
                                 if sfmri in seen:
@@ -4464,7 +4452,7 @@
                                                             a.name == "depend" and \
                                                             a.attrs["type"] == "require":
                                                                 ren_deps.append(pkg.fmri.PkgFmri(
-                                                                    a.attrs["fmri"], "5.11"))
+                                                                    a.attrs["fmri"]))
                                                                 continue
                                                         elif a.name != "set":
                                                                 continue
@@ -4829,9 +4817,8 @@
 
                 stems = {}
                 for p in freezes:
-                        stems.setdefault(pkg.fmri.PkgFmri(p,
-                            build_release="5.11").get_pkg_stem(anarchy=True,
-                            include_scheme=False), set()).add(p)
+                        stems.setdefault(pkg.fmri.PkgFmri(p).get_pkg_stem(
+                            anarchy=True, include_scheme=False), set()).add(p)
                 # Check whether one stem has been frozen at non-identical
                 # versions.
                 for k, v in stems.iteritems():
--- a/src/modules/client/linkedimage/common.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/client/linkedimage/common.py	Fri Sep 27 11:38:34 2013 -0700
@@ -3262,10 +3262,7 @@
         faceted_linked_deps = dict()
         for act in faceted_deps:
                 for fmri in act.attrlist("fmri"):
-                        # the build_release specified below ("5.11") doesn't
-                        # matter since we only create a PkgFmri object so we
-                        # can reference pkg_name
-                        pfmri = pkg.fmri.PkgFmri(fmri, "5.11")
+                        pfmri = pkg.fmri.PkgFmri(fmri)
                         pfmri = ppkgs_dict.get(pfmri.pkg_name, None)
                         if pfmri is None:
                                 continue
--- a/src/modules/client/pkg_solver.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/client/pkg_solver.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1360,8 +1360,7 @@
                                                 try:
                                                         tmp = self.__fmridict[f]
                                                 except KeyError:
-                                                        tmp = pkg.fmri.PkgFmri(
-                                                            f, "5.11")
+                                                        tmp = pkg.fmri.PkgFmri(f)
                                                         self.__fmridict[f] = tmp
                                                 name = tmp.pkg_name
                                                 if name not in fmris_by_name:
@@ -1390,7 +1389,7 @@
                                         if da.attrs["type"] != "require":
                                                 continue
                                         pkg_name = pkg.fmri.PkgFmri(
-                                            da.attrs["fmri"], "5.11").pkg_name
+                                            da.attrs["fmri"]).pkg_name
                                         self.__dependents.setdefault(
                                             self.__installed_dict[pkg_name],
                                             set()).add(f)
@@ -1468,7 +1467,7 @@
                         try:
                                 fmri = self.__fmridict[fmristr]
                         except KeyError:
-                                fmri = pkg.fmri.PkgFmri(fmristr, "5.11")
+                                fmri = pkg.fmri.PkgFmri(fmristr)
                                 self.__fmridict[fmristr] = fmri
                         fmris.append(fmri)
 
@@ -1508,7 +1507,7 @@
 
                 elif dtype == "conditional":
                         cond_fmri = pkg.fmri.PkgFmri(
-                            dependency_action.attrs["predicate"], "5.11")
+                            dependency_action.attrs["predicate"])
                         conditional, nonmatching = self.__comb_newer_fmris(
                             cond_fmri, dotrim, obsolete_ok=obsolete_ok)
                         # Required is only really helpful for solver error
@@ -1950,7 +1949,7 @@
                                                             fl]
                                                 except KeyError:
                                                         tmp = pkg.fmri.PkgFmri(
-                                                            fl, "5.11")
+                                                            fl)
                                                         self.__fmridict[fl] = \
                                                             tmp
                                                 fmris.append(tmp)
@@ -2176,7 +2175,7 @@
                 # Find all the fmris that we depend on in our parent.
                 # Use a set() to eliminate any dups.
                 pkg_deps = set([
-                    pkg.fmri.PkgFmri(f, "5.11")
+                    pkg.fmri.PkgFmri(f)
                     for da in self.__get_dependency_actions(pkg_fmri, excludes)
                     if da.attrs["type"] == "parent"
                     for f in da.attrlist("fmri")
@@ -2205,7 +2204,7 @@
                         if da.attrs["type"] != "origin":
                                 continue
 
-                        req_fmri = pkg.fmri.PkgFmri(da.attrs["fmri"], "5.11")
+                        req_fmri = pkg.fmri.PkgFmri(da.attrs["fmri"])
 
                         if da.attrs.get("root-image", "").lower() == "true":
 				if req_fmri.pkg_name.startswith("feature/firmware/"):
--- a/src/modules/config.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/config.py	Fri Sep 27 11:38:34 2013 -0700
@@ -850,7 +850,7 @@
                         nvalue = value
                 else:
                         try:
-                                nvalue = pkg.version.Version(value, "5.11")
+                                nvalue = pkg.version.Version(value)
                         except Exception:
                                 raise InvalidPropertyValueError(prop=self.name,
                                     value=value)
--- a/src/modules/fmri.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/fmri.py	Fri Sep 27 11:38:34 2013 -0700
@@ -336,7 +336,7 @@
                 return "pkg://%s/%s%s" % (publisher, self.pkg_name, version)
 
         def get_fmri(self, default_publisher=None, anarchy=False,
-            include_scheme=True):
+            include_scheme=True, include_build=True):
                 """Return a string representation of the FMRI.
                 Anarchy returns a string without any publisher."""
                 pkg_str = ""
@@ -352,7 +352,8 @@
                                 return "%s%s" % (pkg_str, self.pkg_name)
 
                         return "%s%s@%s" % (pkg_str, self.pkg_name,
-                            self.version)
+                            self.version.get_version(
+                                include_build=include_build))
 
                 if include_scheme:
                         pkg_str = "pkg://"
@@ -360,7 +361,7 @@
                         return "%s%s/%s" % (pkg_str, publisher, self.pkg_name)
 
                 return "%s%s/%s@%s" % (pkg_str, publisher, self.pkg_name,
-                                self.version)
+                    self.version.get_version(include_build=include_build))
 
         def hierarchical_names(self):
                 """Generate the different hierarchical names that could be used
--- a/src/modules/lint/engine.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/lint/engine.py	Fri Sep 27 11:38:34 2013 -0700
@@ -708,8 +708,7 @@
                                         # FMRIs listed as dependencies often
                                         # omit build_release, use a dummy one
                                         # for now
-                                        fmri = pkg.fmri.PkgFmri(pkg_name,
-                                            build_release="5.11")
+                                        fmri = pkg.fmri.PkgFmri(pkg_name)
                                         return fmri
                                 except:
                                         msg = _("unable to construct fmri from "
--- a/src/modules/lint/pkglint_action.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/lint/pkglint_action.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1294,8 +1294,7 @@
                         name = declared_fmri.get_name()
                 except pkg.fmri.IllegalFmri:
                         try:
-                                declared_fmri = pkg.fmri.PkgFmri(dep_fmri,
-                                    build_release="5.11")
+                                declared_fmri = pkg.fmri.PkgFmri(dep_fmri)
                                 name = declared_fmri.get_name()
                         except:
                                 # A very broken fmri value - we'll give up now.
@@ -1386,8 +1385,7 @@
                                 # we also need to just verify that the fmri
                                 # isn't just missing a build_release value
                                 try:
-                                        pfmri = pkg.fmri.PkgFmri(fmri,
-                                            build_release="5.11")
+                                        pfmri = pkg.fmri.PkgFmri(fmri)
                                 except pkg.fmri.IllegalFmri:
                                         engine.error("invalid FMRI in action "
                                             "%(action)s in %(pkg)s" %
@@ -1496,7 +1494,7 @@
                         return
 
                 fmri = action.attrs["fmri"]
-                pfmri = pkg.fmri.PkgFmri(fmri, build_release="5.11")
+                pfmri = pkg.fmri.PkgFmri(fmri)
                 if not pfmri.version:
                         engine.error(
                             _("'incorporate' depend action on %(fmri)s in "
--- a/src/modules/lint/pkglint_manifest.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/lint/pkglint_manifest.py	Fri Sep 27 11:38:34 2013 -0700
@@ -75,14 +75,13 @@
                                 dep = action.attrs["fmri"]
                                 try:
                                         if isinstance(dep, basestring):
-                                                f = fmri.PkgFmri(dep, "5.11")
+                                                f = fmri.PkgFmri(dep)
                                                 dic.setdefault(
                                                     f.get_name(), []
                                                     ).append(name)
                                         elif isinstance(dep, list):
                                                 for d in dep:
-                                                        f = fmri.PkgFmri(d,
-                                                            "5.11")
+                                                        f = fmri.PkgFmri(d)
                                                         dic.setdefault(
                                                             f.get_name(), []
                                                             ).append(name)
--- a/src/modules/manifest.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/manifest.py	Fri Sep 27 11:38:34 2013 -0700
@@ -812,8 +812,7 @@
                         med_ver = attrs.get("mediator-version")
                         if med_ver:
                                 try:
-                                        med_ver = version.Version(med_ver,
-                                            "5.11")
+                                        med_ver = version.Version(med_ver)
                                 except version.VersionError:
                                         # Consider this mediation unavailable
                                         # if it can't be parsed for whatever
--- a/src/modules/mediator.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/mediator.py	Fri Sep 27 11:38:34 2013 -0700
@@ -45,7 +45,7 @@
         error = ""
         if isinstance(value, basestring):
                 try:
-                        version.Version(value, "5.11")
+                        version.Version(value)
                         return True, None
                 except version.VersionError, e:
                         error = str(e)
@@ -78,7 +78,7 @@
 
         if impl_ver:
                 try:
-                        impl_ver = version.Version(impl_ver,"5.11")
+                        impl_ver = version.Version(impl_ver)
                 except version.VersionError:
                         # If part of implementation can't be parsed, then
                         # return nothing at all.
@@ -101,7 +101,7 @@
 
                 if iver or (iver == "" and not allow_empty_version):
                         try:
-                                version.Version(iver, "5.11")
+                                version.Version(iver)
                         except version.VersionError, e:
                                 error = str(e)
 
--- a/src/modules/publish/dependencies.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/publish/dependencies.py	Fri Sep 27 11:38:34 2013 -0700
@@ -653,7 +653,7 @@
         name = mfst.get("pkg.fmri", mfst.get("fmri", None))
         if name is not None:
                 try:
-                        pfmri = fmri.PkgFmri(name, "5.11")
+                        pfmri = fmri.PkgFmri(name)
                 except fmri.IllegalFmri:
                         pfmri = None
                 return name, pfmri
@@ -1085,7 +1085,7 @@
         for d, v in deps:
                 if d.attrs["type"] != "require":
                         continue
-                t_pfmri = fmri.PkgFmri(d.attrs["fmri"], "5.11")
+                t_pfmri = fmri.PkgFmri(d.attrs["fmri"])
                 req_dict.setdefault(t_pfmri.get_pkg_stem(include_scheme=False),
                     []).append((t_pfmri, d, v))
 
@@ -1106,7 +1106,7 @@
                 # Pick a fmri which might be the predicate of a conditional
                 # dependency that could be collapsed.
                 predicate = preds_to_process.pop()
-                t_pfmri = fmri.PkgFmri(predicate, "5.11")
+                t_pfmri = fmri.PkgFmri(predicate)
                 t_name = t_pfmri.get_pkg_stem(include_scheme=False)
                 # If there are no require dependencies with that package name as
                 # a target, then there's nothing to do.
@@ -1182,7 +1182,7 @@
                                                 preds_to_process.add(
                                                     res_dep.attrs["fmri"])
                                                 t_pfmri = fmri.PkgFmri(
-                                                    d.attrs["fmri"], "5.11")
+                                                    d.attrs["fmri"])
                                                 req_dict.setdefault(
                                                     t_pfmri.get_pkg_stem(
                                                         include_scheme=False),
@@ -1217,8 +1217,7 @@
                                         # to the predicates to be processed.
                                         preds_to_process.add(
                                             res_dep.attrs["fmri"])
-                                        t_pfmri = fmri.PkgFmri(d.attrs["fmri"],
-                                            "5.11")
+                                        t_pfmri = fmri.PkgFmri(d.attrs["fmri"])
                                         req_dict.setdefault(
                                             t_pfmri.get_pkg_stem(
                                                 include_scheme=False),
@@ -1257,7 +1256,7 @@
 
                 cur_fmris = []
                 for f in cur_dep.attrlist("fmri"):
-                        cur_fmris.append(fmri.PkgFmri(f, "5.11"))
+                        cur_fmris.append(fmri.PkgFmri(f))
                 skip = False
                 # If we're resolving a pkg with a known name ...
                 if pkg_fmri is not None:
@@ -1295,7 +1294,7 @@
                         if comp_dep.attrs["type"] != "require":
                                 continue
                         successor = False
-                        comp_fmri = fmri.PkgFmri(comp_dep.attrs["fmri"], "5.11")
+                        comp_fmri = fmri.PkgFmri(comp_dep.attrs["fmri"])
                         # Check to see whether the package required by the
                         # require dependency is a successor to any of the
                         # packages required by the require-any dependency.
@@ -1336,7 +1335,7 @@
         reach the require dependency should be retained."""
 
         def fmri_attrget(d):
-                return fmri.PkgFmri(d[0].attrs["fmri"], "5.11").get_pkg_stem(
+                return fmri.PkgFmri(d[0].attrs["fmri"]).get_pkg_stem(
                     include_scheme=False)
 
         def path_id_attrget(d):
@@ -1377,10 +1376,10 @@
                         # of a require dependency, then it can be ignored under
                         # those combinations of variants under which the require
                         # dependency applies.
-                        d_fmri = fmri.PkgFmri(d.attrs["fmri"], "5.11")
+                        d_fmri = fmri.PkgFmri(d.attrs["fmri"])
                         for r_d, r_v in req_dict.get(d_fmri.get_pkg_stem(
                             include_scheme=False), []):
-                                r_fmri = fmri.PkgFmri(r_d.attrs["fmri"], "5.11")
+                                r_fmri = fmri.PkgFmri(r_d.attrs["fmri"])
                                 if not r_fmri.is_successor(d_fmri):
                                         continue
                                 if r_v.is_empty():
@@ -1569,7 +1568,7 @@
 def __safe_fmri_parse(txt):
         dep_name = None
         try:
-                dep_name = fmri.PkgFmri(txt, "5.11").pkg_name
+                dep_name = fmri.PkgFmri(txt).pkg_name
         except fmri.IllegalFmri:
                 pass
         return dep_name
@@ -1700,7 +1699,7 @@
         for mp, (name, pfmri), mfst, pkg_vars, miss_files in manifests:
                 try:
                         if pfmri is None:
-                                pfmri = fmri.PkgFmri(name, "5.11")
+                                pfmri = fmri.PkgFmri(name)
                 except fmri.IllegalFmri, e:
                         raise BadPackageFmri(mp, e)
                 add_fmri_path_mapping(files.delivered, links, pfmri, mfst,
--- a/src/modules/server/api.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/server/api.py	Fri Sep 27 11:38:34 2013 -0700
@@ -107,7 +107,7 @@
                         return iter(())
                 return c.fmris(ordered=ordered)
 
-        def gen_allowed_packages(self, pfmris, build_release="5.11",
+        def gen_allowed_packages(self, pfmris, build_release=None,
             excludes=misc.EmptyI):
                 """A generator function that produces a list of tuples of the
                 form (fmri, states) in the catalog incorporated by the named
@@ -177,7 +177,7 @@
                 )
 
         def __get_allowed_packages(self, cat, pfmri, allowed,
-            build_release="5.11", excludes=misc.EmptyI, pubs=misc.EmptyI):
+            build_release=None, excludes=misc.EmptyI, pubs=misc.EmptyI):
                 cat_info = frozenset([cat.DEPENDENCY])
 
                 for a in cat.get_entry_actions(pfmri, cat_info,
@@ -188,7 +188,7 @@
                                 continue
 
                         ifmri = pkg.fmri.PkgFmri(a.attrs["fmri"],
-                            build_release="5.11")
+                            build_release=build_release)
                         iver = ifmri.version
                         # Versionless incorporations don't make sense so don't
                         # recurse any further.
--- a/src/modules/version.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/modules/version.py	Fri Sep 27 11:38:34 2013 -0700
@@ -246,14 +246,11 @@
         referring to the UTC time associated with the version.  The release and
         branch DotSequences are interpreted normally, where v1 < v2 implies that
         v2 is a later release or branch.  The build_release DotSequence records
-        the system on which the package binaries were constructed.
-        Interpretation of the build_release by the client is that, in the case
-        b1 < b2, a b1 package can be run on either b1 or b2 systems,while a b2
-        package can only be run on a b2 system."""
+        the system on which the package binaries were constructed."""
 
         __slots__ = ["release", "branch", "build_release", "timestr"]
 
-        def __init__(self, version_string, build_string):
+        def __init__(self, version_string, build_string=None):
                 # XXX If illegally formatted, raise exception.
 
                 if not version_string:
@@ -311,10 +308,7 @@
                                 self.build_release = DotSequence(build)
                         else:
                                 if build_string is None:
-                                        raise IllegalVersion("No build version "
-                                            "provided in Version constructor: "
-                                            "(%s, %s)" % (version_string,
-                                            build_string))
+                                        build_string = "5.11"
                                 self.build_release = DotSequence(build_string)
 
                 except IllegalDotSequence, e:
@@ -360,12 +354,6 @@
                 obtained via getstate()."""
                 return Version(state, None)
 
-        def compatible_with_build(self, target):
-                """target is a DotSequence for the target system."""
-                if self.build_release < target:
-                        return True
-                return False
-
         def __str__(self):
                 outstr = str(self.release) + "," + str(self.build_release)
                 if self.branch:
@@ -377,6 +365,17 @@
         def __repr__(self):
                 return "<pkg.fmri.Version '%s' at %#x>" % (self, id(self))
 
+        def get_version(self, include_build=True):
+                if include_build:
+                        outstr = str(self.release) + "," + str(self.build_release)
+                else:
+                        outstr = str(self.release)
+                if self.branch:
+                        outstr += "-" + str(self.branch)
+                if self.timestr:
+                        outstr += ":" + self.timestr
+                return outstr
+
         def get_short_version(self):
                 branch_str = ""
                 if self.branch is not None:
@@ -464,10 +463,6 @@
                 if self > other:
                         return 1
 
-                if self.build_release < other.build_release:
-                        return -1
-                if self.build_release > other.build_release:
-                        return 1
                 return 0
 
         def __hash__(self):
@@ -624,7 +619,7 @@
 
         __slots__ = ["match_latest", "__original"]
 
-        def __init__(self, version_string, build_string):
+        def __init__(self, version_string, build_string=None):
                 if version_string is None or not len(version_string):
                         raise IllegalVersion, "Version cannot be empty"
 
--- a/src/pkgrepo.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/pkgrepo.py	Fri Sep 27 11:38:34 2013 -0700
@@ -225,7 +225,8 @@
                 # removed and exit.
                 packages = set(f for m in matching.values() for f in m)
                 count = len(packages)
-                plist = "\n".join("\t%s" % p for p in sorted(packages))
+                plist = "\n".join("\t%s" % p.get_fmri(include_build=False) 
+                    for p in sorted(packages))
                 logger.info(_("%(count)d package(s) will be removed:\n"
                     "%(plist)s") % locals())
                 return EXIT_OK
@@ -861,17 +862,25 @@
                                             states:
                                                 state = "r"
 
+                                if out_format == "default":
+                                    fver = str(f.version.get_version(
+                                        include_build=False))
+                                    ffmri = str(f.get_fmri(include_build=False))
+                                else:
+                                    fver = str(f.version)
+                                    ffmri = str(f)
+
                                 ret = {
                                     "publisher": f.publisher,
                                     "name": f.pkg_name,
-                                    "version": str(f.version),
+                                    "version": fver,
                                     "release": str(f.version.release),
                                     "build-release":
                                         str(f.version.build_release),
                                     "branch": str(f.version.branch),
                                     "timestamp":
                                         str(f.version.timestr),
-                                    "pkg.fmri": str(f),
+                                    "pkg.fmri": ffmri,
                                     "short_state": state,
                                 }
 
--- a/src/publish.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/publish.py	Fri Sep 27 11:38:34 2013 -0700
@@ -372,7 +372,7 @@
                 return 1
 
         try:
-                pfmri = pkg.fmri.PkgFmri(m["pkg.fmri"], "5.11")
+                pfmri = pkg.fmri.PkgFmri(m["pkg.fmri"])
                 if not pfmri.version:
                         # Cannot have a FMRI without version
                         error(_("The pkg.fmri attribute '%s' in the package "
--- a/src/pull.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/pull.py	Fri Sep 27 11:38:34 2013 -0700
@@ -250,7 +250,7 @@
         """Find matching fmri using CONSTRAINT_AUTO cache for performance.
         Returns None if no matching fmri is found."""
         if isinstance(pfmri, str):
-                pfmri = pkg.fmri.PkgFmri(pfmri, "5.11")
+                pfmri = pkg.fmri.PkgFmri(pfmri)
 
         # Iterate in reverse so newest version is evaluated first.
         versions = [e for e in src_cat.fmris_by_version(pfmri.pkg_name)]
@@ -895,7 +895,8 @@
                 if len(to_rm) > 0:
                         msg(_("Packages to remove:"))
                         for f in to_rm:
-                                msg("    %s" % f.get_fmri(anarchy=True))
+                                msg("    %s" % f.get_fmri(anarchy=True,
+                                    include_build=False))
 
                         if not dry_run:
                                 msg(_("Removing packages ..."))
@@ -1095,7 +1096,7 @@
                         src_cat = fetch_catalog(src_pub, tracker,
                             xport, False)
                         for f in src_cat.fmris(ordered=True, last=True):
-                                msg(f.get_fmri())
+                                msg(f.get_fmri(include_build=False))
                         continue
 
                 msg(_("Processing packages for publisher %s ...") %
--- a/src/sign.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/sign.py	Fri Sep 27 11:38:34 2013 -0700
@@ -336,7 +336,8 @@
                                                 if t.trans_id:
                                                         t.close(abandon=True)
                                                 raise
-                                msg(_("Signed %s") % pfmri)
+                                msg(_("Signed %s") % pfmri.get_fmri(
+                                    include_build=False))
                                 successful_publish = True
                         except (api_errors.ApiException, fmri.FmriError,
                             trans.TransactionError), e:
--- a/src/tests/api/t_api_list.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_api_list.py	Fri Sep 27 11:38:34 2013 -0700
@@ -81,8 +81,8 @@
                 rval = cmp(apub, bpub)
                 if rval != 0:
                         return rval
-                aver = version.Version(aver, "5.11")
-                bver = version.Version(bver, "5.11")
+                aver = version.Version(aver)
+                bver = version.Version(bver)
                 return cmp(aver, bver) * -1
 
         def __get_pkg_variant(self, stem, ver):
@@ -186,8 +186,7 @@
                         pkg_data += p
                         stem, ver = p.split("@")
 
-                        # XXX version should not require 5.11
-                        sver = version.Version(ver, "5.11")
+                        sver = version.Version(ver)
                         sver = str(sver).split(":", 1)[0]
 
                         summ, desc = self.__get_pkg_summ_desc(stem, sver)
@@ -1298,8 +1297,7 @@
                 def get_pkg_cats(p):
                         stem, ver = p.split("@")
 
-                        # XXX version should not require 5.11
-                        sver = version.Version(ver, "5.11")
+                        sver = version.Version(ver)
                         sver = str(sver).split(":", 1)[0]
                         raw_cats = self.__get_pkg_cats(stem, sver)
 
--- a/src/tests/api/t_catalog.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_catalog.py	Fri Sep 27 11:38:34 2013 -0700
@@ -589,8 +589,8 @@
                         rval = cmp(apub, bpub)
                         if rval != 0:
                                 return rval
-                        aver = version.Version(aver, "5.11")
-                        bver = version.Version(bver, "5.11")
+                        aver = version.Version(aver)
+                        bver = version.Version(bver)
                         return cmp(aver, bver) * -1
 
                 def tuple_entry_order(a, b):
@@ -602,8 +602,8 @@
                         rval = cmp(apub, bpub)
                         if rval != 0:
                                 return rval
-                        aver = version.Version(aver, "5.11")
-                        bver = version.Version(bver, "5.11")
+                        aver = version.Version(aver)
+                        bver = version.Version(bver)
                         return cmp(aver, bver) * -1
 
                 # test fmris()
--- a/src/tests/api/t_fmri.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_fmri.py	Fri Sep 27 11:38:34 2013 -0700
@@ -45,18 +45,13 @@
         }
 
         def setUp(self):
-                self.n1 = fmri.PkgFmri("pkg://pion/sunos/coreutils",
-                    build_release = "5.9")
-                self.n2 = fmri.PkgFmri("sunos/coreutils",
-                    build_release = "5.10")
-                self.n3 = fmri.PkgFmri("sunos/[email protected]",
-                    build_release = "5.10")
+                self.n1 = fmri.PkgFmri("pkg://pion/sunos/coreutils")
+                self.n2 = fmri.PkgFmri("sunos/coreutils")
+                self.n3 = fmri.PkgFmri("sunos/[email protected]")
                 self.n4 = fmri.PkgFmri(
-                    "sunos/[email protected],5.10-2:20070710T164744Z",
-                    build_release = "5.10")
+                    "sunos/[email protected],5.10-2:20070710T164744Z")
                 self.n5 = fmri.PkgFmri(
-                    "sunos/[email protected],5.10-2:20070710T164744Z",
-                    build_release = "5.10")
+                    "sunos/[email protected],5.10-2:20070710T164744Z")
                 self.n6 = fmri.PkgFmri("coreutils")
                 self.n7 = fmri.PkgFmri(
                     "pkg://origin/[email protected],5.11-0.72:20070921T203926Z")
@@ -243,7 +238,7 @@
 
         def testgoodfmris_dots(self):
                 fmri.PkgFmri("a.b")
-                fmri.PkgFmri("[email protected]", "5.11")
+                fmri.PkgFmri("[email protected]")
 
         def testgoodfmris_slashes(self):
                 fmri.PkgFmri("a/b")
@@ -259,7 +254,7 @@
                 fmri.PkgFmri("a+++b+++")
 
         def testgoodfmris_(self):
-                fmri.PkgFmri("pkg:/abcdef01234.-+_/[email protected]", "5.11")
+                fmri.PkgFmri("pkg:/abcdef01234.-+_/[email protected]")
                 fmri.PkgFmri("pkg:/a/b/c/d/e/f/g/H/I/J/0/1/2")
 
         def testfmrihash(self):
--- a/src/tests/api/t_p5i.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_p5i.py	Fri Sep 27 11:38:34 2013 -0700
@@ -114,7 +114,7 @@
 
                 # First, Ensure that PkgFmri and strings are supported properly.
                 # Build a simple list of packages.
-                fmri_foo = fmri.PkgFmri("pkg:/[email protected],5.11-0", None)
+                fmri_foo = fmri.PkgFmri("pkg:/[email protected],5.11-0")
                 pnames = {
                     "bobcat": [fmri_foo],
                     "": ["pkg:/[email protected],5.11-0", "baz"],
--- a/src/tests/api/t_pkg_api_install.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_pkg_api_install.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1106,7 +1106,7 @@
 
                 self.plist = {}
                 for p in plist:
-                        pfmri = fmri.PkgFmri(p, "5.11")
+                        pfmri = fmri.PkgFmri(p)
                         self.plist.setdefault(pfmri.pkg_name, []).append(pfmri)
 
         @staticmethod
--- a/src/tests/api/t_version.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/api/t_version.py	Fri Sep 27 11:38:34 2013 -0700
@@ -196,7 +196,7 @@
                 """ insert a bad char at (almost) every position in a version"""
                 v = "12.34.56-78:19760113T111111Z"
                 # Check that v is valid
-                version.Version(v, "5.11")
+                version.Version(v)
                 badchars = [ "T", "Z", "@", "-", ".", ",", ":" ]
                 becareful = [".", ",", "-"]
                 for b in badchars:
@@ -259,12 +259,6 @@
                 self.assert_(None != self.v9)
                 self.assert_(not self.v9 != self.v9same)
 
-        def testversionbuildcompat1(self):
-                self.assert_(not self.v9.compatible_with_build(self.d3))
-
-        def testversionbuildcompat2(self):
-                self.assert_(self.v9.compatible_with_build(self.d4))
-
         def testversionsuccessor1(self):
                 self.assert_(self.v13.is_successor(self.v12,
                     version.CONSTRAINT_BRANCH))
--- a/src/tests/cli/t_depot_config.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_depot_config.py	Fri Sep 27 11:38:34 2013 -0700
@@ -496,7 +496,9 @@
 
                 ret, output = self.pkgrecv(command="-s %s/default --newest" %
                     self.ac.url, out=True)
-                self.assert_(str(second[0]) in output)
+                sec_fmri_nobuild = pkg.fmri.PkgFmri(second[0]).get_fmri(
+                    include_build=False)
+                self.assert_(sec_fmri_nobuild in output)
                 dest = os.path.join(self.test_root, "test_13_hgpkgrecv")
                 os.mkdir(dest)
 
--- a/src/tests/cli/t_fix.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_fix.py	Fri Sep 27 11:38:34 2013 -0700
@@ -119,7 +119,7 @@
                     self.licensed13, self.dir10, self.file10, self.preserve10,
                     self.preserve11, self.preserve12, self.driver10,
                     self.driver_prep10)):
-                        pfmri = fmri.PkgFmri(p, "5.11")
+                        pfmri = fmri.PkgFmri(p)
                         pfmri.publisher = None
                         sfmri = pfmri.get_short_fmri().replace("pkg:/", "")
                         self.plist[sfmri] = pfmri
--- a/src/tests/cli/t_pkg_composite.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkg_composite.py	Fri Sep 27 11:38:34 2013 -0700
@@ -370,13 +370,12 @@
          State: Installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 41.00 B
           FMRI: %(pkg_fmri)s
 """ % { "pkg_date": self.foo10.version.get_timestamp().strftime("%c"),
-    "pkg_fmri": self.foo10 }
+    "pkg_fmri": self.foo10.get_fmri(include_build=False) }
                 self.assertEqualDiff(expected, self.output)
 
         def test_02_contents(self):
--- a/src/tests/cli/t_pkg_info.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkg_info.py	Fri Sep 27 11:38:34 2013 -0700
@@ -369,22 +369,20 @@
  State: Not installed
  Publisher: test
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test/[email protected]:20110908T004546Z
 
  Name: human
  Summary: 
  State: Not installed
  Publisher: test
  Version: 0.9.8.18 (0.9.8r)
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 0.00 B
- FMRI: pkg://test/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test/[email protected]:20110908T004546Z
 """
                 self.assertEqualDiff(expected, self.reduceSpaces(self.output))
 
@@ -397,11 +395,10 @@
  State: Not installed
  Publisher: test2
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test2/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test2/[email protected]:20110908T004546Z
 """
                 self.assertEqualDiff(expected, self.reduceSpaces(self.output))
 
@@ -415,11 +412,10 @@
  State: Not installed
  Publisher: test
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test/[email protected]:20110908T004546Z
 """
                 self.assertEqualDiff(expected, self.reduceSpaces(self.output))
 
@@ -430,22 +426,20 @@
  State: Not installed
  Publisher: test
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test/[email protected]:20110908T004546Z
 
  Name: bronze
  Summary: 
  State: Not installed
  Publisher: test2
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test2/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test2/[email protected]:20110908T004546Z
 """
                 self.assertEqualDiff(expected, self.reduceSpaces(self.output))
 
@@ -456,33 +450,30 @@
  State: Not installed
  Publisher: test
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test/[email protected]:20110908T004546Z
 
  Name: bronze
  Summary: 
  State: Not installed
  Publisher: test2
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test2/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test2/[email protected]:20110908T004546Z
 
  Name: bronze
  Summary: 
  State: Not installed
  Publisher: test3
  Version: 1.0
- Build Release: 5.11
  Branch: 0
 Packaging Date: Thu Sep 08 00:45:46 2011
  Size: 54.00 B
- FMRI: pkg://test3/[email protected],5.11-0:20110908T004546Z
+ FMRI: pkg://test3/[email protected]:20110908T004546Z
 """
                 self.assertEqualDiff(expected, self.reduceSpaces(self.output))
 
@@ -548,7 +539,7 @@
                 # with the correct dependencies will provide the expected info.
                 self.pkg("info -r ren_correct")
                 actual = self.output
-                pfmri = fmri.PkgFmri(plist[1], "5.11")
+                pfmri = fmri.PkgFmri(plist[1])
                 pkg_date = pfmri.version.get_timestamp().strftime("%c")
                 expected = """\
           Name: ren_correct
@@ -557,12 +548,11 @@
     Renamed to: [email protected]
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 0.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri }
+""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri.get_fmri(include_build=False) }
                 self.assertEqualDiff(expected, actual)
 
                 # Next, verify that a renamed package (for a variant not
@@ -572,7 +562,7 @@
                 # variant.
                 self.pkg("info -r ren_op_variant")
                 actual = self.output
-                pfmri = fmri.PkgFmri(plist[2], "5.11")
+                pfmri = fmri.PkgFmri(plist[2])
                 pkg_date = pfmri.version.get_timestamp().strftime("%c")
                 expected = """\
           Name: ren_op_variant
@@ -580,12 +570,11 @@
          State: Not installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 0.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri }
+""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri.get_fmri(include_build=False) }
                 self.assertEqualDiff(expected, actual)
 
                 # Next, verify that a renamed package (for a variant applicable
@@ -593,7 +582,7 @@
                 # other variant will provide the expected info.
                 self.pkg("info -r ren_variant_missing")
                 actual = self.output
-                pfmri = fmri.PkgFmri(plist[3], "5.11")
+                pfmri = fmri.PkgFmri(plist[3])
                 pkg_date = pfmri.version.get_timestamp().strftime("%c")
                 expected = """\
           Name: ren_variant_missing
@@ -602,12 +591,11 @@
     Renamed to: 
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 0.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri }
+""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri.get_fmri(include_build=False) }
                 self.assertEqualDiff(expected, actual)
 
 
@@ -616,7 +604,7 @@
                 # will provide the expected info.
                 self.pkg("info -r ren_partial_variant")
                 actual = self.output
-                pfmri = fmri.PkgFmri(plist[4], "5.11")
+                pfmri = fmri.PkgFmri(plist[4])
                 pkg_date = pfmri.version.get_timestamp().strftime("%c")
                 expected = """\
           Name: ren_partial_variant
@@ -625,12 +613,11 @@
     Renamed to: 
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 0.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri }
+""" % { "pkg_date": pkg_date, "pkg_fmri": pfmri.get_fmri(include_build=False) }
                 self.assertEqualDiff(expected, actual)
 
         def test_appropriate_license_files(self):
--- a/src/tests/cli/t_pkg_install.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkg_install.py	Fri Sep 27 11:38:34 2013 -0700
@@ -3007,7 +3007,7 @@
                 etc. match the src items's matching action as expected."""
 
                 for p in plist:
-                        pfmri = fmri.PkgFmri(p, "5.11")
+                        pfmri = fmri.PkgFmri(p)
                         pfmri.publisher = None
                         sfmri = pfmri.get_short_fmri().replace("pkg:/", "")
 
@@ -6891,7 +6891,7 @@
 
                 self.plist = {}
                 for p in plist:
-                        pfmri = fmri.PkgFmri(p, "5.11")
+                        pfmri = fmri.PkgFmri(p)
                         self.plist[pfmri.pkg_name] = pfmri
 
         @staticmethod
--- a/src/tests/cli/t_pkg_linked.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkg_linked.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1853,7 +1853,7 @@
                 # populate repository
                 for p in self.p_data:
                         fmristr = self.pkgsend_bulk(self.rurl1, p)[0]
-                        f = fmri.PkgFmri(fmristr, "5.11")
+                        f = fmri.PkgFmri(fmristr)
                         pkgstr = "%s@%s" % (f.pkg_name, f.version.release)
                         self.p_fmri[pkgstr] = fmristr
 
@@ -2511,7 +2511,7 @@
                 # populate repository
                 for p in self.p_data:
                         fmristr = self.pkgsend_bulk(self.rurl1, p)[0]
-                        f = fmri.PkgFmri(fmristr, "5.11")
+                        f = fmri.PkgFmri(fmristr)
                         pkgstr = "%s@%s" % (f.pkg_name, f.version.release)
                         self.p_fmri[pkgstr] = fmristr
 
@@ -2935,7 +2935,7 @@
                 # populate repository
                 for p in self.p_data:
                         fmristr = self.pkgsend_bulk(self.rurl1, p)[0]
-                        f = fmri.PkgFmri(fmristr, "5.11")
+                        f = fmri.PkgFmri(fmristr)
                         pkgstr = "%s@%s" % (f.pkg_name, f.version.release)
                         self.p_fmri[pkgstr] = fmristr
 
--- a/src/tests/cli/t_pkg_temp_sources.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkg_temp_sources.py	Fri Sep 27 11:38:34 2013 -0700
@@ -461,12 +461,12 @@
          State: Not installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 41.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pd(self.foo10), "pkg_fmri": self.foo10 }
+""" % { "pkg_date": pd(self.foo10), "pkg_fmri": self.foo10.get_fmri(
+    include_build=False) }
                 self.assertEqualDiff(expected, self.output)
 
                 # Again, as prvileged user.
@@ -485,7 +485,6 @@
          State: Not installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(foo10_pkg_date)s
           Size: 41.00 B
@@ -496,7 +495,6 @@
          State: Not installed
      Publisher: test
        Version: 2.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(incorp20_pkg_date)s
           Size: 0.00 B
@@ -507,7 +505,6 @@
          State: Not installed
      Publisher: test2
        Version: 1.0
- Build Release: 5.11
         Branch: 0.2
 Packaging Date: %(quux10_pkg_date)s
           Size: 8.00 B
@@ -518,15 +515,18 @@
          State: Not installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(signed10_pkg_date)s
           Size: 7.79 kB
           FMRI: %(signed10_pkg_fmri)s
-""" % { "foo10_pkg_date": pd(self.foo10), "foo10_pkg_fmri": self.foo10,
-    "incorp20_pkg_date": pd(self.incorp20), "incorp20_pkg_fmri": self.incorp20,
-    "quux10_pkg_date": pd(self.quux10), "quux10_pkg_fmri": self.quux10,
-    "signed10_pkg_date": pd(self.signed10), "signed10_pkg_fmri": self.signed10
+""" % { "foo10_pkg_date": pd(self.foo10), "foo10_pkg_fmri": \
+        self.foo10.get_fmri(include_build=False),
+    "incorp20_pkg_date": pd(self.incorp20), "incorp20_pkg_fmri": \
+        self.incorp20.get_fmri(include_build=False),
+    "quux10_pkg_date": pd(self.quux10), "quux10_pkg_fmri": \
+        self.quux10.get_fmri(include_build=False),
+    "signed10_pkg_date": pd(self.signed10), "signed10_pkg_fmri": \
+        self.signed10.get_fmri(include_build=False),
     }
                 self.assertEqualDiff(expected, self.output)
 
@@ -563,12 +563,12 @@
          State: Installed
      Publisher: test
        Version: 1.0
- Build Release: 5.11
         Branch: None
 Packaging Date: %(pkg_date)s
           Size: 41.00 B
           FMRI: %(pkg_fmri)s
-""" % { "pkg_date": pd(self.foo10), "pkg_fmri": self.foo10 }
+""" % { "pkg_date": pd(self.foo10), "pkg_fmri": self.foo10.get_fmri(
+    include_build=False) }
                 self.assertEqualDiff(expected, self.output)
 
                 # Verify that when showing package info from archive that
--- a/src/tests/cli/t_pkgdep_resolve.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkgdep_resolve.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1281,7 +1281,7 @@
 
                 self.assertEqual(len(pkg_deps[manifests[1]]), 1)
                 for d in pkg_deps[manifests[1]]:
-                        fmri = PkgFmri(d.attrs["fmri"], build_release="5.11")
+                        fmri = PkgFmri(d.attrs["fmri"])
                         if str(fmri).startswith("pkg:/double_provides"):
                                 self.assertEqual(str(fmri.version.branch), "1")
 
--- a/src/tests/cli/t_pkgmerge.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkgmerge.py	Fri Sep 27 11:38:34 2013 -0700
@@ -543,7 +543,7 @@
                 # Verify the list of expected packages in the target repository.
                 nlist = {}
                 for s in self.published[:10]:
-                        f = fmri.PkgFmri(s, "5.11")
+                        f = fmri.PkgFmri(s)
                         if f.pkg_name not in nlist or \
                             f.version > nlist[f.pkg_name].version:
                                 nlist[f.pkg_name] = f
@@ -620,7 +620,7 @@
                 # Verify the list of expected packages in the target repository.
                 nlist = {}
                 for s in self.published:
-                        f = fmri.PkgFmri(s, "5.11")
+                        f = fmri.PkgFmri(s)
                         if f.pkg_name not in nlist or \
                             f.version > nlist[f.pkg_name].version:
                                 nlist[f.pkg_name] = f
@@ -766,7 +766,7 @@
                 # Verify the list of expected packages in the target repository.
                 nlist = {}
                 for s in self.published + self.published_debug:
-                        f = fmri.PkgFmri(s, "5.11")
+                        f = fmri.PkgFmri(s)
                         if f.pkg_name not in nlist or \
                             f.version > nlist[f.pkg_name].version:
                                 nlist[f.pkg_name] = f
@@ -870,7 +870,7 @@
                 # the missing cases.
                 nlist = {}
                 for s in self.published + self.published_debug[:6]:
-                        f = fmri.PkgFmri(s, "5.11")
+                        f = fmri.PkgFmri(s)
                         if f.pkg_name not in nlist or \
                             f.version > nlist[f.pkg_name].version:
                                 nlist[f.pkg_name] = f
--- a/src/tests/cli/t_pkgrecv.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkgrecv.py	Fri Sep 27 11:38:34 2013 -0700
@@ -197,15 +197,19 @@
                 # Test list newest.
                 self.pkgrecv(self.durl1, "--newest")
                 output = self.reduceSpaces(self.output)
+                
+                def  _nobuild_fmri(pfmri):
+                        return fmri.PkgFmri(pfmri).get_fmri(
+                            include_build=False)
 
                 # The latest version of amber and bronze should be listed
                 # (sans publisher prefix currently).
-                amber = self.published[1]
-                scheme = self.published[8]
-                bronze = self.published[4]
-                tree = self.published[5]
-                branch = self.published[6]
-                leaf = self.published[7]
+                amber = _nobuild_fmri(self.published[1])
+                scheme = _nobuild_fmri(self.published[8])
+                bronze = _nobuild_fmri(self.published[4])
+                tree = _nobuild_fmri(self.published[5])
+                branch = _nobuild_fmri(self.published[6])
+                leaf = _nobuild_fmri(self.published[7])
 
                 expected = "\n".join((amber, branch, bronze, leaf, scheme, tree)) + "\n"
                 self.assertEqualDiff(expected, output)
--- a/src/tests/cli/t_pkgrepo.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkgrepo.py	Fri Sep 27 11:38:34 2013 -0700
@@ -1390,7 +1390,34 @@
                         # json output.
                         self.pkgrepo("list -s %s -F json" % src)
                         expected = """\
-[{"branch": "0", "build-release": "5.11", "name": "amber", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", "pkg.obsolete": [{"value": ["true"]}], "publisher": "test", "release": "4.0", "timestamp": "20110804T203458Z", "version": "4.0,5.11-0:20110804T203458Z"}, {"branch": "0", "build-release": "5.11", "name": "amber", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", "pkg.renamed": [{"value": ["true"]}], "publisher": "test", "release": "3.0", "timestamp": "20110804T203458Z", "version": "3.0,5.11-0:20110804T203458Z"}, {"branch": "0", "build-release": "5.11", "name": "amber", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", "publisher": "test", "release": "2.0", "timestamp": "20110804T203458Z", "version": "2.0,5.11-0:20110804T203458Z"}, {"branch": "0", "build-release": "5.11", "name": "amber", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", "pkg.human-version": [{"value": ["1.0a"]}], "pkg.summary": [{"value": ["Millenia old resin"]}], "publisher": "test", "release": "1.0", "timestamp": "20110804T203458Z", "version": "1.0,5.11-0:20110804T203458Z"}, {"branch": "0", "build-release": "5.11", "info.classification": [{"value": ["org.opensolaris.category.2008:System/Core"]}], "name": "tree", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", "pkg.summary": [{"value": ["Leafy i386 package"], "variant.arch": ["i386"]}, {"value": ["Leafy SPARC package"], "variant.arch": ["sparc"]}], "publisher": "test", "release": "1.0", "timestamp": "20110804T203458Z", "variant.arch": [{"value": ["i386", "sparc"]}], "version": "1.0,5.11-0:20110804T203458Z"}]"""
+[{"branch": "0", "build-release": "5.11", "name": "amber", \
+"pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", \
+"pkg.obsolete": [{"value": ["true"]}], "publisher": "test", \
+"release": "4.0", "timestamp": "20110804T203458Z", \
+"version": "4.0,5.11-0:20110804T203458Z"}, \
+{"branch": "0", "build-release": "5.11", "name": "amber", \
+"pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", \
+"pkg.renamed": [{"value": ["true"]}], "publisher": "test", \
+"release": "3.0", "timestamp": "20110804T203458Z", \
+"version": "3.0,5.11-0:20110804T203458Z"}, \
+{"branch": "0", "build-release": "5.11", "name": "amber", \
+"pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", \
+"publisher": "test", "release": "2.0", "timestamp": "20110804T203458Z", \
+"version": "2.0,5.11-0:20110804T203458Z"}, \
+{"branch": "0", "build-release": "5.11", "name": "amber", \
+"pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", \
+"pkg.human-version": [{"value": ["1.0a"]}], \
+"pkg.summary": [{"value": ["Millenia old resin"]}], \
+"publisher": "test", "release": "1.0", "timestamp": "20110804T203458Z", \
+"version": "1.0,5.11-0:20110804T203458Z"}, \
+{"branch": "0", "build-release": "5.11", \
+"info.classification": [{"value": ["org.opensolaris.category.2008:System/Core"]}], \
+"name": "tree", "pkg.fmri": "pkg://test/[email protected],5.11-0:20110804T203458Z", \
+"pkg.summary": [{"value": ["Leafy i386 package"], "variant.arch": ["i386"]}, \
+{"value": ["Leafy SPARC package"], "variant.arch": ["sparc"]}], \
+"publisher": "test", "release": "1.0", "timestamp": "20110804T203458Z", \
+"variant.arch": [{"value": ["i386", "sparc"]}], \
+"version": "1.0,5.11-0:20110804T203458Z"}]"""
                         self.assertEqualDiff(expected, self.output)
 
                 # Now verify list output in different formats but only using
@@ -1400,22 +1427,22 @@
                 self.pkgrepo("list -s %s" % src)
                 expected = """\
 PUBLISHER NAME                                          O VERSION
-test      amber                                         o 4.0,5.11-0:20110804T203458Z
-test      amber                                         r 3.0,5.11-0:20110804T203458Z
-test      amber                                           2.0,5.11-0:20110804T203458Z
-test      amber                                           1.0,5.11-0:20110804T203458Z
-test      tree                                            1.0,5.11-0:20110804T203458Z
+test      amber                                         o 4.0-0:20110804T203458Z
+test      amber                                         r 3.0-0:20110804T203458Z
+test      amber                                           2.0-0:20110804T203458Z
+test      amber                                           1.0-0:20110804T203458Z
+test      tree                                            1.0-0:20110804T203458Z
 """
                 self.assertEqualDiff(expected, self.output)
 
                 # Human readable (default) output with no header.
                 self.pkgrepo("list -s %s -H" % repo_path)
                 expected = """\
-test      amber                                         o 4.0,5.11-0:20110804T203458Z
-test      amber                                         r 3.0,5.11-0:20110804T203458Z
-test      amber                                           2.0,5.11-0:20110804T203458Z
-test      amber                                           1.0,5.11-0:20110804T203458Z
-test      tree                                            1.0,5.11-0:20110804T203458Z
+test      amber                                         o 4.0-0:20110804T203458Z
+test      amber                                         r 3.0-0:20110804T203458Z
+test      amber                                           2.0-0:20110804T203458Z
+test      amber                                           1.0-0:20110804T203458Z
+test      tree                                            1.0-0:20110804T203458Z
 """
                 self.assertEqualDiff(expected, self.output)
 
--- a/src/tests/cli/t_pkgsend.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_pkgsend.py	Fri Sep 27 11:38:34 2013 -0700
@@ -547,7 +547,7 @@
                 self.pkgsend(url, "import %s" % src_dir1)
                 self.pkgsend(url, "import %s/" % src_dir2)
                 ret, sfmri = self.pkgsend(url, "close")
-                foo_fmri = fmri.PkgFmri(sfmri, "5.11")
+                foo_fmri = fmri.PkgFmri(sfmri)
 
                 # Test with and without trailing slash on generate path.
                 # This cannot be done using pkgsend_bulk, which doesn't
@@ -571,7 +571,7 @@
                 self.pkgsend(url, "include -d %s -d %s %s" % (src_dir1,
                     src_dir2, mpath))
                 ret, sfmri = self.pkgsend(url, "close")
-                bar_fmri = fmri.PkgFmri(sfmri, "5.11")
+                bar_fmri = fmri.PkgFmri(sfmri)
 
                 self.image_create(url)
 
@@ -1218,8 +1218,8 @@
 
                 self.image_create(dhurl)
                 self.pkg("install testmultipledirs")
-                self.pkg("list -vH [email protected],5.10")
-                self.assert_("[email protected],5.10" in self.output)
+                self.pkg("list -vH [email protected]")
+                self.assert_("[email protected]" in self.output)
 
                 self.pkg("verify")
                 self.image_destroy()
--- a/src/tests/cli/t_publish_api.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_publish_api.py	Fri Sep 27 11:38:34 2013 -0700
@@ -62,7 +62,7 @@
                 # Each version number must be unique since multiple packages
                 # will be published within the same second.
                 for i in range(100):
-                        pf = fmri.PkgFmri("foo@%d.0" % i, "5.11")
+                        pf = fmri.PkgFmri("foo@%d.0" % i)
                         t = trans.Transaction(durl, pkg_name=str(pf),
                             xport=xport, pub=pub)
                         t.open()
@@ -88,7 +88,7 @@
                 # Each version number must be unique since multiple packages
                 # will be published within the same second.
                 for i in range(100):
-                        pf = fmri.PkgFmri("foo@%d.0" % i, "5.11")
+                        pf = fmri.PkgFmri("foo@%d.0" % i)
                         t = trans.Transaction(location, pkg_name=str(pf),
                             xport=xport, pub=pub)
                         t.open()
--- a/src/tests/cli/t_util_merge.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/cli/t_util_merge.py	Fri Sep 27 11:38:34 2013 -0700
@@ -153,7 +153,7 @@
                 pkg_names = set()
                 flist = []
                 for p in self.published:
-                        f = fmri.PkgFmri(p, "5.11")
+                        f = fmri.PkgFmri(p)
                         pkg_names.add(f.pkg_name)
                         flist.append(f)
 
--- a/src/tests/perf/fmribench.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/perf/fmribench.py	Fri Sep 27 11:38:34 2013 -0700
@@ -101,7 +101,7 @@
 
         [ "fmri create (parts)", 50000,
         """import pkg.fmri as fmri""",
-        """f = fmri.PkgFmri(build_release="5.11", publisher="origin", name="SUNWxwssu", version="0.5.11,5.11-0.72:20070921T203926Z")"""
+        """f = fmri.PkgFmri(publisher="origin", name="SUNWxwssu", version="0.5.11,5.11-0.72:20070921T203926Z")"""
         ],
 
         [ "fmri create (no tstamp)", 50000,
@@ -111,12 +111,12 @@
 
         [ "fmri create (no tstamp, no bld/branch)", 50000,
         """import pkg.fmri as fmri""",
-        """f = fmri.PkgFmri("pkg://origin/[email protected]", build_release="5.11")"""
+        """f = fmri.PkgFmri("pkg://origin/[email protected]")"""
         ],
 
         [ "fmri create (no tstamp, no bld/branch, no origin)", 50000,
         """import pkg.fmri as fmri""",
-        """f = fmri.PkgFmri("pkg:/[email protected]", build_release="5.11")"""
+        """f = fmri.PkgFmri("pkg:/[email protected]")"""
         ],
 
         [ "fmri to string (no tstamp)", 100000,
--- a/src/tests/perf/membench.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/tests/perf/membench.py	Fri Sep 27 11:38:34 2013 -0700
@@ -42,10 +42,10 @@
         return version.DotSequence("5.%d" % num)
 
 def vers(num):
-        return version.Version("0.5.11-0.111:20090428T172804Z", "5.11")
+        return version.Version("0.5.11-0.111:20090428T172804Z")
 
 def vers_different(num):
-        return version.Version("0.5.11,5.11-0.%d:%08dT172804Z" % (num, num), "5.11")
+        return version.Version("0.5.11,5.11-0.%d:%08dT172804Z" % (num, num))
 
 def mfmri(num):
         return fmri.PkgFmri("pkg:/[email protected],5.11-0.121:20090816T233516Z")
--- a/src/util/publish/pkglint.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/util/publish/pkglint.py	Fri Sep 27 11:38:34 2013 -0700
@@ -282,8 +282,7 @@
                 if manifest and "pkg.fmri" in manifest:
                         try:
                                 manifest.fmri = \
-                                    pkg.fmri.PkgFmri(manifest["pkg.fmri"],
-                                        "5.11")
+                                    pkg.fmri.PkgFmri(manifest["pkg.fmri"])
                         except fmri.IllegalFmri, e:
                                 lint_logger.critical(
                                     _("Error in file %(file)s: "
--- a/src/util/publish/pkgmerge.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/util/publish/pkgmerge.py	Fri Sep 27 11:38:34 2013 -0700
@@ -62,8 +62,6 @@
                 # have a chance of being stringified correctly.
                 return str(self)
 
-BUILD_RELEASE  = "5.11"  # Should be an option to this program some day?
-
 catalog_dict   = {}    # hash table of catalogs by source uri
 fmri_cache     = {}
 manifest_cache = {}
@@ -882,11 +880,9 @@
                                 matcher = pkg.fmri.fmri_match
 
                         if matcher == pkg.fmri.glob_match:
-                                fmri = pkg.fmri.MatchingPkgFmri(
-                                    pat_stem, BUILD_RELEASE)
+                                fmri = pkg.fmri.MatchingPkgFmri(pat_stem)
                         else:
-                                fmri = pkg.fmri.PkgFmri(
-                                    pat_stem, BUILD_RELEASE)
+                                fmri = pkg.fmri.PkgFmri(pat_stem)
 
                         if not pat_ver:
                                 # Do nothing.
@@ -894,12 +890,10 @@
                         elif "*" in pat_ver or "?" in pat_ver or \
                             pat_ver == "latest":
                                 fmri.version = \
-                                    pkg.version.MatchingVersion(pat_ver,
-                                        BUILD_RELEASE)
+                                    pkg.version.MatchingVersion(pat_ver)
                         else:
                                 fmri.version = \
-                                    pkg.version.Version(pat_ver,
-                                        BUILD_RELEASE)
+                                    pkg.version.Version(pat_ver)
 
                         if pat_ver and \
                             getattr(fmri.version, "match_latest", None):
--- a/src/util/publish/pkgsurf.py	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/util/publish/pkgsurf.py	Fri Sep 27 11:38:34 2013 -0700
@@ -271,7 +271,7 @@
         specified dependency FMRI, otherwise substitute the complete version of
         the pkg currently present in the repo."""
 
-        dpfmri = fmri.PkgFmri(fmri_str, "5.11")
+        dpfmri = fmri.PkgFmri(fmri_str)
         ndpfmri = latest_ref_pkgs[dpfmri.get_name()]
 
         if ndpfmri.is_successor(dpfmri):
@@ -287,7 +287,7 @@
         be adjusted. This has to be passed in separately since in case of
         require-any dependencies an action can contain multiple FMRIs. """
 
-        dpfmri = fmri.PkgFmri(fmri_str, "5.11")
+        dpfmri = fmri.PkgFmri(fmri_str)
 
         # Versionless dependencies don't need to be changed.
         if not dpfmri.version:
@@ -318,7 +318,7 @@
                 fmris = ra.attrlist("fmri")
 
                 for rf in fmris:
-                        rpfmri = fmri.PkgFmri(rf, "5.11")
+                        rpfmri = fmri.PkgFmri(rf)
                         if rpfmri.get_pkg_stem() != dpfmri.get_pkg_stem():
                                 continue
 
@@ -390,7 +390,7 @@
                 # For now, treat as content change.
                 if not isinstance(a.attrs["fmri"], basestring):
                         return False
-                dpfmri = fmri.PkgFmri(a.attrs["fmri"], "5.11")
+                dpfmri = fmri.PkgFmri(a.attrs["fmri"])
                 deps.add(dpfmri.get_pkg_stem())
                 return True
 
--- a/src/web/en/catalog.shtml	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/web/en/catalog.shtml	Fri Sep 27 11:38:34 2013 -0700
@@ -244,7 +244,7 @@
                                         <a title="Package Information Summary"
                                             href="${phref}">${pfmri.pkg_name}</a>
                                 </td>
-                                <td>${pfmri.version}</td>
+                                <td>${pfmri.version.get_version(include_build=False)}</td>
                                 <td>
 %               if not show_obsolete or catalog.PKG_STATE_OBSOLETE not in states:
                                         <a class="p5i"
--- a/src/web/en/search.shtml	Fri Sep 27 10:19:27 2013 +1200
+++ b/src/web/en/search.shtml	Fri Sep 27 11:38:34 2013 -0700
@@ -366,7 +366,7 @@
 
                         stem = pfmri.pkg_name
                         pfmri_str = pfmri.get_fmri(anarchy=True, 
-                            include_scheme=False)
+                            include_scheme=False, include_build=False)
                         phref = self.shared.rpath(g_vars, "info/0/%s" % (
                             urllib.quote(pfmri_str, "")))
                         # XXX the .p5i extension is a bogus hack because