Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 229283 Details for
Bug 317337
[Future EAPI]: BDEPEND (DEPEND) for classifying build time dependencies as CBUILD or CHOST ones + SYSROOT for CHOST deps
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
proof-of-concept patch
portage-2.1.7.17-depend2.patch (text/plain), 15.80 KB, created by
Ambroz Bizjak
on 2010-04-26 18:34:00 UTC
(
hide
)
Description:
proof-of-concept patch
Filename:
MIME Type:
Creator:
Ambroz Bizjak
Created:
2010-04-26 18:34:00 UTC
Size:
15.80 KB
patch
obsolete
>diff -urN portage-2.1.7.17.orig/bin/ebuild.sh portage-2.1.7.17/bin/ebuild.sh >--- portage-2.1.7.17.orig/bin/ebuild.sh 2010-04-26 11:59:13.944540717 +0200 >+++ portage-2.1.7.17/bin/ebuild.sh 2010-04-26 18:53:49.018685611 +0200 >@@ -1088,7 +1088,7 @@ > local f x > IFS=$' \t\n\r' > for f in ASFLAGS CATEGORY CBUILD CC CFLAGS CHOST CTARGET CXX \ >- CXXFLAGS DEFINED_PHASES DEPEND EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE \ >+ CXXFLAGS DEFINED_PHASES DEPEND HDEPEND TDEPEND EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE \ > FEATURES INHERITED IUSE LDFLAGS LIBCFLAGS LIBCXXFLAGS \ > LICENSE PDEPEND PF PKGUSE PROPERTIES PROVIDE RDEPEND RESTRICT SLOT \ > KEYWORDS HOMEPAGE SRC_URI DESCRIPTION; do >@@ -1256,6 +1256,8 @@ > > local B_IUSE > local B_DEPEND >+ local B_HDEPEND >+ local B_TDEPEND > local B_RDEPEND > local B_PDEPEND > while [ "$1" ]; do >@@ -1303,12 +1305,14 @@ > set -f > > # Retain the old data and restore it later. >- unset B_IUSE B_DEPEND B_RDEPEND B_PDEPEND >+ unset B_IUSE B_DEPEND B_HDEPEND B_TDEPEND B_RDEPEND B_PDEPEND > [ "${IUSE+set}" = set ] && B_IUSE="${IUSE}" > [ "${DEPEND+set}" = set ] && B_DEPEND="${DEPEND}" >+ [ "${HDEPEND+set}" = set ] && B_HDEPEND="${HDEPEND}" >+ [ "${TDEPEND+set}" = set ] && B_TDEPEND="${TDEPEND}" > [ "${RDEPEND+set}" = set ] && B_RDEPEND="${RDEPEND}" > [ "${PDEPEND+set}" = set ] && B_PDEPEND="${PDEPEND}" >- unset IUSE DEPEND RDEPEND PDEPEND >+ unset IUSE DEPEND HDEPEND TDEPEND RDEPEND PDEPEND > #turn on glob expansion > set +f > >@@ -1321,6 +1325,8 @@ > # be applied after everything is finished. New incremental behavior. > [ "${IUSE+set}" = set ] && export E_IUSE="${E_IUSE} ${IUSE}" > [ "${DEPEND+set}" = set ] && export E_DEPEND="${E_DEPEND} ${DEPEND}" >+ [ "${HDEPEND+set}" = set ] && export E_HDEPEND="${E_HDEPEND} ${HDEPEND}" >+ [ "${TDEPEND+set}" = set ] && export E_TDEPEND="${E_TDEPEND} ${TDEPEND}" > [ "${RDEPEND+set}" = set ] && export E_RDEPEND="${E_RDEPEND} ${RDEPEND}" > [ "${PDEPEND+set}" = set ] && export E_PDEPEND="${E_PDEPEND} ${PDEPEND}" > >@@ -1330,6 +1336,12 @@ > [ "${B_DEPEND+set}" = set ] && DEPEND="${B_DEPEND}" > [ "${B_DEPEND+set}" = set ] || unset DEPEND > >+ [ "${B_HDEPEND+set}" = set ] && HDEPEND="${B_HDEPEND}" >+ [ "${B_HDEPEND+set}" = set ] || unset HDEPEND >+ >+ [ "${B_TDEPEND+set}" = set ] && TDEPEND="${B_TDEPEND}" >+ [ "${B_TDEPEND+set}" = set ] || unset TDEPEND >+ > [ "${B_RDEPEND+set}" = set ] && RDEPEND="${B_RDEPEND}" > [ "${B_RDEPEND+set}" = set ] || unset RDEPEND > >@@ -1591,7 +1603,7 @@ > # of ebuild.sh will work for pkg_postinst, pkg_prerm, and pkg_postrm > # when portage is upgrading itself. > >-READONLY_EBUILD_METADATA="DEFINED_PHASES DEPEND DESCRIPTION >+READONLY_EBUILD_METADATA="DEFINED_PHASES DEPEND HDEPEND TDEPEND DESCRIPTION > EAPI HOMEPAGE INHERITED IUSE KEYWORDS LICENSE > PDEPEND PROVIDE RDEPEND RESTRICT SLOT SRC_URI" > >@@ -1766,7 +1778,7 @@ > export SANDBOX_ON="1" > export S=${WORKDIR}/${P} > >-unset E_IUSE E_DEPEND E_RDEPEND E_PDEPEND >+unset E_IUSE E_DEPEND E_HDEPEND E_TDEPEND E_RDEPEND E_PDEPEND > > # Turn of extended glob matching so that g++ doesn't get incorrectly matched. > shopt -u extglob >@@ -1870,7 +1882,7 @@ > # In order to ensure correct interaction between ebuilds and > # eclasses, they need to be unset before this process of > # interaction begins. >- unset DEPEND RDEPEND PDEPEND IUSE >+ unset DEPEND HDEPEND TDEPEND RDEPEND PDEPEND IUSE > > if [[ $PORTAGE_DEBUG != 1 || ${-/x/} != $- ]] ; then > source "$EBUILD" || die "error sourcing ebuild" >@@ -1896,10 +1908,12 @@ > # add in dependency info from eclasses > IUSE="${IUSE} ${E_IUSE}" > DEPEND="${DEPEND} ${E_DEPEND}" >+ HDEPEND="${HDEPEND} ${E_HDEPEND}" >+ TDEPEND="${TDEPEND} ${E_TDEPEND}" > RDEPEND="${RDEPEND} ${E_RDEPEND}" > PDEPEND="${PDEPEND} ${E_PDEPEND}" > >- unset ECLASS E_IUSE E_DEPEND E_RDEPEND E_PDEPEND >+ unset ECLASS E_IUSE E_DEPEND E_HDEPEND E_TDEPEND E_RDEPEND E_PDEPEND > > # alphabetically ordered by $EBUILD_PHASE value > case "$EAPI" in >@@ -2131,7 +2145,7 @@ > > auxdbkeys="DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE > DESCRIPTION KEYWORDS INHERITED IUSE UNUSED_00 PDEPEND PROVIDE EAPI >- PROPERTIES DEFINED_PHASES UNUSED_05 UNUSED_04 >+ PROPERTIES DEFINED_PHASES HDEPEND TDEPEND > UNUSED_03 UNUSED_02 UNUSED_01" > > #the extra $(echo) commands remove newlines >diff -urN portage-2.1.7.17.orig/bin/emaint portage-2.1.7.17/bin/emaint >--- portage-2.1.7.17.orig/bin/emaint 2010-04-26 11:59:13.944540717 +0200 >+++ portage-2.1.7.17/bin/emaint 2010-04-26 14:19:28.287049012 +0200 >@@ -230,7 +230,7 @@ > def __init__(self, tree): > self._tree = tree > self._portdir = tree.settings["PORTDIR"] >- self._update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] >+ self._update_keys = ["DEPEND", "HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] > > def _grab_global_updates(self, portdir): > from portage.update import grab_updates, parse_updates >diff -urN portage-2.1.7.17.orig/pym/_emerge/actions.py portage-2.1.7.17/pym/_emerge/actions.py >--- portage-2.1.7.17.orig/pym/_emerge/actions.py 2010-04-26 11:59:13.947858545 +0200 >+++ portage-2.1.7.17/pym/_emerge/actions.py 2010-04-26 15:44:08.442361798 +0200 >@@ -884,14 +884,15 @@ > graph = digraph() > del cleanlist[:] > >- dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"] >+ dep_keys = ["HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND"] > runtime = UnmergeDepPriority(runtime=True) > runtime_post = UnmergeDepPriority(runtime_post=True) > buildtime = UnmergeDepPriority(buildtime=True) > priority_map = { > "RDEPEND": runtime, > "PDEPEND": runtime_post, >- "DEPEND": buildtime, >+ "HDEPEND": buildtime, >+ "TDEPEND": buildtime, > } > > for node in clean_set: >diff -urN portage-2.1.7.17.orig/pym/_emerge/BlockerDB.py portage-2.1.7.17/pym/_emerge/BlockerDB.py >--- portage-2.1.7.17.orig/pym/_emerge/BlockerDB.py 2010-04-26 11:59:13.947858545 +0200 >+++ portage-2.1.7.17/pym/_emerge/BlockerDB.py 2010-04-26 15:32:25.132401258 +0200 >@@ -40,7 +40,7 @@ > > def findInstalledBlockers(self, new_pkg, acquire_lock=0): > blocker_cache = BlockerCache(self._vartree.root, self._vartree.dbapi) >- dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"] >+ dep_keys = ["DEPEND", "HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND"] > settings = self._vartree.settings > stale_cache = set(blocker_cache) > fake_vartree = self._get_fake_vartree(acquire_lock=acquire_lock) >diff -urN portage-2.1.7.17.orig/pym/_emerge/depgraph.py portage-2.1.7.17/pym/_emerge/depgraph.py >--- portage-2.1.7.17.orig/pym/_emerge/depgraph.py 2010-04-26 11:59:13.947858545 +0200 >+++ portage-2.1.7.17/pym/_emerge/depgraph.py 2010-04-26 15:52:43.648948216 +0200 >@@ -239,7 +239,7 @@ > > pkg_tree_map = RootConfig.pkg_tree_map > >- _dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"] >+ _dep_keys = ["HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND"] > > def __init__(self, settings, trees, myopts, myparams, spinner, > frozen_config=None, runtime_pkg_mask=None, allow_backtracking=False): >@@ -1097,10 +1097,15 @@ > removal_action = "remove" in self._dynamic_config.myparams > > edepend={} >- depkeys = ["DEPEND","RDEPEND","PDEPEND"] >+ depkeys = ["HDEPEND","TDEPEND","RDEPEND","PDEPEND"] > for k in depkeys: > edepend[k] = metadata[k] > >+ # if HDEPEND and TDEPEND are empty, treat DEPEND as if it was HDEPEND, >+ # otherwise ignore DEPEND >+ if edepend["HDEPEND"] == "" and edepend["TDEPEND"] == "": >+ edepend["HDEPEND"] = metadata["DEPEND"] >+ > if not pkg.built and \ > "--buildpkgonly" in self._frozen_config.myopts and \ > "deep" not in self._dynamic_config.myparams and \ >@@ -1121,10 +1126,12 @@ > bdeps_optional = True > else: > # built packages do not have build time dependencies. >- edepend["DEPEND"] = "" >+ edepend["HDEPEND"] = "" >+ edepend["TDEPEND"] = "" > > if removal_action and self._frozen_config.myopts.get("--with-bdeps", "y") == "n": >- edepend["DEPEND"] = "" >+ edepend["HDEPEND"] = "" >+ edepend["TDEPEND"] = "" > > if removal_action: > bdeps_root = myroot >@@ -1135,10 +1142,13 @@ > if root_deps is True: > bdeps_root = myroot > elif root_deps == "rdeps": >- edepend["DEPEND"] = "" >+ edepend["HDEPEND"] = "" > > deps = ( >- (bdeps_root, edepend["DEPEND"], >+ (bdeps_root, edepend["HDEPEND"], >+ self._priority(buildtime=(not bdeps_optional), >+ optional=bdeps_optional)), >+ (myroot, edepend["TDEPEND"], > self._priority(buildtime=(not bdeps_optional), > optional=bdeps_optional)), > (myroot, edepend["RDEPEND"], self._priority(runtime=True)), >@@ -1991,7 +2001,10 @@ > return [pkg.slot_atom for pkg in greedy_pkgs] > > blockers = {} >- blocker_dep_keys = ["DEPEND", "PDEPEND", "RDEPEND"] >+ if pkg.metadata["HDEPEND"] == "" and pkg.metadata["TDEPEND"] == "": >+ blocker_dep_keys = ["DEPEND", "PDEPEND", "RDEPEND"] >+ else: >+ blocker_dep_keys = ["HDEPEND", "TDEPEND", "PDEPEND", "RDEPEND"] > for pkg in greedy_pkgs + [highest_pkg]: > dep_str = " ".join(pkg.metadata[k] for k in blocker_dep_keys) > try: >diff -urN portage-2.1.7.17.orig/pym/_emerge/FakeVartree.py portage-2.1.7.17/pym/_emerge/FakeVartree.py >--- portage-2.1.7.17.orig/pym/_emerge/FakeVartree.py 2010-04-26 11:59:13.944540717 +0200 >+++ portage-2.1.7.17/pym/_emerge/FakeVartree.py 2010-04-26 14:20:22.300402459 +0200 >@@ -46,7 +46,7 @@ > self._match = self.dbapi.match > self.dbapi.match = self._match_wrapper > self._aux_get_history = set() >- self._portdb_keys = ["EAPI", "DEPEND", "RDEPEND", "PDEPEND"] >+ self._portdb_keys = ["EAPI", "DEPEND", "HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND"] > self._portdb = portdb > self._global_updates = None > >@@ -193,7 +193,7 @@ > > def perform_global_updates(mycpv, mydb, mycommands): > from portage.update import update_dbentries >- aux_keys = ["DEPEND", "RDEPEND", "PDEPEND"] >+ aux_keys = ["DEPEND", "HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND"] > aux_dict = dict(zip(aux_keys, mydb.aux_get(mycpv, aux_keys))) > updates = update_dbentries(mycommands, aux_dict) > if updates: >diff -urN portage-2.1.7.17.orig/pym/_emerge/Package.py portage-2.1.7.17/pym/_emerge/Package.py >--- portage-2.1.7.17.orig/pym/_emerge/Package.py 2010-04-26 11:59:13.944540717 +0200 >+++ portage-2.1.7.17/pym/_emerge/Package.py 2010-04-26 14:21:16.579521127 +0200 >@@ -27,7 +27,7 @@ > ("_use",) > > metadata_keys = [ >- "CHOST", "COUNTER", "DEPEND", "EAPI", >+ "CHOST", "COUNTER", "DEPEND", "HDEPEND", "TDEPEND", "EAPI", > "INHERITED", "IUSE", "KEYWORDS", > "LICENSE", "PDEPEND", "PROVIDE", "RDEPEND", > "repository", "PROPERTIES", "RESTRICT", "SLOT", "USE", "_mtime_"] >diff -urN portage-2.1.7.17.orig/pym/portage/cache/flat_list.py portage-2.1.7.17/pym/portage/cache/flat_list.py >--- portage-2.1.7.17.orig/pym/portage/cache/flat_list.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/cache/flat_list.py 2010-04-26 18:56:06.167862528 +0200 >@@ -20,7 +20,7 @@ > auxdbkey_order=('DEPEND', 'RDEPEND', 'SLOT', 'SRC_URI', > 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION', > 'KEYWORDS', 'IUSE', 'UNUSED_00', >- 'PDEPEND', 'PROVIDE', 'EAPI', 'PROPERTIES', 'DEFINED_PHASES') >+ 'PDEPEND', 'PROVIDE', 'EAPI', 'PROPERTIES', 'DEFINED_PHASES', 'HDEPEND', 'TDEPEND') > > def __init__(self, label, auxdbkeys, **config): > super(database,self).__init__(label, auxdbkeys, **config) >diff -urN portage-2.1.7.17.orig/pym/portage/cache/metadata.py portage-2.1.7.17/pym/portage/cache/metadata.py >--- portage-2.1.7.17.orig/pym/portage/cache/metadata.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/cache/metadata.py 2010-04-26 18:57:44.391160102 +0200 >@@ -28,7 +28,7 @@ > auxdbkey_order=('DEPEND', 'RDEPEND', 'SLOT', 'SRC_URI', > 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION', > 'KEYWORDS', 'INHERITED', 'IUSE', 'UNUSED_00', >- 'PDEPEND', 'PROVIDE', 'EAPI', 'PROPERTIES', 'DEFINED_PHASES') >+ 'PDEPEND', 'PROVIDE', 'EAPI', 'PROPERTIES', 'DEFINED_PHASES', 'HDEPEND', 'TDEPEND') > > autocommits = True > serialize_eclasses = False >diff -urN portage-2.1.7.17.orig/pym/portage/dbapi/bintree.py portage-2.1.7.17/pym/portage/dbapi/bintree.py >--- portage-2.1.7.17.orig/pym/portage/dbapi/bintree.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/dbapi/bintree.py 2010-04-26 15:37:37.262429125 +0200 >@@ -49,7 +49,7 @@ > self.cpdict={} > # Selectively cache metadata in order to optimize dep matching. > self._aux_cache_keys = set( >- ["CHOST", "DEPEND", "EAPI", "IUSE", "KEYWORDS", >+ ["CHOST", "DEPEND", "HDEPEND", "TDEPEND", "EAPI", "IUSE", "KEYWORDS", > "LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE", > "RDEPEND", "repository", "RESTRICT", "SLOT", "USE"]) > self._aux_cache_slot_dict = slot_dict_class(self._aux_cache_keys) >@@ -187,12 +187,12 @@ > self._pkgindex_keys = self.dbapi._aux_cache_keys.copy() > self._pkgindex_keys.update(["CPV", "MTIME", "SIZE"]) > self._pkgindex_aux_keys = \ >- ["CHOST", "DEPEND", "DESCRIPTION", "EAPI", >+ ["CHOST", "DEPEND", "HDEPEND", "TDEPEND", "DESCRIPTION", "EAPI", > "IUSE", "KEYWORDS", "LICENSE", "PDEPEND", "PROPERTIES", > "PROVIDE", "RDEPEND", "repository", "SLOT", "USE"] > self._pkgindex_aux_keys = list(self._pkgindex_aux_keys) > self._pkgindex_use_evaluated_keys = \ >- ("LICENSE", "RDEPEND", "DEPEND", >+ ("LICENSE", "RDEPEND", "DEPEND", "HDEPEND", "TDEPEND", > "PDEPEND", "PROPERTIES", "PROVIDE") > self._pkgindex_header_keys = set([ > "ACCEPT_KEYWORDS", "ACCEPT_LICENSE", >@@ -201,6 +201,8 @@ > "GENTOO_MIRRORS", "INSTALL_MASK", "SYNC", "USE"]) > self._pkgindex_default_pkg_data = { > "DEPEND" : "", >+ "HDEPEND" : "", >+ "TDEPEND" : "", > "EAPI" : "0", > "IUSE" : "", > "KEYWORDS": "", >diff -urN portage-2.1.7.17.orig/pym/portage/dbapi/__init__.py portage-2.1.7.17/pym/portage/dbapi/__init__.py >--- portage-2.1.7.17.orig/pym/portage/dbapi/__init__.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/dbapi/__init__.py 2010-04-26 15:40:26.489289672 +0200 >@@ -217,7 +217,7 @@ > maxval = len(cpv_all) > aux_get = self.aux_get > aux_update = self.aux_update >- update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] >+ update_keys = ["DEPEND", "HDEPEND", "TDEPEND", "RDEPEND", "PDEPEND", "PROVIDE"] > from portage.update import update_dbentries > if onUpdate: > onUpdate(maxval, 0) >diff -urN portage-2.1.7.17.orig/pym/portage/dbapi/porttree.py portage-2.1.7.17/pym/portage/dbapi/porttree.py >--- portage-2.1.7.17.orig/pym/portage/dbapi/porttree.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/dbapi/porttree.py 2010-04-26 15:38:03.315692548 +0200 >@@ -375,7 +375,7 @@ > pass > # Selectively cache metadata in order to optimize dep matching. > self._aux_cache_keys = set( >- ["DEPEND", "EAPI", "INHERITED", "IUSE", "KEYWORDS", "LICENSE", >+ ["DEPEND", "HDEPEND", "TDEPEND", "EAPI", "INHERITED", "IUSE", "KEYWORDS", "LICENSE", > "PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND", "repository", > "RESTRICT", "SLOT"]) > >diff -urN portage-2.1.7.17.orig/pym/portage/dbapi/vartree.py portage-2.1.7.17/pym/portage/dbapi/vartree.py >--- portage-2.1.7.17.orig/pym/portage/dbapi/vartree.py 2010-04-26 11:59:13.951181543 +0200 >+++ portage-2.1.7.17/pym/portage/dbapi/vartree.py 2010-04-26 15:39:35.223208418 +0200 >@@ -113,7 +113,7 @@ > vartree = db[root]["vartree"] > self.vartree = vartree > self._aux_cache_keys = set( >- ["CHOST", "COUNTER", "DEPEND", "DESCRIPTION", >+ ["CHOST", "COUNTER", "DEPEND", "HDEPEND", "TDEPEND", "DESCRIPTION", > "EAPI", "HOMEPAGE", "IUSE", "KEYWORDS", > "LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND", > "repository", "RESTRICT" , "SLOT", "USE"]) >diff -urN portage-2.1.7.17.orig/pym/portage/__init__.py portage-2.1.7.17/pym/portage/__init__.py >--- portage-2.1.7.17.orig/pym/portage/__init__.py 2010-04-26 11:59:13.954519556 +0200 >+++ portage-2.1.7.17/pym/portage/__init__.py 2010-04-26 18:54:04.162015733 +0200 >@@ -8747,7 +8747,7 @@ > 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION', > 'KEYWORDS', 'INHERITED', 'IUSE', 'UNUSED_00', > 'PDEPEND', 'PROVIDE', 'EAPI', >- 'PROPERTIES', 'DEFINED_PHASES', 'UNUSED_05', 'UNUSED_04', >+ 'PROPERTIES', 'DEFINED_PHASES', 'HDEPEND', 'TDEPEND', > 'UNUSED_03', 'UNUSED_02', 'UNUSED_01', > ] > auxdbkeylen=len(auxdbkeys)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 317337
:
229283
|
242403
|
242691
|
323962
|
323992
|
323994
|
324000
|
324002
|
324038
|
324142