From 4d60ff8e67e262795206f7b72eefd22ba1a2551a Mon Sep 17 00:00:00 2001 From: David Given Date: Thu, 20 Mar 2025 02:11:10 +0100 Subject: [PATCH] Update ab. --- arch/build.py | 6 ++-- build/protobuf.py | 91 +++++++++++++++++++++++------------------------ build/utils.py | 4 +-- 3 files changed, 50 insertions(+), 51 deletions(-) diff --git a/arch/build.py b/arch/build.py index 97f5eeba..240baed5 100644 --- a/arch/build.py +++ b/arch/build.py @@ -1,5 +1,5 @@ from build.c import cxxlibrary -from build.protobuf import proto, protocc +from build.protobuf import proto, protocc, protolib from os.path import * from glob import glob import sys @@ -41,9 +41,9 @@ for a in archs: ) ] -proto( +protolib( name="proto", - deps=ps + ["lib/config+common_proto"], + srcs=ps + ["lib/config+common_proto"], ) cxxlibrary(name="proto_lib", deps=pls) diff --git a/build/protobuf.py b/build/protobuf.py index d5bc0da1..00541f9b 100644 --- a/build/protobuf.py +++ b/build/protobuf.py @@ -31,54 +31,53 @@ def proto(self, name, srcs: Targets = [], deps: Targets = []): ] ) - if srcs: - dirs = sorted({"$[dir]/" + dirname(f) for f in filenamesof(srcs)}) - simplerule( - replaces=self, - ins=srcs, - outs=[f"={self.localname}.descriptor"], - deps=protodeps, - commands=( - ["mkdir -p " + (" ".join(dirs))] - + [f"$(CP) {f} $[dir]/{f}" for f in filenamesof(srcs)] - + [ - "cd $[dir] && " - + ( - " ".join( - [ - "$(PROTOC)", - "--proto_path=.", - "--include_source_info", - f"--descriptor_set_out={self.localname}.descriptor", - ] - + ( - [f"--descriptor_set_in={descriptorlist}"] - if descriptorlist - else [] - ) - + ["$[ins]"] + dirs = sorted({"$[dir]/" + dirname(f) for f in filenamesof(srcs)}) + simplerule( + replaces=self, + ins=srcs, + outs=[f"={self.localname}.descriptor"], + deps=protodeps, + commands=( + ["mkdir -p " + (" ".join(dirs))] + + [f"$(CP) {f} $[dir]/{f}" for f in filenamesof(srcs)] + + [ + "cd $[dir] && " + + ( + " ".join( + [ + "$(PROTOC)", + "--proto_path=.", + "--include_source_info", + f"--descriptor_set_out={self.localname}.descriptor", + ] + + ( + [f"--descriptor_set_in={descriptorlist}"] + if descriptorlist + else [] ) + + ["$[ins]"] ) - ] - ), - label="PROTO", - args={ - "protosrcs": filenamesof(srcs), - "protodeps": set(protodeps) | {self}, - }, - ) - else: - simplerule( - replaces=self, - ins=protodeps, - outs=["=stamp"], - commands=["touch $[outs]"], - label="PROTO", - args={ - "protosrcs": [], - "protodeps": set(protodeps), - }, - ) + ) + ] + ), + label="PROTO", + args={ + "protosrcs": filenamesof(srcs), + "protodeps": set(protodeps) | {self}, + }, + ) + + +@Rule +def protolib(self, name, srcs: Targets = []): + simplerule( + replaces=self, + label="PROTOLIB", + args={ + "protosrcs": collectattrs(targets=srcs, name="protosrcs"), + "protodeps": set(_getprotodeps(srcs)), + }, + ) @Rule diff --git a/build/utils.py b/build/utils.py index 906cfc51..65049d9d 100644 --- a/build/utils.py +++ b/build/utils.py @@ -78,7 +78,7 @@ def test( replaces=self, ins=[command], outs=["=sentinel"], - commands=["$[ins[0]]", "touch $[outs]"], + commands=["$[ins[0]]", "touch $[outs[0]]"], deps=deps, label=label, ) @@ -87,7 +87,7 @@ def test( replaces=self, ins=ins, outs=["=sentinel"], - commands=commands + ["touch $[outs]"], + commands=commands + ["touch $[outs[0]]"], deps=deps, label=label, )