Open cerisier opened 3 weeks ago
Maybe @fmeum would know something about that.
I agree that creating a .runfiles
directory for each executable is the correct approach. Runfiles are never empty as they always at least contain the executable itself. The logic that inspects runfiles_manifest
can be removed.
Happy to review a PR!
When using the
tar
rule along with--build_runfiles_manifests=false
, runfiles are not added to the archive. I believe this is due to the way the tar rule expects the existence of theMANIFEST
to deduce the runfiles directory.https://github.com/bazel-contrib/bazel-lib/blob/408f76cb9ae1403c42014a5f2b02738cfd576507/lib/private/tar.bzl#L227-L230
and
https://github.com/bazel-contrib/bazel-lib/blob/408f76cb9ae1403c42014a5f2b02738cfd576507/lib/private/tar.bzl#L123-L126
The problem is:
--build_runfiles_manifests=false
then there is noMANIFEST
or.runfiles_manifest
to deduce from.--enable_runfiles=false
and--build_runfiles_manifests=false
then there are no.runfiles
directory at all.I wonder if there is a reliable way to deduce the presence of runfiles, other than checking on existence of
MANIFEST
file. And a way to add therunfiles_dir
mtree_line only if we know there will be runfiles.I wonder if one solution wouldn't be to deduce a runfiles_dir from any
src[DefaultInfo].default_info.files_to_run.executable
and add an mtree_line for it even in the case where there is no runfiles at all.This would result in having a
.runfiles
directory for each executable even in the rare event where there are no runfiles at all.If that's acceptable, I can submit a PR.