I am trying to make a following setup run with Bazel. With calling “bazel build” a Python script should generate unknown number of *.cc files with random names, and then compile these into single static library (.a file), all within one Bazel call. I have tried following: one generated file has fixed name, this one is referenced in outs of genrule() and srcs of cc_library rule. The problem is I need all generated files to be built as a library, not only the file with fixed name. Any ideas how to do this? My BUILD file:
py_binary(
    name = "sample_script",
    srcs = ["sample_script.py"],
)
genrule(
    name = "sample_genrule",
    tools = [":sample_script"],
    cmd = "$(location :sample_script)",
    outs = ["cpp_output_fixed.cc"], #or shall also the files with random names be defined here?
)
cc_library(
    name = "autolib",
    srcs = ["cpp_output_fixed.cc"],
    #srcs = glob([ #here should all generated .cc files be named
    #    "./*.cc",
    #    "./**/*.cc",
    #    ])+["cpp_output_fixed.cc"], 
)
Python file sample_script.py:
#!/usr/bin/env python
import hashlib
import time
time_stamp = time.time()
time_1 = str(time_stamp)
time_2 = str(time_stamp + 1)
random_part_1 = hashlib.sha1(time_1).hexdigest()[-4:]
random_part_2 = hashlib.sha1(time_1).hexdigest()[-4:]
fixed_file = "cpp_output_fixed" + ".cc"
file_1 = "cpp_output_" + random_part_1 + ".cc"
file_2 = "cpp_output3_" + random_part_2 + ".cc"
with open(fixed_file, "w") as outfile:
    outfile.write("#include <iostream>"
                   "int main() {"
                   "  std::cout <<'''Hello_world'''    <<std::endl;"
                   "  return 0"
                   "}")
with open(file_1, "w") as outfile:
    outfile.write("#include <iostream>"
                   "int main() {"
                   "  std::cout <<'''Hello_world'''    <<std::endl;"
                   "  return 0"
                   "}")
with open(file_2, "w") as outfile_new:
    outfile_new.write("#include <iostream>"
                   "int main() {"
                   "  std::cout <<'''Hello_world''' <<std::endl;"
                   "  return 0"
                   "}")
print ".cc generation DONE"