You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 the MANIFEST to deduce the runfiles directory.
if using --build_runfiles_manifests=false then there is no MANIFEST or .runfiles_manifest to deduce from.
if using --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 the runfiles_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.
The text was updated successfully, but these errors were encountered:
cerisier
changed the title
Runfiles are not embedded when --build_runfile_manifests=false
[Bug] tar rule doesn't embed runfiles when --build_runfile_manifests=falseSep 14, 2024
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!
cerisier
added a commit
to cerisier/bazel-lib
that referenced
this issue
Sep 14, 2024
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 the
MANIFEST
to deduce the runfiles directory.bazel-lib/lib/private/tar.bzl
Lines 227 to 230 in 408f76c
and
bazel-lib/lib/private/tar.bzl
Lines 123 to 126 in 408f76c
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 the
runfiles_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.
The text was updated successfully, but these errors were encountered: