pyoxidizer: disable using in-memory resources
It's possible that the errors are due to using an incompatible version of
PyOxidizer; unfortunately the README.md file in this directory says to fetch a
copy of PyOxidizer matching the commit in this pyoxidizer.bzl file, and yet the
pyoxidizer.bzl file does not actually have a commit mentioned in it.
By disabling in-memory modules, this appears to work on all platforms using the
current head version of PyOxidizer, so let's disable them for now.
Sample error (during `pyoxidizer build`):
```
error[PYOXIDIZER_PYTHON_EXECUTABLE]: adding PythonExtensionModule<name=hgext.fsmonitor.pywatchman.bser>
Caused by:
extension module hgext.fsmonitor.pywatchman.bser cannot be loaded from memory but memory loading required
--> ./pyoxidizer.bzl:140:5
|
140 | exe.add_python_resources(exe.pip_install(["--verbose", ROOT]))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ add_python_resources()
error: adding PythonExtensionModule<name=hgext.fsmonitor.pywatchman.bser>
Caused by:
extension module hgext.fsmonitor.pywatchman.bser cannot be loaded from memory but memory loading required
```
Differential Revision: https://phab.mercurial-scm.org/D11697
#!/usr/bin/env python3
#
# docchecker - look for problematic markup
#
# Copyright 2016 timeless <timeless@mozdev.org> and others
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import, print_function
import os
import re
import sys
try:
import msvcrt
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
except ImportError:
pass
stdout = getattr(sys.stdout, 'buffer', sys.stdout)
leadingline = re.compile(br'(^\s*)(\S.*)$')
checks = [
(
br""":hg:`[^`]*'[^`]*`""",
b"""warning: please avoid nesting ' in :hg:`...`""",
),
(br'\w:hg:`', b'warning: please have a space before :hg:'),
(
br"""(?:[^a-z][^'.])hg ([^,;"`]*'(?!hg)){2}""",
b'''warning: please use " instead of ' for hg ... "..."''',
),
]
def check(line):
messages = []
for match, msg in checks:
if re.search(match, line):
messages.append(msg)
if messages:
stdout.write(b'%s\n' % line)
for msg in messages:
stdout.write(b'%s\n' % msg)
def work(file):
(llead, lline) = (b'', b'')
for line in file:
# this section unwraps lines
match = leadingline.match(line)
if not match:
check(lline)
(llead, lline) = (b'', b'')
continue
lead, line = match.group(1), match.group(2)
if lead == llead:
if lline != b'':
lline += b' ' + line
else:
lline = line
else:
check(lline)
(llead, lline) = (lead, line)
check(lline)
def main():
for f in sys.argv[1:]:
try:
with open(f, 'rb') as file:
work(file)
except BaseException as e:
sys.stdout.write(r"failed to process %s: %s\n" % (f, e))
main()