diff --git a/.hgsigs b/.hgsigs --- a/.hgsigs +++ b/.hgsigs @@ -202,3 +202,4 @@ 28163c5de797e5416f9b588940f4608269b4d50a 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 diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -215,3 +215,4 @@ 28163c5de797e5416f9b588940f4608269b4d50a 7fc3c5fbc65f6fe85d70ea63923b8767dda4f2e0 5.5 f62bb5d07848ca598aa860a517394130b61bf2ee 5.5.1 07731064ac41dacdf0ec869ebd05c2e848c14fbf 5.5.2 +0e06a7ab9e0d5c65af4e511aee1e0342998799df 5.6rc0 diff --git a/contrib/automation/hgautomation/linux.py b/contrib/automation/hgautomation/linux.py --- a/contrib/automation/hgautomation/linux.py +++ b/contrib/automation/hgautomation/linux.py @@ -75,7 +75,7 @@ sudo -H -u hg -g hg ./rustup-init -y sudo -H -u hg -g hg /home/hg/.cargo/bin/rustup install 1.31.1 1.46.0 sudo -H -u hg -g hg /home/hg/.cargo/bin/rustup component add clippy -sudo -H -u hg -g hg /home/hg/.cargo/bin/cargo install --git https://github.com/indygreg/PyOxidizer.git --rev 4697fb25918dfad6dc73288daeea501063963a08 pyoxidizer +sudo -H -u hg -g hg /home/hg/.cargo/bin/cargo install --version 0.9.0 pyoxidizer ''' diff --git a/contrib/automation/hgautomation/windows.py b/contrib/automation/hgautomation/windows.py --- a/contrib/automation/hgautomation/windows.py +++ b/contrib/automation/hgautomation/windows.py @@ -127,6 +127,8 @@ WHEEL_FILENAME_PYTHON37_X86 = 'mercurial WHEEL_FILENAME_PYTHON37_X64 = 'mercurial-{version}-cp37-cp37m-win_amd64.whl' WHEEL_FILENAME_PYTHON38_X86 = 'mercurial-{version}-cp38-cp38-win32.whl' WHEEL_FILENAME_PYTHON38_X64 = 'mercurial-{version}-cp38-cp38-win_amd64.whl' +WHEEL_FILENAME_PYTHON39_X86 = 'mercurial-{version}-cp39-cp39-win32.whl' +WHEEL_FILENAME_PYTHON39_X64 = 'mercurial-{version}-cp39-cp39-win_amd64.whl' EXE_FILENAME_PYTHON2_X86 = 'Mercurial-{version}-x86-python2.exe' EXE_FILENAME_PYTHON2_X64 = 'Mercurial-{version}-x64-python2.exe' @@ -471,6 +473,8 @@ def resolve_wheel_artifacts(dist_path: p dist_path / WHEEL_FILENAME_PYTHON37_X64.format(version=version), dist_path / WHEEL_FILENAME_PYTHON38_X86.format(version=version), dist_path / WHEEL_FILENAME_PYTHON38_X64.format(version=version), + dist_path / WHEEL_FILENAME_PYTHON39_X86.format(version=version), + dist_path / WHEEL_FILENAME_PYTHON39_X64.format(version=version), ) @@ -482,6 +486,8 @@ def resolve_all_artifacts(dist_path: pat dist_path / WHEEL_FILENAME_PYTHON37_X64.format(version=version), dist_path / WHEEL_FILENAME_PYTHON38_X86.format(version=version), dist_path / WHEEL_FILENAME_PYTHON38_X64.format(version=version), + dist_path / WHEEL_FILENAME_PYTHON39_X86.format(version=version), + dist_path / WHEEL_FILENAME_PYTHON39_X64.format(version=version), dist_path / EXE_FILENAME_PYTHON2_X86.format(version=version), dist_path / EXE_FILENAME_PYTHON2_X64.format(version=version), dist_path / EXE_FILENAME_PYTHON3_X86.format(version=version), diff --git a/contrib/install-windows-dependencies.ps1 b/contrib/install-windows-dependencies.ps1 --- a/contrib/install-windows-dependencies.ps1 +++ b/contrib/install-windows-dependencies.ps1 @@ -125,7 +125,7 @@ function Install-Rust($prefix) { Invoke-Process "${prefix}\cargo\bin\rustup.exe" "component add clippy" # Install PyOxidizer for packaging. - Invoke-Process "${prefix}\cargo\bin\cargo.exe" "install --git https://github.com/indygreg/PyOxidizer.git --rev 4697fb25918dfad6dc73288daeea501063963a08 pyoxidizer" + Invoke-Process "${prefix}\cargo\bin\cargo.exe" "install --version 0.9.0 pyoxidizer" } function Install-Dependencies($prefix) { diff --git a/contrib/packaging/hgpackaging/inno.py b/contrib/packaging/hgpackaging/inno.py --- a/contrib/packaging/hgpackaging/inno.py +++ b/contrib/packaging/hgpackaging/inno.py @@ -66,7 +66,7 @@ def build_with_py2exe( staging_dir = inno_build_dir / 'stage' requirements_txt = ( - source_dir / 'contrib' / 'packaging' / 'requirements_win32.txt' + source_dir / 'contrib' / 'packaging' / 'requirements-windows-py2.txt' ) inno_build_dir.mkdir(parents=True, exist_ok=True) diff --git a/contrib/packaging/hgpackaging/wix.py b/contrib/packaging/hgpackaging/wix.py --- a/contrib/packaging/hgpackaging/wix.py +++ b/contrib/packaging/hgpackaging/wix.py @@ -319,7 +319,7 @@ def build_installer_py2exe( hg_build_dir = source_dir / 'build' requirements_txt = ( - source_dir / 'contrib' / 'packaging' / 'requirements_win32.txt' + source_dir / 'contrib' / 'packaging' / 'requirements-windows-py2.txt' ) build_py2exe( diff --git a/contrib/packaging/requirements_win32.txt b/contrib/packaging/requirements-windows-py2.txt rename from contrib/packaging/requirements_win32.txt rename to contrib/packaging/requirements-windows-py2.txt --- a/contrib/packaging/requirements_win32.txt +++ b/contrib/packaging/requirements-windows-py2.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile # To update, run: # -# pip-compile --generate-hashes --output-file=contrib/packaging/requirements_win32.txt contrib/packaging/requirements_win32.txt.in +# pip-compile --generate-hashes --output-file=contrib/packaging/requirements-windows-py2.txt contrib/packaging/requirements-windows.txt.in # certifi==2020.6.20 \ --hash=sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3 \ @@ -46,6 +46,10 @@ cffi==1.14.3 \ --hash=sha256:f92cdecb618e5fa4658aeb97d5eb3d2f47aa94ac6477c6daf0f306c5a3b9e6b1 \ --hash=sha256:f92f789e4f9241cd262ad7a555ca2c648a98178a953af117ef7fad46aa1d5591 \ # via cryptography +configparser==4.0.2 \ + --hash=sha256:254c1d9c79f60c45dfde850850883d5aaa7f19a23f13561243a050d5a7c3fe4c \ + --hash=sha256:c7d282687a5308319bf3d2e7706e575c635b0a470342641c93bea0ea3b5331df \ + # via entrypoints cryptography==3.1.1 \ --hash=sha256:21b47c59fcb1c36f1113f3709d37935368e34815ea1d7073862e92f810dc7499 \ --hash=sha256:451cdf60be4dafb6a3b78802006a020e6cd709c22d240f94f7a0696240a17154 \ @@ -73,8 +77,8 @@ cryptography==3.1.1 \ docutils==0.16 \ --hash=sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af \ --hash=sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc \ - # via -r contrib/packaging/requirements_win32.txt.in -dulwich==0.19.16 \ + # via -r contrib/packaging/requirements-windows.txt.in +dulwich==0.19.16 ; python_version <= "2.7" \ --hash=sha256:10699277c6268d0c16febe141a5b1c1a6e9744f3144c2d2de1706f4b1adafe63 \ --hash=sha256:267160904e9a1cb6c248c5efc53597a35d038ecc6f60bdc4546b3053bed11982 \ --hash=sha256:4e3aba5e4844e7c700721c1fc696987ea820ee3528a03604dc4e74eff4196826 \ @@ -82,36 +86,44 @@ dulwich==0.19.16 \ --hash=sha256:dddae02d372fc3b5cfb0046d0f62246ef281fa0c088df7601ab5916607add94b \ --hash=sha256:f00d132082b8fcc2eb0d722abc773d4aeb5558c1475d7edd1f0f571146c29db9 \ --hash=sha256:f74561c448bfb6f04c07de731c1181ae4280017f759b0bb04fa5770aa84ca850 \ - # via -r contrib/packaging/requirements_win32.txt.in -jeepney==0.4.3 \ - --hash=sha256:3479b861cc2b6407de5188695fa1a8d57e5072d7059322469b62628869b8e36e \ - --hash=sha256:d6c6b49683446d2407d2fe3acb7a368a77ff063f9182fe427da15d622adc24cf \ - # via keyring, secretstorage -keyring==21.4.0 \ - --hash=sha256:4e34ea2fdec90c1c43d6610b5a5fafa1b9097db1802948e90caf5763974b8f8d \ - --hash=sha256:9aeadd006a852b78f4b4ef7c7556c2774d2432bbef8ee538a3e9089ac8b11466 \ - # via -r contrib/packaging/requirements_win32.txt.in + # via -r contrib/packaging/requirements-windows.txt.in +entrypoints==0.3 \ + --hash=sha256:589f874b313739ad35be6e0cd7efde2a4e9b6fea91edcc34e58ecbb8dbe56d19 \ + --hash=sha256:c70dd71abe5a8c85e55e12c19bd91ccfeec11a6e99044204511f9ed547d48451 \ + # via keyring +enum34==1.1.10 \ + --hash=sha256:a98a201d6de3f2ab3db284e70a33b0f896fbf35f8086594e8c9e74b909058d53 \ + --hash=sha256:c3858660960c984d6ab0ebad691265180da2b43f07e061c0f8dca9ef3cffd328 \ + --hash=sha256:cce6a7477ed816bd2542d03d53db9f0db935dd013b70f336a95c73979289f248 \ + # via cryptography +ipaddress==1.0.23 \ + --hash=sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc \ + --hash=sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2 \ + # via cryptography +keyring==18.0.1 \ + --hash=sha256:67d6cc0132bd77922725fae9f18366bb314fd8f95ff4d323a4df41890a96a838 \ + --hash=sha256:7b29ebfcf8678c4da531b2478a912eea01e80007e5ddca9ee0c7038cb3489ec6 \ + # via -r contrib/packaging/requirements-windows.txt.in pycparser==2.20 \ --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \ --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 \ # via cffi -pygments==2.7.1 \ - --hash=sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998 \ - --hash=sha256:926c3f319eda178d1bd90851e4317e6d8cdb5e292a3386aac9bd75eca29cf9c7 \ - # via -r contrib/packaging/requirements_win32.txt.in +pygments==2.5.2 \ + --hash=sha256:2a3fe295e54a20164a9df49c75fa58526d3be48e14aceba6d6b1e8ac0bfd6f1b \ + --hash=sha256:98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe \ + # via -r contrib/packaging/requirements-windows.txt.in pywin32-ctypes==0.2.0 \ --hash=sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942 \ --hash=sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98 \ - # via -r contrib/packaging/requirements_win32.txt.in -secretstorage==3.1.2 \ - --hash=sha256:15da8a989b65498e29be338b3b279965f1b8f09b9668bd8010da183024c8bff6 \ - --hash=sha256:b5ec909dde94d4ae2fa26af7c089036997030f0cf0a5cb372b4cccabd81c143b \ + # via -r contrib/packaging/requirements-windows.txt.in +secretstorage==2.3.1 \ + --hash=sha256:3af65c87765323e6f64c83575b05393f9e003431959c9395d1791d51497f29b6 \ # via keyring six==1.15.0 \ --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 \ --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ # via cryptography -urllib3==1.25.10 \ - --hash=sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a \ - --hash=sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461 \ +urllib3==1.25.11 \ + --hash=sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2 \ + --hash=sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e \ # via dulwich diff --git a/contrib/packaging/requirements_win32.txt b/contrib/packaging/requirements-windows-py3.txt copy from contrib/packaging/requirements_win32.txt copy to contrib/packaging/requirements-windows-py3.txt --- a/contrib/packaging/requirements_win32.txt +++ b/contrib/packaging/requirements-windows-py3.txt @@ -2,7 +2,7 @@ # This file is autogenerated by pip-compile # To update, run: # -# pip-compile --generate-hashes --output-file=contrib/packaging/requirements_win32.txt contrib/packaging/requirements_win32.txt.in +# pip-compile --generate-hashes --output-file=contrib/packaging/requirements-windows-py3.txt contrib/packaging/requirements-windows.txt.in # certifi==2020.6.20 \ --hash=sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3 \ @@ -73,16 +73,22 @@ cryptography==3.1.1 \ docutils==0.16 \ --hash=sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af \ --hash=sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc \ - # via -r contrib/packaging/requirements_win32.txt.in -dulwich==0.19.16 \ - --hash=sha256:10699277c6268d0c16febe141a5b1c1a6e9744f3144c2d2de1706f4b1adafe63 \ - --hash=sha256:267160904e9a1cb6c248c5efc53597a35d038ecc6f60bdc4546b3053bed11982 \ - --hash=sha256:4e3aba5e4844e7c700721c1fc696987ea820ee3528a03604dc4e74eff4196826 \ - --hash=sha256:60bb2c2c92f5025c1b53a556304008f0f624c98ae36f22d870e056b2d4236c11 \ - --hash=sha256:dddae02d372fc3b5cfb0046d0f62246ef281fa0c088df7601ab5916607add94b \ - --hash=sha256:f00d132082b8fcc2eb0d722abc773d4aeb5558c1475d7edd1f0f571146c29db9 \ - --hash=sha256:f74561c448bfb6f04c07de731c1181ae4280017f759b0bb04fa5770aa84ca850 \ - # via -r contrib/packaging/requirements_win32.txt.in + # via -r contrib/packaging/requirements-windows.txt.in +dulwich==0.20.6 ; python_version >= "3" \ + --hash=sha256:1ccd55e38fa9f169290f93e027ab4508202f5bdd6ef534facac4edd3f6903f0d \ + --hash=sha256:2452a0379cc7bbbd7ab893ec104d18039f1ea98b0d6be6bca5646e5cf29e0ae9 \ + --hash=sha256:2f4aebc54ed2d37dcee737024421452375570a422eb682232e676aa7ebc9cb4b \ + --hash=sha256:304f52b10c49c3a6ddfbd73e2e93d8e979350225cfba9688e51110e74fa2f718 \ + --hash=sha256:49e747c72d9099e873bf6196260346d5996c3f28af788294d47a8accdc524de7 \ + --hash=sha256:4fee359928c59b53af153a582a7ed7595259a5a825df400301a29e17fd78dfd3 \ + --hash=sha256:50ef300a9fa4efd9f85009c2bd8b515266ec1529400f8834f85c04fa9f09b2c0 \ + --hash=sha256:5348310f21b2a23847342ce464461499b6652483fa42de03714d0f6421a99698 \ + --hash=sha256:7e7b5dea5178b6493fdb83adccbe81de9ddff55f79880185ed594c0e3a97209b \ + --hash=sha256:8f7a7f973be2beedfb10dd8d3eb6bdf9ec466c72ad555704897cbd6357fe5021 \ + --hash=sha256:bea6e6caffc6c73bfd1647714c5715ab96ac49deb8beb8b67511529afa25685a \ + --hash=sha256:e5871b86a079e9e290f52ab14559cea1b694a0b8ed2b9ebb898f6ced7f14a406 \ + --hash=sha256:e593f514b8ac740b4ceeb047745b4719bfc9f334904245c6edcb3a9d002f577b \ + # via -r contrib/packaging/requirements-windows.txt.in jeepney==0.4.3 \ --hash=sha256:3479b861cc2b6407de5188695fa1a8d57e5072d7059322469b62628869b8e36e \ --hash=sha256:d6c6b49683446d2407d2fe3acb7a368a77ff063f9182fe427da15d622adc24cf \ @@ -90,7 +96,7 @@ jeepney==0.4.3 \ keyring==21.4.0 \ --hash=sha256:4e34ea2fdec90c1c43d6610b5a5fafa1b9097db1802948e90caf5763974b8f8d \ --hash=sha256:9aeadd006a852b78f4b4ef7c7556c2774d2432bbef8ee538a3e9089ac8b11466 \ - # via -r contrib/packaging/requirements_win32.txt.in + # via -r contrib/packaging/requirements-windows.txt.in pycparser==2.20 \ --hash=sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0 \ --hash=sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705 \ @@ -98,11 +104,11 @@ pycparser==2.20 \ pygments==2.7.1 \ --hash=sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998 \ --hash=sha256:926c3f319eda178d1bd90851e4317e6d8cdb5e292a3386aac9bd75eca29cf9c7 \ - # via -r contrib/packaging/requirements_win32.txt.in + # via -r contrib/packaging/requirements-windows.txt.in pywin32-ctypes==0.2.0 \ --hash=sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942 \ --hash=sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98 \ - # via -r contrib/packaging/requirements_win32.txt.in + # via -r contrib/packaging/requirements-windows.txt.in secretstorage==3.1.2 \ --hash=sha256:15da8a989b65498e29be338b3b279965f1b8f09b9668bd8010da183024c8bff6 \ --hash=sha256:b5ec909dde94d4ae2fa26af7c089036997030f0cf0a5cb372b4cccabd81c143b \ @@ -111,7 +117,7 @@ six==1.15.0 \ --hash=sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259 \ --hash=sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced \ # via cryptography -urllib3==1.25.10 \ - --hash=sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a \ - --hash=sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461 \ +urllib3==1.25.11 \ + --hash=sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2 \ + --hash=sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e \ # via dulwich diff --git a/contrib/packaging/requirements_win32.txt.in b/contrib/packaging/requirements-windows.txt.in rename from contrib/packaging/requirements_win32.txt.in rename to contrib/packaging/requirements-windows.txt.in --- a/contrib/packaging/requirements_win32.txt.in +++ b/contrib/packaging/requirements-windows.txt.in @@ -1,6 +1,7 @@ docutils # Pinned to an old version because 0.20 drops Python 3 compatibility. -dulwich < 0.20 +dulwich < 0.20 ; python_version <= '2.7' +dulwich ; python_version >= '3' keyring pygments # Need to list explicitly so dependency gets pulled in when diff --git a/hgdemandimport/demandimportpy3.py b/hgdemandimport/demandimportpy3.py --- a/hgdemandimport/demandimportpy3.py +++ b/hgdemandimport/demandimportpy3.py @@ -114,7 +114,7 @@ class LazyFinder(object): if ( spec is not None and spec.loader is not None - and getattr(spec.loader, "exec_module") + and getattr(spec.loader, "exec_module", None) ): spec.loader = _lazyloaderex(spec.loader) diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -994,24 +994,27 @@ def destination(repo, subset, x): ) -@predicate(b'diff(pattern)', weight=110) -def diff(repo, subset, x): +@predicate(b'diffcontains(pattern)', weight=110) +def diffcontains(repo, subset, x): """Search revision differences for when the pattern was added or removed. The pattern may be a substring literal or a regular expression. See :hg:`help revisions.patterns`. """ - args = getargsdict(x, b'diff', b'pattern') + args = getargsdict(x, b'diffcontains', b'pattern') if b'pattern' not in args: - # i18n: "diff" is a keyword - raise error.ParseError(_(b'diff takes at least 1 argument')) - - pattern = getstring(args[b'pattern'], _(b'diff requires a string pattern')) + # i18n: "diffcontains" is a keyword + raise error.ParseError(_(b'diffcontains takes at least 1 argument')) + + pattern = getstring( + args[b'pattern'], _(b'diffcontains requires a string pattern') + ) regexp = stringutil.substringregexp(pattern, re.M) # TODO: add support for file pattern and --follow. For example, - # diff(pattern[, set]) where set may be file(pattern) or follow(pattern), - # and we'll eventually add a support for narrowing files by revset? + # diffcontains(pattern[, set]) where set may be file(pattern) or + # follow(pattern), and we'll eventually add a support for narrowing + # files by revset? fmatch = matchmod.always() def makefilematcher(ctx): @@ -1030,7 +1033,7 @@ def diff(repo, subset, x): found = True return found - return subset.filter(testdiff, condrepr=(b'', pattern)) + return subset.filter(testdiff, condrepr=(b'', pattern)) @predicate(b'contentdivergent()', safe=True) diff --git a/relnotes/next b/relnotes/next --- a/relnotes/next +++ b/relnotes/next @@ -5,6 +5,9 @@ source whether or not the source still exists (but the source must exist in the parent revision). + * New revset predicate `diffcontains(pattern)` for filtering revisions + in the same way as `hg grep --diff pattern`. + == New Experimental Features == diff --git a/rust/hgcli/pyoxidizer.bzl b/rust/hgcli/pyoxidizer.bzl --- a/rust/hgcli/pyoxidizer.bzl +++ b/rust/hgcli/pyoxidizer.bzl @@ -39,18 +39,18 @@ def make_exe(dist): # Extension may depend on any Python functionality. Include all # extensions. packaging_policy.extension_module_filter = "all" - packaging_policy.resources_policy = "prefer-in-memory-fallback-filesystem-relative:lib" + packaging_policy.resources_location = "in-memory" + packaging_policy.resources_location_fallback = "filesystem-relative:lib" packaging_policy.register_resource_callback(resource_callback) - config = PythonInterpreterConfig( - raw_allocator = "system", - run_eval = RUN_CODE, - # We want to let the user load extensions from the file system - filesystem_importer = True, - # We need this to make resourceutil happy, since it looks for sys.frozen. - sys_frozen = True, - legacy_windows_stdio = True, - ) + config = dist.make_python_interpreter_config() + config.raw_allocator = "system" + config.run_mode = "eval:%s" % RUN_CODE + # We want to let the user load extensions from the file system + config.filesystem_importer = True + # We need this to make resourceutil happy, since it looks for sys.frozen. + config.sys_frozen = True + config.legacy_windows_stdio = True exe = dist.to_python_executable( name = "hg", @@ -64,7 +64,7 @@ def make_exe(dist): # On Windows, we install extra packages for convenience. if IS_WINDOWS: exe.add_python_resources( - exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements_win32.txt"]), + exe.pip_install(["-r", ROOT + "/contrib/packaging/requirements-windows-py2.txt"]), ) return exe @@ -104,5 +104,5 @@ resolve_targets() # Everything below this is typically managed by PyOxidizer and doesn't need # to be updated by people. -PYOXIDIZER_VERSION = "0.8.0-pre" -PYOXIDIZER_COMMIT = "4697fb25918dfad6dc73288daeea501063963a08" +PYOXIDIZER_VERSION = "0.9.0" +PYOXIDIZER_COMMIT = "1fbc264cc004226cd76ee452e0a386ffca6ccfb1" diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -23,13 +23,13 @@ pattern error invalid revset syntax - $ hg log -r 'diff()' - hg: parse error: diff takes at least 1 argument + $ hg log -r 'diffcontains()' + hg: parse error: diffcontains takes at least 1 argument [255] - $ hg log -r 'diff(:)' - hg: parse error: diff requires a string pattern + $ hg log -r 'diffcontains(:)' + hg: parse error: diffcontains requires a string pattern [255] - $ hg log -r 'diff("re:**test**")' + $ hg log -r 'diffcontains("re:**test**")' hg: parse error: invalid regular expression: nothing to repeat* (glob) [255] @@ -567,13 +567,13 @@ Test wdir revset predicate for "grep --diff" - $ hg log -qr 'diff("re:^bl...$")' + $ hg log -qr 'diffcontains("re:^bl...$")' 0:203191eb5e21 - $ hg log -qr 'diff("orange")' + $ hg log -qr 'diffcontains("orange")' 1:7c585a21e0d1 2:11bd8bc8d653 3:e0116d3829f8 - $ hg log -qr '2:0 & diff("orange")' + $ hg log -qr '2:0 & diffcontains("orange")' 2:11bd8bc8d653 1:7c585a21e0d1 diff --git a/tests/test-transaction-rollback-on-sigpipe.t b/tests/test-transaction-rollback-on-sigpipe.t --- a/tests/test-transaction-rollback-on-sigpipe.t +++ b/tests/test-transaction-rollback-on-sigpipe.t @@ -5,7 +5,7 @@ the remote hg is able to successfully ro $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" -q ssh://user@dummy/`pwd`/remote local $ check_for_abandoned_transaction() { - > [[ -f $TESTTMP/remote/.hg/store/journal ]] && echo "Abandoned transaction!" + > [ -f $TESTTMP/remote/.hg/store/journal ] && echo "Abandoned transaction!" > } $ pidfile=`pwd`/pidfile @@ -55,12 +55,7 @@ disconnecting. Then exit nonzero, to for $ cd local $ echo foo > foo ; hg commit -qAm "commit" - $ hg push -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --remotecmd $remotecmd 2>&1 | grep -v $killable_pipe - pushing to ssh://user@dummy/$TESTTMP/remote - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes + $ hg push -q -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --remotecmd $remotecmd 2>&1 | grep -v $killable_pipe abort: stream ended unexpectedly (got 0 bytes, expected 4) $ check_for_abandoned_transaction