Skip to content

Pin "BSEC Software Library" dependency at working version #70

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 7, 2023
Merged

Pin "BSEC Software Library" dependency at working version #70

merged 1 commit into from
Feb 7, 2023

Conversation

per1234
Copy link
Contributor

@per1234 per1234 commented Feb 4, 2023

The "Arduino_MKRIoTCarrier" library has a dependency on "BSEC Software Library". The recent 1.7.1492 release of that library has a bug in its #include directives that causes compilation to fail with a "No such file or directory" error (boschsensortec/BSEC-Arduino-library#58, #69).

When "Arduino_MKRIoTCarrier" is installed via the Arduino Library Manager, the dependencies listed in the depends metadata field are also installed. Arduino IDE 2.x and Arduino CLI (>=0.7.0) support version constraints in this field:

https://arduino.github.io/arduino-cli/latest/library-specification/#version-constraints

If a constraint is provided in this field, Library Manager will install the appropriate version of the dependency. Arduino IDE 1.x does not recognize dependency version constraints, but is compatible with this metadata in that it is simply ignored and does not cause any change in the behavior of the Library Manager installation.

Using the version constraint to "pin" "BSEC Software Library" to the last good version (1.6.1480) will mitigate the breakage caused by the bad 1.7.1492 release of that dependency by ensuring the good version is installed along with "Arduino_MKRIoTCarrier" when the user does the installation via the Arduino IDE 2.x or Arduino CLI Library Manager. It is only a partial mitigation because breakage will still be experienced by users under other conditions:

  • Using Arduino Cloud (which will use the latest available dependency version regardless of constraints in the metadata)
  • Using Arduino IDE 1.x
  • Updates "BSEC Software Library" separately

The "Arduino_MKRIoTCarrier" library has a dependency on "BSEC Software Library". The recent 1.7.1492 release of that library has a bug in its `#include` directives that causes compilation to fail with a "`No such file or directory`" error.

When "Arduino_MKRIoTCarrier" is installed via the Arduino Library Manager, the dependencies listed in the `depends` metadata field are also installed. Arduino IDE 2.x and Arduino CLI (>=0.7.0)  support version constraints in this field:

https://arduino.github.io/arduino-cli/latest/library-specification/#version-constraints

If a constraint is provided in this field, Library Manager will install the appropriate version of the dependency. Arduino IDE 1.x does not recognize dependency version constraints, but is compatible with this metadata in that it is simply ignored and does not cause any change in the behavior of the Library Manager installation.

Using the version constraint to "pin" the "BSEC Software Library" to the last good version (1.6.1480) will mitigate the breakage caused by the bad 1.7.1492 release of that dependency by ensuring the good version is installed along with "Arduino_MKRIoTCarrier" when the user does the installation via the Arduino IDE 2.x or Arduino CLI Library Manager. It is only a partial mitigation because breakage will still be experienced by users under other conditions:

- Using Arduino Cloud (which will use the latest available dependency version regardless of constraints in the metadata)
- Using Arduino IDE 1.x
- Updates "BSEC Software Library" separately
@per1234 per1234 added type: imperfection Perceived defect in any part of project topic: infrastructure Related to project infrastructure labels Feb 4, 2023
@per1234 per1234 self-assigned this Feb 4, 2023
Copy link
Contributor

@aentinger aentinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch @per1234 🚀 . A really difficult situation 😢 and thank you very much for gathering all the background information. I'd say it really hinges on Bosch's fix and re-release of their library, for which you've already submitted a PR. I suggest two things:

a) Ask @pnndra to contact Bosch directly to expedit the fix.
b) Merge this PR for now, but keep a reminder (i.e. in Slack) to revert it, as soon as Bosch gets their act together.

@per1234 per1234 merged commit b0021b2 into arduino-libraries:master Feb 7, 2023
@per1234 per1234 deleted the pin-bsec branch February 7, 2023 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
topic: infrastructure Related to project infrastructure type: imperfection Perceived defect in any part of project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants