{"action":"created","issue":{"url":"https://api.github.com/repos/arduino/Arduino/issues/4064","labels_url":"https://api.github.com/repos/arduino/Arduino/issues/4064/labels{/name}","comments_url":"https://api.github.com/repos/arduino/Arduino/issues/4064/comments","events_url":"https://api.github.com/repos/arduino/Arduino/issues/4064/events","html_url":"https://github.com/arduino/Arduino/issues/4064","id":114490979,"number":4064,"title":"lib manager overrides core libraries included with 3rd party boards","user":{"login":"soundanalogous","id":401539,"avatar_url":"https://avatars.githubusercontent.com/u/401539?v=3","gravatar_id":"","url":"https://api.github.com/users/soundanalogous","html_url":"https://github.com/soundanalogous","followers_url":"https://api.github.com/users/soundanalogous/followers","following_url":"https://api.github.com/users/soundanalogous/following{/other_user}","gists_url":"https://api.github.com/users/soundanalogous/gists{/gist_id}","starred_url":"https://api.github.com/users/soundanalogous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soundanalogous/subscriptions","organizations_url":"https://api.github.com/users/soundanalogous/orgs","repos_url":"https://api.github.com/users/soundanalogous/repos","events_url":"https://api.github.com/users/soundanalogous/events{/privacy}","received_events_url":"https://api.github.com/users/soundanalogous/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/arduino/Arduino/labels/Library:%20Servo","name":"Library: Servo","color":"000000"}],"state":"open","locked":false,"assignee":{"login":"cmaglie","id":423515,"avatar_url":"https://avatars.githubusercontent.com/u/423515?v=3","gravatar_id":"","url":"https://api.github.com/users/cmaglie","html_url":"https://github.com/cmaglie","followers_url":"https://api.github.com/users/cmaglie/followers","following_url":"https://api.github.com/users/cmaglie/following{/other_user}","gists_url":"https://api.github.com/users/cmaglie/gists{/gist_id}","starred_url":"https://api.github.com/users/cmaglie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmaglie/subscriptions","organizations_url":"https://api.github.com/users/cmaglie/orgs","repos_url":"https://api.github.com/users/cmaglie/repos","events_url":"https://api.github.com/users/cmaglie/events{/privacy}","received_events_url":"https://api.github.com/users/cmaglie/received_events","type":"User","site_admin":false},"milestone":null,"comments":22,"created_at":"2015-11-01T20:28:34Z","updated_at":"2015-11-04T17:52:22Z","closed_at":null,"body":"I'm encountering several library compatibility issues lately. I believe these are due in part to the library manager and that if you update a library via the lib manager (the Servo library for example) that is also included by 3rd party boards (via the board manager or 3rd party installers such as the Teensy installer) the library installed by the lib manager will take priority.\r\n\r\nA couple of specific examples:\r\nArduino Zero required a newer Servo library than was included in the latest Arduino release. This could be resolved by using the library manager to install Servo v1.1.0. However this version of Servo was incompatible with non SAMD architectures (although this appears to have been resolved in Servo v1.1.1). However 3rd party boards such as Teensy include their own version of the Servo library. Updating Servo via lib manager however will now include that version rather than the version of the lib included with the 3rd party board. Same problem with Intel Galileo and Servo library.\r\n\r\nI've noticed the same incompatibility issues across boards with the Ethernet and SPI libraries as well (I believe it's related to this issue: https://github.com/arduino/Arduino/issues/3961).\r\n\r\nSo there are actually 2 issues here:\r\n1. lib manager overrides core libraries included with 3rd party and board manager installed boards\r\n2. core libraries are not compatible across all official arduino boards (when they should be) - due to issues in core library support for new boards (is anyone testing this before release?)\r\n\r\nSome possible solutions:\r\n- Give priority to core libraries included with 3rd party boards (installed by means other than the boards manager) and by boards installed and updated via the boards manager. Include those libraries instead of core libraries updated via the library manager. Maybe there would be a clever way to override on a case-by case basis (for example I wouldn't want the Teensy version of Firmata included when the latest Firmata version supports all Teensy boards).\r\n- Consider including core libraries in all architecture variants. For example include Servo in samd instead of trying to maintain a all in one version for all avr, sam and samd, especially when new boards are available before they are fully compatible with the core software.\r\n- Consider a way for the library manager to be architecture aware. This would enable updating a library for only certain architectures.\r\n\r\n\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/arduino/Arduino/issues/comments/153808145","html_url":"https://github.com/arduino/Arduino/issues/4064#issuecomment-153808145","issue_url":"https://api.github.com/repos/arduino/Arduino/issues/4064","id":153808145,"user":{"login":"soundanalogous","id":401539,"avatar_url":"https://avatars.githubusercontent.com/u/401539?v=3","gravatar_id":"","url":"https://api.github.com/users/soundanalogous","html_url":"https://github.com/soundanalogous","followers_url":"https://api.github.com/users/soundanalogous/followers","following_url":"https://api.github.com/users/soundanalogous/following{/other_user}","gists_url":"https://api.github.com/users/soundanalogous/gists{/gist_id}","starred_url":"https://api.github.com/users/soundanalogous/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soundanalogous/subscriptions","organizations_url":"https://api.github.com/users/soundanalogous/orgs","repos_url":"https://api.github.com/users/soundanalogous/repos","events_url":"https://api.github.com/users/soundanalogous/events{/privacy}","received_events_url":"https://api.github.com/users/soundanalogous/received_events","type":"User","site_admin":false},"created_at":"2015-11-04T17:52:22Z","updated_at":"2015-11-04T17:52:22Z","body":"> The issue has nothing to do with the Zero\r\n\r\nYes in terms of the board itself, etc but it's still tangentially related. The version of Servo that was included with Arduino 1.6.5 did not yet support SAMD boards. Therefore in order to compile a library for Zero that included Servo.h, you had to update Servo to the latest version via the library manager. However doing this made sketches using Servo no longer compile on 3rd party boards that bundle their own version of servo.\r\n\r\nIf you want to recreate to understand the frustration do this:\r\n1. Make sure you don't already have a newer version (1.1.0+) of Servo installed in you sketchbook lib. If so, remove it temporarily.\r\n2. Install a clean version of Arduino 1.6.5\r\n3. Install Zero via the boards manager\r\n4. Install [teensyduino](https://www.pjrc.com/teensy/td_download.html) or another 3rd party board package that includes Servo in its core.\r\n5. Select Zero and try to compile a sketch that includes the servo library. It will fail.\r\n6. At this point you could do what I did and use the library manager to get an updated version of Servo.\r\n7. Try to compile again, it will succeed\r\n8. Select a teensy board and try to compile the same sketch, it will fail on Servo.\r\n9. Try to figure out how to get back to a state where you can compile the sketch on Teensy.\r\n\r\nHowever this should now be resolved in Arduino 1.6.6 (I haven't had time to verify yet). Overall, having libraries installed in the sketchbook lib has been helpful, especially in ease of updating libraries. However, it would be nice to figure out a way to fix this library compatibility issue at some point to avoid having to install and reinstall different library versions when switching between boards."}}