Open taytayallday opened 6 months ago
In [rules_pkg/pkg/private/deb/deb.bzl], we have
def _pkg_deb_impl(ctx):
"""The implementation for the pkg_deb rule."""
package_file_name = ctx.attr.package_file_name
if not package_file_name:
package_file_name = "%s_%s_%s.deb" % (
ctx.attr.package,
ctx.attr.version,
ctx.attr.architecture,
)
outputs, output_file, output_name = setup_output_files(
ctx,
package_file_name = package_file_name,
)
but in the case where we use version_file, version is empty.
This not possible given the relative ordering of analysis and execution in Bazel. The file name is defined at analysis time, which must complete before we execute the actions required by the rule. Reading the content of the version file happens in that execution phase.
It would be possible to detect that the user specified the version file and neither the file name or the version, os that the file name would be mydeb_XXXX_x86.deb
. Or maybe it could fail hard.
The version_file attribute of pkg_deb is not working correctly. The name of the debian package that bazel generates should be in the form of name_version_arch.deb which is true when you have a pkg_deb with "version". But for some reason, you end up with name__arch.deb when you have the "version_file" attribute. The .changes file does contain the version in the text file, but the name does not end up with it
On a bazel build with pkg_deb that has version:
On a bazel build with pkg_deb that has version_file: