Build skipped when element has duplicate build dependencies.

Summary

When there are duplicate build dependencies (through either depends or build-depends) for any element kind, its build is skipped.

Steps to reproduce

Create the following files:

./test.bst

kind: import
sources:
- kind: local
  path: project.conf

./multi-build-depends.bst

kind: <import, stack, compose ...>

sources:
- kind: local
  path: project.conf

<depends, build-depends> :
- test.bst
- test.bst

and run bst build multi-build-depends.bst

What is the current bug behavior?

Build succeeds without building anything, as it skips multi-build-depends.bst. Running bst build multi-build-depends.bst multiple times yields:

Pipeline
      cached a3f09bb29fee71f1e2d39e81c4a178fac764514648daf80b1e4c60a4cea54201 test.bst 
     waiting b205458bc8a64e031f76e1bf3003e5fdaa019908ad82cc1909e02787d8e7d9fe dependencies.bst 
===============================================================================
[00:00:00][        ][    main:core activity                 ] SUCCESS Build

Pipeline Summary
  Total:       2
  Session:     1
  Fetch Queue: processed 0, skipped 1, failed 0 
  Build Queue: processed 0, skipped 0, failed 0 

Additionally if a duplicate build-dependency does not exist, and the element is successfully built, but then a duplicate build-dependency is then added, BuildStream does not complain as it sees the element as cached.

What is the expected correct behavior?

Either

  1. BuildStream throws an error warning users that there are duplicate build-dependencies
  2. Build is not skipped and BuildStream appropriately deals with duplicate build-dependencies.

/label ~bug

Edited by Shashwat Dalal