# Copyright 2021 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. load("//pw_build/bazel_internal:py_proto_library.bzl", "py_proto_library") load("@rules_proto//proto:defs.bzl", "proto_library") load( "//pw_build:pigweed.bzl", "pw_cc_library", "pw_cc_test", ) load("//pw_protobuf_compiler:proto.bzl", "pw_proto_library") package(default_visibility = ["//visibility:public"]) licenses(["notice"]) proto_library( name = "tuf_proto", srcs = [ "tuf.proto", ], deps = [ "@com_google_protobuf//:timestamp_proto", ], ) proto_library( name = "update_bundle_proto", srcs = [ "update_bundle.proto", ], deps = [ ":tuf_proto", ], ) pw_proto_library( name = "update_bundle_proto_cc", deps = [":update_bundle_proto"], ) proto_library( name = "bundled_update_proto", srcs = [ "bundled_update.proto", ], deps = [ "//pw_protobuf:common_proto", "//pw_tokenizer:tokenizer_proto", "@com_google_protobuf//:any_proto", ], ) # TODO(b/241456982): Not expected to build yet. py_proto_library( name = "bundled_update_py_pb2", srcs = ["bundled_update.proto"], tags = ["manual"], ) # TODO(b/258074401): Depends on the `any` proto, which doesn't build under # nanopb. # pw_proto_library( # name = "bundled_update_proto_cc", # # TODO(b/258074760): Adding this tag breaks the pw_proto_library rule. # tags = ["manual"], # deps = [":bundled_update_proto"], # ) pw_cc_library( name = "openable_reader", hdrs = [ "public/pw_software_update/openable_reader.h", ], deps = [ "//pw_stream", ], ) pw_cc_library( name = "blob_store_openable_reader", hdrs = [ "public/pw_software_update/blob_store_openable_reader.h", ], deps = [ ":openable_reader", ], ) pw_cc_library( name = "update_bundle", srcs = [ "manifest_accessor.cc", "update_bundle_accessor.cc", ], hdrs = [ "public/pw_software_update/bundled_update_backend.h", "public/pw_software_update/config.h", "public/pw_software_update/manifest_accessor.h", "public/pw_software_update/update_bundle_accessor.h", ], includes = ["public"], tags = ["manual"], # TODO(b/236321905): Depends on pw_crypto. deps = [ ":blob_store_openable_reader", ":openable_reader", ":update_bundle_proto_cc.pwpb", "//pw_blob_store", "//pw_crypto:ecdsa_facade", "//pw_crypto:sha256_facade", "//pw_kvs", "//pw_log", "//pw_protobuf", "//pw_status", "//pw_stream", "//pw_string", ], ) # TODO(b/258074401): Depends on bundled_update_proto_cc.nanopb_rpc, which # doesn't build yet. pw_cc_library( name = "bundled_update_service", srcs = ["bundled_update_service.cc"], hdrs = ["public/pw_software_update/bundled_update_service.h"], includes = ["public"], tags = ["manual"], deps = [ # ":bundled_update_proto_cc.nanopb_rpc", # ":bundled_update_proto_cc.pwpb", ":update_bundle", # ":update_bundle_proto_cc.nanopb_rpc", # ":update_bundle_proto_cc.pwpb", "//pw_log", "//pw_result", "//pw_status", "//pw_sync:borrow", "//pw_sync:lock_annotations", "//pw_sync:mutex", "//pw_tokenizer", "//pw_work_queue", ], ) # TODO(b/258074401): Depends on bundled_update_proto_cc.nanopb_rpc, which # doesn't build yet. pw_cc_library( name = "bundled_update_service_pwpb", srcs = ["bundled_update_service_pwpb.cc"], hdrs = ["public/pw_software_update/bundled_update_service_pwpb.h"], includes = ["public"], tags = ["manual"], deps = [ # ":bundled_update_proto_cc.pwpb", # ":bundled_update_proto_cc.pwpb_rpc", ":update_bundle", # ":update_bundle_proto_cc.pwpb", # ":update_bundle_proto_cc.pwpb_rpc", "//pw_log", "//pw_result", "//pw_status", "//pw_string:util", "//pw_sync:borrow", "//pw_sync:lock_annotations", "//pw_sync:mutex", "//pw_tokenizer", "//pw_work_queue", ], ) # TODO(b/258222107): pw_python_action doesn't exist yet. # pw_python_action( # name = "generate_test_bundle", # outputs = ["$target_gen_dir/generate_test_bundle/test_bundles.h"], # script = "py/pw_software_update/generate_test_bundle.py", # deps = [ # ":bundled_update_py_pb2", # "py", # ], # args = [ "$target_gen_dir/generate_test_bundle/test_bundles.h" ], # ) pw_cc_test( name = "update_bundle_test", srcs = ["update_bundle_test.cc"], tags = ["manual"], deps = [ # This dependency is needed, but doesn't exist yet. # "generate_test_bundle", ":update_bundle", "//pw_kvs:fake_flash_test_key_value_store", "//pw_unit_test", ], ) pw_cc_test( name = "bundled_update_service_test", srcs = ["bundled_update_service_test.cc"], tags = ["manual"], # bundled_update_service doesn't work yet. deps = [ ":bundled_update_service", "//pw_unit_test", ], ) pw_cc_test( name = "bundled_update_service_pwpb_test", srcs = ["bundled_update_service_pwpb_test.cc"], tags = ["manual"], # bundled_update_service_pwpb doesn't work yet. deps = [ ":bundled_update_service_pwpb", "//pw_unit_test", ], )