@@ -51,7 +51,6 @@ private byte[] createDigestForTarget(
5151 Map <String , byte []> ruleHashes ,
5252 byte [] seedHash
5353 ) throws NoSuchAlgorithmException {
54- BazelRule targetRule = target .getRule ();
5554 if (target .hasSourceFile ()) {
5655 String sourceFileName = getNameForTarget (target );
5756 if (sourceFileName != null ) {
@@ -66,6 +65,14 @@ private byte[] createDigestForTarget(
6665 return digest .digest ().clone ();
6766 }
6867 }
68+ if (target .hasGeneratedFile ()){
69+ byte [] generatingRuleDigest = ruleHashes .get (target .getGeneratingRuleName ());
70+ if (generatingRuleDigest == null ) {
71+ return createDigestForRule (allRulesMap .get (target .getGeneratingRuleName ()), allRulesMap , ruleHashes , bazelSourcefileTargets , seedHash );
72+ }
73+ return ruleHashes .get (target .getGeneratingRuleName ()).clone ();
74+ }
75+ BazelRule targetRule = target .getRule ();
6976 return createDigestForRule (targetRule , allRulesMap , ruleHashes , bazelSourcefileTargets , seedHash );
7077 }
7178
@@ -143,6 +150,9 @@ private String getNameForTarget(BazelTarget target) {
143150 if (target .hasSourceFile ()) {
144151 return target .getSourceFileName ();
145152 }
153+ if (target .hasGeneratedFile ()) {
154+ return target .getGeneratedFileName ();
155+ }
146156 return null ;
147157 }
148158
@@ -153,10 +163,15 @@ private Map<String, String> hashAllTargets(byte[] seedHash, Map<String, BazelSou
153163 Map <String , BazelRule > allRulesMap = new HashMap <>();
154164 for (BazelTarget target : allTargets ) {
155165 String targetName = getNameForTarget (target );
156- if (targetName == null || ! target . hasRule () ) {
166+ if (targetName == null ) {
157167 continue ;
158168 }
159- allRulesMap .put (targetName , target .getRule ());
169+ if (target .hasGeneratedFile ()) {
170+ allRulesMap .put (targetName , allRulesMap .get (target .getGeneratingRuleName ()));
171+ }
172+ if (target .hasRule ()) {
173+ allRulesMap .put (targetName , target .getRule ());
174+ }
160175 }
161176 for (BazelTarget target : allTargets ) {
162177 String targetName = getNameForTarget (target );
0 commit comments