Skip to content

Library inclusion check provides spurious inclusions for build specs …#62

Open
AndreaV-Lsi wants to merge 1 commit intojovianarts:mainfrom
AndreaV-Lsi:spurious_circular_dependency
Open

Library inclusion check provides spurious inclusions for build specs …#62
AndreaV-Lsi wants to merge 1 commit intojovianarts:mainfrom
AndreaV-Lsi:spurious_circular_dependency

Conversation

@AndreaV-Lsi
Copy link
Copy Markdown

@AndreaV-Lsi AndreaV-Lsi commented Mar 26, 2026

This Closes #61

When we edit a PPL build specification and we change the "Top-level library" from say "Library A.lvlib" to "Library B.lvlib", and we don't assign "Library A.lvlib" to "Always Included", traces of "Library A.lvlib" are left in the project XML file build specification filed in the "Source" array. This results in the fact that the

Source[%d].sourceInclusion .neq. "Exclude"

in subXMLGetSourceItemInclusion.vi will yield TRUE despite the fact that the"Library A.lvlib" is not included in the build specification. For this reason, we now OR compound the .neq. check with an "Empty String/Path?" check which singles out the fact that we are actually reading some traces of a previous Top-level Library. If we don't do this, we end up with spurious inclusions that can cause bogus circular dependencies.

The source code was edited in LabVIEW 2019 SP1. Failing Unit Tests were failing before the fix

What does this Pull Request accomplish?

High-level Checklist (if any apply):

  • New feature
  • Fixed bugs
  • Tech debt (typo, added comments, small logic change, improved code performance, etc.)

Edited subXMLGetSourceItemInclusion.vi by .or. compounding 'Source[%d].sourceInclusion .neq. "Exclude"' with an "Empty String/Path?" check to avoid bogus library inclusion detections.

Why should this Pull Request be merged?

This solves Bug #61, which occurs to users accustomed to building build specifications by duplicating existing ones. When libraries have dependencies (with dependency depth larger than/equal to three), this habit results in the inability to build due to spurious circular dependencies.

What testing has been done?

All tests were run before and after the fix. Tests that fail after the fix were failing before.

An example source code triggering the bug was created, and it was proven that the project builds correctly after the build, and fails with the original code

What Release Build Should This Go In?

  • It can wait until the next release and get bundled with other changes.
  • It's urgent, I'm requesting a new release build ASAP.

…with a change history of the Top-level Library

This addresses Bug jovianarts#61

When we edit a PPL build specification and we change the "Top-level library" from say "Library A.lvlib" to "Library B.lvlib", and we don't assign "Library A.lvlib" to "Always Included", traces of  "Library A.lvlib" are left in the project XML file build specification filed in the "Source" array. This results in the fact that the

Source[%d].sourceInclusion .neq. "Exclude"

 will yield TRUE while the"Library A.lvlib"  is not included in the build specification. For this reason, we OR compound the .neq. check with an "Empty String/Path?" check. If we don't do this, we end up with spurious inclusions that can cause bogus circular dependencies

Source code was edited in LabVIEW 2019 SP1. Failing Unit Tests were failing before the fix
@AndreaV-Lsi AndreaV-Lsi requested a review from jovianarts as a code owner March 26, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: Duplicating PPL build specs of dependent libraries results in spurious circular dependencies

1 participant