diff --git a/Makefile b/Makefile index 067903e17..61580c281 100644 --- a/Makefile +++ b/Makefile @@ -143,8 +143,8 @@ include third_party/mbedtls/test/test.mk include third_party/quickjs/quickjs.mk include third_party/lz4cli/lz4cli.mk include third_party/infozip/infozip.mk -include third_party/python/python.mk include tool/build/lib/buildlib.mk +include third_party/python/python.mk include third_party/chibicc/chibicc.mk include third_party/chibicc/test/test.mk include tool/build/emucrt/emucrt.mk diff --git a/build/definitions.mk b/build/definitions.mk index 82fdb1d10..b86775fca 100644 --- a/build/definitions.mk +++ b/build/definitions.mk @@ -173,6 +173,9 @@ DEFAULT_LDFLAGS = \ ZIPOBJ_FLAGS = \ -b$(IMAGE_BASE_VIRTUAL) +PYFLAGS = \ + -b$(IMAGE_BASE_VIRTUAL) + ASONLYFLAGS = \ -c \ -g \ diff --git a/build/rules.mk b/build/rules.mk index b7d64c475..5a5d21f23 100644 --- a/build/rules.mk +++ b/build/rules.mk @@ -80,8 +80,11 @@ o/$(MODE)/%-gcc.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S o/$(MODE)/%-clang.asm: %.c ; @$(COMPILE) -AOBJECTIFY.c $(OBJECTIFY.c) -S -g0 $(OUTPUT_OPTION) $< || echo / need $(CLANG) >$@ o/$(MODE)/%-clang.asm: CC = $(CLANG) +o/$(MODE)/%.o: %.py o/$(MODE)/third_party/python/pyobj + @$(COMPILE) -APYOBJ o/$(MODE)/third_party/python/pyobj $(PYFLAGS) -o $@ $< + o/$(MODE)/%.pyc: %.py o/$(MODE)/third_party/python/pycomp - @$(COMPILE) -APYCOMP o/$(MODE)/third_party/python/pycomp $(PYFLAGS) -o $@ $< + @$(COMPILE) -APYCOMP o/$(MODE)/third_party/python/pycomp $(PYCFLAGS) -o $@ $< o/$(MODE)/%.lua: %.lua o/$(MODE)/third_party/lua/luac - @$(COMPILE) -ALUAC -T$@ o/$(MODE)/third_party/lua/luac.com -s -o $@ $< + @$(COMPILE) -ALUAC -T$@ o/$(MODE)/third_party/lua/luac -s -o $@ $< diff --git a/third_party/python/Include/yoink.h b/third_party/python/Include/yoink.h index 7e96a37ea..cd61960ee 100644 --- a/third_party/python/Include/yoink.h +++ b/third_party/python/Include/yoink.h @@ -2,17 +2,9 @@ #define COSMOPOLITAN_THIRD_PARTY_PYTHON_INCLUDE_YOINK_H_ #include "libc/dce.h" -#if !IsTiny() -#define PYTHON_YOINK(s) \ - __asm__(".section .yoink\n\t" \ - "nopl\t\"" s "\"\n\t" \ - "nopl\t\"" s "c\"\n\t" \ +#define PYTHON_YOINK(s) \ + __asm__(".section .yoink\n\t" \ + "nopl\t\"py:" s "\"\n\t" \ ".previous") -#else -#define PYTHON_YOINK(s) \ - __asm__(".section .yoink\n\t" \ - "nopl\t\"" s "c\"\n\t" \ - ".previous") -#endif #endif /* COSMOPOLITAN_THIRD_PARTY_PYTHON_INCLUDE_YOINK_H_ */ diff --git a/third_party/python/Programs/python.c b/third_party/python/Programs/python.c index bb9b3d7b7..38f8f3bde 100644 --- a/third_party/python/Programs/python.c +++ b/third_party/python/Programs/python.c @@ -41,648 +41,615 @@ /* clang-format off */ STATIC_YOINK(".python/"); -PYTHON_YOINK(".python/__future__.py"); -PYTHON_YOINK(".python/_bootlocale.py"); -PYTHON_YOINK(".python/_collections_abc.py"); -PYTHON_YOINK(".python/_compat_pickle.py"); -PYTHON_YOINK(".python/_compression.py"); -PYTHON_YOINK(".python/_dummy_thread.py"); -PYTHON_YOINK(".python/_markupbase.py"); -PYTHON_YOINK(".python/_osx_support.py"); -PYTHON_YOINK(".python/_pyio.py"); -PYTHON_YOINK(".python/_sitebuiltins.py"); -PYTHON_YOINK(".python/_strptime.py"); -PYTHON_YOINK(".python/_sysconfigdata_m_cosmo_x86_64-cosmo.py"); -PYTHON_YOINK(".python/_threading_local.py"); -PYTHON_YOINK(".python/_weakrefset.py"); -PYTHON_YOINK(".python/abc.py"); -PYTHON_YOINK(".python/argparse.py"); -PYTHON_YOINK(".python/ast.py"); -PYTHON_YOINK(".python/base64.py"); -PYTHON_YOINK(".python/bdb.py"); -PYTHON_YOINK(".python/binhex.py"); -PYTHON_YOINK(".python/bisect.py"); -PYTHON_YOINK(".python/calendar.py"); -PYTHON_YOINK(".python/chunk.py"); -PYTHON_YOINK(".python/cmd.py"); -PYTHON_YOINK(".python/code.py"); -PYTHON_YOINK(".python/codecs.py"); -PYTHON_YOINK(".python/colorsys.py"); -PYTHON_YOINK(".python/configparser.py"); -PYTHON_YOINK(".python/contextlib.py"); -PYTHON_YOINK(".python/copy.py"); -PYTHON_YOINK(".python/copyreg.py"); -PYTHON_YOINK(".python/csv.py"); -PYTHON_YOINK(".python/datetime.py"); -PYTHON_YOINK(".python/decimal.py"); -PYTHON_YOINK(".python/difflib.py"); -PYTHON_YOINK(".python/doctest.py"); -PYTHON_YOINK(".python/dummy_threading.py"); -PYTHON_YOINK(".python/threading.py"); -PYTHON_YOINK(".python/enum.py"); -PYTHON_YOINK(".python/filecmp.py"); -PYTHON_YOINK(".python/fileinput.py"); -PYTHON_YOINK(".python/fnmatch.py"); -PYTHON_YOINK(".python/formatter.py"); -PYTHON_YOINK(".python/fractions.py"); -PYTHON_YOINK(".python/functools.py"); -PYTHON_YOINK(".python/genericpath.py"); -PYTHON_YOINK(".python/getopt.py"); -PYTHON_YOINK(".python/getpass.py"); -PYTHON_YOINK(".python/gettext.py"); -PYTHON_YOINK(".python/glob.py"); -PYTHON_YOINK(".python/hashlib.py"); -PYTHON_YOINK(".python/heapq.py"); -PYTHON_YOINK(".python/hmac.py"); -PYTHON_YOINK(".python/imghdr.py"); -PYTHON_YOINK(".python/imp.py"); -PYTHON_YOINK(".python/io.py"); -PYTHON_YOINK(".python/ipaddress.py"); -PYTHON_YOINK(".python/keyword.py"); -PYTHON_YOINK(".python/linecache.py"); -PYTHON_YOINK(".python/locale.py"); -PYTHON_YOINK(".python/macpath.py"); -PYTHON_YOINK(".python/macurl2path.py"); -PYTHON_YOINK(".python/mimetypes.py"); -PYTHON_YOINK(".python/modulefinder.py"); -PYTHON_YOINK(".python/netrc.py"); -PYTHON_YOINK(".python/ntpath.py"); -PYTHON_YOINK(".python/nturl2path.py"); -PYTHON_YOINK(".python/numbers.py"); -PYTHON_YOINK(".python/opcode.py"); -PYTHON_YOINK(".python/operator.py"); -PYTHON_YOINK(".python/optparse.py"); -PYTHON_YOINK(".python/os.py"); -PYTHON_YOINK(".python/pathlib.py"); -PYTHON_YOINK(".python/pickle.py"); -PYTHON_YOINK(".python/pickletools.py"); -PYTHON_YOINK(".python/pipes.py"); -PYTHON_YOINK(".python/pkgutil.py"); -PYTHON_YOINK(".python/platform.py"); -PYTHON_YOINK(".python/plistlib.py"); -PYTHON_YOINK(".python/posixpath.py"); -PYTHON_YOINK(".python/pprint.py"); -PYTHON_YOINK(".python/pstats.py"); -PYTHON_YOINK(".python/pty.py"); -PYTHON_YOINK(".python/pyclbr.py"); -PYTHON_YOINK(".python/queue.py"); -PYTHON_YOINK(".python/quopri.py"); -PYTHON_YOINK(".python/random.py"); -PYTHON_YOINK(".python/re.py"); -PYTHON_YOINK(".python/reprlib.py"); -PYTHON_YOINK(".python/runpy.py"); -PYTHON_YOINK(".python/sched.py"); -PYTHON_YOINK(".python/secrets.py"); -PYTHON_YOINK(".python/selectors.py"); -PYTHON_YOINK(".python/shelve.py"); -PYTHON_YOINK(".python/shlex.py"); -PYTHON_YOINK(".python/shutil.py"); -PYTHON_YOINK(".python/signal.py"); -PYTHON_YOINK(".python/site.py"); -PYTHON_YOINK(".python/sndhdr.py"); -PYTHON_YOINK(".python/socket.py"); -PYTHON_YOINK(".python/socketserver.py"); -PYTHON_YOINK(".python/sre_compile.py"); -PYTHON_YOINK(".python/sre_constants.py"); -PYTHON_YOINK(".python/sre_parse.py"); -PYTHON_YOINK(".python/stat.py"); -PYTHON_YOINK(".python/statistics.py"); -PYTHON_YOINK(".python/string.py"); -PYTHON_YOINK(".python/stringprep.py"); -PYTHON_YOINK(".python/struct.py"); -PYTHON_YOINK(".python/subprocess.py"); -PYTHON_YOINK(".python/symbol.py"); -PYTHON_YOINK(".python/symtable.py"); -PYTHON_YOINK(".python/sysconfig.py"); -PYTHON_YOINK(".python/tabnanny.py"); -PYTHON_YOINK(".python/tempfile.py"); -PYTHON_YOINK(".python/textwrap.py"); -PYTHON_YOINK(".python/this.py"); -PYTHON_YOINK(".python/token.py"); -PYTHON_YOINK(".python/tokenize.py"); -PYTHON_YOINK(".python/trace.py"); -PYTHON_YOINK(".python/traceback.py"); -PYTHON_YOINK(".python/tty.py"); -PYTHON_YOINK(".python/types.py"); -PYTHON_YOINK(".python/typing.py"); -PYTHON_YOINK(".python/uu.py"); -PYTHON_YOINK(".python/uuid.py"); -PYTHON_YOINK(".python/warnings.py"); -PYTHON_YOINK(".python/weakref.py"); -PYTHON_YOINK(".python/webbrowser.py"); -PYTHON_YOINK(".python/xdrlib.py"); +PYTHON_YOINK("__future__"); +PYTHON_YOINK("_bootlocale"); +PYTHON_YOINK("_collections_abc"); +PYTHON_YOINK("_compat_pickle"); +PYTHON_YOINK("_compression"); +PYTHON_YOINK("_dummy_thread"); +PYTHON_YOINK("_markupbase"); +PYTHON_YOINK("_osx_support"); +PYTHON_YOINK("_pyio"); +PYTHON_YOINK("_sitebuiltins"); +PYTHON_YOINK("_strptime"); +PYTHON_YOINK("_sysconfigdata_m_cosmo_x86_64-cosmo"); +PYTHON_YOINK("_threading_local"); +PYTHON_YOINK("_weakrefset"); +PYTHON_YOINK("abc"); +PYTHON_YOINK("argparse"); +PYTHON_YOINK("ast"); +PYTHON_YOINK("base64"); +PYTHON_YOINK("bdb"); +PYTHON_YOINK("binhex"); +PYTHON_YOINK("bisect"); +PYTHON_YOINK("calendar"); +PYTHON_YOINK("chunk"); +PYTHON_YOINK("cmd"); +PYTHON_YOINK("code"); +PYTHON_YOINK("codecs"); +PYTHON_YOINK("colorsys"); +PYTHON_YOINK("configparser"); +PYTHON_YOINK("contextlib"); +PYTHON_YOINK("copy"); +PYTHON_YOINK("copyreg"); +PYTHON_YOINK("csv"); +PYTHON_YOINK("datetime"); +PYTHON_YOINK("decimal"); +PYTHON_YOINK("difflib"); +PYTHON_YOINK("doctest"); +PYTHON_YOINK("dummy_threading"); +PYTHON_YOINK("threading"); +PYTHON_YOINK("enum"); +PYTHON_YOINK("filecmp"); +PYTHON_YOINK("fileinput"); +PYTHON_YOINK("fnmatch"); +PYTHON_YOINK("formatter"); +PYTHON_YOINK("fractions"); +PYTHON_YOINK("functools"); +PYTHON_YOINK("genericpath"); +PYTHON_YOINK("getopt"); +PYTHON_YOINK("getpass"); +PYTHON_YOINK("gettext"); +PYTHON_YOINK("glob"); +PYTHON_YOINK("hashlib"); +PYTHON_YOINK("heapq"); +PYTHON_YOINK("hmac"); +PYTHON_YOINK("imghdr"); +PYTHON_YOINK("imp"); +PYTHON_YOINK("io"); +PYTHON_YOINK("ipaddress"); +PYTHON_YOINK("keyword"); +PYTHON_YOINK("linecache"); +PYTHON_YOINK("locale"); +PYTHON_YOINK("macpath"); +PYTHON_YOINK("macurl2path"); +PYTHON_YOINK("mimetypes"); +PYTHON_YOINK("modulefinder"); +PYTHON_YOINK("netrc"); +PYTHON_YOINK("ntpath"); +PYTHON_YOINK("nturl2path"); +PYTHON_YOINK("numbers"); +PYTHON_YOINK("opcode"); +PYTHON_YOINK("operator"); +PYTHON_YOINK("optparse"); +PYTHON_YOINK("os"); +PYTHON_YOINK("pathlib"); +PYTHON_YOINK("pickle"); +PYTHON_YOINK("pickletools"); +PYTHON_YOINK("pipes"); +PYTHON_YOINK("pkgutil"); +PYTHON_YOINK("platform"); +PYTHON_YOINK("plistlib"); +PYTHON_YOINK("posixpath"); +PYTHON_YOINK("pprint"); +PYTHON_YOINK("pstats"); +PYTHON_YOINK("pty"); +PYTHON_YOINK("pyclbr"); +PYTHON_YOINK("queue"); +PYTHON_YOINK("quopri"); +PYTHON_YOINK("random"); +PYTHON_YOINK("re"); +PYTHON_YOINK("reprlib"); +PYTHON_YOINK("runpy"); +PYTHON_YOINK("sched"); +PYTHON_YOINK("secrets"); +PYTHON_YOINK("selectors"); +PYTHON_YOINK("shelve"); +PYTHON_YOINK("shlex"); +PYTHON_YOINK("shutil"); +PYTHON_YOINK("signal"); +PYTHON_YOINK("site"); +PYTHON_YOINK("sndhdr"); +PYTHON_YOINK("socket"); +PYTHON_YOINK("socketserver"); +PYTHON_YOINK("sre_compile"); +PYTHON_YOINK("sre_constants"); +PYTHON_YOINK("sre_parse"); +PYTHON_YOINK("stat"); +PYTHON_YOINK("statistics"); +PYTHON_YOINK("string"); +PYTHON_YOINK("stringprep"); +PYTHON_YOINK("struct"); +PYTHON_YOINK("subprocess"); +PYTHON_YOINK("symbol"); +PYTHON_YOINK("symtable"); +PYTHON_YOINK("sysconfig"); +PYTHON_YOINK("tabnanny"); +PYTHON_YOINK("tempfile"); +PYTHON_YOINK("textwrap"); +PYTHON_YOINK("this"); +PYTHON_YOINK("token"); +PYTHON_YOINK("tokenize"); +PYTHON_YOINK("trace"); +PYTHON_YOINK("traceback"); +PYTHON_YOINK("tty"); +PYTHON_YOINK("types"); +PYTHON_YOINK("typing"); +PYTHON_YOINK("uu"); +PYTHON_YOINK("uuid"); +PYTHON_YOINK("warnings"); +PYTHON_YOINK("weakref"); +PYTHON_YOINK("webbrowser"); +PYTHON_YOINK("xdrlib"); #if !IsTiny() -PYTHON_YOINK(".python/aifc.py"); -PYTHON_YOINK(".python/wave.py"); -PYTHON_YOINK(".python/sunau.py"); +PYTHON_YOINK("aifc"); +PYTHON_YOINK("wave"); +PYTHON_YOINK("sunau"); #endif #if !IsTiny() -PYTHON_YOINK(".python/dis.py"); -PYTHON_YOINK(".python/codeop.py"); -PYTHON_YOINK(".python/compileall.py"); -PYTHON_YOINK(".python/py_compile.py"); +PYTHON_YOINK("dis"); +PYTHON_YOINK("codeop"); +PYTHON_YOINK("compileall"); +PYTHON_YOINK("py_compile"); #endif #if !IsTiny() -PYTHON_YOINK(".python/cgi.py"); -PYTHON_YOINK(".python/pdb.py"); -PYTHON_YOINK(".python/cgitb.py"); -PYTHON_YOINK(".python/pydoc.py"); -PYTHON_YOINK(".python/timeit.py"); -PYTHON_YOINK(".python/profile.py"); -PYTHON_YOINK(".python/inspect.py"); -PYTHON_YOINK(".python/cProfile.py"); -PYTHON_YOINK(".python/tracemalloc.py"); +PYTHON_YOINK("cgi"); +PYTHON_YOINK("pdb"); +PYTHON_YOINK("cgitb"); +PYTHON_YOINK("pydoc"); +PYTHON_YOINK("timeit"); +PYTHON_YOINK("profile"); +PYTHON_YOINK("inspect"); +PYTHON_YOINK("cProfile"); +PYTHON_YOINK("tracemalloc"); #endif #if !IsTiny() -PYTHON_YOINK(".python/bz2.py"); -PYTHON_YOINK(".python/ssl.py"); -PYTHON_YOINK(".python/gzip.py"); -PYTHON_YOINK(".python/lzma.py"); -PYTHON_YOINK(".python/crypt.py"); -PYTHON_YOINK(".python/zipapp.py"); -PYTHON_YOINK(".python/ftplib.py"); -PYTHON_YOINK(".python/tarfile.py"); -PYTHON_YOINK(".python/zipfile.py"); -PYTHON_YOINK(".python/telnetlib.py"); -PYTHON_YOINK(".python/antigravity.py"); -PYTHON_YOINK(".python/rlcompleter.py"); +PYTHON_YOINK("bz2"); +PYTHON_YOINK("ssl"); +PYTHON_YOINK("gzip"); +PYTHON_YOINK("lzma"); +PYTHON_YOINK("crypt"); +PYTHON_YOINK("zipapp"); +PYTHON_YOINK("ftplib"); +PYTHON_YOINK("tarfile"); +PYTHON_YOINK("zipfile"); +PYTHON_YOINK("telnetlib"); +PYTHON_YOINK("antigravity"); +PYTHON_YOINK("rlcompleter"); #endif -STATIC_YOINK(".python/collections/"); -PYTHON_YOINK(".python/collections/__init__.py"); -PYTHON_YOINK(".python/collections/abc.py"); +PYTHON_YOINK("collections"); +PYTHON_YOINK("collections.abc"); -STATIC_YOINK(".python/json/"); -PYTHON_YOINK(".python/json/__init__.py"); -PYTHON_YOINK(".python/json/decoder.py"); -PYTHON_YOINK(".python/json/encoder.py"); -PYTHON_YOINK(".python/json/scanner.py"); -PYTHON_YOINK(".python/json/tool.py"); +PYTHON_YOINK("json"); +PYTHON_YOINK("json.decoder"); +PYTHON_YOINK("json.encoder"); +PYTHON_YOINK("json.scanner"); +PYTHON_YOINK("json.tool"); -STATIC_YOINK(".python/html/"); -PYTHON_YOINK(".python/html/__init__.py"); -PYTHON_YOINK(".python/html/entities.py"); -PYTHON_YOINK(".python/html/parser.py"); +PYTHON_YOINK("html"); +PYTHON_YOINK("html.entities"); +PYTHON_YOINK("html.parser"); -STATIC_YOINK(".python/http/"); -PYTHON_YOINK(".python/http/__init__.py"); -PYTHON_YOINK(".python/http/client.py"); -PYTHON_YOINK(".python/http/cookiejar.py"); -PYTHON_YOINK(".python/http/cookies.py"); -PYTHON_YOINK(".python/http/server.py"); +PYTHON_YOINK("http"); +PYTHON_YOINK("http.client"); +PYTHON_YOINK("http.cookiejar"); +PYTHON_YOINK("http.cookies"); +PYTHON_YOINK("http.server"); -STATIC_YOINK(".python/email/"); -PYTHON_YOINK(".python/email/__init__.py"); -PYTHON_YOINK(".python/email/_encoded_words.py"); -PYTHON_YOINK(".python/email/_header_value_parser.py"); -PYTHON_YOINK(".python/email/_parseaddr.py"); -PYTHON_YOINK(".python/email/_policybase.py"); -PYTHON_YOINK(".python/email/base64mime.py"); -PYTHON_YOINK(".python/email/charset.py"); -PYTHON_YOINK(".python/email/contentmanager.py"); -PYTHON_YOINK(".python/email/encoders.py"); -PYTHON_YOINK(".python/email/errors.py"); -PYTHON_YOINK(".python/email/feedparser.py"); -PYTHON_YOINK(".python/email/generator.py"); -PYTHON_YOINK(".python/email/header.py"); -PYTHON_YOINK(".python/email/headerregistry.py"); -PYTHON_YOINK(".python/email/iterators.py"); -PYTHON_YOINK(".python/email/message.py"); -STATIC_YOINK(".python/email/mime/"); -PYTHON_YOINK(".python/email/mime/__init__.py"); -PYTHON_YOINK(".python/email/mime/application.py"); -PYTHON_YOINK(".python/email/mime/audio.py"); -PYTHON_YOINK(".python/email/mime/base.py"); -PYTHON_YOINK(".python/email/mime/image.py"); -PYTHON_YOINK(".python/email/mime/message.py"); -PYTHON_YOINK(".python/email/mime/multipart.py"); -PYTHON_YOINK(".python/email/mime/nonmultipart.py"); -PYTHON_YOINK(".python/email/mime/text.py"); -PYTHON_YOINK(".python/email/parser.py"); -PYTHON_YOINK(".python/email/policy.py"); -PYTHON_YOINK(".python/email/quoprimime.py"); -PYTHON_YOINK(".python/email/utils.py"); +PYTHON_YOINK("email"); +PYTHON_YOINK("email._encoded_words"); +PYTHON_YOINK("email._header_value_parser"); +PYTHON_YOINK("email._parseaddr"); +PYTHON_YOINK("email._policybase"); +PYTHON_YOINK("email.base64mime"); +PYTHON_YOINK("email.charset"); +PYTHON_YOINK("email.contentmanager"); +PYTHON_YOINK("email.encoders"); +PYTHON_YOINK("email.errors"); +PYTHON_YOINK("email.feedparser"); +PYTHON_YOINK("email.generator"); +PYTHON_YOINK("email.header"); +PYTHON_YOINK("email.headerregistry"); +PYTHON_YOINK("email.iterators"); +PYTHON_YOINK("email.message"); +PYTHON_YOINK("email.mime"); +PYTHON_YOINK("email.mime.application"); +PYTHON_YOINK("email.mime.audio"); +PYTHON_YOINK("email.mime.base"); +PYTHON_YOINK("email.mime.image"); +PYTHON_YOINK("email.mime.message"); +PYTHON_YOINK("email.mime.multipart"); +PYTHON_YOINK("email.mime.nonmultipart"); +PYTHON_YOINK("email.mime.text"); +PYTHON_YOINK("email.parser"); +PYTHON_YOINK("email.policy"); +PYTHON_YOINK("email.quoprimime"); +PYTHON_YOINK("email.utils"); STATIC_YOINK(".python/email/architecture.rst"); -STATIC_YOINK(".python/importlib/"); -PYTHON_YOINK(".python/importlib/__init__.py"); -PYTHON_YOINK(".python/importlib/_bootstrap.py"); -PYTHON_YOINK(".python/importlib/_bootstrap_external.py"); -PYTHON_YOINK(".python/importlib/abc.py"); -PYTHON_YOINK(".python/importlib/machinery.py"); -PYTHON_YOINK(".python/importlib/util.py"); +PYTHON_YOINK("importlib"); +PYTHON_YOINK("importlib._bootstrap"); +PYTHON_YOINK("importlib._bootstrap_external"); +PYTHON_YOINK("importlib.abc"); +PYTHON_YOINK("importlib.machinery"); +PYTHON_YOINK("importlib.util"); -STATIC_YOINK(".python/logging/"); -PYTHON_YOINK(".python/logging/__init__.py"); -PYTHON_YOINK(".python/logging/config.py"); -PYTHON_YOINK(".python/logging/handlers.py"); +PYTHON_YOINK("logging"); +PYTHON_YOINK("logging.config"); +PYTHON_YOINK("logging.handlers"); -STATIC_YOINK(".python/urllib/"); -PYTHON_YOINK(".python/urllib/__init__.py"); -PYTHON_YOINK(".python/urllib/error.py"); -PYTHON_YOINK(".python/urllib/parse.py"); -PYTHON_YOINK(".python/urllib/request.py"); -PYTHON_YOINK(".python/urllib/response.py"); -PYTHON_YOINK(".python/urllib/robotparser.py"); +PYTHON_YOINK("urllib"); +PYTHON_YOINK("urllib.error"); +PYTHON_YOINK("urllib.parse"); +PYTHON_YOINK("urllib.request"); +PYTHON_YOINK("urllib.response"); +PYTHON_YOINK("urllib.robotparser"); -STATIC_YOINK(".python/wsgiref/"); -PYTHON_YOINK(".python/wsgiref/__init__.py"); -PYTHON_YOINK(".python/wsgiref/handlers.py"); -PYTHON_YOINK(".python/wsgiref/headers.py"); -PYTHON_YOINK(".python/wsgiref/simple_server.py"); -PYTHON_YOINK(".python/wsgiref/util.py"); -PYTHON_YOINK(".python/wsgiref/validate.py"); +PYTHON_YOINK("wsgiref"); +PYTHON_YOINK("wsgiref.handlers"); +PYTHON_YOINK("wsgiref.headers"); +PYTHON_YOINK("wsgiref.simple_server"); +PYTHON_YOINK("wsgiref.util"); +PYTHON_YOINK("wsgiref.validate"); #if !IsTiny() -STATIC_YOINK(".python/sqlite3/"); -PYTHON_YOINK(".python/sqlite3/__init__.py"); -PYTHON_YOINK(".python/sqlite3/dbapi2.py"); -PYTHON_YOINK(".python/sqlite3/dump.py"); +PYTHON_YOINK("sqlite3"); +PYTHON_YOINK("sqlite3.dbapi2"); +PYTHON_YOINK("sqlite3.dump"); #endif #if !IsTiny() -STATIC_YOINK(".python/dbm/"); -PYTHON_YOINK(".python/dbm/__init__.py"); -PYTHON_YOINK(".python/dbm/dumb.py"); -PYTHON_YOINK(".python/dbm/gnu.py"); -PYTHON_YOINK(".python/dbm/ndbm.py"); +PYTHON_YOINK("dbm"); +PYTHON_YOINK("dbm.dumb"); +PYTHON_YOINK("dbm.gnu"); +PYTHON_YOINK("dbm.ndbm"); #endif #if !IsTiny() -STATIC_YOINK(".python/xml/"); -PYTHON_YOINK(".python/xml/__init__.py"); -STATIC_YOINK(".python/xml/dom/"); -PYTHON_YOINK(".python/xml/dom/NodeFilter.py"); -PYTHON_YOINK(".python/xml/dom/__init__.py"); -PYTHON_YOINK(".python/xml/dom/domreg.py"); -PYTHON_YOINK(".python/xml/dom/expatbuilder.py"); -PYTHON_YOINK(".python/xml/dom/minicompat.py"); -PYTHON_YOINK(".python/xml/dom/minidom.py"); -PYTHON_YOINK(".python/xml/dom/pulldom.py"); -PYTHON_YOINK(".python/xml/dom/xmlbuilder.py"); -STATIC_YOINK(".python/xml/etree/"); -PYTHON_YOINK(".python/xml/etree/ElementInclude.py"); -PYTHON_YOINK(".python/xml/etree/ElementPath.py"); -PYTHON_YOINK(".python/xml/etree/ElementTree.py"); -PYTHON_YOINK(".python/xml/etree/__init__.py"); -PYTHON_YOINK(".python/xml/etree/cElementTree.py"); -STATIC_YOINK(".python/xml/parsers/"); -PYTHON_YOINK(".python/xml/parsers/__init__.py"); -PYTHON_YOINK(".python/xml/parsers/expat.py"); -STATIC_YOINK(".python/xml/sax/"); -PYTHON_YOINK(".python/xml/sax/__init__.py"); -PYTHON_YOINK(".python/xml/sax/_exceptions.py"); -PYTHON_YOINK(".python/xml/sax/expatreader.py"); -PYTHON_YOINK(".python/xml/sax/handler.py"); -PYTHON_YOINK(".python/xml/sax/saxutils.py"); -PYTHON_YOINK(".python/xml/sax/xmlreader.py"); -STATIC_YOINK(".python/xmlrpc/"); -PYTHON_YOINK(".python/xmlrpc/__init__.py"); -PYTHON_YOINK(".python/xmlrpc/client.py"); -PYTHON_YOINK(".python/xmlrpc/server.py"); +PYTHON_YOINK("xml"); +PYTHON_YOINK("xml.dom.NodeFilter"); +PYTHON_YOINK("xml.dom"); +PYTHON_YOINK("xml.dom.domreg"); +PYTHON_YOINK("xml.dom.expatbuilder"); +PYTHON_YOINK("xml.dom.minicompat"); +PYTHON_YOINK("xml.dom.minidom"); +PYTHON_YOINK("xml.dom.pulldom"); +PYTHON_YOINK("xml.dom.xmlbuilder"); +PYTHON_YOINK("xml.etree.ElementInclude"); +PYTHON_YOINK("xml.etree.ElementPath"); +PYTHON_YOINK("xml.etree.ElementTree"); +PYTHON_YOINK("xml.etree"); +PYTHON_YOINK("xml.etree.cElementTree"); +PYTHON_YOINK("xml.parsers"); +PYTHON_YOINK("xml.parsers.expat"); +PYTHON_YOINK("xml.sax"); +PYTHON_YOINK("xml.sax._exceptions"); +PYTHON_YOINK("xml.sax.expatreader"); +PYTHON_YOINK("xml.sax.handler"); +PYTHON_YOINK("xml.sax.saxutils"); +PYTHON_YOINK("xml.sax.xmlreader"); +PYTHON_YOINK("xmlrpc"); +PYTHON_YOINK("xmlrpc.client"); +PYTHON_YOINK("xmlrpc.server"); #endif #if !IsTiny() -STATIC_YOINK(".python/multiprocessing/"); -PYTHON_YOINK(".python/multiprocessing/__init__.py"); -PYTHON_YOINK(".python/multiprocessing/connection.py"); -PYTHON_YOINK(".python/multiprocessing/context.py"); -STATIC_YOINK(".python/multiprocessing/dummy/"); -PYTHON_YOINK(".python/multiprocessing/dummy/__init__.py"); -PYTHON_YOINK(".python/multiprocessing/dummy/connection.py"); -PYTHON_YOINK(".python/multiprocessing/forkserver.py"); -PYTHON_YOINK(".python/multiprocessing/heap.py"); -PYTHON_YOINK(".python/multiprocessing/managers.py"); -PYTHON_YOINK(".python/multiprocessing/pool.py"); -PYTHON_YOINK(".python/multiprocessing/popen_fork.py"); -PYTHON_YOINK(".python/multiprocessing/popen_forkserver.py"); -PYTHON_YOINK(".python/multiprocessing/popen_spawn_posix.py"); -PYTHON_YOINK(".python/multiprocessing/popen_spawn_win32.py"); -PYTHON_YOINK(".python/multiprocessing/process.py"); -PYTHON_YOINK(".python/multiprocessing/queues.py"); -PYTHON_YOINK(".python/multiprocessing/reduction.py"); -PYTHON_YOINK(".python/multiprocessing/resource_sharer.py"); -PYTHON_YOINK(".python/multiprocessing/semaphore_tracker.py"); -PYTHON_YOINK(".python/multiprocessing/sharedctypes.py"); -PYTHON_YOINK(".python/multiprocessing/spawn.py"); -PYTHON_YOINK(".python/multiprocessing/synchronize.py"); -PYTHON_YOINK(".python/multiprocessing/util.py"); +PYTHON_YOINK("multiprocessing"); +PYTHON_YOINK("multiprocessing.connection"); +PYTHON_YOINK("multiprocessing.context"); +PYTHON_YOINK("multiprocessing.dummy"); +PYTHON_YOINK("multiprocessing.dummy.connection"); +PYTHON_YOINK("multiprocessing.forkserver"); +PYTHON_YOINK("multiprocessing.heap"); +PYTHON_YOINK("multiprocessing.managers"); +PYTHON_YOINK("multiprocessing.pool"); +PYTHON_YOINK("multiprocessing.popen_fork"); +PYTHON_YOINK("multiprocessing.popen_forkserver"); +PYTHON_YOINK("multiprocessing.popen_spawn_posix"); +PYTHON_YOINK("multiprocessing.popen_spawn_win32"); +PYTHON_YOINK("multiprocessing.process"); +PYTHON_YOINK("multiprocessing.queues"); +PYTHON_YOINK("multiprocessing.reduction"); +PYTHON_YOINK("multiprocessing.resource_sharer"); +PYTHON_YOINK("multiprocessing.semaphore_tracker"); +PYTHON_YOINK("multiprocessing.sharedctypes"); +PYTHON_YOINK("multiprocessing.spawn"); +PYTHON_YOINK("multiprocessing.synchronize"); +PYTHON_YOINK("multiprocessing.util"); #endif #if !IsTiny() -STATIC_YOINK(".python/unittest/"); -PYTHON_YOINK(".python/unittest/__init__.py"); -PYTHON_YOINK(".python/unittest/__main__.py"); -PYTHON_YOINK(".python/unittest/case.py"); -PYTHON_YOINK(".python/unittest/loader.py"); -PYTHON_YOINK(".python/unittest/main.py"); -PYTHON_YOINK(".python/unittest/mock.py"); -PYTHON_YOINK(".python/unittest/result.py"); -PYTHON_YOINK(".python/unittest/runner.py"); -PYTHON_YOINK(".python/unittest/signals.py"); -PYTHON_YOINK(".python/unittest/suite.py"); -PYTHON_YOINK(".python/unittest/util.py"); +PYTHON_YOINK("unittest"); +PYTHON_YOINK("unittest.__main__"); +PYTHON_YOINK("unittest.case"); +PYTHON_YOINK("unittest.loader"); +PYTHON_YOINK("unittest.main"); +PYTHON_YOINK("unittest.mock"); +PYTHON_YOINK("unittest.result"); +PYTHON_YOINK("unittest.runner"); +PYTHON_YOINK("unittest.signals"); +PYTHON_YOINK("unittest.suite"); +PYTHON_YOINK("unittest.util"); #endif #if !IsTiny() -STATIC_YOINK(".python/venv/"); -PYTHON_YOINK(".python/venv/__init__.py"); -PYTHON_YOINK(".python/venv/__main__.py"); -STATIC_YOINK(".python/venv/scripts/common/"); -STATIC_YOINK(".python/venv/scripts/nt/"); -STATIC_YOINK(".python/venv/scripts/posix/"); +PYTHON_YOINK("venv"); +PYTHON_YOINK("venv.__main__"); STATIC_YOINK(".python/venv/scripts/common/activate"); STATIC_YOINK(".python/venv/scripts/nt/Activate.ps1"); STATIC_YOINK(".python/venv/scripts/nt/activate.bat"); STATIC_YOINK(".python/venv/scripts/nt/deactivate.bat"); STATIC_YOINK(".python/venv/scripts/posix/activate.csh"); STATIC_YOINK(".python/venv/scripts/posix/activate.fish"); -STATIC_YOINK(".python/ensurepip/"); -PYTHON_YOINK(".python/ensurepip/__init__.py"); -PYTHON_YOINK(".python/ensurepip/__main__.py"); -STATIC_YOINK(".python/ensurepip/_bundled/"); -PYTHON_YOINK(".python/ensurepip/_uninstall.py"); -STATIC_YOINK(".python/ensurepip/_bundled/pip-18.1-py2.py3-none-any.whl"); -STATIC_YOINK(".python/ensurepip/_bundled/setuptools-40.6.2-py2.py3-none-any.whl"); -STATIC_YOINK(".python/distutils/"); -PYTHON_YOINK(".python/distutils/__init__.py"); -PYTHON_YOINK(".python/distutils/_msvccompiler.py"); -PYTHON_YOINK(".python/distutils/archive_util.py"); -PYTHON_YOINK(".python/distutils/bcppcompiler.py"); -PYTHON_YOINK(".python/distutils/ccompiler.py"); -PYTHON_YOINK(".python/distutils/cmd.py"); -STATIC_YOINK(".python/distutils/command/"); -PYTHON_YOINK(".python/distutils/command/__init__.py"); -PYTHON_YOINK(".python/distutils/command/bdist.py"); -PYTHON_YOINK(".python/distutils/command/bdist_dumb.py"); -PYTHON_YOINK(".python/distutils/command/bdist_msi.py"); -PYTHON_YOINK(".python/distutils/command/bdist_rpm.py"); -PYTHON_YOINK(".python/distutils/command/bdist_wininst.py"); -PYTHON_YOINK(".python/distutils/command/build.py"); -PYTHON_YOINK(".python/distutils/command/build_clib.py"); -PYTHON_YOINK(".python/distutils/command/build_ext.py"); -PYTHON_YOINK(".python/distutils/command/build_py.py"); -PYTHON_YOINK(".python/distutils/command/build_scripts.py"); -PYTHON_YOINK(".python/distutils/command/check.py"); -PYTHON_YOINK(".python/distutils/command/clean.py"); -PYTHON_YOINK(".python/distutils/command/config.py"); -PYTHON_YOINK(".python/distutils/command/install.py"); -PYTHON_YOINK(".python/distutils/command/install_data.py"); -PYTHON_YOINK(".python/distutils/command/install_egg_info.py"); -PYTHON_YOINK(".python/distutils/command/install_headers.py"); -PYTHON_YOINK(".python/distutils/command/install_lib.py"); -PYTHON_YOINK(".python/distutils/command/install_scripts.py"); -PYTHON_YOINK(".python/distutils/command/register.py"); -PYTHON_YOINK(".python/distutils/command/sdist.py"); -PYTHON_YOINK(".python/distutils/command/upload.py"); -PYTHON_YOINK(".python/distutils/config.py"); -PYTHON_YOINK(".python/distutils/core.py"); -PYTHON_YOINK(".python/distutils/cygwinccompiler.py"); -PYTHON_YOINK(".python/distutils/debug.py"); -PYTHON_YOINK(".python/distutils/dep_util.py"); -PYTHON_YOINK(".python/distutils/dir_util.py"); -PYTHON_YOINK(".python/distutils/dist.py"); -PYTHON_YOINK(".python/distutils/errors.py"); -PYTHON_YOINK(".python/distutils/extension.py"); -PYTHON_YOINK(".python/distutils/fancy_getopt.py"); -PYTHON_YOINK(".python/distutils/file_util.py"); -PYTHON_YOINK(".python/distutils/filelist.py"); -PYTHON_YOINK(".python/distutils/log.py"); -PYTHON_YOINK(".python/distutils/msvc9compiler.py"); -PYTHON_YOINK(".python/distutils/msvccompiler.py"); -PYTHON_YOINK(".python/distutils/spawn.py"); -PYTHON_YOINK(".python/distutils/sysconfig.py"); -STATIC_YOINK(".python/distutils/tests/"); -PYTHON_YOINK(".python/distutils/tests/__init__.py"); -PYTHON_YOINK(".python/distutils/tests/support.py"); -PYTHON_YOINK(".python/distutils/tests/test_archive_util.py"); -PYTHON_YOINK(".python/distutils/tests/test_bdist.py"); -PYTHON_YOINK(".python/distutils/tests/test_bdist_dumb.py"); -PYTHON_YOINK(".python/distutils/tests/test_bdist_msi.py"); -PYTHON_YOINK(".python/distutils/tests/test_bdist_rpm.py"); -PYTHON_YOINK(".python/distutils/tests/test_bdist_wininst.py"); -PYTHON_YOINK(".python/distutils/tests/test_build.py"); -PYTHON_YOINK(".python/distutils/tests/test_build_clib.py"); -PYTHON_YOINK(".python/distutils/tests/test_build_ext.py"); -PYTHON_YOINK(".python/distutils/tests/test_build_py.py"); -PYTHON_YOINK(".python/distutils/tests/test_build_scripts.py"); -PYTHON_YOINK(".python/distutils/tests/test_check.py"); -PYTHON_YOINK(".python/distutils/tests/test_clean.py"); -PYTHON_YOINK(".python/distutils/tests/test_cmd.py"); -PYTHON_YOINK(".python/distutils/tests/test_config.py"); -PYTHON_YOINK(".python/distutils/tests/test_config_cmd.py"); -PYTHON_YOINK(".python/distutils/tests/test_core.py"); -PYTHON_YOINK(".python/distutils/tests/test_cygwinccompiler.py"); -PYTHON_YOINK(".python/distutils/tests/test_dep_util.py"); -PYTHON_YOINK(".python/distutils/tests/test_dir_util.py"); -PYTHON_YOINK(".python/distutils/tests/test_dist.py"); -PYTHON_YOINK(".python/distutils/tests/test_extension.py"); -PYTHON_YOINK(".python/distutils/tests/test_file_util.py"); -PYTHON_YOINK(".python/distutils/tests/test_filelist.py"); -PYTHON_YOINK(".python/distutils/tests/test_install.py"); -PYTHON_YOINK(".python/distutils/tests/test_install_data.py"); -PYTHON_YOINK(".python/distutils/tests/test_install_headers.py"); -PYTHON_YOINK(".python/distutils/tests/test_install_lib.py"); -PYTHON_YOINK(".python/distutils/tests/test_install_scripts.py"); -PYTHON_YOINK(".python/distutils/tests/test_log.py"); -PYTHON_YOINK(".python/distutils/tests/test_msvc9compiler.py"); -PYTHON_YOINK(".python/distutils/tests/test_msvccompiler.py"); -PYTHON_YOINK(".python/distutils/tests/test_register.py"); -PYTHON_YOINK(".python/distutils/tests/test_sdist.py"); -PYTHON_YOINK(".python/distutils/tests/test_spawn.py"); -PYTHON_YOINK(".python/distutils/tests/test_sysconfig.py"); -PYTHON_YOINK(".python/distutils/tests/test_text_file.py"); -PYTHON_YOINK(".python/distutils/tests/test_unixccompiler.py"); -PYTHON_YOINK(".python/distutils/tests/test_upload.py"); -PYTHON_YOINK(".python/distutils/tests/test_util.py"); -PYTHON_YOINK(".python/distutils/tests/test_version.py"); -PYTHON_YOINK(".python/distutils/tests/test_versionpredicate.py"); -PYTHON_YOINK(".python/distutils/text_file.py"); -PYTHON_YOINK(".python/distutils/unixccompiler.py"); -PYTHON_YOINK(".python/distutils/util.py"); -PYTHON_YOINK(".python/distutils/version.py"); -PYTHON_YOINK(".python/distutils/versionpredicate.py"); +PYTHON_YOINK("ensurepip"); +PYTHON_YOINK("ensurepip.__main__"); +PYTHON_YOINK("ensurepip._uninstall"); +STATIC_YOINK("ensurepip/_bundled/pip-18.1-py2-none-any.whl"); +STATIC_YOINK("ensurepip/_bundled/setuptools-40.6.2-py2-none-any.whl"); +PYTHON_YOINK("distutils"); +PYTHON_YOINK("distutils._msvccompiler"); +PYTHON_YOINK("distutils.archive_util"); +PYTHON_YOINK("distutils.bcppcompiler"); +PYTHON_YOINK("distutils.ccompiler"); +PYTHON_YOINK("distutils.cmd"); +PYTHON_YOINK("distutils.command"); +PYTHON_YOINK("distutils.command.bdist"); +PYTHON_YOINK("distutils.command.bdist_dumb"); +PYTHON_YOINK("distutils.command.bdist_msi"); +PYTHON_YOINK("distutils.command.bdist_rpm"); +PYTHON_YOINK("distutils.command.bdist_wininst"); +PYTHON_YOINK("distutils.command.build"); +PYTHON_YOINK("distutils.command.build_clib"); +PYTHON_YOINK("distutils.command.build_ext"); +PYTHON_YOINK("distutils.command.build_py"); +PYTHON_YOINK("distutils.command.build_scripts"); +PYTHON_YOINK("distutils.command.check"); +PYTHON_YOINK("distutils.command.clean"); +PYTHON_YOINK("distutils.command.config"); +PYTHON_YOINK("distutils.command.install"); +PYTHON_YOINK("distutils.command.install_data"); +PYTHON_YOINK("distutils.command.install_egg_info"); +PYTHON_YOINK("distutils.command.install_headers"); +PYTHON_YOINK("distutils.command.install_lib"); +PYTHON_YOINK("distutils.command.install_scripts"); +PYTHON_YOINK("distutils.command.register"); +PYTHON_YOINK("distutils.command.sdist"); +PYTHON_YOINK("distutils.command.upload"); +PYTHON_YOINK("distutils.config"); +PYTHON_YOINK("distutils.core"); +PYTHON_YOINK("distutils.cygwinccompiler"); +PYTHON_YOINK("distutils.debug"); +PYTHON_YOINK("distutils.dep_util"); +PYTHON_YOINK("distutils.dir_util"); +PYTHON_YOINK("distutils.dist"); +PYTHON_YOINK("distutils.errors"); +PYTHON_YOINK("distutils.extension"); +PYTHON_YOINK("distutils.fancy_getopt"); +PYTHON_YOINK("distutils.file_util"); +PYTHON_YOINK("distutils.filelist"); +PYTHON_YOINK("distutils.log"); +PYTHON_YOINK("distutils.msvc9compiler"); +PYTHON_YOINK("distutils.msvccompiler"); +PYTHON_YOINK("distutils.spawn"); +PYTHON_YOINK("distutils.sysconfig"); +PYTHON_YOINK("distutils.tests"); +PYTHON_YOINK("distutils.tests.support"); +PYTHON_YOINK("distutils.tests.test_archive_util"); +PYTHON_YOINK("distutils.tests.test_bdist"); +PYTHON_YOINK("distutils.tests.test_bdist_dumb"); +PYTHON_YOINK("distutils.tests.test_bdist_msi"); +PYTHON_YOINK("distutils.tests.test_bdist_rpm"); +PYTHON_YOINK("distutils.tests.test_bdist_wininst"); +PYTHON_YOINK("distutils.tests.test_build"); +PYTHON_YOINK("distutils.tests.test_build_clib"); +PYTHON_YOINK("distutils.tests.test_build_ext"); +PYTHON_YOINK("distutils.tests.test_build_py"); +PYTHON_YOINK("distutils.tests.test_build_scripts"); +PYTHON_YOINK("distutils.tests.test_check"); +PYTHON_YOINK("distutils.tests.test_clean"); +PYTHON_YOINK("distutils.tests.test_cmd"); +PYTHON_YOINK("distutils.tests.test_config"); +PYTHON_YOINK("distutils.tests.test_config_cmd"); +PYTHON_YOINK("distutils.tests.test_core"); +PYTHON_YOINK("distutils.tests.test_cygwinccompiler"); +PYTHON_YOINK("distutils.tests.test_dep_util"); +PYTHON_YOINK("distutils.tests.test_dir_util"); +PYTHON_YOINK("distutils.tests.test_dist"); +PYTHON_YOINK("distutils.tests.test_extension"); +PYTHON_YOINK("distutils.tests.test_file_util"); +PYTHON_YOINK("distutils.tests.test_filelist"); +PYTHON_YOINK("distutils.tests.test_install"); +PYTHON_YOINK("distutils.tests.test_install_data"); +PYTHON_YOINK("distutils.tests.test_install_headers"); +PYTHON_YOINK("distutils.tests.test_install_lib"); +PYTHON_YOINK("distutils.tests.test_install_scripts"); +PYTHON_YOINK("distutils.tests.test_log"); +PYTHON_YOINK("distutils.tests.test_msvc9compiler"); +PYTHON_YOINK("distutils.tests.test_msvccompiler"); +PYTHON_YOINK("distutils.tests.test_register"); +PYTHON_YOINK("distutils.tests.test_sdist"); +PYTHON_YOINK("distutils.tests.test_spawn"); +PYTHON_YOINK("distutils.tests.test_sysconfig"); +PYTHON_YOINK("distutils.tests.test_text_file"); +PYTHON_YOINK("distutils.tests.test_unixccompiler"); +PYTHON_YOINK("distutils.tests.test_upload"); +PYTHON_YOINK("distutils.tests.test_util"); +PYTHON_YOINK("distutils.tests.test_version"); +PYTHON_YOINK("distutils.tests.test_versionpredicate"); +PYTHON_YOINK("distutils.text_file"); +PYTHON_YOINK("distutils.unixccompiler"); +PYTHON_YOINK("distutils.util"); +PYTHON_YOINK("distutils.version"); +PYTHON_YOINK("distutils.versionpredicate"); STATIC_YOINK(".python/distutils/command/command_template"); STATIC_YOINK(".python/distutils/tests/Setup.sample"); -STATIC_YOINK(".python/msilib/"); -PYTHON_YOINK(".python/msilib/__init__.py"); -PYTHON_YOINK(".python/msilib/schema.py"); -PYTHON_YOINK(".python/msilib/sequence.py"); -PYTHON_YOINK(".python/msilib/text.py"); +PYTHON_YOINK("msilib"); +PYTHON_YOINK("msilib.schema"); +PYTHON_YOINK("msilib.sequence"); +PYTHON_YOINK("msilib.text"); #endif -STATIC_YOINK(".python/encodings/"); -PYTHON_YOINK(".python/encodings/__init__.py"); -PYTHON_YOINK(".python/encodings/aliases.py"); -PYTHON_YOINK(".python/encodings/mbcs.py"); -PYTHON_YOINK(".python/encodings/ascii.py"); -PYTHON_YOINK(".python/encodings/idna.py"); -PYTHON_YOINK(".python/encodings/latin_1.py"); -PYTHON_YOINK(".python/encodings/utf_8.py"); -PYTHON_YOINK(".python/encodings/utf_8_sig.py"); -PYTHON_YOINK(".python/encodings/utf_16.py"); -PYTHON_YOINK(".python/encodings/utf_16_be.py"); -PYTHON_YOINK(".python/encodings/utf_16_le.py"); -PYTHON_YOINK(".python/encodings/utf_32.py"); -PYTHON_YOINK(".python/encodings/utf_32_be.py"); -PYTHON_YOINK(".python/encodings/utf_32_le.py"); -PYTHON_YOINK(".python/encodings/uu_codec.py"); -PYTHON_YOINK(".python/encodings/undefined.py"); -PYTHON_YOINK(".python/encodings/hex_codec.py"); -PYTHON_YOINK(".python/encodings/base64_codec.py"); -PYTHON_YOINK(".python/encodings/unicode_escape.py"); -PYTHON_YOINK(".python/encodings/unicode_internal.py"); -PYTHON_YOINK(".python/encodings/raw_unicode_escape.py"); +PYTHON_YOINK("encodings"); +PYTHON_YOINK("encodings.aliases"); +PYTHON_YOINK("encodings.mbcs"); +PYTHON_YOINK("encodings.ascii"); +PYTHON_YOINK("encodings.idna"); +PYTHON_YOINK("encodings.latin_1"); +PYTHON_YOINK("encodings.utf_8"); +PYTHON_YOINK("encodings.utf_8_sig"); +PYTHON_YOINK("encodings.utf_16"); +PYTHON_YOINK("encodings.utf_16_be"); +PYTHON_YOINK("encodings.utf_16_le"); +PYTHON_YOINK("encodings.utf_32"); +PYTHON_YOINK("encodings.utf_32_be"); +PYTHON_YOINK("encodings.utf_32_le"); +PYTHON_YOINK("encodings.uu_codec"); +PYTHON_YOINK("encodings.undefined"); +PYTHON_YOINK("encodings.hex_codec"); +PYTHON_YOINK("encodings.base64_codec"); +PYTHON_YOINK("encodings.unicode_escape"); +PYTHON_YOINK("encodings.unicode_internal"); +PYTHON_YOINK("encodings.raw_unicode_escape"); #if !IsTiny() -PYTHON_YOINK(".python/encodings/zlib_codec.py"); -PYTHON_YOINK(".python/encodings/big5.py"); -PYTHON_YOINK(".python/encodings/big5hkscs.py"); -PYTHON_YOINK(".python/encodings/bz2_codec.py"); -PYTHON_YOINK(".python/encodings/charmap.py"); -PYTHON_YOINK(".python/encodings/cp037.py"); -PYTHON_YOINK(".python/encodings/cp1006.py"); -PYTHON_YOINK(".python/encodings/cp1026.py"); -PYTHON_YOINK(".python/encodings/cp1125.py"); -PYTHON_YOINK(".python/encodings/cp1140.py"); -PYTHON_YOINK(".python/encodings/cp1250.py"); -PYTHON_YOINK(".python/encodings/cp1251.py"); -PYTHON_YOINK(".python/encodings/cp1252.py"); -PYTHON_YOINK(".python/encodings/cp1253.py"); -PYTHON_YOINK(".python/encodings/cp1254.py"); -PYTHON_YOINK(".python/encodings/cp1255.py"); -PYTHON_YOINK(".python/encodings/cp1256.py"); -PYTHON_YOINK(".python/encodings/cp1257.py"); -PYTHON_YOINK(".python/encodings/cp1258.py"); -PYTHON_YOINK(".python/encodings/cp273.py"); -PYTHON_YOINK(".python/encodings/cp424.py"); -PYTHON_YOINK(".python/encodings/cp437.py"); -PYTHON_YOINK(".python/encodings/cp500.py"); -PYTHON_YOINK(".python/encodings/cp65001.py"); -PYTHON_YOINK(".python/encodings/cp720.py"); -PYTHON_YOINK(".python/encodings/cp737.py"); -PYTHON_YOINK(".python/encodings/cp775.py"); -PYTHON_YOINK(".python/encodings/cp850.py"); -PYTHON_YOINK(".python/encodings/cp852.py"); -PYTHON_YOINK(".python/encodings/cp855.py"); -PYTHON_YOINK(".python/encodings/cp856.py"); -PYTHON_YOINK(".python/encodings/cp857.py"); -PYTHON_YOINK(".python/encodings/cp858.py"); -PYTHON_YOINK(".python/encodings/cp860.py"); -PYTHON_YOINK(".python/encodings/cp861.py"); -PYTHON_YOINK(".python/encodings/cp862.py"); -PYTHON_YOINK(".python/encodings/cp863.py"); -PYTHON_YOINK(".python/encodings/cp864.py"); -PYTHON_YOINK(".python/encodings/cp865.py"); -PYTHON_YOINK(".python/encodings/cp866.py"); -PYTHON_YOINK(".python/encodings/cp869.py"); -PYTHON_YOINK(".python/encodings/cp874.py"); -PYTHON_YOINK(".python/encodings/cp875.py"); -PYTHON_YOINK(".python/encodings/cp932.py"); -PYTHON_YOINK(".python/encodings/cp949.py"); -PYTHON_YOINK(".python/encodings/cp950.py"); -PYTHON_YOINK(".python/encodings/euc_jis_2004.py"); -PYTHON_YOINK(".python/encodings/euc_jisx0213.py"); -PYTHON_YOINK(".python/encodings/euc_jp.py"); -PYTHON_YOINK(".python/encodings/euc_kr.py"); -PYTHON_YOINK(".python/encodings/gb18030.py"); -PYTHON_YOINK(".python/encodings/gb2312.py"); -PYTHON_YOINK(".python/encodings/gbk.py"); -PYTHON_YOINK(".python/encodings/hp_roman8.py"); -PYTHON_YOINK(".python/encodings/hz.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp_1.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp_2.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp_2004.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp_3.py"); -PYTHON_YOINK(".python/encodings/iso2022_jp_ext.py"); -PYTHON_YOINK(".python/encodings/iso2022_kr.py"); -PYTHON_YOINK(".python/encodings/iso8859_1.py"); -PYTHON_YOINK(".python/encodings/iso8859_10.py"); -PYTHON_YOINK(".python/encodings/iso8859_11.py"); -PYTHON_YOINK(".python/encodings/iso8859_13.py"); -PYTHON_YOINK(".python/encodings/iso8859_14.py"); -PYTHON_YOINK(".python/encodings/iso8859_15.py"); -PYTHON_YOINK(".python/encodings/iso8859_16.py"); -PYTHON_YOINK(".python/encodings/iso8859_2.py"); -PYTHON_YOINK(".python/encodings/iso8859_3.py"); -PYTHON_YOINK(".python/encodings/iso8859_4.py"); -PYTHON_YOINK(".python/encodings/iso8859_5.py"); -PYTHON_YOINK(".python/encodings/iso8859_6.py"); -PYTHON_YOINK(".python/encodings/iso8859_7.py"); -PYTHON_YOINK(".python/encodings/iso8859_8.py"); -PYTHON_YOINK(".python/encodings/iso8859_9.py"); -PYTHON_YOINK(".python/encodings/johab.py"); -PYTHON_YOINK(".python/encodings/koi8_r.py"); -PYTHON_YOINK(".python/encodings/koi8_t.py"); -PYTHON_YOINK(".python/encodings/koi8_u.py"); -PYTHON_YOINK(".python/encodings/kz1048.py"); -PYTHON_YOINK(".python/encodings/mac_arabic.py"); -PYTHON_YOINK(".python/encodings/mac_centeuro.py"); -PYTHON_YOINK(".python/encodings/mac_croatian.py"); -PYTHON_YOINK(".python/encodings/mac_cyrillic.py"); -PYTHON_YOINK(".python/encodings/mac_farsi.py"); -PYTHON_YOINK(".python/encodings/mac_greek.py"); -PYTHON_YOINK(".python/encodings/mac_iceland.py"); -PYTHON_YOINK(".python/encodings/mac_latin2.py"); -PYTHON_YOINK(".python/encodings/mac_roman.py"); -PYTHON_YOINK(".python/encodings/mac_romanian.py"); -PYTHON_YOINK(".python/encodings/mac_turkish.py"); -PYTHON_YOINK(".python/encodings/oem.py"); -PYTHON_YOINK(".python/encodings/palmos.py"); -PYTHON_YOINK(".python/encodings/ptcp154.py"); -PYTHON_YOINK(".python/encodings/punycode.py"); -PYTHON_YOINK(".python/encodings/quopri_codec.py"); -PYTHON_YOINK(".python/encodings/rot_13.py"); -PYTHON_YOINK(".python/encodings/shift_jis.py"); -PYTHON_YOINK(".python/encodings/shift_jis_2004.py"); -PYTHON_YOINK(".python/encodings/shift_jisx0213.py"); -PYTHON_YOINK(".python/encodings/tis_620.py"); -PYTHON_YOINK(".python/encodings/utf_7.py"); +PYTHON_YOINK("encodings.zlib_codec"); +PYTHON_YOINK("encodings.big5"); +PYTHON_YOINK("encodings.big5hkscs"); +PYTHON_YOINK("encodings.bz2_codec"); +PYTHON_YOINK("encodings.charmap"); +PYTHON_YOINK("encodings.cp037"); +PYTHON_YOINK("encodings.cp1006"); +PYTHON_YOINK("encodings.cp1026"); +PYTHON_YOINK("encodings.cp1125"); +PYTHON_YOINK("encodings.cp1140"); +PYTHON_YOINK("encodings.cp1250"); +PYTHON_YOINK("encodings.cp1251"); +PYTHON_YOINK("encodings.cp1252"); +PYTHON_YOINK("encodings.cp1253"); +PYTHON_YOINK("encodings.cp1254"); +PYTHON_YOINK("encodings.cp1255"); +PYTHON_YOINK("encodings.cp1256"); +PYTHON_YOINK("encodings.cp1257"); +PYTHON_YOINK("encodings.cp1258"); +PYTHON_YOINK("encodings.cp273"); +PYTHON_YOINK("encodings.cp424"); +PYTHON_YOINK("encodings.cp437"); +PYTHON_YOINK("encodings.cp500"); +PYTHON_YOINK("encodings.cp65001"); +PYTHON_YOINK("encodings.cp720"); +PYTHON_YOINK("encodings.cp737"); +PYTHON_YOINK("encodings.cp775"); +PYTHON_YOINK("encodings.cp850"); +PYTHON_YOINK("encodings.cp852"); +PYTHON_YOINK("encodings.cp855"); +PYTHON_YOINK("encodings.cp856"); +PYTHON_YOINK("encodings.cp857"); +PYTHON_YOINK("encodings.cp858"); +PYTHON_YOINK("encodings.cp860"); +PYTHON_YOINK("encodings.cp861"); +PYTHON_YOINK("encodings.cp862"); +PYTHON_YOINK("encodings.cp863"); +PYTHON_YOINK("encodings.cp864"); +PYTHON_YOINK("encodings.cp865"); +PYTHON_YOINK("encodings.cp866"); +PYTHON_YOINK("encodings.cp869"); +PYTHON_YOINK("encodings.cp874"); +PYTHON_YOINK("encodings.cp875"); +PYTHON_YOINK("encodings.cp932"); +PYTHON_YOINK("encodings.cp949"); +PYTHON_YOINK("encodings.cp950"); +PYTHON_YOINK("encodings.euc_jis_2004"); +PYTHON_YOINK("encodings.euc_jisx0213"); +PYTHON_YOINK("encodings.euc_jp"); +PYTHON_YOINK("encodings.euc_kr"); +PYTHON_YOINK("encodings.gb18030"); +PYTHON_YOINK("encodings.gb2312"); +PYTHON_YOINK("encodings.gbk"); +PYTHON_YOINK("encodings.hp_roman8"); +PYTHON_YOINK("encodings.hz"); +PYTHON_YOINK("encodings.iso2022_jp"); +PYTHON_YOINK("encodings.iso2022_jp_1"); +PYTHON_YOINK("encodings.iso2022_jp_2"); +PYTHON_YOINK("encodings.iso2022_jp_2004"); +PYTHON_YOINK("encodings.iso2022_jp_3"); +PYTHON_YOINK("encodings.iso2022_jp_ext"); +PYTHON_YOINK("encodings.iso2022_kr"); +PYTHON_YOINK("encodings.iso8859_1"); +PYTHON_YOINK("encodings.iso8859_10"); +PYTHON_YOINK("encodings.iso8859_11"); +PYTHON_YOINK("encodings.iso8859_13"); +PYTHON_YOINK("encodings.iso8859_14"); +PYTHON_YOINK("encodings.iso8859_15"); +PYTHON_YOINK("encodings.iso8859_16"); +PYTHON_YOINK("encodings.iso8859_2"); +PYTHON_YOINK("encodings.iso8859_3"); +PYTHON_YOINK("encodings.iso8859_4"); +PYTHON_YOINK("encodings.iso8859_5"); +PYTHON_YOINK("encodings.iso8859_6"); +PYTHON_YOINK("encodings.iso8859_7"); +PYTHON_YOINK("encodings.iso8859_8"); +PYTHON_YOINK("encodings.iso8859_9"); +PYTHON_YOINK("encodings.johab"); +PYTHON_YOINK("encodings.koi8_r"); +PYTHON_YOINK("encodings.koi8_t"); +PYTHON_YOINK("encodings.koi8_u"); +PYTHON_YOINK("encodings.kz1048"); +PYTHON_YOINK("encodings.mac_arabic"); +PYTHON_YOINK("encodings.mac_centeuro"); +PYTHON_YOINK("encodings.mac_croatian"); +PYTHON_YOINK("encodings.mac_cyrillic"); +PYTHON_YOINK("encodings.mac_farsi"); +PYTHON_YOINK("encodings.mac_greek"); +PYTHON_YOINK("encodings.mac_iceland"); +PYTHON_YOINK("encodings.mac_latin2"); +PYTHON_YOINK("encodings.mac_roman"); +PYTHON_YOINK("encodings.mac_romanian"); +PYTHON_YOINK("encodings.mac_turkish"); +PYTHON_YOINK("encodings.oem"); +PYTHON_YOINK("encodings.palmos"); +PYTHON_YOINK("encodings.ptcp154"); +PYTHON_YOINK("encodings.punycode"); +PYTHON_YOINK("encodings.quopri_codec"); +PYTHON_YOINK("encodings.rot_13"); +PYTHON_YOINK("encodings.shift_jis"); +PYTHON_YOINK("encodings.shift_jis_2004"); +PYTHON_YOINK("encodings.shift_jisx0213"); +PYTHON_YOINK("encodings.tis_620"); +PYTHON_YOINK("encodings.utf_7"); #endif #if !IsTiny() -PYTHON_YOINK(".python/smtpd.py"); -PYTHON_YOINK(".python/poplib.py"); -PYTHON_YOINK(".python/imaplib.py"); -PYTHON_YOINK(".python/mailbox.py"); -PYTHON_YOINK(".python/mailcap.py"); -PYTHON_YOINK(".python/smtplib.py"); -PYTHON_YOINK(".python/nntplib.py"); +PYTHON_YOINK("smtpd"); +PYTHON_YOINK("poplib"); +PYTHON_YOINK("imaplib"); +PYTHON_YOINK("mailbox"); +PYTHON_YOINK("mailcap"); +PYTHON_YOINK("smtplib"); +PYTHON_YOINK("nntplib"); #endif #ifdef WITH_THREAD -PYTHON_YOINK(".python/asynchat.py"); -PYTHON_YOINK(".python/asyncore.py"); -STATIC_YOINK(".python/asyncio/"); -PYTHON_YOINK(".python/asyncio/__init__.py"); -PYTHON_YOINK(".python/asyncio/base_events.py"); -PYTHON_YOINK(".python/asyncio/base_futures.py"); -PYTHON_YOINK(".python/asyncio/base_subprocess.py"); -PYTHON_YOINK(".python/asyncio/base_tasks.py"); -PYTHON_YOINK(".python/asyncio/compat.py"); -PYTHON_YOINK(".python/asyncio/constants.py"); -PYTHON_YOINK(".python/asyncio/coroutines.py"); -PYTHON_YOINK(".python/asyncio/events.py"); -PYTHON_YOINK(".python/asyncio/futures.py"); -PYTHON_YOINK(".python/asyncio/locks.py"); -PYTHON_YOINK(".python/asyncio/log.py"); -PYTHON_YOINK(".python/asyncio/proactor_events.py"); -PYTHON_YOINK(".python/asyncio/protocols.py"); -PYTHON_YOINK(".python/asyncio/queues.py"); -PYTHON_YOINK(".python/asyncio/selector_events.py"); -PYTHON_YOINK(".python/asyncio/sslproto.py"); -PYTHON_YOINK(".python/asyncio/streams.py"); -PYTHON_YOINK(".python/asyncio/subprocess.py"); -PYTHON_YOINK(".python/asyncio/tasks.py"); -PYTHON_YOINK(".python/asyncio/test_utils.py"); -PYTHON_YOINK(".python/asyncio/transports.py"); -PYTHON_YOINK(".python/asyncio/unix_events.py"); -PYTHON_YOINK(".python/asyncio/windows_events.py"); -PYTHON_YOINK(".python/asyncio/windows_utils.py"); +PYTHON_YOINK("asynchat"); +PYTHON_YOINK("asyncore"); +PYTHON_YOINK("asyncio"); +PYTHON_YOINK("asyncio.base_events"); +PYTHON_YOINK("asyncio.base_futures"); +PYTHON_YOINK("asyncio.base_subprocess"); +PYTHON_YOINK("asyncio.base_tasks"); +PYTHON_YOINK("asyncio.compat"); +PYTHON_YOINK("asyncio.constants"); +PYTHON_YOINK("asyncio.coroutines"); +PYTHON_YOINK("asyncio.events"); +PYTHON_YOINK("asyncio.futures"); +PYTHON_YOINK("asyncio.locks"); +PYTHON_YOINK("asyncio.log"); +PYTHON_YOINK("asyncio.proactor_events"); +PYTHON_YOINK("asyncio.protocols"); +PYTHON_YOINK("asyncio.queues"); +PYTHON_YOINK("asyncio.selector_events"); +PYTHON_YOINK("asyncio.sslproto"); +PYTHON_YOINK("asyncio.streams"); +PYTHON_YOINK("asyncio.subprocess"); +PYTHON_YOINK("asyncio.tasks"); +PYTHON_YOINK("asyncio.test_utils"); +PYTHON_YOINK("asyncio.transports"); +PYTHON_YOINK("asyncio.unix_events"); +PYTHON_YOINK("asyncio.windows_events"); +PYTHON_YOINK("asyncio.windows_utils"); #endif const struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules; diff --git a/third_party/python/Programs/pythontester.c b/third_party/python/Programs/pythontester.c index e17592d4a..2f6ab666e 100644 --- a/third_party/python/Programs/pythontester.c +++ b/third_party/python/Programs/pythontester.c @@ -7,642 +7,639 @@ #include "third_party/python/Programs/python.c" /* clang-format off */ -STATIC_YOINK(".python/"); -PYTHON_YOINK(".python/__future__.py"); +PYTHON_YOINK("test"); +PYTHON_YOINK("test.__main__"); +PYTHON_YOINK("test._test_multiprocessing"); +PYTHON_YOINK("test.ann_module"); +PYTHON_YOINK("test.ann_module2"); +PYTHON_YOINK("test.ann_module3"); +PYTHON_YOINK("test.audiotests"); +PYTHON_YOINK("test.autotest"); +PYTHON_YOINK("test.bisect"); +PYTHON_YOINK("test.bytecode_helper"); +PYTHON_YOINK("test.coding20731"); +PYTHON_YOINK("test.crashers.bogus_code_obj"); +PYTHON_YOINK("test.crashers.gc_inspection"); +PYTHON_YOINK("test.crashers.infinite_loop_re"); +PYTHON_YOINK("test.crashers.mutation_inside_cyclegc"); +PYTHON_YOINK("test.crashers.recursive_call"); +PYTHON_YOINK("test.crashers.trace_at_recursion_limit"); +PYTHON_YOINK("test.crashers.underlying_dict"); +PYTHON_YOINK("test.curses_tests"); +PYTHON_YOINK("test.datetimetester"); +PYTHON_YOINK("test.dis_module"); +PYTHON_YOINK("test.doctest_aliases"); +PYTHON_YOINK("test.double_const"); +PYTHON_YOINK("test.dtracedata.call_stack"); +PYTHON_YOINK("test.dtracedata.gc"); +PYTHON_YOINK("test.dtracedata.instance"); +PYTHON_YOINK("test.dtracedata.line"); +PYTHON_YOINK("test.eintrdata.eintr_tester"); +PYTHON_YOINK("test.final_a"); +PYTHON_YOINK("test.final_b"); +PYTHON_YOINK("test.fork_wait"); +PYTHON_YOINK("test.future_test1"); +PYTHON_YOINK("test.future_test2"); +PYTHON_YOINK("test.gdb_sample"); +PYTHON_YOINK("test.imp_dummy"); +PYTHON_YOINK("test.inspect_fodder"); +PYTHON_YOINK("test.inspect_fodder2"); +PYTHON_YOINK("test.leakers"); +PYTHON_YOINK("test.leakers.test_ctypes"); +PYTHON_YOINK("test.leakers.test_selftype"); +PYTHON_YOINK("test.libregrtest"); +PYTHON_YOINK("test.libregrtest.cmdline"); +PYTHON_YOINK("test.libregrtest.main"); +PYTHON_YOINK("test.libregrtest.refleak"); +PYTHON_YOINK("test.libregrtest.runtest"); +PYTHON_YOINK("test.libregrtest.runtest_mp"); +PYTHON_YOINK("test.libregrtest.save_env"); +PYTHON_YOINK("test.libregrtest.setup"); +PYTHON_YOINK("test.libregrtest.utils"); +PYTHON_YOINK("test.list_tests"); +PYTHON_YOINK("test.lock_tests"); +PYTHON_YOINK("test.make_ssl_certs"); +PYTHON_YOINK("test.mapping_tests"); +PYTHON_YOINK("test.memory_watchdog"); +PYTHON_YOINK("test.mock_socket"); +PYTHON_YOINK("test.mod_generics_cache"); +PYTHON_YOINK("test.mp_fork_bomb"); +PYTHON_YOINK("test.mp_preload"); +PYTHON_YOINK("test.multibytecodec_support"); +PYTHON_YOINK("test.outstanding_bugs"); +PYTHON_YOINK("test.pickletester"); +PYTHON_YOINK("test.profilee"); +PYTHON_YOINK("test.pyclbr_input"); +PYTHON_YOINK("test.pydoc_mod"); +PYTHON_YOINK("test.pydocfodder"); +PYTHON_YOINK("test.pystone"); +PYTHON_YOINK("test.pythoninfo"); +PYTHON_YOINK("test.re_tests"); +PYTHON_YOINK("test.regrtest"); +PYTHON_YOINK("test.relimport"); +PYTHON_YOINK("test.reperf"); +PYTHON_YOINK("test.sample_doctest"); +PYTHON_YOINK("test.sample_doctest_no_docstrings"); +PYTHON_YOINK("test.sample_doctest_no_doctests"); +PYTHON_YOINK("test.seq_tests"); +PYTHON_YOINK("test.signalinterproctester"); +PYTHON_YOINK("test.sortperf"); +PYTHON_YOINK("test.ssl_servers"); +PYTHON_YOINK("test.ssltests"); +PYTHON_YOINK("test.string_tests"); +PYTHON_YOINK("test.subprocessdata.fd_status"); +PYTHON_YOINK("test.subprocessdata.input_reader"); +PYTHON_YOINK("test.subprocessdata.qcat"); +PYTHON_YOINK("test.subprocessdata.qgrep"); +PYTHON_YOINK("test.subprocessdata.sigchild_ignore"); +PYTHON_YOINK("test.support"); +PYTHON_YOINK("test.support.script_helper"); +PYTHON_YOINK("test.support.testresult"); +PYTHON_YOINK("test.test___all__"); +PYTHON_YOINK("test.test___future__"); +PYTHON_YOINK("test.test__locale"); +PYTHON_YOINK("test.test__opcode"); +PYTHON_YOINK("test.test__osx_support"); +PYTHON_YOINK("test.test_abc"); +PYTHON_YOINK("test.test_abstract_numbers"); +PYTHON_YOINK("test.test_aifc"); +PYTHON_YOINK("test.test_argparse"); +PYTHON_YOINK("test.test_array"); +PYTHON_YOINK("test.test_asdl_parser"); +PYTHON_YOINK("test.test_ast"); +PYTHON_YOINK("test.test_asyncgen"); +PYTHON_YOINK("test.test_asynchat"); +PYTHON_YOINK("test.test_asyncio"); +PYTHON_YOINK("test.test_asyncio.__main__"); +PYTHON_YOINK("test.test_asyncio.echo"); +PYTHON_YOINK("test.test_asyncio.echo2"); +PYTHON_YOINK("test.test_asyncio.echo3"); +PYTHON_YOINK("test.test_asyncio.test_base_events"); +PYTHON_YOINK("test.test_asyncio.test_events"); +PYTHON_YOINK("test.test_asyncio.test_futures"); +PYTHON_YOINK("test.test_asyncio.test_locks"); +PYTHON_YOINK("test.test_asyncio.test_pep492"); +PYTHON_YOINK("test.test_asyncio.test_proactor_events"); +PYTHON_YOINK("test.test_asyncio.test_queues"); +PYTHON_YOINK("test.test_asyncio.test_selector_events"); +PYTHON_YOINK("test.test_asyncio.test_sslproto"); +PYTHON_YOINK("test.test_asyncio.test_streams"); +PYTHON_YOINK("test.test_asyncio.test_subprocess"); +PYTHON_YOINK("test.test_asyncio.test_tasks"); +PYTHON_YOINK("test.test_asyncio.test_transports"); +PYTHON_YOINK("test.test_asyncio.test_unix_events"); +PYTHON_YOINK("test.test_asyncio.test_windows_events"); +PYTHON_YOINK("test.test_asyncio.test_windows_utils"); +PYTHON_YOINK("test.test_asyncore"); +PYTHON_YOINK("test.test_atexit"); +PYTHON_YOINK("test.test_audioop"); +PYTHON_YOINK("test.test_augassign"); +PYTHON_YOINK("test.test_base64"); +PYTHON_YOINK("test.test_baseexception"); +PYTHON_YOINK("test.test_bdb"); +PYTHON_YOINK("test.test_bigaddrspace"); +PYTHON_YOINK("test.test_bigmem"); +PYTHON_YOINK("test.test_binascii"); +PYTHON_YOINK("test.test_binhex"); +PYTHON_YOINK("test.test_binop"); +PYTHON_YOINK("test.test_bisect"); +PYTHON_YOINK("test.test_bool"); +PYTHON_YOINK("test.test_buffer"); +PYTHON_YOINK("test.test_bufio"); +PYTHON_YOINK("test.test_builtin"); +PYTHON_YOINK("test.test_bytes"); +PYTHON_YOINK("test.test_bz2"); +PYTHON_YOINK("test.test_calendar"); +PYTHON_YOINK("test.test_call"); +PYTHON_YOINK("test.test_capi"); +PYTHON_YOINK("test.test_cgi"); +PYTHON_YOINK("test.test_cgitb"); +PYTHON_YOINK("test.test_charmapcodec"); +PYTHON_YOINK("test.test_class"); +PYTHON_YOINK("test.test_cmath"); +PYTHON_YOINK("test.test_cmd"); +PYTHON_YOINK("test.test_cmd_line"); +PYTHON_YOINK("test.test_cmd_line_script"); +PYTHON_YOINK("test.test_code"); +PYTHON_YOINK("test.test_code_module"); +PYTHON_YOINK("test.test_codeccallbacks"); +PYTHON_YOINK("test.test_codecencodings_cn"); +PYTHON_YOINK("test.test_codecencodings_hk"); +PYTHON_YOINK("test.test_codecencodings_iso2022"); +PYTHON_YOINK("test.test_codecencodings_jp"); +PYTHON_YOINK("test.test_codecencodings_kr"); +PYTHON_YOINK("test.test_codecencodings_tw"); +PYTHON_YOINK("test.test_codecmaps_cn"); +PYTHON_YOINK("test.test_codecmaps_hk"); +PYTHON_YOINK("test.test_codecmaps_jp"); +PYTHON_YOINK("test.test_codecmaps_kr"); +PYTHON_YOINK("test.test_codecmaps_tw"); +PYTHON_YOINK("test.test_codecs"); +PYTHON_YOINK("test.test_codeop"); +PYTHON_YOINK("test.test_collections"); +PYTHON_YOINK("test.test_colorsys"); +PYTHON_YOINK("test.test_compare"); +PYTHON_YOINK("test.test_compile"); +PYTHON_YOINK("test.test_compileall"); +PYTHON_YOINK("test.test_complex"); +PYTHON_YOINK("test.test_concurrent_futures"); +PYTHON_YOINK("test.test_configparser"); +PYTHON_YOINK("test.test_contains"); +PYTHON_YOINK("test.test_contextlib"); +PYTHON_YOINK("test.test_copy"); +PYTHON_YOINK("test.test_copyreg"); +PYTHON_YOINK("test.test_coroutines"); +PYTHON_YOINK("test.test_cprofile"); +PYTHON_YOINK("test.test_crashers"); +PYTHON_YOINK("test.test_crypt"); +PYTHON_YOINK("test.test_csv"); +PYTHON_YOINK("test.test_ctypes"); +PYTHON_YOINK("test.test_curses"); +PYTHON_YOINK("test.test_datetime"); +PYTHON_YOINK("test.test_dbm"); +PYTHON_YOINK("test.test_dbm_dumb"); +PYTHON_YOINK("test.test_dbm_gnu"); +PYTHON_YOINK("test.test_dbm_ndbm"); +PYTHON_YOINK("test.test_decimal"); +PYTHON_YOINK("test.test_decorators"); +PYTHON_YOINK("test.test_defaultdict"); +PYTHON_YOINK("test.test_deque"); +PYTHON_YOINK("test.test_descr"); +PYTHON_YOINK("test.test_descrtut"); +PYTHON_YOINK("test.test_devpoll"); +PYTHON_YOINK("test.test_dict"); +PYTHON_YOINK("test.test_dict_version"); +PYTHON_YOINK("test.test_dictcomps"); +PYTHON_YOINK("test.test_dictviews"); +PYTHON_YOINK("test.test_difflib"); +PYTHON_YOINK("test.test_dis"); +PYTHON_YOINK("test.test_distutils"); +PYTHON_YOINK("test.test_doctest"); +PYTHON_YOINK("test.test_doctest2"); +PYTHON_YOINK("test.test_docxmlrpc"); +PYTHON_YOINK("test.test_dtrace"); +PYTHON_YOINK("test.test_dummy_thread"); +PYTHON_YOINK("test.test_dummy_threading"); +PYTHON_YOINK("test.test_dynamic"); +PYTHON_YOINK("test.test_dynamicclassattribute"); +PYTHON_YOINK("test.test_eintr"); +PYTHON_YOINK("test.test_email"); +PYTHON_YOINK("test.test_email.__main__"); +PYTHON_YOINK("test.test_email.test__encoded_words"); +PYTHON_YOINK("test.test_email.test__header_value_parser"); +PYTHON_YOINK("test.test_email.test_asian_codecs"); +PYTHON_YOINK("test.test_email.test_contentmanager"); +PYTHON_YOINK("test.test_email.test_defect_handling"); +PYTHON_YOINK("test.test_email.test_email"); +PYTHON_YOINK("test.test_email.test_generator"); +PYTHON_YOINK("test.test_email.test_headerregistry"); +PYTHON_YOINK("test.test_email.test_inversion"); +PYTHON_YOINK("test.test_email.test_message"); +PYTHON_YOINK("test.test_email.test_parser"); +PYTHON_YOINK("test.test_email.test_pickleable"); +PYTHON_YOINK("test.test_email.test_policy"); +PYTHON_YOINK("test.test_email.test_utils"); +PYTHON_YOINK("test.test_email.torture_test"); +PYTHON_YOINK("test.test_ensurepip"); +PYTHON_YOINK("test.test_enum"); +PYTHON_YOINK("test.test_enumerate"); +PYTHON_YOINK("test.test_eof"); +PYTHON_YOINK("test.test_epoll"); +PYTHON_YOINK("test.test_errno"); +PYTHON_YOINK("test.test_exception_hierarchy"); +PYTHON_YOINK("test.test_exception_variations"); +PYTHON_YOINK("test.test_exceptions"); +PYTHON_YOINK("test.test_extcall"); +PYTHON_YOINK("test.test_faulthandler"); +PYTHON_YOINK("test.test_fcntl"); +PYTHON_YOINK("test.test_file"); +PYTHON_YOINK("test.test_file_eintr"); +PYTHON_YOINK("test.test_filecmp"); +PYTHON_YOINK("test.test_fileinput"); +PYTHON_YOINK("test.test_fileio"); +PYTHON_YOINK("test.test_finalization"); +PYTHON_YOINK("test.test_float"); +PYTHON_YOINK("test.test_flufl"); +PYTHON_YOINK("test.test_fnmatch"); +PYTHON_YOINK("test.test_fork1"); +PYTHON_YOINK("test.test_format"); +PYTHON_YOINK("test.test_fractions"); +PYTHON_YOINK("test.test_frame"); +PYTHON_YOINK("test.test_fstring"); +PYTHON_YOINK("test.test_ftplib"); +PYTHON_YOINK("test.test_funcattrs"); +PYTHON_YOINK("test.test_functools"); +PYTHON_YOINK("test.test_future"); +PYTHON_YOINK("test.test_future3"); +PYTHON_YOINK("test.test_future4"); +PYTHON_YOINK("test.test_future5"); +PYTHON_YOINK("test.test_gc"); +PYTHON_YOINK("test.test_gdb"); +PYTHON_YOINK("test.test_generator_stop"); +PYTHON_YOINK("test.test_generators"); +PYTHON_YOINK("test.test_genericpath"); +PYTHON_YOINK("test.test_genexps"); +PYTHON_YOINK("test.test_getargs2"); +PYTHON_YOINK("test.test_getopt"); +PYTHON_YOINK("test.test_getpass"); +PYTHON_YOINK("test.test_gettext"); +PYTHON_YOINK("test.test_glob"); +PYTHON_YOINK("test.test_global"); +PYTHON_YOINK("test.test_grammar"); +PYTHON_YOINK("test.test_grp"); +PYTHON_YOINK("test.test_gzip"); +PYTHON_YOINK("test.test_hash"); +PYTHON_YOINK("test.test_hashlib"); +PYTHON_YOINK("test.test_heapq"); +PYTHON_YOINK("test.test_hmac"); +PYTHON_YOINK("test.test_html"); +PYTHON_YOINK("test.test_htmlparser"); +PYTHON_YOINK("test.test_http_cookiejar"); +PYTHON_YOINK("test.test_http_cookies"); +PYTHON_YOINK("test.test_httplib"); +PYTHON_YOINK("test.test_httpservers"); +PYTHON_YOINK("test.test_idle"); +PYTHON_YOINK("test.test_imaplib"); +PYTHON_YOINK("test.test_imghdr"); +PYTHON_YOINK("test.test_imp"); +PYTHON_YOINK("test.test_import"); +PYTHON_YOINK("test.test_import.__main__"); +PYTHON_YOINK("test.test_import.data.circular_imports.basic"); +PYTHON_YOINK("test.test_import.data.circular_imports.basic2"); +PYTHON_YOINK("test.test_import.data.circular_imports.indirect"); +PYTHON_YOINK("test.test_import.data.circular_imports.rebinding"); +PYTHON_YOINK("test.test_import.data.circular_imports.rebinding2"); +PYTHON_YOINK("test.test_import.data.circular_imports.subpackage"); +PYTHON_YOINK("test.test_import.data.circular_imports.subpkg.subpackage2"); +PYTHON_YOINK("test.test_import.data.circular_imports.subpkg.util"); +PYTHON_YOINK("test.test_import.data.circular_imports.util"); +PYTHON_YOINK("test.test_import.data.package"); +PYTHON_YOINK("test.test_import.data.package.submodule"); +PYTHON_YOINK("test.test_import.data.package2.submodule1"); +PYTHON_YOINK("test.test_import.data.package2.submodule2"); +PYTHON_YOINK("test.test_importlib"); +PYTHON_YOINK("test.test_importlib.__main__"); +PYTHON_YOINK("test.test_importlib.abc"); +PYTHON_YOINK("test.test_importlib.builtin"); +PYTHON_YOINK("test.test_importlib.builtin.__main__"); +PYTHON_YOINK("test.test_importlib.builtin.test_finder"); +PYTHON_YOINK("test.test_importlib.builtin.test_loader"); +PYTHON_YOINK("test.test_importlib.extension"); +PYTHON_YOINK("test.test_importlib.extension.__main__"); +PYTHON_YOINK("test.test_importlib.extension.test_case_sensitivity"); +PYTHON_YOINK("test.test_importlib.extension.test_finder"); +PYTHON_YOINK("test.test_importlib.extension.test_loader"); +PYTHON_YOINK("test.test_importlib.extension.test_path_hook"); +PYTHON_YOINK("test.test_importlib.frozen"); +PYTHON_YOINK("test.test_importlib.frozen.__main__"); +PYTHON_YOINK("test.test_importlib.frozen.test_finder"); +PYTHON_YOINK("test.test_importlib.frozen.test_loader"); +PYTHON_YOINK("test.test_importlib.import_"); +PYTHON_YOINK("test.test_importlib.import_.__main__"); +PYTHON_YOINK("test.test_importlib.import_.test___loader__"); +PYTHON_YOINK("test.test_importlib.import_.test___package__"); +PYTHON_YOINK("test.test_importlib.import_.test_api"); +PYTHON_YOINK("test.test_importlib.import_.test_caching"); +PYTHON_YOINK("test.test_importlib.import_.test_fromlist"); +PYTHON_YOINK("test.test_importlib.import_.test_meta_path"); +PYTHON_YOINK("test.test_importlib.import_.test_packages"); +PYTHON_YOINK("test.test_importlib.import_.test_path"); +PYTHON_YOINK("test.test_importlib.import_.test_relative_imports"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.both_portions.foo.one"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.both_portions.foo.two"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.module_and_namespace_package.a_test"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.not_a_namespace_pkg.foo"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.not_a_namespace_pkg.foo.one"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.portion1.foo.one"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.portion2.foo.two"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.project1.parent.child.one"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.project2.parent.child.two"); +PYTHON_YOINK("test.test_importlib.namespace_pkgs.project3.parent.child.three"); +PYTHON_YOINK("test.test_importlib.source"); +PYTHON_YOINK("test.test_importlib.source.__main__"); +PYTHON_YOINK("test.test_importlib.source.test_case_sensitivity"); +PYTHON_YOINK("test.test_importlib.source.test_file_loader"); +PYTHON_YOINK("test.test_importlib.source.test_finder"); +PYTHON_YOINK("test.test_importlib.source.test_path_hook"); +PYTHON_YOINK("test.test_importlib.test_abc"); +PYTHON_YOINK("test.test_importlib.test_api"); +PYTHON_YOINK("test.test_importlib.test_lazy"); +PYTHON_YOINK("test.test_importlib.test_locks"); +PYTHON_YOINK("test.test_importlib.test_namespace_pkgs"); +PYTHON_YOINK("test.test_importlib.test_spec"); +PYTHON_YOINK("test.test_importlib.test_util"); +PYTHON_YOINK("test.test_importlib.test_windows"); +PYTHON_YOINK("test.test_importlib.util"); +PYTHON_YOINK("test.test_index"); +PYTHON_YOINK("test.test_inspect"); +PYTHON_YOINK("test.test_int"); +PYTHON_YOINK("test.test_int_literal"); +PYTHON_YOINK("test.test_io"); +PYTHON_YOINK("test.test_ioctl"); +PYTHON_YOINK("test.test_ipaddress"); +PYTHON_YOINK("test.test_isinstance"); +PYTHON_YOINK("test.test_iter"); +PYTHON_YOINK("test.test_iterlen"); +PYTHON_YOINK("test.test_itertools"); +PYTHON_YOINK("test.test_json"); +PYTHON_YOINK("test.test_json.__main__"); +PYTHON_YOINK("test.test_json.test_decode"); +PYTHON_YOINK("test.test_json.test_default"); +PYTHON_YOINK("test.test_json.test_dump"); +PYTHON_YOINK("test.test_json.test_encode_basestring_ascii"); +PYTHON_YOINK("test.test_json.test_enum"); +PYTHON_YOINK("test.test_json.test_fail"); +PYTHON_YOINK("test.test_json.test_float"); +PYTHON_YOINK("test.test_json.test_indent"); +PYTHON_YOINK("test.test_json.test_pass1"); +PYTHON_YOINK("test.test_json.test_pass2"); +PYTHON_YOINK("test.test_json.test_pass3"); +PYTHON_YOINK("test.test_json.test_recursion"); +PYTHON_YOINK("test.test_json.test_scanstring"); +PYTHON_YOINK("test.test_json.test_separators"); +PYTHON_YOINK("test.test_json.test_speedups"); +PYTHON_YOINK("test.test_json.test_tool"); +PYTHON_YOINK("test.test_json.test_unicode"); +PYTHON_YOINK("test.test_keyword"); +PYTHON_YOINK("test.test_keywordonlyarg"); +PYTHON_YOINK("test.test_kqueue"); +PYTHON_YOINK("test.test_largefile"); +PYTHON_YOINK("test.test_lib2to3"); +PYTHON_YOINK("test.test_linecache"); +PYTHON_YOINK("test.test_list"); +PYTHON_YOINK("test.test_listcomps"); +PYTHON_YOINK("test.test_locale"); +PYTHON_YOINK("test.test_logging"); +PYTHON_YOINK("test.test_long"); +PYTHON_YOINK("test.test_longexp"); +PYTHON_YOINK("test.test_lzma"); +PYTHON_YOINK("test.test_macpath"); +PYTHON_YOINK("test.test_macurl2path"); +PYTHON_YOINK("test.test_mailbox"); +PYTHON_YOINK("test.test_mailcap"); +PYTHON_YOINK("test.test_marshal"); +PYTHON_YOINK("test.test_math"); +PYTHON_YOINK("test.test_memoryio"); +PYTHON_YOINK("test.test_memoryview"); +PYTHON_YOINK("test.test_metaclass"); +PYTHON_YOINK("test.test_mimetypes"); +PYTHON_YOINK("test.test_minidom"); +PYTHON_YOINK("test.test_mmap"); +PYTHON_YOINK("test.test_module"); +PYTHON_YOINK("test.test_modulefinder"); +PYTHON_YOINK("test.test_msilib"); +PYTHON_YOINK("test.test_multibytecodec"); +PYTHON_YOINK("test.test_multiprocessing_fork"); +PYTHON_YOINK("test.test_multiprocessing_forkserver"); +PYTHON_YOINK("test.test_multiprocessing_main_handling"); +PYTHON_YOINK("test.test_multiprocessing_spawn"); +PYTHON_YOINK("test.test_netrc"); +PYTHON_YOINK("test.test_nis"); +PYTHON_YOINK("test.test_nntplib"); +PYTHON_YOINK("test.test_normalization"); +PYTHON_YOINK("test.test_ntpath"); +PYTHON_YOINK("test.test_numeric_tower"); +PYTHON_YOINK("test.test_opcodes"); +PYTHON_YOINK("test.test_openpty"); +PYTHON_YOINK("test.test_operator"); +PYTHON_YOINK("test.test_optparse"); +PYTHON_YOINK("test.test_ordered_dict"); +PYTHON_YOINK("test.test_os"); +PYTHON_YOINK("test.test_ossaudiodev"); +PYTHON_YOINK("test.test_osx_env"); +PYTHON_YOINK("test.test_parser"); +PYTHON_YOINK("test.test_pathlib"); +PYTHON_YOINK("test.test_pdb"); +PYTHON_YOINK("test.test_peepholer"); +PYTHON_YOINK("test.test_pickle"); +PYTHON_YOINK("test.test_pickletools"); +PYTHON_YOINK("test.test_pipes"); +PYTHON_YOINK("test.test_pkg"); +PYTHON_YOINK("test.test_pkgimport"); +PYTHON_YOINK("test.test_pkgutil"); +PYTHON_YOINK("test.test_platform"); +PYTHON_YOINK("test.test_plistlib"); +PYTHON_YOINK("test.test_poll"); +PYTHON_YOINK("test.test_popen"); +PYTHON_YOINK("test.test_poplib"); +PYTHON_YOINK("test.test_posix"); +PYTHON_YOINK("test.test_posixpath"); +PYTHON_YOINK("test.test_pow"); +PYTHON_YOINK("test.test_pprint"); +PYTHON_YOINK("test.test_print"); +PYTHON_YOINK("test.test_profile"); +PYTHON_YOINK("test.test_property"); +PYTHON_YOINK("test.test_pstats"); +PYTHON_YOINK("test.test_pty"); +PYTHON_YOINK("test.test_pulldom"); +PYTHON_YOINK("test.test_pwd"); +PYTHON_YOINK("test.test_py_compile"); +PYTHON_YOINK("test.test_pyclbr"); +PYTHON_YOINK("test.test_pydoc"); +PYTHON_YOINK("test.test_pyexpat"); +PYTHON_YOINK("test.test_queue"); +PYTHON_YOINK("test.test_quopri"); +PYTHON_YOINK("test.test_raise"); +PYTHON_YOINK("test.test_random"); +PYTHON_YOINK("test.test_range"); +PYTHON_YOINK("test.test_re"); +PYTHON_YOINK("test.test_readline"); +PYTHON_YOINK("test.test_regrtest"); +PYTHON_YOINK("test.test_repl"); +PYTHON_YOINK("test.test_reprlib"); +PYTHON_YOINK("test.test_resource"); +PYTHON_YOINK("test.test_richcmp"); +PYTHON_YOINK("test.test_rlcompleter"); +PYTHON_YOINK("test.test_robotparser"); +PYTHON_YOINK("test.test_runpy"); +PYTHON_YOINK("test.test_sax"); +PYTHON_YOINK("test.test_sched"); +PYTHON_YOINK("test.test_scope"); +PYTHON_YOINK("test.test_script_helper"); +PYTHON_YOINK("test.test_secrets"); +PYTHON_YOINK("test.test_select"); +PYTHON_YOINK("test.test_selectors"); +PYTHON_YOINK("test.test_set"); +PYTHON_YOINK("test.test_setcomps"); +PYTHON_YOINK("test.test_shelve"); +PYTHON_YOINK("test.test_shlex"); +PYTHON_YOINK("test.test_shutil"); +PYTHON_YOINK("test.test_signal"); +PYTHON_YOINK("test.test_site"); +PYTHON_YOINK("test.test_slice"); +PYTHON_YOINK("test.test_smtpd"); +PYTHON_YOINK("test.test_smtplib"); +PYTHON_YOINK("test.test_smtpnet"); +PYTHON_YOINK("test.test_sndhdr"); +PYTHON_YOINK("test.test_socket"); +PYTHON_YOINK("test.test_socketserver"); +PYTHON_YOINK("test.test_sort"); +PYTHON_YOINK("test.test_spwd"); +PYTHON_YOINK("test.test_sqlite"); +PYTHON_YOINK("test.test_ssl"); +PYTHON_YOINK("test.test_startfile"); +PYTHON_YOINK("test.test_stat"); +PYTHON_YOINK("test.test_statistics"); +PYTHON_YOINK("test.test_strftime"); +PYTHON_YOINK("test.test_string"); +PYTHON_YOINK("test.test_string_literals"); +PYTHON_YOINK("test.test_stringprep"); +PYTHON_YOINK("test.test_strptime"); +PYTHON_YOINK("test.test_strtod"); +PYTHON_YOINK("test.test_struct"); +PYTHON_YOINK("test.test_structmembers"); +PYTHON_YOINK("test.test_structseq"); +PYTHON_YOINK("test.test_subclassinit"); +PYTHON_YOINK("test.test_subprocess"); +PYTHON_YOINK("test.test_sunau"); +PYTHON_YOINK("test.test_sundry"); +PYTHON_YOINK("test.test_super"); +PYTHON_YOINK("test.test_support"); +PYTHON_YOINK("test.test_symbol"); +PYTHON_YOINK("test.test_symtable"); +PYTHON_YOINK("test.test_syntax"); +PYTHON_YOINK("test.test_sys"); +PYTHON_YOINK("test.test_sys_setprofile"); +PYTHON_YOINK("test.test_sys_settrace"); +PYTHON_YOINK("test.test_sysconfig"); +PYTHON_YOINK("test.test_syslog"); +PYTHON_YOINK("test.test_tarfile"); +PYTHON_YOINK("test.test_tcl"); +PYTHON_YOINK("test.test_telnetlib"); +PYTHON_YOINK("test.test_tempfile"); +PYTHON_YOINK("test.test_textwrap"); +PYTHON_YOINK("test.test_thread"); +PYTHON_YOINK("test.test_threaded_import"); +PYTHON_YOINK("test.test_threadedtempfile"); +PYTHON_YOINK("test.test_threading"); +PYTHON_YOINK("test.test_threading_local"); +PYTHON_YOINK("test.test_threadsignals"); +PYTHON_YOINK("test.test_time"); +PYTHON_YOINK("test.test_timeit"); +PYTHON_YOINK("test.test_timeout"); +PYTHON_YOINK("test.test_tix"); +PYTHON_YOINK("test.test_tk"); +PYTHON_YOINK("test.test_tokenize"); +PYTHON_YOINK("test.test_tools"); +PYTHON_YOINK("test.test_tools.__main__"); +PYTHON_YOINK("test.test_tools.test_fixcid"); +PYTHON_YOINK("test.test_tools.test_gprof2html"); +PYTHON_YOINK("test.test_tools.test_i18n"); +PYTHON_YOINK("test.test_tools.test_md5sum"); +PYTHON_YOINK("test.test_tools.test_pdeps"); +PYTHON_YOINK("test.test_tools.test_pindent"); +PYTHON_YOINK("test.test_tools.test_reindent"); +PYTHON_YOINK("test.test_tools.test_sundry"); +PYTHON_YOINK("test.test_tools.test_unparse"); +PYTHON_YOINK("test.test_trace"); +PYTHON_YOINK("test.test_traceback"); +PYTHON_YOINK("test.test_tracemalloc"); +PYTHON_YOINK("test.test_ttk_guionly"); +PYTHON_YOINK("test.test_ttk_textonly"); +PYTHON_YOINK("test.test_tuple"); +PYTHON_YOINK("test.test_turtle"); +PYTHON_YOINK("test.test_typechecks"); +PYTHON_YOINK("test.test_types"); +PYTHON_YOINK("test.test_typing"); +PYTHON_YOINK("test.test_unary"); +PYTHON_YOINK("test.test_unicode"); +PYTHON_YOINK("test.test_unicode_file"); +PYTHON_YOINK("test.test_unicode_file_functions"); +PYTHON_YOINK("test.test_unicodedata"); +PYTHON_YOINK("test.test_unittest"); +PYTHON_YOINK("test.test_univnewlines"); +PYTHON_YOINK("test.test_unpack"); +PYTHON_YOINK("test.test_unpack_ex"); +PYTHON_YOINK("test.test_urllib"); +PYTHON_YOINK("test.test_urllib2"); +PYTHON_YOINK("test.test_urllib2_localnet"); +PYTHON_YOINK("test.test_urllib2net"); +PYTHON_YOINK("test.test_urllib_response"); +PYTHON_YOINK("test.test_urllibnet"); +PYTHON_YOINK("test.test_urlparse"); +PYTHON_YOINK("test.test_userdict"); +PYTHON_YOINK("test.test_userlist"); +PYTHON_YOINK("test.test_userstring"); +PYTHON_YOINK("test.test_utf8source"); +PYTHON_YOINK("test.test_uu"); +PYTHON_YOINK("test.test_uuid"); +PYTHON_YOINK("test.test_venv"); +PYTHON_YOINK("test.test_wait3"); +PYTHON_YOINK("test.test_wait4"); +PYTHON_YOINK("test.test_warnings"); +PYTHON_YOINK("test.test_warnings.__main__"); +PYTHON_YOINK("test.test_warnings.data.import_warning"); +PYTHON_YOINK("test.test_warnings.data.stacklevel"); +PYTHON_YOINK("test.test_wave"); +PYTHON_YOINK("test.test_weakref"); +PYTHON_YOINK("test.test_weakset"); +PYTHON_YOINK("test.test_webbrowser"); +PYTHON_YOINK("test.test_winconsoleio"); +PYTHON_YOINK("test.test_winreg"); +PYTHON_YOINK("test.test_winsound"); +PYTHON_YOINK("test.test_with"); +PYTHON_YOINK("test.test_wsgiref"); +PYTHON_YOINK("test.test_xdrlib"); +PYTHON_YOINK("test.test_xml_dom_minicompat"); +PYTHON_YOINK("test.test_xml_etree"); +PYTHON_YOINK("test.test_xml_etree_c"); +PYTHON_YOINK("test.test_xmlrpc_net"); +PYTHON_YOINK("test.test_yield_from"); +PYTHON_YOINK("test.test_zipapp"); +PYTHON_YOINK("test.test_zipfile"); +PYTHON_YOINK("test.test_zipfile64"); +PYTHON_YOINK("test.test_zipimport"); +PYTHON_YOINK("test.test_zipimport_support"); +PYTHON_YOINK("test.test_zlib"); +PYTHON_YOINK("test.testcodec"); +PYTHON_YOINK("test.tf_inherit_check"); +PYTHON_YOINK("test.threaded_import_hangers"); +PYTHON_YOINK("test.time_hashlib"); +PYTHON_YOINK("test.tracedmodules"); +PYTHON_YOINK("test.tracedmodules.testmod"); +PYTHON_YOINK("test.win_console_handler"); +PYTHON_YOINK("test.xmltests"); -PYTHON_YOINK(".python/test/__init__.py"); -PYTHON_YOINK(".python/test/__main__.py"); -PYTHON_YOINK(".python/test/_test_multiprocessing.py"); -PYTHON_YOINK(".python/test/ann_module.py"); -PYTHON_YOINK(".python/test/ann_module2.py"); -PYTHON_YOINK(".python/test/ann_module3.py"); -PYTHON_YOINK(".python/test/audiotests.py"); -PYTHON_YOINK(".python/test/autotest.py"); -PYTHON_YOINK(".python/test/bisect.py"); -PYTHON_YOINK(".python/test/bytecode_helper.py"); -PYTHON_YOINK(".python/test/coding20731.py"); -PYTHON_YOINK(".python/test/crashers/bogus_code_obj.py"); -PYTHON_YOINK(".python/test/crashers/gc_inspection.py"); -PYTHON_YOINK(".python/test/crashers/infinite_loop_re.py"); -PYTHON_YOINK(".python/test/crashers/mutation_inside_cyclegc.py"); -PYTHON_YOINK(".python/test/crashers/recursive_call.py"); -PYTHON_YOINK(".python/test/crashers/trace_at_recursion_limit.py"); -PYTHON_YOINK(".python/test/crashers/underlying_dict.py"); -PYTHON_YOINK(".python/test/curses_tests.py"); -PYTHON_YOINK(".python/test/datetimetester.py"); -PYTHON_YOINK(".python/test/dis_module.py"); -PYTHON_YOINK(".python/test/doctest_aliases.py"); -PYTHON_YOINK(".python/test/double_const.py"); -PYTHON_YOINK(".python/test/dtracedata/call_stack.py"); -PYTHON_YOINK(".python/test/dtracedata/gc.py"); -PYTHON_YOINK(".python/test/dtracedata/instance.py"); -PYTHON_YOINK(".python/test/dtracedata/line.py"); -PYTHON_YOINK(".python/test/eintrdata/eintr_tester.py"); -PYTHON_YOINK(".python/test/final_a.py"); -PYTHON_YOINK(".python/test/final_b.py"); -PYTHON_YOINK(".python/test/fork_wait.py"); -PYTHON_YOINK(".python/test/future_test1.py"); -PYTHON_YOINK(".python/test/future_test2.py"); -PYTHON_YOINK(".python/test/gdb_sample.py"); -PYTHON_YOINK(".python/test/imp_dummy.py"); -PYTHON_YOINK(".python/test/inspect_fodder.py"); -PYTHON_YOINK(".python/test/inspect_fodder2.py"); -PYTHON_YOINK(".python/test/leakers/__init__.py"); -PYTHON_YOINK(".python/test/leakers/test_ctypes.py"); -PYTHON_YOINK(".python/test/leakers/test_selftype.py"); -PYTHON_YOINK(".python/test/libregrtest/__init__.py"); -PYTHON_YOINK(".python/test/libregrtest/cmdline.py"); -PYTHON_YOINK(".python/test/libregrtest/main.py"); -PYTHON_YOINK(".python/test/libregrtest/refleak.py"); -PYTHON_YOINK(".python/test/libregrtest/runtest.py"); -PYTHON_YOINK(".python/test/libregrtest/runtest_mp.py"); -PYTHON_YOINK(".python/test/libregrtest/save_env.py"); -PYTHON_YOINK(".python/test/libregrtest/setup.py"); -PYTHON_YOINK(".python/test/libregrtest/utils.py"); -PYTHON_YOINK(".python/test/list_tests.py"); -PYTHON_YOINK(".python/test/lock_tests.py"); -PYTHON_YOINK(".python/test/make_ssl_certs.py"); -PYTHON_YOINK(".python/test/mapping_tests.py"); -PYTHON_YOINK(".python/test/memory_watchdog.py"); -PYTHON_YOINK(".python/test/mock_socket.py"); -PYTHON_YOINK(".python/test/mod_generics_cache.py"); -PYTHON_YOINK(".python/test/mp_fork_bomb.py"); -PYTHON_YOINK(".python/test/mp_preload.py"); -PYTHON_YOINK(".python/test/multibytecodec_support.py"); -PYTHON_YOINK(".python/test/outstanding_bugs.py"); -PYTHON_YOINK(".python/test/pickletester.py"); -PYTHON_YOINK(".python/test/profilee.py"); -PYTHON_YOINK(".python/test/pyclbr_input.py"); -PYTHON_YOINK(".python/test/pydoc_mod.py"); -PYTHON_YOINK(".python/test/pydocfodder.py"); -PYTHON_YOINK(".python/test/pystone.py"); -PYTHON_YOINK(".python/test/pythoninfo.py"); -PYTHON_YOINK(".python/test/re_tests.py"); -PYTHON_YOINK(".python/test/regrtest.py"); -PYTHON_YOINK(".python/test/relimport.py"); -PYTHON_YOINK(".python/test/reperf.py"); -PYTHON_YOINK(".python/test/sample_doctest.py"); -PYTHON_YOINK(".python/test/sample_doctest_no_docstrings.py"); -PYTHON_YOINK(".python/test/sample_doctest_no_doctests.py"); -PYTHON_YOINK(".python/test/seq_tests.py"); -PYTHON_YOINK(".python/test/signalinterproctester.py"); -PYTHON_YOINK(".python/test/sortperf.py"); -PYTHON_YOINK(".python/test/ssl_servers.py"); -PYTHON_YOINK(".python/test/ssltests.py"); -PYTHON_YOINK(".python/test/string_tests.py"); -PYTHON_YOINK(".python/test/subprocessdata/fd_status.py"); -PYTHON_YOINK(".python/test/subprocessdata/input_reader.py"); -PYTHON_YOINK(".python/test/subprocessdata/qcat.py"); -PYTHON_YOINK(".python/test/subprocessdata/qgrep.py"); -PYTHON_YOINK(".python/test/subprocessdata/sigchild_ignore.py"); -PYTHON_YOINK(".python/test/support/__init__.py"); -PYTHON_YOINK(".python/test/support/script_helper.py"); -PYTHON_YOINK(".python/test/support/testresult.py"); -PYTHON_YOINK(".python/test/test___all__.py"); -PYTHON_YOINK(".python/test/test___future__.py"); -PYTHON_YOINK(".python/test/test__locale.py"); -PYTHON_YOINK(".python/test/test__opcode.py"); -PYTHON_YOINK(".python/test/test__osx_support.py"); -PYTHON_YOINK(".python/test/test_abc.py"); -PYTHON_YOINK(".python/test/test_abstract_numbers.py"); -PYTHON_YOINK(".python/test/test_aifc.py"); -PYTHON_YOINK(".python/test/test_argparse.py"); -PYTHON_YOINK(".python/test/test_array.py"); -PYTHON_YOINK(".python/test/test_asdl_parser.py"); -PYTHON_YOINK(".python/test/test_ast.py"); -PYTHON_YOINK(".python/test/test_asyncgen.py"); -PYTHON_YOINK(".python/test/test_asynchat.py"); -PYTHON_YOINK(".python/test/test_asyncio/__init__.py"); -PYTHON_YOINK(".python/test/test_asyncio/__main__.py"); -PYTHON_YOINK(".python/test/test_asyncio/echo.py"); -PYTHON_YOINK(".python/test/test_asyncio/echo2.py"); -PYTHON_YOINK(".python/test/test_asyncio/echo3.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_base_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_futures.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_locks.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_pep492.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_proactor_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_queues.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_selector_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_sslproto.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_streams.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_subprocess.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_tasks.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_transports.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_unix_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_windows_events.py"); -PYTHON_YOINK(".python/test/test_asyncio/test_windows_utils.py"); -PYTHON_YOINK(".python/test/test_asyncore.py"); -PYTHON_YOINK(".python/test/test_atexit.py"); -PYTHON_YOINK(".python/test/test_audioop.py"); -PYTHON_YOINK(".python/test/test_augassign.py"); -PYTHON_YOINK(".python/test/test_base64.py"); -PYTHON_YOINK(".python/test/test_baseexception.py"); -PYTHON_YOINK(".python/test/test_bdb.py"); -PYTHON_YOINK(".python/test/test_bigaddrspace.py"); -PYTHON_YOINK(".python/test/test_bigmem.py"); -PYTHON_YOINK(".python/test/test_binascii.py"); -PYTHON_YOINK(".python/test/test_binhex.py"); -PYTHON_YOINK(".python/test/test_binop.py"); -PYTHON_YOINK(".python/test/test_bisect.py"); -PYTHON_YOINK(".python/test/test_bool.py"); -PYTHON_YOINK(".python/test/test_buffer.py"); -PYTHON_YOINK(".python/test/test_bufio.py"); -PYTHON_YOINK(".python/test/test_builtin.py"); -PYTHON_YOINK(".python/test/test_bytes.py"); -PYTHON_YOINK(".python/test/test_bz2.py"); -PYTHON_YOINK(".python/test/test_calendar.py"); -PYTHON_YOINK(".python/test/test_call.py"); -PYTHON_YOINK(".python/test/test_capi.py"); -PYTHON_YOINK(".python/test/test_cgi.py"); -PYTHON_YOINK(".python/test/test_cgitb.py"); -PYTHON_YOINK(".python/test/test_charmapcodec.py"); -PYTHON_YOINK(".python/test/test_class.py"); -PYTHON_YOINK(".python/test/test_cmath.py"); -PYTHON_YOINK(".python/test/test_cmd.py"); -PYTHON_YOINK(".python/test/test_cmd_line.py"); -PYTHON_YOINK(".python/test/test_cmd_line_script.py"); -PYTHON_YOINK(".python/test/test_code.py"); -PYTHON_YOINK(".python/test/test_code_module.py"); -PYTHON_YOINK(".python/test/test_codeccallbacks.py"); -PYTHON_YOINK(".python/test/test_codecencodings_cn.py"); -PYTHON_YOINK(".python/test/test_codecencodings_hk.py"); -PYTHON_YOINK(".python/test/test_codecencodings_iso2022.py"); -PYTHON_YOINK(".python/test/test_codecencodings_jp.py"); -PYTHON_YOINK(".python/test/test_codecencodings_kr.py"); -PYTHON_YOINK(".python/test/test_codecencodings_tw.py"); -PYTHON_YOINK(".python/test/test_codecmaps_cn.py"); -PYTHON_YOINK(".python/test/test_codecmaps_hk.py"); -PYTHON_YOINK(".python/test/test_codecmaps_jp.py"); -PYTHON_YOINK(".python/test/test_codecmaps_kr.py"); -PYTHON_YOINK(".python/test/test_codecmaps_tw.py"); -PYTHON_YOINK(".python/test/test_codecs.py"); -PYTHON_YOINK(".python/test/test_codeop.py"); -PYTHON_YOINK(".python/test/test_collections.py"); -PYTHON_YOINK(".python/test/test_colorsys.py"); -PYTHON_YOINK(".python/test/test_compare.py"); -PYTHON_YOINK(".python/test/test_compile.py"); -PYTHON_YOINK(".python/test/test_compileall.py"); -PYTHON_YOINK(".python/test/test_complex.py"); -PYTHON_YOINK(".python/test/test_concurrent_futures.py"); -PYTHON_YOINK(".python/test/test_configparser.py"); -PYTHON_YOINK(".python/test/test_contains.py"); -PYTHON_YOINK(".python/test/test_contextlib.py"); -PYTHON_YOINK(".python/test/test_copy.py"); -PYTHON_YOINK(".python/test/test_copyreg.py"); -PYTHON_YOINK(".python/test/test_coroutines.py"); -PYTHON_YOINK(".python/test/test_cprofile.py"); -PYTHON_YOINK(".python/test/test_crashers.py"); -PYTHON_YOINK(".python/test/test_crypt.py"); -PYTHON_YOINK(".python/test/test_csv.py"); -PYTHON_YOINK(".python/test/test_ctypes.py"); -PYTHON_YOINK(".python/test/test_curses.py"); -PYTHON_YOINK(".python/test/test_datetime.py"); -PYTHON_YOINK(".python/test/test_dbm.py"); -PYTHON_YOINK(".python/test/test_dbm_dumb.py"); -PYTHON_YOINK(".python/test/test_dbm_gnu.py"); -PYTHON_YOINK(".python/test/test_dbm_ndbm.py"); -PYTHON_YOINK(".python/test/test_decimal.py"); -PYTHON_YOINK(".python/test/test_decorators.py"); -PYTHON_YOINK(".python/test/test_defaultdict.py"); -PYTHON_YOINK(".python/test/test_deque.py"); -PYTHON_YOINK(".python/test/test_descr.py"); -PYTHON_YOINK(".python/test/test_descrtut.py"); -PYTHON_YOINK(".python/test/test_devpoll.py"); -PYTHON_YOINK(".python/test/test_dict.py"); -PYTHON_YOINK(".python/test/test_dict_version.py"); -PYTHON_YOINK(".python/test/test_dictcomps.py"); -PYTHON_YOINK(".python/test/test_dictviews.py"); -PYTHON_YOINK(".python/test/test_difflib.py"); -PYTHON_YOINK(".python/test/test_dis.py"); -PYTHON_YOINK(".python/test/test_distutils.py"); -PYTHON_YOINK(".python/test/test_doctest.py"); -PYTHON_YOINK(".python/test/test_doctest2.py"); -PYTHON_YOINK(".python/test/test_docxmlrpc.py"); -PYTHON_YOINK(".python/test/test_dtrace.py"); -PYTHON_YOINK(".python/test/test_dummy_thread.py"); -PYTHON_YOINK(".python/test/test_dummy_threading.py"); -PYTHON_YOINK(".python/test/test_dynamic.py"); -PYTHON_YOINK(".python/test/test_dynamicclassattribute.py"); -PYTHON_YOINK(".python/test/test_eintr.py"); -PYTHON_YOINK(".python/test/test_email/__init__.py"); -PYTHON_YOINK(".python/test/test_email/__main__.py"); -PYTHON_YOINK(".python/test/test_email/test__encoded_words.py"); -PYTHON_YOINK(".python/test/test_email/test__header_value_parser.py"); -PYTHON_YOINK(".python/test/test_email/test_asian_codecs.py"); -PYTHON_YOINK(".python/test/test_email/test_contentmanager.py"); -PYTHON_YOINK(".python/test/test_email/test_defect_handling.py"); -PYTHON_YOINK(".python/test/test_email/test_email.py"); -PYTHON_YOINK(".python/test/test_email/test_generator.py"); -PYTHON_YOINK(".python/test/test_email/test_headerregistry.py"); -PYTHON_YOINK(".python/test/test_email/test_inversion.py"); -PYTHON_YOINK(".python/test/test_email/test_message.py"); -PYTHON_YOINK(".python/test/test_email/test_parser.py"); -PYTHON_YOINK(".python/test/test_email/test_pickleable.py"); -PYTHON_YOINK(".python/test/test_email/test_policy.py"); -PYTHON_YOINK(".python/test/test_email/test_utils.py"); -PYTHON_YOINK(".python/test/test_email/torture_test.py"); -PYTHON_YOINK(".python/test/test_ensurepip.py"); -PYTHON_YOINK(".python/test/test_enum.py"); -PYTHON_YOINK(".python/test/test_enumerate.py"); -PYTHON_YOINK(".python/test/test_eof.py"); -PYTHON_YOINK(".python/test/test_epoll.py"); -PYTHON_YOINK(".python/test/test_errno.py"); -PYTHON_YOINK(".python/test/test_exception_hierarchy.py"); -PYTHON_YOINK(".python/test/test_exception_variations.py"); -PYTHON_YOINK(".python/test/test_exceptions.py"); -PYTHON_YOINK(".python/test/test_extcall.py"); -PYTHON_YOINK(".python/test/test_faulthandler.py"); -PYTHON_YOINK(".python/test/test_fcntl.py"); -PYTHON_YOINK(".python/test/test_file.py"); -PYTHON_YOINK(".python/test/test_file_eintr.py"); -PYTHON_YOINK(".python/test/test_filecmp.py"); -PYTHON_YOINK(".python/test/test_fileinput.py"); -PYTHON_YOINK(".python/test/test_fileio.py"); -PYTHON_YOINK(".python/test/test_finalization.py"); -PYTHON_YOINK(".python/test/test_float.py"); -PYTHON_YOINK(".python/test/test_flufl.py"); -PYTHON_YOINK(".python/test/test_fnmatch.py"); -PYTHON_YOINK(".python/test/test_fork1.py"); -PYTHON_YOINK(".python/test/test_format.py"); -PYTHON_YOINK(".python/test/test_fractions.py"); -PYTHON_YOINK(".python/test/test_frame.py"); -PYTHON_YOINK(".python/test/test_fstring.py"); -PYTHON_YOINK(".python/test/test_ftplib.py"); -PYTHON_YOINK(".python/test/test_funcattrs.py"); -PYTHON_YOINK(".python/test/test_functools.py"); -PYTHON_YOINK(".python/test/test_future.py"); -PYTHON_YOINK(".python/test/test_future3.py"); -PYTHON_YOINK(".python/test/test_future4.py"); -PYTHON_YOINK(".python/test/test_future5.py"); -PYTHON_YOINK(".python/test/test_gc.py"); -PYTHON_YOINK(".python/test/test_gdb.py"); -PYTHON_YOINK(".python/test/test_generator_stop.py"); -PYTHON_YOINK(".python/test/test_generators.py"); -PYTHON_YOINK(".python/test/test_genericpath.py"); -PYTHON_YOINK(".python/test/test_genexps.py"); -PYTHON_YOINK(".python/test/test_getargs2.py"); -PYTHON_YOINK(".python/test/test_getopt.py"); -PYTHON_YOINK(".python/test/test_getpass.py"); -PYTHON_YOINK(".python/test/test_gettext.py"); -PYTHON_YOINK(".python/test/test_glob.py"); -PYTHON_YOINK(".python/test/test_global.py"); -PYTHON_YOINK(".python/test/test_grammar.py"); -PYTHON_YOINK(".python/test/test_grp.py"); -PYTHON_YOINK(".python/test/test_gzip.py"); -PYTHON_YOINK(".python/test/test_hash.py"); -PYTHON_YOINK(".python/test/test_hashlib.py"); -PYTHON_YOINK(".python/test/test_heapq.py"); -PYTHON_YOINK(".python/test/test_hmac.py"); -PYTHON_YOINK(".python/test/test_html.py"); -PYTHON_YOINK(".python/test/test_htmlparser.py"); -PYTHON_YOINK(".python/test/test_http_cookiejar.py"); -PYTHON_YOINK(".python/test/test_http_cookies.py"); -PYTHON_YOINK(".python/test/test_httplib.py"); -PYTHON_YOINK(".python/test/test_httpservers.py"); -PYTHON_YOINK(".python/test/test_idle.py"); -PYTHON_YOINK(".python/test/test_imaplib.py"); -PYTHON_YOINK(".python/test/test_imghdr.py"); -PYTHON_YOINK(".python/test/test_imp.py"); -PYTHON_YOINK(".python/test/test_import/__init__.py"); -PYTHON_YOINK(".python/test/test_import/__main__.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/basic.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/basic2.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/indirect.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/rebinding.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/rebinding2.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/subpackage.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/subpkg/subpackage2.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/subpkg/util.py"); -PYTHON_YOINK(".python/test/test_import/data/circular_imports/util.py"); -PYTHON_YOINK(".python/test/test_import/data/package/__init__.py"); -PYTHON_YOINK(".python/test/test_import/data/package/submodule.py"); -PYTHON_YOINK(".python/test/test_import/data/package2/submodule1.py"); -PYTHON_YOINK(".python/test/test_import/data/package2/submodule2.py"); -PYTHON_YOINK(".python/test/test_importlib/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/abc.py"); -PYTHON_YOINK(".python/test/test_importlib/builtin/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/builtin/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/builtin/test_finder.py"); -PYTHON_YOINK(".python/test/test_importlib/builtin/test_loader.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/test_case_sensitivity.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/test_finder.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/test_loader.py"); -PYTHON_YOINK(".python/test/test_importlib/extension/test_path_hook.py"); -PYTHON_YOINK(".python/test/test_importlib/frozen/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/frozen/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/frozen/test_finder.py"); -PYTHON_YOINK(".python/test/test_importlib/frozen/test_loader.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test___loader__.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test___package__.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_api.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_caching.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_fromlist.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_meta_path.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_packages.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_path.py"); -PYTHON_YOINK(".python/test/test_importlib/import_/test_relative_imports.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/both_portions/foo/one.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/both_portions/foo/two.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo/one.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/portion1/foo/one.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/portion2/foo/two.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/project1/parent/child/one.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/project2/parent/child/two.py"); -PYTHON_YOINK(".python/test/test_importlib/namespace_pkgs/project3/parent/child/three.py"); -PYTHON_YOINK(".python/test/test_importlib/source/__init__.py"); -PYTHON_YOINK(".python/test/test_importlib/source/__main__.py"); -PYTHON_YOINK(".python/test/test_importlib/source/test_case_sensitivity.py"); -PYTHON_YOINK(".python/test/test_importlib/source/test_file_loader.py"); -PYTHON_YOINK(".python/test/test_importlib/source/test_finder.py"); -PYTHON_YOINK(".python/test/test_importlib/source/test_path_hook.py"); -PYTHON_YOINK(".python/test/test_importlib/test_abc.py"); -PYTHON_YOINK(".python/test/test_importlib/test_api.py"); -PYTHON_YOINK(".python/test/test_importlib/test_lazy.py"); -PYTHON_YOINK(".python/test/test_importlib/test_locks.py"); -PYTHON_YOINK(".python/test/test_importlib/test_namespace_pkgs.py"); -PYTHON_YOINK(".python/test/test_importlib/test_spec.py"); -PYTHON_YOINK(".python/test/test_importlib/test_util.py"); -PYTHON_YOINK(".python/test/test_importlib/test_windows.py"); -PYTHON_YOINK(".python/test/test_importlib/util.py"); -PYTHON_YOINK(".python/test/test_index.py"); -PYTHON_YOINK(".python/test/test_inspect.py"); -PYTHON_YOINK(".python/test/test_int.py"); -PYTHON_YOINK(".python/test/test_int_literal.py"); -PYTHON_YOINK(".python/test/test_io.py"); -PYTHON_YOINK(".python/test/test_ioctl.py"); -PYTHON_YOINK(".python/test/test_ipaddress.py"); -PYTHON_YOINK(".python/test/test_isinstance.py"); -PYTHON_YOINK(".python/test/test_iter.py"); -PYTHON_YOINK(".python/test/test_iterlen.py"); -PYTHON_YOINK(".python/test/test_itertools.py"); -PYTHON_YOINK(".python/test/test_json/__init__.py"); -PYTHON_YOINK(".python/test/test_json/__main__.py"); -PYTHON_YOINK(".python/test/test_json/test_decode.py"); -PYTHON_YOINK(".python/test/test_json/test_default.py"); -PYTHON_YOINK(".python/test/test_json/test_dump.py"); -PYTHON_YOINK(".python/test/test_json/test_encode_basestring_ascii.py"); -PYTHON_YOINK(".python/test/test_json/test_enum.py"); -PYTHON_YOINK(".python/test/test_json/test_fail.py"); -PYTHON_YOINK(".python/test/test_json/test_float.py"); -PYTHON_YOINK(".python/test/test_json/test_indent.py"); -PYTHON_YOINK(".python/test/test_json/test_pass1.py"); -PYTHON_YOINK(".python/test/test_json/test_pass2.py"); -PYTHON_YOINK(".python/test/test_json/test_pass3.py"); -PYTHON_YOINK(".python/test/test_json/test_recursion.py"); -PYTHON_YOINK(".python/test/test_json/test_scanstring.py"); -PYTHON_YOINK(".python/test/test_json/test_separators.py"); -PYTHON_YOINK(".python/test/test_json/test_speedups.py"); -PYTHON_YOINK(".python/test/test_json/test_tool.py"); -PYTHON_YOINK(".python/test/test_json/test_unicode.py"); -PYTHON_YOINK(".python/test/test_keyword.py"); -PYTHON_YOINK(".python/test/test_keywordonlyarg.py"); -PYTHON_YOINK(".python/test/test_kqueue.py"); -PYTHON_YOINK(".python/test/test_largefile.py"); -PYTHON_YOINK(".python/test/test_lib2to3.py"); -PYTHON_YOINK(".python/test/test_linecache.py"); -PYTHON_YOINK(".python/test/test_list.py"); -PYTHON_YOINK(".python/test/test_listcomps.py"); -PYTHON_YOINK(".python/test/test_locale.py"); -PYTHON_YOINK(".python/test/test_logging.py"); -PYTHON_YOINK(".python/test/test_long.py"); -PYTHON_YOINK(".python/test/test_longexp.py"); -PYTHON_YOINK(".python/test/test_lzma.py"); -PYTHON_YOINK(".python/test/test_macpath.py"); -PYTHON_YOINK(".python/test/test_macurl2path.py"); -PYTHON_YOINK(".python/test/test_mailbox.py"); -PYTHON_YOINK(".python/test/test_mailcap.py"); -PYTHON_YOINK(".python/test/test_marshal.py"); -PYTHON_YOINK(".python/test/test_math.py"); -PYTHON_YOINK(".python/test/test_memoryio.py"); -PYTHON_YOINK(".python/test/test_memoryview.py"); -PYTHON_YOINK(".python/test/test_metaclass.py"); -PYTHON_YOINK(".python/test/test_mimetypes.py"); -PYTHON_YOINK(".python/test/test_minidom.py"); -PYTHON_YOINK(".python/test/test_mmap.py"); -PYTHON_YOINK(".python/test/test_module.py"); -PYTHON_YOINK(".python/test/test_modulefinder.py"); -PYTHON_YOINK(".python/test/test_msilib.py"); -PYTHON_YOINK(".python/test/test_multibytecodec.py"); -PYTHON_YOINK(".python/test/test_multiprocessing_fork.py"); -PYTHON_YOINK(".python/test/test_multiprocessing_forkserver.py"); -PYTHON_YOINK(".python/test/test_multiprocessing_main_handling.py"); -PYTHON_YOINK(".python/test/test_multiprocessing_spawn.py"); -PYTHON_YOINK(".python/test/test_netrc.py"); -PYTHON_YOINK(".python/test/test_nis.py"); -PYTHON_YOINK(".python/test/test_nntplib.py"); -PYTHON_YOINK(".python/test/test_normalization.py"); -PYTHON_YOINK(".python/test/test_ntpath.py"); -PYTHON_YOINK(".python/test/test_numeric_tower.py"); -PYTHON_YOINK(".python/test/test_opcodes.py"); -PYTHON_YOINK(".python/test/test_openpty.py"); -PYTHON_YOINK(".python/test/test_operator.py"); -PYTHON_YOINK(".python/test/test_optparse.py"); -PYTHON_YOINK(".python/test/test_ordered_dict.py"); -PYTHON_YOINK(".python/test/test_os.py"); -PYTHON_YOINK(".python/test/test_ossaudiodev.py"); -PYTHON_YOINK(".python/test/test_osx_env.py"); -PYTHON_YOINK(".python/test/test_parser.py"); -PYTHON_YOINK(".python/test/test_pathlib.py"); -PYTHON_YOINK(".python/test/test_pdb.py"); -PYTHON_YOINK(".python/test/test_peepholer.py"); -PYTHON_YOINK(".python/test/test_pickle.py"); -PYTHON_YOINK(".python/test/test_pickletools.py"); -PYTHON_YOINK(".python/test/test_pipes.py"); -PYTHON_YOINK(".python/test/test_pkg.py"); -PYTHON_YOINK(".python/test/test_pkgimport.py"); -PYTHON_YOINK(".python/test/test_pkgutil.py"); -PYTHON_YOINK(".python/test/test_platform.py"); -PYTHON_YOINK(".python/test/test_plistlib.py"); -PYTHON_YOINK(".python/test/test_poll.py"); -PYTHON_YOINK(".python/test/test_popen.py"); -PYTHON_YOINK(".python/test/test_poplib.py"); -PYTHON_YOINK(".python/test/test_posix.py"); -PYTHON_YOINK(".python/test/test_posixpath.py"); -PYTHON_YOINK(".python/test/test_pow.py"); -PYTHON_YOINK(".python/test/test_pprint.py"); -PYTHON_YOINK(".python/test/test_print.py"); -PYTHON_YOINK(".python/test/test_profile.py"); -PYTHON_YOINK(".python/test/test_property.py"); -PYTHON_YOINK(".python/test/test_pstats.py"); -PYTHON_YOINK(".python/test/test_pty.py"); -PYTHON_YOINK(".python/test/test_pulldom.py"); -PYTHON_YOINK(".python/test/test_pwd.py"); -PYTHON_YOINK(".python/test/test_py_compile.py"); -PYTHON_YOINK(".python/test/test_pyclbr.py"); -PYTHON_YOINK(".python/test/test_pydoc.py"); -PYTHON_YOINK(".python/test/test_pyexpat.py"); -PYTHON_YOINK(".python/test/test_queue.py"); -PYTHON_YOINK(".python/test/test_quopri.py"); -PYTHON_YOINK(".python/test/test_raise.py"); -PYTHON_YOINK(".python/test/test_random.py"); -PYTHON_YOINK(".python/test/test_range.py"); -PYTHON_YOINK(".python/test/test_re.py"); -PYTHON_YOINK(".python/test/test_readline.py"); -PYTHON_YOINK(".python/test/test_regrtest.py"); -PYTHON_YOINK(".python/test/test_repl.py"); -PYTHON_YOINK(".python/test/test_reprlib.py"); -PYTHON_YOINK(".python/test/test_resource.py"); -PYTHON_YOINK(".python/test/test_richcmp.py"); -PYTHON_YOINK(".python/test/test_rlcompleter.py"); -PYTHON_YOINK(".python/test/test_robotparser.py"); -PYTHON_YOINK(".python/test/test_runpy.py"); -PYTHON_YOINK(".python/test/test_sax.py"); -PYTHON_YOINK(".python/test/test_sched.py"); -PYTHON_YOINK(".python/test/test_scope.py"); -PYTHON_YOINK(".python/test/test_script_helper.py"); -PYTHON_YOINK(".python/test/test_secrets.py"); -PYTHON_YOINK(".python/test/test_select.py"); -PYTHON_YOINK(".python/test/test_selectors.py"); -PYTHON_YOINK(".python/test/test_set.py"); -PYTHON_YOINK(".python/test/test_setcomps.py"); -PYTHON_YOINK(".python/test/test_shelve.py"); -PYTHON_YOINK(".python/test/test_shlex.py"); -PYTHON_YOINK(".python/test/test_shutil.py"); -PYTHON_YOINK(".python/test/test_signal.py"); -PYTHON_YOINK(".python/test/test_site.py"); -PYTHON_YOINK(".python/test/test_slice.py"); -PYTHON_YOINK(".python/test/test_smtpd.py"); -PYTHON_YOINK(".python/test/test_smtplib.py"); -PYTHON_YOINK(".python/test/test_smtpnet.py"); -PYTHON_YOINK(".python/test/test_sndhdr.py"); -PYTHON_YOINK(".python/test/test_socket.py"); -PYTHON_YOINK(".python/test/test_socketserver.py"); -PYTHON_YOINK(".python/test/test_sort.py"); -PYTHON_YOINK(".python/test/test_spwd.py"); -PYTHON_YOINK(".python/test/test_sqlite.py"); -PYTHON_YOINK(".python/test/test_ssl.py"); -PYTHON_YOINK(".python/test/test_startfile.py"); -PYTHON_YOINK(".python/test/test_stat.py"); -PYTHON_YOINK(".python/test/test_statistics.py"); -PYTHON_YOINK(".python/test/test_strftime.py"); -PYTHON_YOINK(".python/test/test_string.py"); -PYTHON_YOINK(".python/test/test_string_literals.py"); -PYTHON_YOINK(".python/test/test_stringprep.py"); -PYTHON_YOINK(".python/test/test_strptime.py"); -PYTHON_YOINK(".python/test/test_strtod.py"); -PYTHON_YOINK(".python/test/test_struct.py"); -PYTHON_YOINK(".python/test/test_structmembers.py"); -PYTHON_YOINK(".python/test/test_structseq.py"); -PYTHON_YOINK(".python/test/test_subclassinit.py"); -PYTHON_YOINK(".python/test/test_subprocess.py"); -PYTHON_YOINK(".python/test/test_sunau.py"); -PYTHON_YOINK(".python/test/test_sundry.py"); -PYTHON_YOINK(".python/test/test_super.py"); -PYTHON_YOINK(".python/test/test_support.py"); -PYTHON_YOINK(".python/test/test_symbol.py"); -PYTHON_YOINK(".python/test/test_symtable.py"); -PYTHON_YOINK(".python/test/test_syntax.py"); -PYTHON_YOINK(".python/test/test_sys.py"); -PYTHON_YOINK(".python/test/test_sys_setprofile.py"); -PYTHON_YOINK(".python/test/test_sys_settrace.py"); -PYTHON_YOINK(".python/test/test_sysconfig.py"); -PYTHON_YOINK(".python/test/test_syslog.py"); -PYTHON_YOINK(".python/test/test_tarfile.py"); -PYTHON_YOINK(".python/test/test_tcl.py"); -PYTHON_YOINK(".python/test/test_telnetlib.py"); -PYTHON_YOINK(".python/test/test_tempfile.py"); -PYTHON_YOINK(".python/test/test_textwrap.py"); -PYTHON_YOINK(".python/test/test_thread.py"); -PYTHON_YOINK(".python/test/test_threaded_import.py"); -PYTHON_YOINK(".python/test/test_threadedtempfile.py"); -PYTHON_YOINK(".python/test/test_threading.py"); -PYTHON_YOINK(".python/test/test_threading_local.py"); -PYTHON_YOINK(".python/test/test_threadsignals.py"); -PYTHON_YOINK(".python/test/test_time.py"); -PYTHON_YOINK(".python/test/test_timeit.py"); -PYTHON_YOINK(".python/test/test_timeout.py"); -PYTHON_YOINK(".python/test/test_tix.py"); -PYTHON_YOINK(".python/test/test_tk.py"); -PYTHON_YOINK(".python/test/test_tokenize.py"); -PYTHON_YOINK(".python/test/test_tools/__init__.py"); -PYTHON_YOINK(".python/test/test_tools/__main__.py"); -PYTHON_YOINK(".python/test/test_tools/test_fixcid.py"); -PYTHON_YOINK(".python/test/test_tools/test_gprof2html.py"); -PYTHON_YOINK(".python/test/test_tools/test_i18n.py"); -PYTHON_YOINK(".python/test/test_tools/test_md5sum.py"); -PYTHON_YOINK(".python/test/test_tools/test_pdeps.py"); -PYTHON_YOINK(".python/test/test_tools/test_pindent.py"); -PYTHON_YOINK(".python/test/test_tools/test_reindent.py"); -PYTHON_YOINK(".python/test/test_tools/test_sundry.py"); -PYTHON_YOINK(".python/test/test_tools/test_unparse.py"); -PYTHON_YOINK(".python/test/test_trace.py"); -PYTHON_YOINK(".python/test/test_traceback.py"); -PYTHON_YOINK(".python/test/test_tracemalloc.py"); -PYTHON_YOINK(".python/test/test_ttk_guionly.py"); -PYTHON_YOINK(".python/test/test_ttk_textonly.py"); -PYTHON_YOINK(".python/test/test_tuple.py"); -PYTHON_YOINK(".python/test/test_turtle.py"); -PYTHON_YOINK(".python/test/test_typechecks.py"); -PYTHON_YOINK(".python/test/test_types.py"); -PYTHON_YOINK(".python/test/test_typing.py"); -PYTHON_YOINK(".python/test/test_unary.py"); -PYTHON_YOINK(".python/test/test_unicode.py"); -PYTHON_YOINK(".python/test/test_unicode_file.py"); -PYTHON_YOINK(".python/test/test_unicode_file_functions.py"); -PYTHON_YOINK(".python/test/test_unicodedata.py"); -PYTHON_YOINK(".python/test/test_unittest.py"); -PYTHON_YOINK(".python/test/test_univnewlines.py"); -PYTHON_YOINK(".python/test/test_unpack.py"); -PYTHON_YOINK(".python/test/test_unpack_ex.py"); -PYTHON_YOINK(".python/test/test_urllib.py"); -PYTHON_YOINK(".python/test/test_urllib2.py"); -PYTHON_YOINK(".python/test/test_urllib2_localnet.py"); -PYTHON_YOINK(".python/test/test_urllib2net.py"); -PYTHON_YOINK(".python/test/test_urllib_response.py"); -PYTHON_YOINK(".python/test/test_urllibnet.py"); -PYTHON_YOINK(".python/test/test_urlparse.py"); -PYTHON_YOINK(".python/test/test_userdict.py"); -PYTHON_YOINK(".python/test/test_userlist.py"); -PYTHON_YOINK(".python/test/test_userstring.py"); -PYTHON_YOINK(".python/test/test_utf8source.py"); -PYTHON_YOINK(".python/test/test_uu.py"); -PYTHON_YOINK(".python/test/test_uuid.py"); -PYTHON_YOINK(".python/test/test_venv.py"); -PYTHON_YOINK(".python/test/test_wait3.py"); -PYTHON_YOINK(".python/test/test_wait4.py"); -PYTHON_YOINK(".python/test/test_warnings/__init__.py"); -PYTHON_YOINK(".python/test/test_warnings/__main__.py"); -PYTHON_YOINK(".python/test/test_warnings/data/import_warning.py"); -PYTHON_YOINK(".python/test/test_warnings/data/stacklevel.py"); -PYTHON_YOINK(".python/test/test_wave.py"); -PYTHON_YOINK(".python/test/test_weakref.py"); -PYTHON_YOINK(".python/test/test_weakset.py"); -PYTHON_YOINK(".python/test/test_webbrowser.py"); -PYTHON_YOINK(".python/test/test_winconsoleio.py"); -PYTHON_YOINK(".python/test/test_winreg.py"); -PYTHON_YOINK(".python/test/test_winsound.py"); -PYTHON_YOINK(".python/test/test_with.py"); -PYTHON_YOINK(".python/test/test_wsgiref.py"); -PYTHON_YOINK(".python/test/test_xdrlib.py"); -PYTHON_YOINK(".python/test/test_xml_dom_minicompat.py"); -PYTHON_YOINK(".python/test/test_xml_etree.py"); -PYTHON_YOINK(".python/test/test_xml_etree_c.py"); -PYTHON_YOINK(".python/test/test_xmlrpc_net.py"); -PYTHON_YOINK(".python/test/test_yield_from.py"); -PYTHON_YOINK(".python/test/test_zipapp.py"); -PYTHON_YOINK(".python/test/test_zipfile.py"); -PYTHON_YOINK(".python/test/test_zipfile64.py"); -PYTHON_YOINK(".python/test/test_zipimport.py"); -PYTHON_YOINK(".python/test/test_zipimport_support.py"); -PYTHON_YOINK(".python/test/test_zlib.py"); -PYTHON_YOINK(".python/test/testcodec.py"); -PYTHON_YOINK(".python/test/tf_inherit_check.py"); -PYTHON_YOINK(".python/test/threaded_import_hangers.py"); -PYTHON_YOINK(".python/test/time_hashlib.py"); -PYTHON_YOINK(".python/test/tracedmodules/__init__.py"); -PYTHON_YOINK(".python/test/tracedmodules/testmod.py"); -PYTHON_YOINK(".python/test/win_console_handler.py"); -PYTHON_YOINK(".python/test/xmltests.py"); -STATIC_YOINK(".python/test/"); STATIC_YOINK(".python/test/Sine-1000Hz-300ms.aif"); STATIC_YOINK(".python/test/__pycache__/"); STATIC_YOINK(".python/test/allsans.pem"); @@ -1041,7 +1038,3 @@ STATIC_YOINK(".python/test/xmltestdata/test.xml"); STATIC_YOINK(".python/test/xmltestdata/test.xml.out"); STATIC_YOINK(".python/test/zip_cp437_header.zip"); STATIC_YOINK(".python/test/zipdir.zip"); - -void doge(void) { - PyErr_Format(PyExc_ValueError, "the doge"); -} diff --git a/third_party/python/pycomp.c b/third_party/python/pycomp.c index 47b698b92..2cd1650cf 100644 --- a/third_party/python/pycomp.c +++ b/third_party/python/pycomp.c @@ -38,6 +38,7 @@ #include "third_party/python/Include/pylifecycle.h" #include "third_party/python/Include/pymacro.h" #include "third_party/python/Include/pythonrun.h" +#include "tool/build/lib/stripcomponents.h" /* clang-format off */ #define MANUAL "\ @@ -67,21 +68,6 @@ int optimize; char *inpath; char *outpath; -char * -StripComponents(const char *path, int n) -{ - const char *p; - while (n-- > 0) { - for (p = path; *p; ++p) { - if (*p == '/') { - path = p + 1; - break; - } - } - } - return (char *)path; -} - void GetOpts(int argc, char *argv[]) { diff --git a/third_party/python/pyobj.c b/third_party/python/pyobj.c new file mode 100644 index 000000000..db19455f7 --- /dev/null +++ b/third_party/python/pyobj.c @@ -0,0 +1,251 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8 -*-│ +│vi: set net ft=c ts=4 sts=4 sw=4 fenc=utf-8 :vi│ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2021 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/assert.h" +#include "libc/bits/bits.h" +#include "libc/calls/calls.h" +#include "libc/calls/struct/iovec.h" +#include "libc/calls/struct/stat.h" +#include "libc/elf/def.h" +#include "libc/fmt/conv.h" +#include "libc/log/check.h" +#include "libc/log/log.h" +#include "libc/runtime/gc.internal.h" +#include "libc/runtime/runtime.h" +#include "libc/sysv/consts/o.h" +#include "libc/x/x.h" +#include "third_party/getopt/getopt.h" +#include "third_party/python/Include/bytesobject.h" +#include "third_party/python/Include/compile.h" +#include "third_party/python/Include/fileutils.h" +#include "third_party/python/Include/import.h" +#include "third_party/python/Include/marshal.h" +#include "third_party/python/Include/pydebug.h" +#include "third_party/python/Include/pylifecycle.h" +#include "third_party/python/Include/pymacro.h" +#include "third_party/python/Include/pythonrun.h" +#include "tool/build/lib/elfwriter.h" +#include "tool/build/lib/stripcomponents.h" +/* clang-format off */ + +#define MANUAL "\ +SYNOPSIS\n\ +\n\ + pyobj.com [FLAGS] SOURCE\n\ +\n\ +OVERVIEW\n\ +\n\ + Python Objectifier\n\ +\n\ +FLAGS\n\ +\n\ + -o PATH output elf object file\n\ + -P STR prefix fake directory in zip\n\ + -C INT strip directory components from src in zip\n\ + -O0 don't optimize [default]\n\ + -O1 remove debug statements\n\ + -O2 remove debug statements and docstrings\n\ + -b binary only (don't include .py file)\n\ + -0 zip uncompressed\n\ + -n do nothing\n\ + -h help\n\ +\n" + +bool binonly; +int optimize; +char *pyfile; +char *outpath; +bool nocompress; +uint64_t image_base; +int strip_components; +const char *path_prefix; + +static void +GetOpts(int argc, char *argv[]) +{ + int opt; + while ((opt = getopt(argc, argv, "hn0Bb:O:o:C:P:")) != -1) { + switch (opt) { + case 'O': + optimize = atoi(optarg); + break; + case 'o': + outpath = optarg; + break; + case 'P': + path_prefix = optarg; + break; + case 'C': + strip_components = atoi(optarg); + break; + case 'b': + image_base = strtoul(optarg, NULL, 0); + break; + case 'B': + binonly = true; + break; + case '0': + nocompress = true; + break; + case 'n': + exit(0); + case 'h': + fputs(MANUAL, stdout); + exit(0); + default: + fputs(MANUAL, stderr); + exit(1); + } + } + if (argc - optind != 1) { + fputs("error: need one input file\n", stderr); + exit(1); + } + pyfile = argv[optind]; + if (!outpath) { + outpath = xstrcat(pyfile, ".o"); + } +} + +static char * +Dotify(char *s) +{ + size_t i; + for (i = 0; s[i]; ++i) { + if (s[i] == '/') { + s[i] = '.'; + } + } + return s; +} + +static void +Yoink(struct ElfWriter *elf, const char *symbol) +{ + elfwriter_align(elf, 1, 0); + elfwriter_startsection(elf, ".yoink", SHT_PROGBITS, + SHF_ALLOC | SHF_EXECINSTR); + elfwriter_yoink(elf, symbol); + elfwriter_finishsection(elf); +} + +static char * +GetZipFile(void) +{ + const char *zipfile; + zipfile = pyfile; + zipfile = StripComponents(zipfile, strip_components); + if (path_prefix) { + zipfile = gc(xjoinpaths(path_prefix, zipfile)); + } + return strdup(zipfile); +} + +static char * +GetZipDir(void) +{ + return xstrcat(gc(xdirname(gc(GetZipFile()))), '/'); +} + +static char * +GetSynFile(void) +{ + return xstrcat("/zip/", gc(GetZipFile())); +} + +static char * +GetModName(bool *ispkg) +{ + char *mod; + mod = Dotify(xstripexts(StripComponents(pyfile, strip_components))); + if ((*ispkg = endswith(mod, ".__init__"))) { + mod[strlen(mod) - strlen(".__init__")] = 0; + } + return mod; +} + +int +main(int argc, char *argv[]) +{ + char t[12]; + bool ispkg; + ssize_t rc; + struct stat st; + struct ElfWriter *elf; + struct timespec timestamp; + PyObject *code, *marshalled; + size_t i, pysize, pycsize, marsize; + char *s, *pydata, *pycdata, *mardata, *zipfile, *zipdir, *synfile, *modname; + ShowCrashReports(); + GetOpts(argc, argv); + marshalled = 0; + if (stat(pyfile, &st) == -1) perror(pyfile), exit(1); + CHECK_NOTNULL((pydata = gc(xslurp(pyfile, &pysize)))); + Py_NoUserSiteDirectory++; + Py_NoSiteFlag++; + Py_IgnoreEnvironmentFlag++; + Py_FrozenFlag++; + Py_SetProgramName(gc(utf8toutf32(argv[0], -1, 0))); + _Py_InitializeEx_Private(1, 0); + zipdir = gc(GetZipDir()); + zipfile = gc(GetZipFile()); + synfile = gc(GetSynFile()); + modname = gc(GetModName(&ispkg)); + code = Py_CompileStringExFlags(pydata, synfile, Py_file_input, NULL, optimize); + if (!code) goto error; + marshalled = PyMarshal_WriteObjectToString(code, Py_MARSHAL_VERSION); + Py_CLEAR(code); + if (!marshalled) goto error; + memset(×tamp, 0, sizeof(timestamp)); + assert(PyBytes_CheckExact(marshalled)); + mardata = PyBytes_AS_STRING(marshalled); + marsize = PyBytes_GET_SIZE(marshalled); + elf = elfwriter_open(outpath, 0644); + elfwriter_cargoculting(elf); + WRITE16LE(t+0, 3379); /* Python 3.6rc1 */ + WRITE16LE(t+2, READ16LE("\r\n")); + WRITE32LE(t+4, timestamp.tv_sec); + WRITE32LE(t+8, marsize); + pycsize = sizeof(t) + marsize; + pycdata = gc(malloc(pycsize)); + memcpy(pycdata, t, sizeof(t)); + memcpy(pycdata + sizeof(t), mardata, marsize); + if (ispkg) { + elfwriter_zip(elf, zipdir, zipdir, strlen(zipdir), + pydata, pysize, 040755, timestamp, timestamp, + timestamp, nocompress, image_base); + } + if (!binonly) { + elfwriter_zip(elf, gc(xstrcat("py:", modname)), zipfile, + strlen(zipfile), pydata, pysize, st.st_mode, timestamp, + timestamp, timestamp, nocompress, image_base); + } + elfwriter_zip(elf, gc(xstrcat("pyc:", modname)), gc(xstrcat(zipfile, 'c')), + strlen(zipfile) + 1, pycdata, pycsize, st.st_mode, timestamp, + timestamp, timestamp, nocompress, image_base); + Yoink(elf, "__zip_start"); + elfwriter_close(elf); + Py_CLEAR(marshalled); + Py_Finalize(); + return 0; +error: + PyErr_Print(); + Py_Finalize(); + if (marshalled) Py_DECREF(marshalled); + return 1; +} diff --git a/third_party/python/python.mk b/third_party/python/python.mk index 1ebd9099a..6afd4444b 100644 --- a/third_party/python/python.mk +++ b/third_party/python/python.mk @@ -11,8 +11,6 @@ THIRD_PARTY_PYTHON_STAGE2 = \ $(THIRD_PARTY_PYTHON_STAGE2_A_DEPS) \ $(THIRD_PARTY_PYTHON_STAGE2_A) \ $(THIRD_PARTY_PYTHON_STDLIB_PYS_A) \ - $(THIRD_PARTY_PYTHON_STDLIB_PYCS_A) \ - $(THIRD_PARTY_PYTHON_STDLIB_DIRS_A) \ $(THIRD_PARTY_PYTHON_STDLIB_DATA_A) THIRD_PARTY_PYTHON_ARTIFACTS = \ @@ -26,6 +24,7 @@ THIRD_PARTY_PYTHON_BINS = \ THIRD_PARTY_PYTHON_COMS = \ o/$(MODE)/third_party/python/python.com \ o/$(MODE)/third_party/python/freeze.com \ + o/$(MODE)/third_party/python/pyobj.com \ o/$(MODE)/third_party/python/pycomp.com \ o/$(MODE)/third_party/python/pythontester.com @@ -37,17 +36,12 @@ THIRD_PARTY_PYTHON_CHECKS = \ THIRD_PARTY_PYTHON_STAGE1_A = o/$(MODE)/third_party/python/python-stage1.a THIRD_PARTY_PYTHON_STAGE2_A = o/$(MODE)/third_party/python/python-stage2.a THIRD_PARTY_PYTHON_STDLIB_PYS_A = o/$(MODE)/third_party/python/python-stdlib-pys.a -THIRD_PARTY_PYTHON_STDLIB_PYCS_A = o/$(MODE)/third_party/python/python-stdlib-pycs.a -THIRD_PARTY_PYTHON_STDLIB_DIRS_A = o/$(MODE)/third_party/python/python-stdlib-dirs.a THIRD_PARTY_PYTHON_STDLIB_DATA_A = o/$(MODE)/third_party/python/python-stdlib-data.a THIRD_PARTY_PYTHON_STAGE1_A_OBJS = $(THIRD_PARTY_PYTHON_STAGE1_A_SRCS:%.c=o/$(MODE)/%.o) THIRD_PARTY_PYTHON_STAGE2_A_OBJS = $(THIRD_PARTY_PYTHON_STAGE2_A_SRCS:%.c=o/$(MODE)/%.o) -THIRD_PARTY_PYTHON_STDLIB_PYS_OBJS = $(THIRD_PARTY_PYTHON_STDLIB_PYS:%=o/$(MODE)/%.zip.o) -THIRD_PARTY_PYTHON_STDLIB_PYCS_OBJS = $(THIRD_PARTY_PYTHON_STDLIB_PYCS:%=%.zip.o) -THIRD_PARTY_PYTHON_STDLIB_DIRS_OBJS = $(THIRD_PARTY_PYTHON_STDLIB_DIRS:%=o/$(MODE)/%.zip.o) +THIRD_PARTY_PYTHON_STDLIB_PYS_OBJS = $(THIRD_PARTY_PYTHON_STDLIB_PYS:%.py=o/$(MODE)/%.o) THIRD_PARTY_PYTHON_STDLIB_DATA_OBJS = $(THIRD_PARTY_PYTHON_STDLIB_DATA:%=o/$(MODE)/%.zip.o) -THIRD_PARTY_PYTHON_STDLIB_PYCS = $(THIRD_PARTY_PYTHON_STDLIB_PYS:%=o/$(MODE)/%c) THIRD_PARTY_PYTHON_HDRS = \ third_party/python/Include/yoink.h \ @@ -71,7 +65,7 @@ THIRD_PARTY_PYTHON_HDRS = \ third_party/python/Include/codecs.h \ third_party/python/Include/compile.h \ third_party/python/Include/complexobject.h \ - third_party/python/Include/cosmo.h \ + third_party/python/Include/cosmo.h \ third_party/python/Include/datetime.h \ third_party/python/Include/descrobject.h \ third_party/python/Include/dictobject.h \ @@ -533,98 +527,8 @@ THIRD_PARTY_PYTHON_STAGE2_A_SRCS = \ third_party/python/Python/pyfpe.c \ third_party/python/Python/sigcheck.c -THIRD_PARTY_PYTHON_STDLIB_DIRS = \ - third_party/python/Lib/ \ - third_party/python/Lib/asyncio/ \ - third_party/python/Lib/collections/ \ - third_party/python/Lib/dbm/ \ - third_party/python/Lib/distutils/ \ - third_party/python/Lib/distutils/command/ \ - third_party/python/Lib/distutils/tests/ \ - third_party/python/Lib/email/ \ - third_party/python/Lib/email/mime/ \ - third_party/python/Lib/encodings/ \ - third_party/python/Lib/ensurepip/ \ - third_party/python/Lib/ensurepip/_bundled/ \ - third_party/python/Lib/html/ \ - third_party/python/Lib/http/ \ - third_party/python/Lib/importlib/ \ - third_party/python/Lib/json/ \ - third_party/python/Lib/logging/ \ - third_party/python/Lib/msilib/ \ - third_party/python/Lib/multiprocessing/ \ - third_party/python/Lib/multiprocessing/dummy/ \ - third_party/python/Lib/sqlite3/ \ - third_party/python/Lib/unittest/ \ - third_party/python/Lib/urllib/ \ - third_party/python/Lib/venv/ \ - third_party/python/Lib/venv/scripts/common/ \ - third_party/python/Lib/venv/scripts/nt/ \ - third_party/python/Lib/venv/scripts/posix/ \ - third_party/python/Lib/wsgiref/ \ - third_party/python/Lib/xml/ \ - third_party/python/Lib/xml/dom/ \ - third_party/python/Lib/xml/etree/ \ - third_party/python/Lib/xml/parsers/ \ - third_party/python/Lib/xml/sax/ \ - third_party/python/Lib/xmlrpc/ \ - third_party/python/Lib/test/ \ - third_party/python/Lib/test/xmltestdata/ \ - third_party/python/Lib/test/test_email/ \ - third_party/python/Lib/test/test_email/data/ \ - third_party/python/Lib/test/sndhdrdata/ \ - third_party/python/Lib/test/test_asyncio/ \ - third_party/python/Lib/test/audiodata/ \ - third_party/python/Lib/test/imghdrdata/ \ - third_party/python/Lib/test/decimaltestdata/ \ - third_party/python/Lib/test/test_import/ \ - third_party/python/Lib/test/test_import/data/ \ - third_party/python/Lib/test/test_import/data/package/ \ - third_party/python/Lib/test/test_import/data/package2/ \ - third_party/python/Lib/test/test_import/data/circular_imports/ \ - third_party/python/Lib/test/test_import/data/circular_imports/subpkg/ \ - third_party/python/Lib/test/libregrtest/ \ - third_party/python/Lib/test/leakers/ \ - third_party/python/Lib/test/test_json/ \ - third_party/python/Lib/test/eintrdata/ \ - third_party/python/Lib/test/support/ \ - third_party/python/Lib/test/test_importlib/ \ - third_party/python/Lib/test/test_importlib/extension/ \ - third_party/python/Lib/test/test_importlib/frozen/ \ - third_party/python/Lib/test/test_importlib/import_/ \ - third_party/python/Lib/test/test_importlib/builtin/ \ - third_party/python/Lib/test/test_importlib/source/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project2/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project2/parent/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project2/parent/child/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/portion2/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/portion2/foo/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project3/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project3/parent/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project3/parent/child/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/portion1/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/portion1/foo/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/both_portions/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/both_portions/foo/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project1/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project1/parent/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/project1/parent/child/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/module_and_namespace_package/ \ - third_party/python/Lib/test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test/ \ - third_party/python/Lib/test/test_warnings/ \ - third_party/python/Lib/test/test_warnings/data/ \ - third_party/python/Lib/test/capath/ \ - third_party/python/Lib/test/dtracedata/ \ - third_party/python/Lib/test/subprocessdata/ \ - third_party/python/Lib/test/crashers/ \ - third_party/python/Lib/test/cjkencodings/ \ - third_party/python/Lib/test/test_tools/ \ - third_party/python/Lib/test/tracedmodules/ - THIRD_PARTY_PYTHON_STDLIB_DATA = \ + third_party/python/Lib/ \ third_party/python/Lib/distutils/command/command_template \ third_party/python/Lib/distutils/tests/Setup.sample \ third_party/python/Lib/email/architecture.rst \ @@ -2181,6 +2085,7 @@ THIRD_PARTY_PYTHON_STAGE1_A_DIRECTDEPS = \ LIBC_TINYMATH \ LIBC_UNICODE \ LIBC_X \ + TOOL_BUILD_LIB \ THIRD_PARTY_GETOPT THIRD_PARTY_PYTHON_STAGE1_A_DEPS = \ @@ -2220,6 +2125,14 @@ THIRD_PARTY_PYTHON_STAGE2_A_DIRECTDEPS = \ THIRD_PARTY_PYTHON_STAGE2_A_DEPS = \ $(call uniq,$(foreach x,$(THIRD_PARTY_PYTHON_STAGE2_A_DIRECTDEPS),$($(x)))) +o/$(MODE)/third_party/python/pyobj.com.dbg: \ + $(THIRD_PARTY_PYTHON_STAGE1) \ + $(THIRD_PARTY_PYTHON_STAGE1_A).pkg \ + o/$(MODE)/third_party/python/pyobj.o \ + $(CRT) \ + $(APE) + @$(APELINK) + o/$(MODE)/third_party/python/pycomp.com.dbg: \ $(THIRD_PARTY_PYTHON_STAGE1) \ $(THIRD_PARTY_PYTHON_STAGE1_A).pkg \ @@ -2256,6 +2169,11 @@ o/$(MODE)/third_party/python/pythontester.com.dbg: \ $(APE) @$(APELINK) +o/$(MODE)/third_party/python/pyobj: \ + o/$(MODE)/third_party/python/pyobj.com + @cp -f $< $@ + @$@ -n + o/$(MODE)/third_party/python/pycomp: \ o/$(MODE)/third_party/python/pycomp.com @cp -f $< $@ @@ -2287,9 +2205,7 @@ $(THIRD_PARTY_PYTHON_STAGE2_A): \ $(THIRD_PARTY_PYTHON_STAGE2_A_OBJS) $(THIRD_PARTY_PYTHON_STDLIB_PYS_A): $(THIRD_PARTY_PYTHON_STDLIB_PYS_OBJS) -$(THIRD_PARTY_PYTHON_STDLIB_DIRS_A): $(THIRD_PARTY_PYTHON_STDLIB_DIRS_OBJS) $(THIRD_PARTY_PYTHON_STDLIB_DATA_A): $(THIRD_PARTY_PYTHON_STDLIB_DATA_OBJS) -$(THIRD_PARTY_PYTHON_STDLIB_PYCS_A): $(THIRD_PARTY_PYTHON_STDLIB_PYCS_OBJS) $(THIRD_PARTY_PYTHON_STAGE1_A).pkg: \ $(THIRD_PARTY_PYTHON_STAGE1_A_OBJS) \ @@ -2332,11 +2248,8 @@ o/$(MODE)/third_party/python/Modules/faulthandler.o: \ OVERRIDE_CFLAGS += \ -fno-optimize-sibling-calls -$(THIRD_PARTY_PYTHON_STDLIB_PYS_OBJS): ZIPOBJ_FLAGS += -P.python -C3 -$(THIRD_PARTY_PYTHON_STDLIB_DIRS_OBJS): ZIPOBJ_FLAGS += -P.python -C3 +$(THIRD_PARTY_PYTHON_STDLIB_PYS_OBJS): PYFLAGS += -P.python -C3 $(THIRD_PARTY_PYTHON_STDLIB_DATA_OBJS): ZIPOBJ_FLAGS += -P.python -C3 -$(THIRD_PARTY_PYTHON_STDLIB_PYCS_OBJS): ZIPOBJ_FLAGS += -P.python -C5 -.PRECIOUS: $(THIRD_PARTY_PYTHON_STDLIB_PYCS) o/$(MODE)/third_party/python/Python/ceval.o: QUOTA = -M512m o/$(MODE)/third_party/python/Objects/unicodeobject.o: QUOTA += -C16 @@ -2352,6 +2265,7 @@ THIRD_PARTY_PYTHON_LIBS = \ THIRD_PARTY_PYTHON_OBJS = \ $(foreach x,$(THIRD_PARTY_PYTHON_ARTIFACTS),$($(x)_OBJS)) \ + o/$(MODE)/third_party/python/pyobj.o \ o/$(MODE)/third_party/python/pycomp.o \ o/$(MODE)/third_party/python/Programs/freeze.o \ o/$(MODE)/third_party/python/Programs/python.o \ @@ -2359,6 +2273,7 @@ THIRD_PARTY_PYTHON_OBJS = \ THIRD_PARTY_PYTHON_SRCS = \ $(foreach x,$(THIRD_PARTY_PYTHON_ARTIFACTS),$($(x)_SRCS)) \ + third_party/python/pyobj.c \ third_party/python/pycomp.c \ third_party/python/Programs/freeze.c \ third_party/python/Programs/python.c \ diff --git a/tool/build/lib/buildlib.mk b/tool/build/lib/buildlib.mk index 5f3012b60..383200cab 100644 --- a/tool/build/lib/buildlib.mk +++ b/tool/build/lib/buildlib.mk @@ -48,7 +48,8 @@ TOOL_BUILD_LIB_A_DIRECTDEPS = \ NET_HTTPS \ THIRD_PARTY_COMPILER_RT \ THIRD_PARTY_MBEDTLS \ - THIRD_PARTY_XED + THIRD_PARTY_XED \ + THIRD_PARTY_ZLIB TOOL_BUILD_LIB_A_DEPS := \ $(call uniq,$(foreach x,$(TOOL_BUILD_LIB_A_DIRECTDEPS),$($(x)))) diff --git a/tool/build/lib/elfwriter.h b/tool/build/lib/elfwriter.h index 309d15ce0..df70f460f 100644 --- a/tool/build/lib/elfwriter.h +++ b/tool/build/lib/elfwriter.h @@ -1,5 +1,6 @@ #ifndef COSMOPOLITAN_TOOL_BUILD_LIB_ELFWRITER_H_ #define COSMOPOLITAN_TOOL_BUILD_LIB_ELFWRITER_H_ +#include "libc/calls/struct/timespec.h" #include "libc/elf/struct/ehdr.h" #include "libc/elf/struct/rela.h" #include "libc/elf/struct/shdr.h" @@ -48,7 +49,7 @@ struct ElfWriter { struct ElfWriterSyms syms[3][1]; struct { size_t i, j, n; - struct ElfWriterRela * p; + struct ElfWriterRela *p; } relas[1]; struct Interner *strtab; struct Interner *shstrtab; @@ -70,6 +71,9 @@ struct ElfWriterSymRef elfwriter_appendsym(struct ElfWriter *, const char *, int, int, size_t, size_t); void elfwriter_yoink(struct ElfWriter *, const char *); void elfwriter_setsection(struct ElfWriter *, struct ElfWriterSymRef, uint16_t); +void elfwriter_zip(struct ElfWriter *, const char *, const char *, size_t, + const void *, size_t, uint32_t, struct timespec, + struct timespec, struct timespec, bool, uint64_t); COSMOPOLITAN_C_END_ #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ diff --git a/tool/build/lib/elfwriter_zip.c b/tool/build/lib/elfwriter_zip.c new file mode 100644 index 000000000..789459f47 --- /dev/null +++ b/tool/build/lib/elfwriter_zip.c @@ -0,0 +1,221 @@ +/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│ +│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2021 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚─────────────────────────────────────────────────────────────────────────────*/ +#include "libc/bits/bits.h" +#include "libc/calls/calls.h" +#include "libc/calls/struct/timespec.h" +#include "libc/dos.h" +#include "libc/elf/def.h" +#include "libc/fmt/conv.h" +#include "libc/limits.h" +#include "libc/log/check.h" +#include "libc/nexgen32e/crc32.h" +#include "libc/nt/enum/fileflagandattributes.h" +#include "libc/rand/rand.h" +#include "libc/runtime/gc.internal.h" +#include "libc/time/struct/tm.h" +#include "libc/time/time.h" +#include "libc/x/x.h" +#include "libc/zip.h" +#include "third_party/zlib/zlib.h" +#include "tool/build/lib/elfwriter.h" +#include "tool/build/lib/isnocompressext.h" + +#define ZIP_LOCALFILE_SECTION ".zip.2." +#define ZIP_DIRECTORY_SECTION ".zip.4." + +static bool ShouldCompress(const char *name, size_t namesize, + const unsigned char *data, size_t datasize, + bool nocompress) { + return !nocompress && datasize >= 64 && !IsNoCompressExt(name, namesize) && + (datasize < 1000 || MeasureEntropy((void *)data, 1000) < 7); +} + +static void GetDosLocalTime(int64_t utcunixts, uint16_t *out_time, + uint16_t *out_date) { + struct tm tm; + CHECK_NOTNULL(localtime_r(&utcunixts, &tm)); + *out_time = DOS_TIME(tm.tm_hour, tm.tm_min, tm.tm_sec); + *out_date = DOS_DATE(tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday + 1); +} + +static int DetermineVersionNeededToExtract(int method) { + if (method == kZipCompressionDeflate) { + return kZipEra1993; + } else { + return kZipEra1989; + } +} + +static unsigned char *EmitZipLfileHdr(unsigned char *p, const void *name, + size_t namesize, uint32_t crc, + uint8_t era, uint16_t gflags, + uint16_t method, uint16_t mtime, + uint16_t mdate, size_t compsize, + size_t uncompsize) { + p = WRITE32LE(p, kZipLfileHdrMagic); + *p++ = era; + *p++ = kZipOsDos; + p = WRITE16LE(p, gflags); + p = WRITE16LE(p, method); + p = WRITE16LE(p, mtime); + p = WRITE16LE(p, mdate); + p = WRITE32LE(p, crc); + p = WRITE32LE(p, compsize); + p = WRITE32LE(p, uncompsize); + p = WRITE16LE(p, namesize); + p = WRITE16LE(p, 0); /* extra */ + return mempcpy(p, name, namesize); +} + +static void EmitZipCdirHdr(unsigned char *p, const void *name, size_t namesize, + uint32_t crc, uint8_t era, uint16_t gflags, + uint16_t method, uint16_t mtime, uint16_t mdate, + uint16_t iattrs, uint16_t dosmode, uint16_t unixmode, + size_t compsize, size_t uncompsize, + size_t commentsize, struct timespec mtim, + struct timespec atim, struct timespec ctim) { + uint64_t mt, at, ct; + p = WRITE32LE(p, kZipCfileHdrMagic); + *p++ = kZipCosmopolitanVersion; + *p++ = kZipOsUnix; + *p++ = era; + *p++ = kZipOsDos; + p = WRITE16LE(p, gflags); + p = WRITE16LE(p, method); + p = WRITE16LE(p, mtime); + p = WRITE16LE(p, mdate); + /* 16 */ + p = WRITE32LE(p, crc); + p = WRITE32LE(p, compsize); + p = WRITE32LE(p, uncompsize); + p = WRITE16LE(p, namesize); +#define CFILE_HDR_SIZE (kZipCfileHdrMinSize + 36) + p = WRITE16LE(p, 36); /* extra size */ + /* 32 */ + p = WRITE16LE(p, commentsize); + p = WRITE16LE(p, 0); /* disk */ + p = WRITE16LE(p, iattrs); + p = WRITE16LE(p, dosmode); + p = WRITE16LE(p, unixmode); + p = WRITE32LE(p, 0); /* RELOCATE ME (kZipCfileOffsetOffset) */ + /* 46 */ + memcpy(p, name, namesize); + p += namesize; + p = WRITE16LE(p, kZipExtraNtfs); + p = WRITE16LE(p, 32); + p = WRITE32LE(p, 0); + p = WRITE16LE(p, 1); + p = WRITE16LE(p, 24); + mt = TimeSpecToWindowsTime(mtim); + at = TimeSpecToWindowsTime(atim); + ct = TimeSpecToWindowsTime(ctim); + p = WRITE64LE(p, mt); + p = WRITE64LE(p, at); + p = WRITE64LE(p, ct); +} + +/** + * Embeds zip file in elf object. + */ +void elfwriter_zip(struct ElfWriter *elf, const char *symbol, const char *name, + size_t namesize, const void *data, size_t size, + uint32_t mode, struct timespec mtim, struct timespec atim, + struct timespec ctim, bool nocompress, uint64_t imagebase) { + z_stream zs; + uint8_t era; + uint32_t crc; + unsigned char *lfile, *cfile; + struct ElfWriterSymRef lfilesym; + size_t lfilehdrsize, uncompsize, compsize, commentsize; + uint16_t method, gflags, mtime, mdate, iattrs, dosmode; + + gflags = 0; + iattrs = 0; + compsize = size; + uncompsize = size; + CHECK_LE(uncompsize, UINT32_MAX); + lfilehdrsize = kZipLfileHdrMinSize + namesize; + crc = crc32_z(0, data, uncompsize); + GetDosLocalTime(mtim.tv_sec, &mtime, &mdate); + if (IsUtf8(name, namesize)) gflags |= kZipGflagUtf8; + if (S_ISREG(mode) && IsText(data, size)) { + iattrs |= kZipIattrText; + } + commentsize = kZipCdirHdrLinkableSize - (CFILE_HDR_SIZE + namesize); + dosmode = !(mode & 0200) ? kNtFileAttributeReadonly : 0; + method = ShouldCompress(name, namesize, data, size, nocompress) + ? kZipCompressionDeflate + : kZipCompressionNone; + + /* emit embedded file content w/ pkzip local file header */ + elfwriter_align(elf, 1, 0); + elfwriter_startsection(elf, + gc(xasprintf("%s%s", ZIP_LOCALFILE_SECTION, name)), + SHT_PROGBITS, SHF_ALLOC); + if (method == kZipCompressionDeflate) { + CHECK_EQ(Z_OK, deflateInit2(memset(&zs, 0, sizeof(zs)), + Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, + MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY)); + zs.next_in = data; + zs.avail_in = uncompsize; + zs.next_out = ((lfile = elfwriter_reserve( + elf, (lfilehdrsize + + (zs.avail_out = compressBound(uncompsize))))) + + lfilehdrsize); + CHECK_EQ(Z_STREAM_END, deflate(&zs, Z_FINISH)); + CHECK_EQ(Z_OK, deflateEnd(&zs)); + if (zs.total_out < uncompsize) { + compsize = zs.total_out; + } else { + method = kZipCompressionNone; + } + } else { + lfile = elfwriter_reserve(elf, lfilehdrsize + uncompsize); + } + if (method == kZipCompressionNone) { + memcpy(lfile + lfilehdrsize, data, uncompsize); + } + era = method ? kZipEra1993 : kZipEra1989; + EmitZipLfileHdr(lfile, name, namesize, crc, era, gflags, method, mtime, mdate, + compsize, uncompsize); + elfwriter_commit(elf, lfilehdrsize + compsize); + lfilesym = elfwriter_appendsym(elf, gc(xasprintf("%s%s", "zip+lfile:", name)), + ELF64_ST_INFO(STB_LOCAL, STT_OBJECT), + STV_DEFAULT, 0, lfilehdrsize); + elfwriter_appendsym(elf, symbol, ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT), + STV_DEFAULT, lfilehdrsize, compsize); + elfwriter_finishsection(elf); + + /* emit central directory record */ + elfwriter_align(elf, 1, 0); + elfwriter_startsection(elf, + gc(xasprintf("%s%s", ZIP_DIRECTORY_SECTION, name)), + SHT_PROGBITS, SHF_ALLOC); + EmitZipCdirHdr((cfile = elfwriter_reserve(elf, kZipCdirHdrLinkableSize)), + name, namesize, crc, era, gflags, method, mtime, mdate, iattrs, + dosmode, mode, compsize, uncompsize, commentsize, mtim, atim, + ctim); + elfwriter_appendsym(elf, gc(xasprintf("%s%s", "zip+cdir:", name)), + ELF64_ST_INFO(STB_LOCAL, STT_OBJECT), STV_DEFAULT, 0, + kZipCdirHdrLinkableSize); + elfwriter_appendrela(elf, kZipCfileOffsetOffset, lfilesym, R_X86_64_32, + -imagebase); + elfwriter_commit(elf, kZipCdirHdrLinkableSize); + elfwriter_finishsection(elf); +} diff --git a/tool/build/zipobj.c b/tool/build/zipobj.c index 3b6a79e38..fa9a2b4a5 100644 --- a/tool/build/zipobj.c +++ b/tool/build/zipobj.c @@ -16,50 +16,25 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/alg/arraylist.internal.h" -#include "libc/bits/bits.h" -#include "libc/bits/bswap.h" -#include "libc/bits/safemacros.internal.h" #include "libc/calls/calls.h" #include "libc/calls/struct/stat.h" -#include "libc/calls/struct/timespec.h" -#include "libc/dos.h" -#include "libc/elf/def.h" #include "libc/fmt/conv.h" #include "libc/limits.h" #include "libc/log/check.h" #include "libc/log/log.h" -#include "libc/macros.internal.h" -#include "libc/mem/alloca.h" -#include "libc/nexgen32e/crc32.h" -#include "libc/nt/enum/fileflagandattributes.h" -#include "libc/nt/struct/imageauxsymbolex.internal.h" -#include "libc/rand/rand.h" #include "libc/runtime/gc.internal.h" #include "libc/runtime/runtime.h" -#include "libc/runtime/symbols.internal.h" #include "libc/stdio/stdio.h" -#include "libc/str/str.h" #include "libc/sysv/consts/ex.h" #include "libc/sysv/consts/exit.h" -#include "libc/sysv/consts/fileno.h" #include "libc/sysv/consts/map.h" #include "libc/sysv/consts/o.h" -#include "libc/sysv/consts/ok.h" #include "libc/sysv/consts/prot.h" -#include "libc/time/struct/tm.h" -#include "libc/time/time.h" #include "libc/x/x.h" -#include "libc/zip.h" #include "third_party/getopt/getopt.h" -#include "third_party/zlib/zlib.h" #include "tool/build/lib/elfwriter.h" -#include "tool/build/lib/isnocompressext.h" #include "tool/build/lib/stripcomponents.h" -#define ZIP_LOCALFILE_SECTION ".zip.2." -#define ZIP_DIRECTORY_SECTION ".zip.4." - char *name_; char *yoink_; char *symbol_; @@ -124,187 +99,13 @@ void GetOpts(int *argc, char ***argv) { CHECK_NOTNULL(outpath_); } -bool ShouldCompress(const char *name, size_t namesize, - const unsigned char *data, size_t datasize) { - return !nocompress_ && datasize >= 64 && !IsNoCompressExt(name, namesize) && - (datasize < 1000 || MeasureEntropy((void *)data, 1000) < 7); -} - -void GetDosLocalTime(int64_t utcunixts, uint16_t *out_time, - uint16_t *out_date) { - struct tm tm; - CHECK_NOTNULL(localtime_r(&utcunixts, &tm)); - *out_time = DOS_TIME(tm.tm_hour, tm.tm_min, tm.tm_sec); - *out_date = DOS_DATE(tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday + 1); -} - -static int DetermineVersionNeededToExtract(int method) { - if (method == kZipCompressionDeflate) { - return kZipEra1993; - } else { - return kZipEra1989; - } -} - -static unsigned char *EmitZipLfileHdr(unsigned char *p, const void *name, - size_t namesize, uint32_t crc, - uint8_t era, uint16_t gflags, - uint16_t method, uint16_t mtime, - uint16_t mdate, size_t compsize, - size_t uncompsize) { - p = WRITE32LE(p, kZipLfileHdrMagic); - *p++ = era; - *p++ = kZipOsDos; - p = WRITE16LE(p, gflags); - p = WRITE16LE(p, method); - p = WRITE16LE(p, mtime); - p = WRITE16LE(p, mdate); - p = WRITE32LE(p, crc); - p = WRITE32LE(p, compsize); - p = WRITE32LE(p, uncompsize); - p = WRITE16LE(p, namesize); - p = WRITE16LE(p, 0); /* extra */ - return mempcpy(p, name, namesize); -} - -static void EmitZipCdirHdr(unsigned char *p, const void *name, size_t namesize, - uint32_t crc, uint8_t era, uint16_t gflags, - uint16_t method, uint16_t mtime, uint16_t mdate, - uint16_t iattrs, uint16_t dosmode, uint16_t unixmode, - size_t compsize, size_t uncompsize, - size_t commentsize, struct stat *st) { - uint64_t mt, at, ct; - p = WRITE32LE(p, kZipCfileHdrMagic); - *p++ = kZipCosmopolitanVersion; - *p++ = kZipOsUnix; - *p++ = era; - *p++ = kZipOsDos; - p = WRITE16LE(p, gflags); - p = WRITE16LE(p, method); - p = WRITE16LE(p, mtime); - p = WRITE16LE(p, mdate); - /* 16 */ - p = WRITE32LE(p, crc); - p = WRITE32LE(p, compsize); - p = WRITE32LE(p, uncompsize); - p = WRITE16LE(p, namesize); -#define CFILE_HDR_SIZE (kZipCfileHdrMinSize + 36) - p = WRITE16LE(p, 36); /* extra size */ - /* 32 */ - p = WRITE16LE(p, commentsize); - p = WRITE16LE(p, 0); /* disk */ - p = WRITE16LE(p, iattrs); - p = WRITE16LE(p, dosmode); - p = WRITE16LE(p, unixmode); - p = WRITE32LE(p, 0); /* RELOCATE ME (kZipCfileOffsetOffset) */ - /* 46 */ - memcpy(p, name, namesize); - p += namesize; - p = WRITE16LE(p, kZipExtraNtfs); - p = WRITE16LE(p, 32); - p = WRITE32LE(p, 0); - p = WRITE16LE(p, 1); - p = WRITE16LE(p, 24); -#define NTTIME(t) \ - (t.tv_sec + MODERNITYSECONDS) * HECTONANOSECONDS + t.tv_nsec / 100 - mt = NTTIME(st->st_mtim); - at = NTTIME(st->st_atim); - ct = NTTIME(st->st_ctim); - p = WRITE64LE(p, mt); - p = WRITE64LE(p, at); - p = WRITE64LE(p, ct); -} - -void EmitZip(struct ElfWriter *elf, const char *name, size_t namesize, - const unsigned char *data, struct stat *st) { - z_stream zs; - uint8_t era; - uint32_t crc; - unsigned char *lfile, *cfile; - struct ElfWriterSymRef lfilesym; - size_t lfilehdrsize, uncompsize, compsize, commentsize; - uint16_t method, gflags, mtime, mdate, iattrs, dosmode; - - gflags = 0; - iattrs = 0; - compsize = st->st_size; - uncompsize = st->st_size; - CHECK_LE(uncompsize, UINT32_MAX); - lfilehdrsize = kZipLfileHdrMinSize + namesize; - crc = crc32_z(0, data, uncompsize); - GetDosLocalTime(st->st_mtim.tv_sec, &mtime, &mdate); - if (IsUtf8(name, namesize)) gflags |= kZipGflagUtf8; - if (S_ISREG(st->st_mode) && IsText(data, st->st_size)) { - iattrs |= kZipIattrText; - } - commentsize = kZipCdirHdrLinkableSize - (CFILE_HDR_SIZE + namesize); - dosmode = !(st->st_mode & 0200) ? kNtFileAttributeReadonly : 0; - method = ShouldCompress(name, namesize, data, st->st_size) - ? kZipCompressionDeflate - : kZipCompressionNone; - - /* emit embedded file content w/ pkzip local file header */ - elfwriter_align(elf, 1, 0); - elfwriter_startsection(elf, - gc(xasprintf("%s%s", ZIP_LOCALFILE_SECTION, name)), - SHT_PROGBITS, SHF_ALLOC); - if (method == kZipCompressionDeflate) { - CHECK_EQ(Z_OK, deflateInit2(memset(&zs, 0, sizeof(zs)), - Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, - MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY)); - zs.next_in = data; - zs.avail_in = uncompsize; - zs.next_out = ((lfile = elfwriter_reserve( - elf, (lfilehdrsize + - (zs.avail_out = compressBound(uncompsize))))) + - lfilehdrsize); - CHECK_EQ(Z_STREAM_END, deflate(&zs, Z_FINISH)); - CHECK_EQ(Z_OK, deflateEnd(&zs)); - if (zs.total_out < uncompsize) { - compsize = zs.total_out; - } else { - method = kZipCompressionNone; - } - } else { - lfile = elfwriter_reserve(elf, lfilehdrsize + uncompsize); - } - if (method == kZipCompressionNone) { - memcpy(lfile + lfilehdrsize, data, uncompsize); - } - era = method ? kZipEra1993 : kZipEra1989; - EmitZipLfileHdr(lfile, name, namesize, crc, era, gflags, method, mtime, mdate, - compsize, uncompsize); - elfwriter_commit(elf, lfilehdrsize + compsize); - lfilesym = elfwriter_appendsym(elf, gc(xasprintf("%s%s", "zip+lfile:", name)), - ELF64_ST_INFO(STB_LOCAL, STT_OBJECT), - STV_DEFAULT, 0, lfilehdrsize); - elfwriter_appendsym(elf, name, ELF64_ST_INFO(STB_GLOBAL, STT_OBJECT), - STV_DEFAULT, lfilehdrsize, compsize); - elfwriter_finishsection(elf); - - /* emit central directory record */ - elfwriter_align(elf, 1, 0); - elfwriter_startsection(elf, - gc(xasprintf("%s%s", ZIP_DIRECTORY_SECTION, name)), - SHT_PROGBITS, SHF_ALLOC); - EmitZipCdirHdr((cfile = elfwriter_reserve(elf, kZipCdirHdrLinkableSize)), - name, namesize, crc, era, gflags, method, mtime, mdate, iattrs, - dosmode, st->st_mode, compsize, uncompsize, commentsize, st); - elfwriter_appendsym(elf, gc(xasprintf("%s%s", "zip+cdir:", name)), - ELF64_ST_INFO(STB_LOCAL, STT_OBJECT), STV_DEFAULT, 0, - kZipCdirHdrLinkableSize); - elfwriter_appendrela(elf, kZipCfileOffsetOffset, lfilesym, R_X86_64_32, - -image_base_); - elfwriter_commit(elf, kZipCdirHdrLinkableSize); - elfwriter_finishsection(elf); -} - void ProcessFile(struct ElfWriter *elf, const char *path) { int fd; void *map; size_t pathlen; struct stat st; const char *name; + struct timespec timestamp; CHECK_NE(-1, (fd = open(path, O_RDONLY))); CHECK_NE(-1, fstat(fd, &st)); if (S_ISDIR(st.st_mode)) { @@ -329,7 +130,9 @@ void ProcessFile(struct ElfWriter *elf, const char *path) { name = gc(xasprintf("%s/", name)); } } - EmitZip(elf, name, strlen(name), map, &st); + memset(×tamp, 0, sizeof(timestamp)); + elfwriter_zip(elf, name, name, strlen(name), map, st.st_size, st.st_mode, + timestamp, timestamp, timestamp, nocompress_, image_base_); if (st.st_size) CHECK_NE(-1, munmap(map, st.st_size)); close(fd); } @@ -362,7 +165,6 @@ void zipobj(int argc, char **argv) { } int main(int argc, char **argv) { - showcrashreports(); zipobj(argc, argv); return 0; }