How to get back to a one-file `hg` executable?
Augie Fackler
augie at google.com
Tue Nov 3 16:11:19 UTC 2020
Okay, patching up for main, I get this:
error[PYOXIDIZER_BUILD]: adding PythonModuleSource<name=hgdemandimport>
Caused by:
0: adding PythonModuleSource<hgdemandimport>
1: resource collector does not allow resources in filesystem-relative
--> ./pyoxidizer.bzl:61:5
|
61 | exe.add_python_resources(exe.pip_install(["--verbose", ROOT]))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
add_python_resources()
error: adding PythonModuleSource<name=hgdemandimport>
Caused by:
0: adding PythonModuleSource<hgdemandimport>
1: resource collector does not allow resources in filesystem-relative
so it's sad about hgdemandimport, but I'm not sure what to do with this
information. For the record, my patch to pyoxidizer.bzl is this:
diff --git a/rust/hgcli/pyoxidizer.bzl b/rust/hgcli/pyoxidizer.bzl
--- a/rust/hgcli/pyoxidizer.bzl
+++ b/rust/hgcli/pyoxidizer.bzl
@@ -40,12 +40,11 @@ def make_exe(dist):
# extensions.
packaging_policy.extension_module_filter = "all"
packaging_policy.resources_location = "in-memory"
- packaging_policy.resources_location_fallback =
"filesystem-relative:lib"
packaging_policy.register_resource_callback(resource_callback)
config = dist.make_python_interpreter_config()
config.raw_allocator = "system"
- config.run_mode = "eval:%s" % RUN_CODE
+ config.run_command = 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.
On Tue, Nov 3, 2020 at 9:54 AM Augie Fackler <augie at google.com> wrote:
> Sigh, you changed the config file again in an incompatible way
> (config.run_mode isn't a thing anymore) so I'll use the v0.9.0 tag. It
> still fails, but still not helpfully?
>
> Successfully installed mercurial-5.6-4-8711dc13474c-20201103
> Removed build tracker:
> '/private/var/folders/cy/2vk7k97j21qd6yr76gp6x5m8001p1v/T/pip-req-tracker-z19m5oxc'
> adding <PythonModuleSource>
> error[PYOXIDIZER_BUILD]: resource collector does not allow resources in
> filesystem-relative
> --> ./pyoxidizer.bzl:63:9
> |
> 63 | exe.add_python_resource(r)
> | ^^^^^^^^^^^^^^^^^^^^^^^^^^ add_python_resource
>
> error: resource collector does not allow resources in filesystem-relative
>
> I'll see if I can update the pyoxidizer.bzl in a bit here to work on main,
> I guess?
>
> On Mon, Nov 2, 2020 at 11:06 PM Gregory Szorc <gregory.szorc at gmail.com>
> wrote:
>
>> I'm unsure what's going on here.
>>
>> For this to occur, `.resources_location_fallback = None` must hold on the
>> policy instance and some resource being added must have its `.add_location
>> = "filesystem-relative:..."`.
>>
>> This error message is horrible. And I just committed a change to the
>> `main` branch to print more context about which exact resource is failing.
>> If you don't want to run the latest commit from `main`, you can change this
>> to something like:
>>
>> for resource in exe.pip_install["--verbose", ROOT]):
>> print("adding %s" % resource)
>> exe.add_python_resource(resource)
>>
>> Or you could look for references to "filesystem-relative" in the
>> configuration file. There's likely something setting that as the
>> `.add_location =` value.
>>
>> FWIW I _think_ Martin did all the necessary work to enable Mercurial to
>> be shipped as a standalone binary? I left it out of the in-tree config
>> because files mode was backwards compatible and safer. But a single file
>> binary is something we could implement next release.
>>
>> On Mon, Nov 2, 2020 at 11:06 AM Augie Fackler <augie at google.com> wrote:
>>
>>> Hi Greg!
>>>
>>> I'm working on updating hg and trying to switch us to pyoxidizer for
>>> Windows, but a speedbump on the way is that our Mac builds have broken:
>>> we'd been relying on the one-file build mode of the binary, and now that
>>> appears to be impossible? Am I missing something? I tried editing the
>>> pyoxidizer.bzl to make all resources be "in-memory" but then I get a
>>> failure trying to add the hg packages, eg:
>>>
>>> error[PYOXIDIZER_BUILD]: resource collector does not allow resources in
>>> filesystem-relative
>>> --> ./pyoxidizer.bzl:64:5
>>> |
>>> 64 | exe.add_python_resources(exe.pip_install(["--verbose", ROOT]))
>>> | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> add_python_resources()
>>>
>>> which left me stumped. Am I missing something obvious in the docs or
>>> configuration that would let us get back to one-file executables for our
>>> macOS users?
>>>
>>> Thanks,
>>> Augie
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20201103/7b9f060c/attachment-0002.html>
More information about the Mercurial-devel
mailing list