$ cd ./examples/local_arg_printer
$ python ./launcher.py
I0622 13:41:56.244761 139799548634944 migration.py:155] Context impl SQLiteImpl.
I0622 13:41:56.244876 139799548634944 migration.py:158] Will assume non-transactional DDL.
I0622 13:41:56.245708 139799548634944 migration.py:155] Context impl SQLiteImpl.
I0622 13:41:56.245735 139799548634944 migration.py:158] Will assume non-transactional DDL.
INFO: Analyzed target //:arg_printer (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
Target //:arg_printer up-to-date:
bazel-bin/arg_printer
INFO: Elapsed time: 0.108s, Critical Path: 0.00s
INFO: 1 process: 1 internal.
INFO: Build completed successfully, 1 total action
INFO: Build Event Protocol files produced successfully.
W0622 13:41:56.460839 139799548634944 core.py:806] No work units were added to this experiment, which is usually not intended.
Traceback (most recent call last):
File "/home/user/xmanager/examples/local_arg_printer/./launcher.py", line 56, in <module>
app.run(main)
~~~~~~~^^^^^^
File "/home/user/xmanager/.venv/lib/python3.13/site-packages/absl/app.py", line 316, in run
_run_main(main, args)
~~~~~~~~~^^^^^^^^^^^^
File "/home/user/xmanager/.venv/lib/python3.13/site-packages/absl/app.py", line 261, in _run_main
sys.exit(main(argv))
~~~~^^^^^^
File "/home/user/xmanager/examples/local_arg_printer/./launcher.py", line 36, in main
[executable] = experiment.package(
~~~~~~~~~~~~~~~~~~^
[
^
...<6 lines>...
]
^
)
^
File "/home/user/xmanager/xmanager/xm/core.py", line 829, in package
return cls._async_packager.package(packageables)
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/home/user/xmanager/xmanager/xm/async_packager.py", line 134, in package
executables = self._package_batch(packageables)
File "/home/user/xmanager/xmanager/xm_local/packaging/router.py", line 79, in package
_packaging_router(built_targets, packageable)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/user/xmanager/xmanager/xm_local/packaging/router.py", line 38, in _packaging_router
return local_packaging.package_for_local_executor(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
built_targets,
^^^^^^^^^^^^^^
packageable,
^^^^^^^^^^^^
packageable.executable_spec,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/user/xmanager/xmanager/xm_local/packaging/local.py", line 153, in package_for_local_executor
return _package_bazel_binary(bazel_outputs, packageable, bazel_binary)
File "/home/user/xmanager/xmanager/xm_local/packaging/local.py", line 137, in _package_bazel_binary
assert len(paths) == 1
^^^^^^^^^^^^^^^
AssertionError
I tried running the
local_arg_printerexample but ran into the following error:Details
I tracked the problem down to
bazel_tools.get_important_outputs; Noeventineventshascompleted.important_outputfield:Details
The
event'snamed_set, or more specificallynamed_set_of_files, seems to contain the needed information:Details
The full
_get_important_outputswould then become something like:Details
This indeed makes the
local_arg_printerexample work:Details
I'm not an expert in bazel so it's possible that the implementation above is lacking some edge cases or is otherwise not as general as needs to be. But it's worked for me so far.