From 8fc83bb59d9052ee9862dc761f39d64cfe4c7b12 Mon Sep 17 00:00:00 2001 From: kp2pml30 Date: Mon, 7 Apr 2025 15:39:49 +0400 Subject: [PATCH] feat: add order-only dependencies --- ya-build | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ya-build b/ya-build index 6eb24d7..4a119c2 100755 --- a/ya-build +++ b/ya-build @@ -82,13 +82,14 @@ class NinjaPieceRaw end class Target < NinjaPiece - attr_reader :meta, :outputs, :inputs, :implicit_inputs, :implicit_outputs, :rule + attr_reader :meta, :outputs, :inputs, :implicit_inputs, :order_only_inputs, :implicit_outputs, :rule - def initialize(outputs:, inputs:, rule:, implicit_inputs: [], implicit_outputs: []) + def initialize(outputs:, inputs:, rule:, implicit_inputs: [], implicit_outputs: [], order_only_inputs: []) raise "invalid param" if not outputs.kind_of?(Array) raise "invalid param" if not inputs.kind_of?(Array) raise "invalid param" if not implicit_inputs.kind_of?(Array) raise "invalid param" if not implicit_outputs.kind_of?(Array) + raise "invalid param" if not order_only_inputs.kind_of?(Array) raise "rule must be a string" if not rule.kind_of?(String) @meta = OpenStruct.new @@ -96,6 +97,7 @@ class Target < NinjaPiece @implicit_outputs = implicit_outputs @inputs = inputs.clone @outputs = outputs.clone + @order_only_inputs = order_only_inputs.clone @rule = rule end @@ -113,6 +115,10 @@ class Target < NinjaPiece buf << " |" DefaultTargets::escape_args_to(buf, implicit_inputs) end + if order_only_inputs.size > 0 + buf << " ||" + DefaultTargets::escape_args_to(buf, order_only_inputs) + end buf << "\n" cb = Proc.new { |k, v| buf << " " << k << " = " << v << "\n"