test -d _build/oil && \
  build/ovm-actions.sh app-deps oil /home/uke/oil:/home/uke/oil/vendor bin.oil
build/ovm-actions.sh make-dotd oil _build/oil/app-deps-c.txt > _build/oil/ovm.d
test -d _build/hello && \
  build/ovm-actions.sh app-deps hello /home/uke/oil/build/testdata:/home/uke/oil/vendor hello
Hello from hello.py
sys.path: ['/home/uke/oil/build', '/home/uke/oil/build/testdata', '/home/uke/oil/vendor', '/usr/local/lib/python27.zip', '/home/uke/tmp/Python-2.7.13/Lib', '/home/uke/tmp/Python-2.7.13/Lib/plat-linux2', '/home/uke/tmp/Python-2.7.13/Lib/lib-tk', '/home/uke/tmp/Python-2.7.13/Lib/lib-old', '/home/uke/oil/../oil_DEPS/cpython-full/build/lib.linux-x86_64-2.7']
sys.argv: ['build/dynamic_deps.py', 'both', 'hello', '_build/hello/app-deps']
hello _OVM_IS_BUNDLE None
Hello from lib.py
build/ovm-actions.sh make-dotd hello _build/hello/app-deps-c.txt > _build/hello/ovm.d
build/stamp.sh write-release-date
bin/opyc pgen2 opy/py27.grammar _build/opy/py27.grammar.marshal
Compiled opy/py27.grammar -> grammar tables in _build/opy/py27.grammar.marshal
test -d _build/oil && \
	build/ovm-actions.sh py-to-compile /home/uke/oil:/home/uke/oil/vendor bin.oil > _build/oil/py-to-compile.txt
sort _build/oil/py-to-compile.txt | uniq > _build/oil/all-deps-py.txt
# exclude the pickle
cat _build/oil/all-deps-py.txt | opy/build.sh compile-manifest _build/oil/bytecode-opy > _build/oil/opy-app-deps.txt
     /home/uke/oil/_devbuild/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/arg_types.py
Compiled to 774 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/grammar_nt.py
Compiled to 430 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/help_meta.py
Compiled to 3860 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/hnode_asdl.py
Compiled to 441 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/id_kind.py
Compiled to 7341 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/id_kind_asdl.py
Compiled to 4085 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/nil8_asdl.py
Compiled to 353 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/option_asdl.py
Compiled to 1780 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/pretty_asdl.py
Compiled to 397 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/runtime_asdl.py
Compiled to 2452 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/syntax_asdl.py
Compiled to 6061 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/types_asdl.py
Compiled to 894 bytes of top-level bytecode
     /home/uke/oil/_devbuild/gen/value_asdl.py
Compiled to 1273 bytes of top-level bytecode
     /home/uke/oil/asdl/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/asdl/format.py
Compiled to 365 bytes of top-level bytecode
     /home/uke/oil/asdl/pybase.py
Compiled to 165 bytes of top-level bytecode
     /home/uke/oil/asdl/runtime.py
Compiled to 132 bytes of top-level bytecode
     /home/uke/oil/bin/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/bin/oil.py
Compiled to 410 bytes of top-level bytecode
     /home/uke/oil/bin/oils_for_unix.py
Compiled to 358 bytes of top-level bytecode
     /home/uke/oil/builtin/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/builtin/assign_osh.py
Compiled to 588 bytes of top-level bytecode
     /home/uke/oil/builtin/bracket_osh.py
Compiled to 490 bytes of top-level bytecode
     /home/uke/oil/builtin/completion_osh.py
Compiled to 638 bytes of top-level bytecode
     /home/uke/oil/builtin/completion_ysh.py
Compiled to 262 bytes of top-level bytecode
     /home/uke/oil/builtin/dirs_osh.py
Compiled to 506 bytes of top-level bytecode
     /home/uke/oil/builtin/error_ysh.py
Compiled to 588 bytes of top-level bytecode
     /home/uke/oil/builtin/func_eggex.py
Compiled to 379 bytes of top-level bytecode
     /home/uke/oil/builtin/func_hay.py
Compiled to 421 bytes of top-level bytecode
     /home/uke/oil/builtin/func_misc.py
Compiled to 999 bytes of top-level bytecode
     /home/uke/oil/builtin/hay_ysh.py
Compiled to 543 bytes of top-level bytecode
     /home/uke/oil/builtin/io_osh.py
Compiled to 460 bytes of top-level bytecode
     /home/uke/oil/builtin/io_ysh.py
Compiled to 491 bytes of top-level bytecode
     /home/uke/oil/builtin/json_ysh.py
Compiled to 394 bytes of top-level bytecode
     /home/uke/oil/builtin/meta_osh.py
Compiled to 745 bytes of top-level bytecode
     /home/uke/oil/builtin/method_dict.py
Compiled to 209 bytes of top-level bytecode
     /home/uke/oil/builtin/method_io.py
Compiled to 328 bytes of top-level bytecode
     /home/uke/oil/builtin/method_list.py
Compiled to 275 bytes of top-level bytecode
     /home/uke/oil/builtin/method_other.py
Compiled to 143 bytes of top-level bytecode
     /home/uke/oil/builtin/method_str.py
Compiled to 613 bytes of top-level bytecode
     /home/uke/oil/builtin/misc_osh.py
Compiled to 289 bytes of top-level bytecode
     /home/uke/oil/builtin/module_ysh.py
Compiled to 336 bytes of top-level bytecode
     /home/uke/oil/builtin/printf_osh.py
Compiled to 664 bytes of top-level bytecode
     /home/uke/oil/builtin/process_osh.py
Compiled to 749 bytes of top-level bytecode
     /home/uke/oil/builtin/pure_osh.py
Compiled to 627 bytes of top-level bytecode
     /home/uke/oil/builtin/pure_ysh.py
Compiled to 469 bytes of top-level bytecode
     /home/uke/oil/builtin/read_osh.py
Compiled to 584 bytes of top-level bytecode
     /home/uke/oil/builtin/readline_osh.py
Compiled to 299 bytes of top-level bytecode
     /home/uke/oil/builtin/trap_osh.py
Compiled to 489 bytes of top-level bytecode
     /home/uke/oil/core/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/core/alloc.py
Compiled to 223 bytes of top-level bytecode
     /home/uke/oil/core/comp_ui.py
Compiled to 354 bytes of top-level bytecode
     /home/uke/oil/core/completion.py
Compiled to 1283 bytes of top-level bytecode
     /home/uke/oil/core/dev.py
Compiled to 742 bytes of top-level bytecode
     /home/uke/oil/core/error.py
Compiled to 585 bytes of top-level bytecode
     /home/uke/oil/core/executor.py
Compiled to 638 bytes of top-level bytecode
     /home/uke/oil/core/main_loop.py
Compiled to 467 bytes of top-level bytecode
     /home/uke/oil/core/num.py
Compiled to 76 bytes of top-level bytecode
     /home/uke/oil/core/optview.py
Compiled to 162 bytes of top-level bytecode
     /home/uke/oil/core/process.py
Compiled to 1424 bytes of top-level bytecode
     /home/uke/oil/core/pyos.py
Compiled to 560 bytes of top-level bytecode
     /home/uke/oil/core/pyutil.py
Compiled to 318 bytes of top-level bytecode
     /home/uke/oil/core/shell.py
Compiled to 1466 bytes of top-level bytecode
     /home/uke/oil/core/state.py
Compiled to 1422 bytes of top-level bytecode
     /home/uke/oil/core/util.py
Compiled to 281 bytes of top-level bytecode
     /home/uke/oil/core/vm.py
Compiled to 659 bytes of top-level bytecode
     /home/uke/oil/data_lang/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/data_lang/j8.py
Compiled to 678 bytes of top-level bytecode
     /home/uke/oil/data_lang/j8_lite.py
Compiled to 73 bytes of top-level bytecode
     /home/uke/oil/data_lang/pyj8.py
Compiled to 98 bytes of top-level bytecode
     /home/uke/oil/display/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/display/ansi.py
Compiled to 92 bytes of top-level bytecode
     /home/uke/oil/display/pp_value.py
Compiled to 361 bytes of top-level bytecode
     /home/uke/oil/display/pretty.py
Compiled to 243 bytes of top-level bytecode
     /home/uke/oil/display/ui.py
Compiled to 578 bytes of top-level bytecode
     /home/uke/oil/frontend/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/frontend/args.py
Compiled to 578 bytes of top-level bytecode
     /home/uke/oil/frontend/builtin_def.py
Compiled to 337 bytes of top-level bytecode
     /home/uke/oil/frontend/consts.py
Compiled to 2462 bytes of top-level bytecode
     /home/uke/oil/frontend/flag_def.py
Compiled to 2873 bytes of top-level bytecode
     /home/uke/oil/frontend/flag_spec.py
Compiled to 299 bytes of top-level bytecode
     /home/uke/oil/frontend/flag_util.py
Compiled to 222 bytes of top-level bytecode
     /home/uke/oil/frontend/id_kind_def.py
Compiled to 234 bytes of top-level bytecode
     /home/uke/oil/frontend/lexer.py
Compiled to 344 bytes of top-level bytecode
     /home/uke/oil/frontend/lexer_def.py
Compiled to 7341 bytes of top-level bytecode
     /home/uke/oil/frontend/location.py
Compiled to 409 bytes of top-level bytecode
     /home/uke/oil/frontend/match.py
Compiled to 871 bytes of top-level bytecode
     /home/uke/oil/frontend/option_def.py
Compiled to 976 bytes of top-level bytecode
     /home/uke/oil/frontend/parse_lib.py
Compiled to 646 bytes of top-level bytecode
     /home/uke/oil/frontend/py_readline.py
Compiled to 146 bytes of top-level bytecode
     /home/uke/oil/frontend/reader.py
Compiled to 375 bytes of top-level bytecode
     /home/uke/oil/frontend/signal_def.py
Compiled to 221 bytes of top-level bytecode
     /home/uke/oil/frontend/typed_args.py
Compiled to 316 bytes of top-level bytecode
     /home/uke/oil/mycpp/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/mycpp/mops.py
Compiled to 342 bytes of top-level bytecode
     /home/uke/oil/mycpp/mylib.py
Compiled to 766 bytes of top-level bytecode
     /home/uke/oil/osh/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/osh/arith_parse.py
Compiled to 294 bytes of top-level bytecode
     /home/uke/oil/osh/bool_parse.py
Compiled to 267 bytes of top-level bytecode
     /home/uke/oil/osh/bool_stat.py
Compiled to 181 bytes of top-level bytecode
     /home/uke/oil/osh/braces.py
Compiled to 426 bytes of top-level bytecode
     /home/uke/oil/osh/cmd_eval.py
Compiled to 1152 bytes of top-level bytecode
     /home/uke/oil/osh/cmd_parse.py
Compiled to 954 bytes of top-level bytecode
     /home/uke/oil/osh/glob_.py
Compiled to 366 bytes of top-level bytecode
     /home/uke/oil/osh/history.py
Compiled to 229 bytes of top-level bytecode
     /home/uke/oil/osh/prompt.py
Compiled to 585 bytes of top-level bytecode
     /home/uke/oil/osh/sh_expr_eval.py
Compiled to 794 bytes of top-level bytecode
     /home/uke/oil/osh/split.py
Compiled to 342 bytes of top-level bytecode
     /home/uke/oil/osh/string_ops.py
Compiled to 443 bytes of top-level bytecode
     /home/uke/oil/osh/tdop.py
Compiled to 515 bytes of top-level bytecode
     /home/uke/oil/osh/word_.py
Compiled to 551 bytes of top-level bytecode
     /home/uke/oil/osh/word_compile.py
Compiled to 288 bytes of top-level bytecode
     /home/uke/oil/osh/word_eval.py
Compiled to 1145 bytes of top-level bytecode
     /home/uke/oil/osh/word_parse.py
Compiled to 741 bytes of top-level bytecode
     /home/uke/oil/pgen2/__init__.py
Compiled to 10 bytes of top-level bytecode
     /home/uke/oil/pgen2/grammar.py
Compiled to 197 bytes of top-level bytecode
     /home/uke/oil/pgen2/parse.py
Compiled to 201 bytes of top-level bytecode
     /home/uke/oil/pgen2/pnode.py
Compiled to 123 bytes of top-level bytecode
     /home/uke/oil/pylib/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/pylib/cgi.py
Compiled to 19 bytes of top-level bytecode
     /home/uke/oil/pylib/collections_.py
Compiled to 48 bytes of top-level bytecode
     /home/uke/oil/pylib/os_path.py
Compiled to 174 bytes of top-level bytecode
     /home/uke/oil/pylib/path_stat.py
Compiled to 52 bytes of top-level bytecode
     /home/uke/oil/tools/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/tools/deps.py
Compiled to 175 bytes of top-level bytecode
     /home/uke/oil/tools/fmt.py
Compiled to 122 bytes of top-level bytecode
     /home/uke/oil/tools/readlink.py
Compiled to 137 bytes of top-level bytecode
     /home/uke/oil/tools/ysh_ify.py
Compiled to 525 bytes of top-level bytecode
     /home/uke/oil/vendor/typing.py
Compiled to 115 bytes of top-level bytecode
     /home/uke/oil/ysh/__init__.py
Compiled to 4 bytes of top-level bytecode
     /home/uke/oil/ysh/expr_eval.py
Compiled to 829 bytes of top-level bytecode
     /home/uke/oil/ysh/expr_parse.py
Compiled to 615 bytes of top-level bytecode
     /home/uke/oil/ysh/expr_to_ast.py
Compiled to 780 bytes of top-level bytecode
     /home/uke/oil/ysh/func_proc.py
Compiled to 561 bytes of top-level bytecode
     /home/uke/oil/ysh/regex_translate.py
Compiled to 444 bytes of top-level bytecode
     /home/uke/oil/ysh/val_ops.py
Compiled to 575 bytes of top-level bytecode
     /home/uke/tmp/Python-2.7.13/Lib/__future__.py
Compiled to 447 bytes of top-level bytecode
     /home/uke/tmp/Python-2.7.13/Lib/stat.py
Compiled to 379 bytes of top-level bytecode
{ echo '_build/release-date.txt release-date.txt'; \
  cat build/oil-manifest.txt \
      _build/oil/opy-app-deps.txt; \
  build/ovm-actions.sh help-manifest _devbuild/help; \
  build/ovm-actions.sh ysh-stdlib-manifest; \
  build/ovm-actions.sh pyc-version-manifest _build/oil/bytecode-opy-manifest.txt; \
} > _build/oil/bytecode-opy-manifest.txt
build/make_zip.py _build/oil/bytecode-opy.zip < _build/oil/bytecode-opy-manifest.txt
build/ovm-actions.sh join-modules build/static-c-modules.txt _build/oil/app-deps-c.txt > _build/oil/all-deps-c.txt
# NOTE: Using xargs < input.txt style because it will fail if input.txt
# doesn't exist!  'cat' errors will be swallowed.
xargs build/ovm-actions.sh gen-module-init < _build/oil/all-deps-c.txt > _build/oil/module_init.c
build/ovm-actions.sh main-name bin.oil oil.ovm > _build/oil/main_name.c
build/ovm-actions.sh c-module-toc > _build/c-module-toc.txt
build/c_module_srcs.py _build/c-module-toc.txt _build/oil/app-deps-c.txt > _build/oil/c-module-srcs.txt
build/ovm-compile.sh make-tar oil bytecode-opy.zip _release/oil.tar
Creating oil version 0.22.0
tar: Removing leading `Python-2.7.13/../' from member names
tar: Removing leading `Python-2.7.13/../' from hard link targets
-rw-r--r-- 1 uke uke 9062400 Aug  6 02:12 _release/oil.tar

real	0m0.270s
user	0m0.269s
sys	0m0.000s
-rw-r--r-- 1 uke uke 2045237 Aug  6 02:12 _release/oil-0.22.0.tar.gz
~/oil/_tmp/oil-tar-test ~/oil
./configure: Wrote _build/detected-cpp-config.h
./configure: Wrote _build/detected-config.sh
./configure: Wrote _build/detected-config.h
build/ovm-compile.sh build-opt _build/oil/ovm-opt _build/oil/module_init.c _build/oil/main_name.c _build/oil/c-module-srcs.txt
~/oil/_tmp/oil-tar-test/oil-0.22.0/Python-2.7.13 ~/oil/_tmp/oil-tar-test/oil-0.22.0
In file included from Include/Python.h:78,
                 from Objects/listobject.c:3:
Objects/listobject.c: In function 'list_resize':
Include/pymem.h:110:34: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  (type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
                                  ^
Include/pymem.h:77:21: note: in definition of macro 'PyMem_REALLOC'
     : realloc((p), (n) ? (n) : 1))
                     ^
Objects/listobject.c:62:9: note: in expansion of macro 'PyMem_RESIZE'
         PyMem_RESIZE(items, PyObject *, new_allocated);
         ^~~~~~~~~~~~
Objects/listobject.c: In function 'list_ass_subscript':
Objects/listobject.c:2651:41: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
                 PyMem_MALLOC(slicelength*sizeof(PyObject*));
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Objects/listobject.c:2732:41: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
                 PyMem_MALLOC(slicelength*sizeof(PyObject*));
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
In file included from Include/Python.h:78,
                 from Objects/dictobject.c:10:
Objects/dictobject.c: In function 'dictresize':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Objects/dictobject.c:643:20: note: in expansion of macro 'PyMem_NEW'
         newtable = PyMem_NEW(PyDictEntry, newsize);
                    ^~~~~~~~~
In file included from Include/Python.h:78,
                 from Objects/setobject.c:7:
Objects/setobject.c: In function 'set_table_resize':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Objects/setobject.c:316:20: note: in expansion of macro 'PyMem_NEW'
         newtable = PyMem_NEW(setentry, newsize);
                    ^~~~~~~~~
In file included from Include/Python.h:78,
                 from Objects/structseq.c:4:
Objects/structseq.c: In function 'PyStructSequence_InitType':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Objects/structseq.c:508:15: note: in expansion of macro 'PyMem_NEW'
     members = PyMem_NEW(PyMemberDef, n_members-n_unnamed_members+1);
               ^~~~~~~~~
Objects/structseq.c: In function 'structseq_repr':
Objects/structseq.c:257:5: warning: 'strncpy' specified bound depends on the length of the source argument [-Wstringop-overflow=]
     strncpy(pbuf, typ->tp_name, len);
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Objects/structseq.c:255:11: note: length computed here
     len = strlen(typ->tp_name) > TYPE_MAXSIZE ? TYPE_MAXSIZE :
           ^~~~~~~~~~~~~~~~~~~~
In file included from Include/Python.h:78,
                 from Objects/typeobject.c:3:
Objects/typeobject.c: In function 'pmerge':
Objects/typeobject.c:1519:44: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
     remain = (int *)PyMem_MALLOC(SIZEOF_INT*to_merge_size);
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
In file included from Include/Python.h:78,
                 from Python/bltinmodule.c:3:
Python/bltinmodule.c: In function 'builtin_map':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Python/bltinmodule.c:980:17: note: in expansion of macro 'PyMem_NEW'
     if ((seqs = PyMem_NEW(sequence, n)) == NULL) {
                 ^~~~~~~~~
In file included from Include/Python.h:78,
                 from Python/getargs.c:4:
Python/getargs.c: In function 'convertsimple':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Python/getargs.c:1133:27: note: in expansion of macro 'PyMem_NEW'
                 *buffer = PyMem_NEW(char, size + 1);
                           ^~~~~~~~~
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Python/getargs.c:1181:23: note: in expansion of macro 'PyMem_NEW'
             *buffer = PyMem_NEW(char, size + 1);
                       ^~~~~~~~~
Python/getargs.c:1034:21: warning: variable 'encoding' set but not used [-Wunused-but-set-variable]
         const char *encoding;
                     ^~~~~~~~
In file included from Include/Python.h:78,
                 from Python/import.c:4:
Python/import.c: In function '_PyImport_Init':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
Python/import.c:168:15: note: in expansion of macro 'PyMem_NEW'
     filetab = PyMem_NEW(struct filedescr, countD + countS + 1);
               ^~~~~~~~~
Python/import.c: In function 'PyImport_ExtendInittab':
Include/pymem.h:110:34: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  (type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
                                  ^
Include/pymem.h:77:21: note: in definition of macro 'PyMem_REALLOC'
     : realloc((p), (n) ? (n) : 1))
                     ^
Python/import.c:3525:5: note: in expansion of macro 'PyMem_RESIZE'
     PyMem_RESIZE(p, struct _inittab, i+n+1);
     ^~~~~~~~~~~~
Python/marshal.c: In function 'PyMarshal_WriteLongToFile':
Python/marshal.c:70:35: warning: 'wf.ptr' may be used uninitialized in this function [-Wmaybe-uninitialized]
                       else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
                                   ^~
Python/marshal.c:70:47: warning: 'wf.end' may be used uninitialized in this function [-Wmaybe-uninitialized]
                       else if ((p)->ptr != (p)->end) *(p)->ptr++ = (c); \
                                               ^~
Python/marshal.c:77:10: warning: 'wf.str' may be used uninitialized in this function [-Wmaybe-uninitialized]
     if (p->str == NULL)
         ~^~~~~
Python/pystrtod.c: In function 'format_float_short':
Python/pystrtod.c:1007:13: warning: 'strncpy' output truncated before terminating nul copying 3 bytes from a string of the same length [-Wstringop-truncation]
             strncpy(p, "ERR", 3);
             ^~~~~~~~~~~~~~~~~~~~
In function 'read_directory',
    inlined from 'zipimporter_init' at Modules/zipimport.c:133:21:
Modules/zipimport.c:849:9: warning: 'strncpy' output may be truncated copying between 0 and 4095 bytes from a string of length 4100 [-Wstringop-truncation]
         strncpy(path + length + 1, name, MAXPATHLEN - length - 1);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../pyext/fastfunc.c: In function 'func_J8EncodeString':
../pyext/fastfunc.c:37:49: warning: pointer targets in passing argument 1 of 'PyString_FromStringAndSize' differ in signedness [-Wpointer-sign]
   PyObject *ret = PyString_FromStringAndSize(out.data, out.len);
                                              ~~~^~~~~
In file included from Include/Python.h:99,
                 from ../pyext/fastfunc.c:12:
Include/stringobject.h:62:24: note: expected 'const char *' but argument is of type 'unsigned char *'
 PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
../pyext/fastfunc.c: In function 'func_ShellEncodeString':
../pyext/fastfunc.c:53:49: warning: pointer targets in passing argument 1 of 'PyString_FromStringAndSize' differ in signedness [-Wpointer-sign]
   PyObject *ret = PyString_FromStringAndSize(out.data, out.len);
                                              ~~~^~~~~
In file included from Include/Python.h:99,
                 from ../pyext/fastfunc.c:12:
Include/stringobject.h:62:24: note: expected 'const char *' but argument is of type 'unsigned char *'
 PyAPI_FUNC(PyObject *) PyString_FromStringAndSize(const char *, Py_ssize_t);
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~
../pyext/fastfunc.c: In function 'func_Utf8DecodeOne':
../pyext/fastfunc.c:97:22: warning: pointer targets in passing argument 1 of 'utf8_decode' differ in signedness [-Wpointer-sign]
   utf8_decode(string + start, &decode_result);
               ~~~~~~~^~~~~~~
In file included from ../data_lang/j8.h:7,
                 from ../pyext/fastfunc.c:8:
../data_lang/utf8.h:98:20: note: expected 'const unsigned char *' but argument is of type 'char *'
 static inline void utf8_decode(const unsigned char *input,
                    ^~~~~~~~~~~
../pyext/line_input.c: In function 'call_readline':
../pyext/line_input.c:1206:9: warning: 'strncpy' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
         strncpy(p, q, n);
         ^~~~~~~~~~~~~~~~
../pyext/line_input.c:1200:9: note: length computed here
     n = strlen(p);
         ^~~~~~~~~
In file included from Include/Python.h:78,
                 from ../pyext/posixmodule.c:6:
../pyext/posixmodule.c: In function 'posix_execv':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
../pyext/posixmodule.c:1102:16: note: in expansion of macro 'PyMem_NEW'
     argvlist = PyMem_NEW(char *, argc+1);
                ^~~~~~~~~
../pyext/posixmodule.c: In function 'posix_execve':
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
../pyext/posixmodule.c:1178:16: note: in expansion of macro 'PyMem_NEW'
     argvlist = PyMem_NEW(char *, argc+1);
                ^~~~~~~~~
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
../pyext/posixmodule.c:1199:15: note: in expansion of macro 'PyMem_NEW'
     envlist = PyMem_NEW(char *, i + 1);
               ^~~~~~~~~
Include/pymem.h:97:30: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  ( (type *) PyMem_MALLOC((n) * sizeof(type)) ) )
                              ^
Include/pymem.h:75:15: note: in definition of macro 'PyMem_MALLOC'
     : malloc((n) ? (n) : 1))
               ^
../pyext/posixmodule.c:1237:13: note: in expansion of macro 'PyMem_NEW'
         p = PyMem_NEW(char, len);
             ^~~~~~~~~
In file included from Include/Python.h:78,
                 from Modules/selectmodule.c:9:
Modules/selectmodule.c: In function 'update_ufd_array':
Include/pymem.h:110:34: warning: '*' in boolean context, suggest '&&' instead [-Wint-in-bool-context]
  (type *) PyMem_REALLOC((p), (n) * sizeof(type)) )
                                  ^
Include/pymem.h:77:21: note: in definition of macro 'PyMem_REALLOC'
     : realloc((p), (n) ? (n) : 1))
                     ^
Modules/selectmodule.c:337:5: note: in expansion of macro 'PyMem_RESIZE'
     PyMem_RESIZE(self->ufds, struct pollfd, self->ufd_len);
     ^~~~~~~~~~~~

real	0m18.768s
user	0m16.440s
sys	0m2.307s
objcopy --only-keep-debug _build/oil/ovm-opt _build/oil/ovm-opt.symbols
strip -o _build/oil/ovm-opt.stripped _build/oil/ovm-opt  # What's the difference with debug symbols?
# We need a relative path since it will be _bin/oil.ovm
objcopy --add-gnu-debuglink=_build/oil/ovm-opt.symbols _build/oil/ovm-opt.stripped
cat _build/oil/ovm-opt.stripped _build/oil/bytecode-opy.zip > _bin/oil.ovm
chmod +x _bin/oil.ovm

real	0m18.798s
user	0m16.451s
sys	0m2.327s
Oils 0.22.0		https://www.oilshell.org/

Release Date: 2024-08-06 02:12:00+00:00
Arch: x86_64
OS: Linux
Platform: #26~22.04.1-Ubuntu SMP Thu Jul 11 22:33:04 UTC 2024
Compiler: GCC 8.3.0
Interpreter: OVM
Interpreter version: 2.7.13
Bytecode: bytecode-opy.zip
~/oil