portage.git
13 years agobintree: add timeout for closing binhost conn v2.2.0_alpha11
Zac Medico [Fri, 31 Dec 2010 08:51:24 +0000 (00:51 -0800)]
bintree: add timeout for closing binhost conn

Hopefully this solves bug #350139.

13 years agomkrelease.sh: set portage.VERSION
Zac Medico [Fri, 31 Dec 2010 08:12:03 +0000 (00:12 -0800)]
mkrelease.sh: set portage.VERSION

13 years agoBinpkg: implement REPLACING_VERSIONS
Zac Medico [Fri, 31 Dec 2010 07:55:19 +0000 (23:55 -0800)]
Binpkg: implement REPLACING_VERSIONS

13 years agotest_dep_getrepo: fix copyright header
Zac Medico [Fri, 31 Dec 2010 06:55:21 +0000 (22:55 -0800)]
test_dep_getrepo: fix copyright header

13 years agoebuild(5): fix grammar for dodoc -r
Zac Medico [Fri, 31 Dec 2010 06:26:51 +0000 (22:26 -0800)]
ebuild(5): fix grammar for dodoc -r

13 years agoebuild(5): REPLAC* variables in EAPI 4
Zac Medico [Fri, 31 Dec 2010 04:57:26 +0000 (20:57 -0800)]
ebuild(5): REPLAC* variables in EAPI 4

13 years agoebuild(5): MERGE_TYPE in EAPI 4
Zac Medico [Fri, 31 Dec 2010 04:37:46 +0000 (20:37 -0800)]
ebuild(5): MERGE_TYPE in EAPI 4

13 years agoebuild(5): src_install in EAPI 4
Zac Medico [Fri, 31 Dec 2010 04:11:20 +0000 (20:11 -0800)]
ebuild(5): src_install in EAPI 4

13 years agoebuild(5): pkg_pretend in EAPI 4
Zac Medico [Fri, 31 Dec 2010 03:58:14 +0000 (19:58 -0800)]
ebuild(5): pkg_pretend in EAPI 4

13 years agoebuild(5): REQUIRED_USE in EAPI 4
Zac Medico [Fri, 31 Dec 2010 03:36:47 +0000 (19:36 -0800)]
ebuild(5): REQUIRED_USE in EAPI 4

13 years agoREQUIRED_USE: more resolver tests
Zac Medico [Fri, 31 Dec 2010 02:44:37 +0000 (18:44 -0800)]
REQUIRED_USE: more resolver tests

13 years agotests: replace EAPI 4_pre1 with 4
Zac Medico [Fri, 31 Dec 2010 02:11:35 +0000 (18:11 -0800)]
tests: replace EAPI 4_pre1 with 4

13 years agoREQUIRED_USE: more resolver tests
Zac Medico [Fri, 31 Dec 2010 02:04:10 +0000 (18:04 -0800)]
REQUIRED_USE: more resolver tests

13 years agoebuild(5): USE dependency defaults in EAPI 4
Zac Medico [Fri, 31 Dec 2010 01:33:31 +0000 (17:33 -0800)]
ebuild(5): USE dependency defaults in EAPI 4

13 years agoebuild(5): econf --disable-dep in EAPI 4
Zac Medico [Fri, 31 Dec 2010 00:41:36 +0000 (16:41 -0800)]
ebuild(5): econf --disable-dep in EAPI 4

13 years agoebuild(5): doman -i18n overrides suffix in EAPI 4
Zac Medico [Fri, 31 Dec 2010 00:34:31 +0000 (16:34 -0800)]
ebuild(5): doman -i18n overrides suffix in EAPI 4

13 years agoebuild(5): do/newins preserve symlinks in EAPI 4
Zac Medico [Fri, 31 Dec 2010 00:27:30 +0000 (16:27 -0800)]
ebuild(5): do/newins preserve symlinks in EAPI 4

13 years agoebuild(5): fix dosym docs (reference to hardlink)
Zac Medico [Fri, 31 Dec 2010 00:10:11 +0000 (16:10 -0800)]
ebuild(5): fix dosym docs (reference to hardlink)

13 years agoebuild(5): escape hyphens in docompress docs
Zac Medico [Fri, 31 Dec 2010 00:04:01 +0000 (16:04 -0800)]
ebuild(5): escape hyphens in docompress docs

13 years agoebuild(5): dodoc -r supported in EAPI 4
Zac Medico [Fri, 31 Dec 2010 00:01:38 +0000 (16:01 -0800)]
ebuild(5): dodoc -r supported in EAPI 4

13 years agoebuild(5): new docompress helper in EAPI 4
Zac Medico [Thu, 30 Dec 2010 23:50:31 +0000 (15:50 -0800)]
ebuild(5): new docompress helper in EAPI 4

13 years agoebuild(5): helpers die automatically in EAPI 4
Zac Medico [Thu, 30 Dec 2010 23:04:51 +0000 (15:04 -0800)]
ebuild(5): helpers die automatically in EAPI 4

13 years agoebuild(5): dohard is not supported in EAPI 4
Zac Medico [Thu, 30 Dec 2010 22:48:21 +0000 (14:48 -0800)]
ebuild(5): dohard is not supported in EAPI 4

13 years agoebuild(5): dosed is not supported in EAPI 4
Zac Medico [Thu, 30 Dec 2010 22:41:18 +0000 (14:41 -0800)]
ebuild(5): dosed is not supported in EAPI 4

13 years agoportage.const: bump EAPI to 4 (council approved)
Zac Medico [Thu, 30 Dec 2010 22:23:57 +0000 (14:23 -0800)]
portage.const: bump EAPI to 4 (council approved)

13 years agodocbook: EAPI 4_pre1 is 4 (council approved)
Zac Medico [Thu, 30 Dec 2010 22:14:47 +0000 (14:14 -0800)]
docbook: EAPI 4_pre1 is 4 (council approved)

13 years agofetch: don't require g+s mode on $DISTDIR
Zac Medico [Wed, 29 Dec 2010 19:04:02 +0000 (11:04 -0800)]
fetch: don't require g+s mode on $DISTDIR

The g+s mode doesn't seem to help anyone (including live ebuilds
since they typically don't do recursive g+w). We already do manual
application of portage group privileges to individual files, so the
g+s mode is redundant.

13 years agounpack: handle echo failure in unzip pipe
Zac Medico [Wed, 29 Dec 2010 18:51:28 +0000 (10:51 -0800)]
unpack: handle echo failure in unzip pipe

This will fix bug #338744.

13 years agobash: as a general rule, use read -r
Zac Medico [Wed, 29 Dec 2010 18:28:25 +0000 (10:28 -0800)]
bash: as a general rule, use read -r

This solves cases like bug #350045.

13 years agodoins: use read -r
Ulrich Müller [Wed, 29 Dec 2010 18:11:21 +0000 (10:11 -0800)]
doins: use read -r

This will fix bug #350045.

13 years agoEbuildPhase: Display upstream info before setup.
Michał Górny [Wed, 29 Dec 2010 13:37:25 +0000 (14:37 +0100)]
EbuildPhase: Display upstream info before setup.

Display upstream maintainers and bugtrackers along with Gentoo
maintainers when emerging a package.

13 years agofetch: fix listonly/allow_missing_digests logic
Zac Medico [Tue, 28 Dec 2010 21:58:16 +0000 (13:58 -0800)]
fetch: fix listonly/allow_missing_digests logic

13 years ago_exec: disable SIGQUIT handler override by parent
Zac Medico [Thu, 23 Dec 2010 19:40:55 +0000 (11:40 -0800)]
_exec: disable SIGQUIT handler override by parent

This will fix bug #289486.

13 years agoEbuildFetcher: bail out if missing digest
Zac Medico [Tue, 28 Dec 2010 21:44:57 +0000 (13:44 -0800)]
EbuildFetcher: bail out if missing digest

This will fix bug #348864.

13 years agoUse EbuildFetcher for --fetchonly (not --pretend)
Zac Medico [Tue, 28 Dec 2010 21:12:30 +0000 (13:12 -0800)]
Use EbuildFetcher for --fetchonly (not --pretend)

13 years agoEbuildFetcher: pass digests to fetch()
Zac Medico [Tue, 28 Dec 2010 20:41:26 +0000 (12:41 -0800)]
EbuildFetcher: pass digests to fetch()

13 years agodoebuild: validate more Package metadata keys
Zac Medico [Tue, 28 Dec 2010 17:07:40 +0000 (09:07 -0800)]
doebuild: validate more Package metadata keys

13 years agounmerge: ignore rmdir EPERM from mount point
Zac Medico [Mon, 27 Dec 2010 22:47:28 +0000 (14:47 -0800)]
unmerge: ignore rmdir EPERM from mount point

This will fix bug #349757.

13 years agoebuild(1): use Package to validate metadata
Zac Medico [Mon, 27 Dec 2010 21:40:45 +0000 (13:40 -0800)]
ebuild(1): use Package to validate metadata

13 years agoanydbm: use gdbm "u" flag for concurrent writers
Zac Medico [Sun, 26 Dec 2010 21:22:38 +0000 (13:22 -0800)]
anydbm: use gdbm "u" flag for concurrent writers

This will fix bug #53607.

14 years agoRemove unused filter_iuse_defaults() function.
Zac Medico [Sat, 25 Dec 2010 00:46:44 +0000 (16:46 -0800)]
Remove unused filter_iuse_defaults() function.

14 years agodepgraph: Optimize --newuse with Package attrs.
Zac Medico [Sat, 25 Dec 2010 00:46:01 +0000 (16:46 -0800)]
depgraph: Optimize --newuse with Package attrs.

14 years agoOptimize merge list display with Package attrs.
Zac Medico [Sat, 25 Dec 2010 00:40:21 +0000 (16:40 -0800)]
Optimize merge list display with Package attrs.

14 years agoFix merge list repo display breakage.
Zac Medico [Thu, 23 Dec 2010 18:44:04 +0000 (10:44 -0800)]
Fix merge list repo display breakage.

Broken since refactoring in commit
48c8cec7c079cb07a4f421a36cdc46a7fdbc7811.

14 years agoFix portage restart warning message.
Zac Medico [Wed, 22 Dec 2010 22:15:18 +0000 (14:15 -0800)]
Fix portage restart warning message.

14 years agoRefactor depgraph merge list display code.
Brian Dolbec [Wed, 22 Dec 2010 21:31:08 +0000 (13:31 -0800)]
Refactor depgraph merge list display code.

14 years agoemerge --changelog: repo support for binpkgs
Zac Medico [Wed, 22 Dec 2010 20:19:13 +0000 (12:19 -0800)]
emerge --changelog: repo support for binpkgs

14 years agoPackage.operation: eliminate duplicate code
Zac Medico [Wed, 22 Dec 2010 19:35:29 +0000 (11:35 -0800)]
Package.operation: eliminate duplicate code

14 years agodoebuild: remove unused emerge/returnpid logic v2.2.0_alpha10
Zac Medico [Tue, 21 Dec 2010 18:02:18 +0000 (10:02 -0800)]
doebuild: remove unused emerge/returnpid logic

14 years agoDisplay relevant FEATURES before setup phase
Zac Medico [Tue, 21 Dec 2010 17:35:25 +0000 (09:35 -0800)]
Display relevant FEATURES before setup phase

Thanks to Christian Ruppert <idl0r@gentoo.org> for the suggestion.

14 years agodoebuild: fix more bug #349273
Zac Medico [Tue, 21 Dec 2010 17:05:01 +0000 (09:05 -0800)]
doebuild: fix more bug #349273

14 years agodoebuild: fix bug #349273
Zac Medico [Tue, 21 Dec 2010 16:29:39 +0000 (08:29 -0800)]
doebuild: fix bug #349273

Since commit 75d3130fc8293fff68389b8fed44b8d47a0abe80, doebuild()
for the 'setup' phase triggers the actionmap_deps code path in order
to call the 'pretend' phase as a dependency. This path previously
assumed a portdbapi instance, which may not hold for some api consumers
such as entropy. Therefore, fix the code path to work with other dbapi
types.

14 years ago_lazy_vars: fix repo argument for license_manager
Zac Medico [Tue, 21 Dec 2010 00:07:11 +0000 (16:07 -0800)]
_lazy_vars: fix repo argument for license_manager

14 years agosaveNomergeFavorites: remove unecessary vars
Zac Medico [Mon, 20 Dec 2010 15:53:43 +0000 (07:53 -0800)]
saveNomergeFavorites: remove unecessary vars

14 years agosaveNomergeFavorites: fix possible root confusion
Zac Medico [Mon, 20 Dec 2010 15:47:48 +0000 (07:47 -0800)]
saveNomergeFavorites: fix possible root confusion

14 years agoUse write_atomic to rewrite lafiles.
Zac Medico [Mon, 20 Dec 2010 13:48:39 +0000 (05:48 -0800)]
Use write_atomic to rewrite lafiles.

This should succeed even in some cases in which a normal write might
fail due to file permission settings on some operating systems such as
HP-UX.

14 years agoSubstitute bash builtin >> for touch command.
Zac Medico [Mon, 20 Dec 2010 03:33:26 +0000 (19:33 -0800)]
Substitute bash builtin >> for touch command.

It should be faster to use the bash builtin, and also allows us to
avoid issues with touch breakage (like in bug #348640).

14 years agoprepos_order: avoid duplicates from aliases
Zac Medico [Mon, 20 Dec 2010 00:42:31 +0000 (16:42 -0800)]
prepos_order: avoid duplicates from aliases

14 years agoREQUIRED_USE: describe ^^ as exactly-one-of
Zac Medico [Sun, 19 Dec 2010 18:12:42 +0000 (10:12 -0800)]
REQUIRED_USE: describe ^^ as exactly-one-of

14 years agoparen_enclose: preserve atom USE conditionals
Zac Medico [Sun, 19 Dec 2010 17:57:18 +0000 (09:57 -0800)]
paren_enclose: preserve atom USE conditionals

The depgraph sometimes uses paren_enclose to temporarily convert parts
of use_reduce output to a plain string. In these cases, we want to
preserve atom USE conditionals, since these sometimes make a difference
for IUSE checks during package matching (as in bug #348389).

14 years agorepoman: ignore deprecated profiles.desc entries
Zac Medico [Sat, 18 Dec 2010 15:01:16 +0000 (07:01 -0800)]
repoman: ignore deprecated profiles.desc entries

14 years agodigestcheck: avoid display of u'' from KeyError
Zac Medico [Fri, 17 Dec 2010 21:08:16 +0000 (13:08 -0800)]
digestcheck: avoid display of u'' from KeyError

In python-2.x, KeyError.__str__ produces unicode literals that we
don't want users to see.

14 years agorepoman: handle ElementTree.ParseError
Zac Medico [Fri, 17 Dec 2010 20:12:54 +0000 (12:12 -0800)]
repoman: handle ElementTree.ParseError

14 years agogetbinpkg.py: auto-handle NotImplementedError
Zac Medico [Thu, 16 Dec 2010 20:29:22 +0000 (12:29 -0800)]
getbinpkg.py: auto-handle NotImplementedError

This should have been done as part of bug #338190.

14 years agogetbinpkg.py: use local HTTPSConnection import v2.2.0_alpha9
Zac Medico [Thu, 16 Dec 2010 07:24:16 +0000 (23:24 -0800)]
getbinpkg.py: use local HTTPSConnection import

Use local import since https typically isn't needed, and this way we
can usually avoid triggering the global scope http.client ImportError
handler (like during stage1 -> stage2 builds where USE=ssl is disabled
for python).

14 years agoslot_conflict_handler: fix for bug #348389
Zac Medico [Thu, 16 Dec 2010 02:55:53 +0000 (18:55 -0800)]
slot_conflict_handler: fix for bug #348389

This fixes a broken assumption about USE dep matching behavior,
since commit 766988aa56bb1bbd2796f96946e62ed78cdf259 introduced
stricter IUSE matching by using Atom.unevaluated_atom for IUSE
checks (thus changing behavior in cases where conditional USE
dependencies disappear upon evaluation).

14 years agoAtom.without_use: handle unevaluated_atom.use
Zac Medico [Thu, 16 Dec 2010 02:41:24 +0000 (18:41 -0800)]
Atom.without_use: handle unevaluated_atom.use

Atom.unevaluated_atom.use is used for IUSE checks when matching
packages, so it must not propagate to Atom.without_use.

14 years agohighlight_violations: handle unversioned atom
Zac Medico [Thu, 16 Dec 2010 01:21:13 +0000 (17:21 -0800)]
highlight_violations: handle unversioned atom

A test case is included, which triggers the previously broken case.

14 years agoremoveFromContents: don't use EROOT
Fabian Groffen [Wed, 15 Dec 2010 17:58:45 +0000 (18:58 +0100)]
removeFromContents: don't use EROOT

Fix bug #348790, make sure that CONTENTS entries keep their EPREFIX, by
using ROOT, instead of EROOT.

14 years agoetc-update: eliminate duplicate example configs
Zac Medico [Tue, 14 Dec 2010 04:29:10 +0000 (20:29 -0800)]
etc-update: eliminate duplicate example configs

14 years agoapply_recursive_permissions: don't follow symlink
Zac Medico [Tue, 14 Dec 2010 03:47:27 +0000 (19:47 -0800)]
apply_recursive_permissions: don't follow symlink

This will fix the following error, reported in bug #339670:

_ebuild_exit
    _post_phase_userpriv_perms(settings)
  File "/usr/lib64/portage/pym/portage/package/ebuild/doebuild.py", line 1207,
in _post_phase_userpriv_perms
    filemode=0o60, filemask=0)
  File "/usr/lib64/portage/pym/portage/util/__init__.py", line 1018, in
apply_recursive_permissions
    uid=uid, gid=gid, mode=filemode, mask=filemask)
  File "/usr/lib64/portage/pym/portage/util/__init__.py", line 1043, in
apply_secpass_permissions
    stat_cached = os.stat(filename)
  File "/usr/lib64/portage/pym/portage/__init__.py", line 226, in __call__
    rval = self._func(*wrapped_args, **wrapped_kwargs)
OSError: [Errno 40] Too many levels of symbolic links:
'/var/tmp/portage/dev-vcs/mercurial-1.7.2/temp/tests-2.7/child0/test-mq-symlinks.t/linka'

14 years agoetc-update: tweak style in do_distconf()
Anthony Basile [Tue, 14 Dec 2010 01:35:57 +0000 (20:35 -0500)]
etc-update: tweak style in do_distconf()

14 years agoetc-update: replace 'seq' with pure bash v2.2.0_alpha8
Zac Medico [Mon, 13 Dec 2010 06:22:53 +0000 (22:22 -0800)]
etc-update: replace 'seq' with pure bash

14 years agoetc-update: add option to save example config
Anthony Basile [Sun, 12 Dec 2010 23:30:45 +0000 (18:30 -0500)]
etc-update: add option to save example config

This will fix bug #348561.

14 years agoloadResumeCommand: select first matched package
Zac Medico [Mon, 13 Dec 2010 01:55:50 +0000 (17:55 -0800)]
loadResumeCommand: select first matched package

We need to break out of the loop after the first match here, since
the first package comes from the highest priority repo.

14 years agoxtermTitleReset: revert behavior for bug #348460
Zac Medico [Sun, 12 Dec 2010 12:36:20 +0000 (04:36 -0800)]
xtermTitleReset: revert behavior for bug #348460

14 years agoBinpkgVerifier: don't unlink emerge-fetch.log
Zac Medico [Sun, 12 Dec 2010 10:21:50 +0000 (02:21 -0800)]
BinpkgVerifier: don't unlink emerge-fetch.log

14 years agoPreserve existing hardlinks during merge.
Zac Medico [Wed, 8 Dec 2010 19:23:48 +0000 (11:23 -0800)]
Preserve existing hardlinks during merge.

The previous code created hardlinks rather aggressively, which was
helpful as a workaround for lack of hardlinks in tarballs created
by quickpkg due to bug #185305. Since bug #338509, quickpkg tarballs
preserve hardlinks, so there's no need for aggressive hardlink
creation. Therefore, simply preserve existing hardlinks during merge,
by comparison of st_dev and st_ino from the source files.

14 years agoquickpkg: revert hardlink fix from bug #185305
Zac Medico [Wed, 8 Dec 2010 05:25:23 +0000 (21:25 -0800)]
quickpkg: revert hardlink fix from bug #185305

For some reason, bug #185305 no longer seems to be an issue, and the
fix/workaround seems to cause bug 338509.

14 years agoquickpkg: may -> might reword
Mike Frysinger [Wed, 8 Dec 2010 04:17:38 +0000 (23:17 -0500)]
quickpkg: may -> might reword

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
14 years agoScheduler: fix pkg cache more for reposyntax
Zac Medico [Tue, 7 Dec 2010 19:21:53 +0000 (11:21 -0800)]
Scheduler: fix pkg cache more for reposyntax

14 years agoScheduler: fix pkg cache for reposyntax
Zac Medico [Tue, 7 Dec 2010 09:10:34 +0000 (01:10 -0800)]
Scheduler: fix pkg cache for reposyntax

14 years agoUse bytes literals.
Arfrever Frehtes Taifersar Arahesis [Mon, 6 Dec 2010 12:50:52 +0000 (13:50 +0100)]
Use bytes literals.

14 years agoinject binpkg after fetch for pkg_pretend v2.2.0_alpha7
Zac Medico [Mon, 6 Dec 2010 00:56:04 +0000 (16:56 -0800)]
inject binpkg after fetch for pkg_pretend

14 years agoFix pkg_pretend output and error handling.
Zac Medico [Mon, 6 Dec 2010 00:07:48 +0000 (16:07 -0800)]
Fix pkg_pretend output and error handling.

14 years agoScheduler: Always display message for pkg_pretend
Zac Medico [Sun, 5 Dec 2010 23:15:09 +0000 (15:15 -0800)]
Scheduler: Always display message for pkg_pretend

14 years agodbapi.match: Use IUSE to validate built USE
Zac Medico [Sun, 5 Dec 2010 22:36:16 +0000 (14:36 -0800)]
dbapi.match: Use IUSE to validate built USE

14 years agoebuild.sh: only run pretend once for ebuild(1)
Zac Medico [Sun, 5 Dec 2010 22:09:38 +0000 (14:09 -0800)]
ebuild.sh: only run pretend once for ebuild(1)

14 years agoSync EMERGE_FROM code with MERGE_TYPE code.
Zac Medico [Sun, 5 Dec 2010 11:08:54 +0000 (03:08 -0800)]
Sync EMERGE_FROM code with MERGE_TYPE code.

14 years agoPackage: Use IUSE to validate built USE
Zac Medico [Sun, 5 Dec 2010 00:58:58 +0000 (16:58 -0800)]
Package: Use IUSE to validate built USE

14 years agodoebuild: enable pretend phase as setup dep
Zac Medico [Sat, 4 Dec 2010 20:00:21 +0000 (12:00 -0800)]
doebuild: enable pretend phase as setup dep

14 years agodoebuild: set MERGE_TYPE for ebuild(1)
Zac Medico [Sat, 4 Dec 2010 19:46:55 +0000 (11:46 -0800)]
doebuild: set MERGE_TYPE for ebuild(1)

14 years agoScheduler: set MERGE_TYPE for pkg_pretend
Zac Medico [Sat, 4 Dec 2010 19:45:49 +0000 (11:45 -0800)]
Scheduler: set MERGE_TYPE for pkg_pretend

14 years agoEAPI 4: Support MERGE_TYPE (bug #347351)
Zac Medico [Sat, 4 Dec 2010 03:55:18 +0000 (19:55 -0800)]
EAPI 4: Support MERGE_TYPE (bug #347351)

14 years agoScheduler._run_pkg_pretend: call setcpv
Zac Medico [Sat, 4 Dec 2010 03:51:21 +0000 (19:51 -0800)]
Scheduler._run_pkg_pretend: call setcpv

14 years agoconfig.reset: re-initialize _setcpv_args_hash
Zac Medico [Sat, 4 Dec 2010 03:49:17 +0000 (19:49 -0800)]
config.reset: re-initialize _setcpv_args_hash

14 years agoREQUIRED_USE: test empty parenthesis
Zac Medico [Sat, 4 Dec 2010 01:10:41 +0000 (17:10 -0800)]
REQUIRED_USE: test empty parenthesis

14 years agofix QA_EXECSTACK spelling for QA_PREBUILT
Zac Medico [Thu, 2 Dec 2010 22:02:36 +0000 (14:02 -0800)]
fix QA_EXECSTACK spelling for QA_PREBUILT

Thanks to Sébastien Fabbro <bicatali@gentoo.org> for reporting in
bug #346847.

14 years agocpv_sort_key: test suffix order
Zac Medico [Thu, 2 Dec 2010 16:15:17 +0000 (08:15 -0800)]
cpv_sort_key: test suffix order

14 years agoadd new cpv_sort_key() function
Zac Medico [Thu, 2 Dec 2010 03:56:44 +0000 (19:56 -0800)]
add new cpv_sort_key() function