Skip to content
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

boostorg/uuid@0f84313 - broke boost::compute #166

Open
nega0 opened this issue Aug 22, 2024 · 6 comments
Open

boostorg/uuid@0f84313 - broke boost::compute #166

nega0 opened this issue Aug 22, 2024 · 6 comments

Comments

@nega0
Copy link

nega0 commented Aug 22, 2024

$ brew info boost
==> boost: stable 1.86.0 (bottled), HEAD
Collection of portable C++ source libraries
https://www.boost.org/
Installed
/opt/homebrew/Cellar/boost/1.86.0 (16,215 files, 518.0MB) *
  Poured from bottle using the formulae.brew.sh API on 2024-08-21 at 15:08:42
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/b/boost.rb
License: BSL-1.0
==> Dependencies
Required: icu4c ✔, xz ✔, zstd ✔
==> Options
--HEAD
	Install HEAD version

$ command cat main.cc
#include <boost/compute.hpp>

int main(){}

$ gcc -o main -I/opt/homebrew/include -std=c++11 -Wno-deprecated main.cc
In file included from main.cc:1:
In file included from /opt/homebrew/include/boost/compute.hpp:14:
In file included from /opt/homebrew/include/boost/compute/algorithm.hpp:18:
In file included from /opt/homebrew/include/boost/compute/algorithm/accumulate.hpp:20:
In file included from /opt/homebrew/include/boost/compute/algorithm/reduce.hpp:20:
In file included from /opt/homebrew/include/boost/compute/detail/meta_kernel.hpp:39:
/opt/homebrew/include/boost/compute/detail/sha1.hpp:41:26: error: non-const lvalue reference to type 'digest_type' (aka 'unsigned char[20]') cannot bind to a value of unrelated type 'unsigned int[5]'
            h.get_digest(digest);
                         ^~~~~~
/opt/homebrew/include/boost/uuid/detail/sha1.hpp:179:43: note: passing argument to parameter 'digest' here
inline void sha1::get_digest(digest_type& digest)
                                          ^
1 error generated.

$

There are two issues here.

  1. 0f84313 broke boostorg/compute
  2. This breaking change made it through the boost release process.

@pdimov given that 0f84313 is your change, and you were also the last to commit to boost::compute @ 36350b7 maybe you can get us a 1.86.1 sooner rather than later.

@nega0
Copy link
Author

nega0 commented Aug 22, 2024

@pdimov
Copy link
Member

pdimov commented Aug 22, 2024

My mistake; I didn't notice that Boost.Compute was using an implementation detail of UUID.

@nega0
Copy link
Author

nega0 commented Aug 22, 2024

Thank you for following up on the Boost ML, it seems my email there is "stuck". Probably for the best, anyway. I don't think anyone would expect you or any boost maintainer to notice an integration issue like this on every commit or merge. As a Boost consumer I do expect an issue like this to be caught in the lead up to release. Hopefully this issue can lead to a broader discussion of the "release manager's" role and responsibilities.

@jeking3
Copy link
Collaborator

jeking3 commented Sep 7, 2024

Boost.Compute was using an implementation detail of UUID

This underscores the need for more automation to find and remove invalid use of implementation details across packages.

@pdimov
Copy link
Member

pdimov commented Sep 7, 2024

Compute's tests require OpenCL and are automatically disabled when it's not available, which is why all the automation in the world missed it.

@jeking3
Copy link
Collaborator

jeking3 commented Sep 7, 2024

Agree that not having CI on Boost.Compute is also a problem. However, -if- we had a code scanner to detect this inappropriate use of implementation details, and folks did not violate the rules, it never would have happened.

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

No branches or pull requests

3 participants