-
Notifications
You must be signed in to change notification settings - Fork 371
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
Fix dependency and subdir
in repoquery whoneeds
#3743
base: main
Are you sure you want to change the base?
Conversation
Hind-M
commented
Jan 14, 2025
•
edited
Loading
edited
- Fix subdir in repoquery
- Fix repoquery whoneeds no longer lists package version dependency #3717
6d218d8
to
49c124f
Compare
subdir
in repoquerysubdir
in repoquery whoneeds
@@ -599,7 +592,7 @@ namespace mamba | |||
} | |||
|
|||
std::vector<mamba::printers::FormattedString> headers; | |||
std::vector<std::string_view> cmds, args; | |||
std::vector<std::string> cmds, args; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the bug as cmds
and args
were refering to sfmt after it was out of scope, and this was only appearing in osx and windows...
@@ -670,7 +663,7 @@ namespace mamba | |||
} | |||
else if (cmd == "Subdir") | |||
{ | |||
row.emplace_back(get_subdir(pkg.channel)); | |||
row.emplace_back(pkg.platform); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was not tested and was returning the channel conda-forge
instead of the subdir
.
micromamba/tests/test_repoquery.py
Outdated
res = helpers.umamba_repoquery("whoneeds", "-c", "conda-forge", spec, "--platform", "osx-64") | ||
assert "Name Version Build Depends Channel Subdir" in helpers.remove_whitespaces(res) | ||
if spec == "xtensor=0.24.5": # `Depends` column is empty here (bug?) | ||
assert "cascade 0.1.1 py38h5ce3968_0 conda-forge osx-64" in helpers.remove_whitespaces(res) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if the current behavior in this case (specifying the spec version) is the appropriate one (need to look into it more with maybe more context).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The first builds of cascade
(i.e. the ones of 0.1.1
) depend on xtensor
, but not on xtensor==0.24.5
, here is one of their index.json
:
{
"arch": "x86_64",
"build": "py310ha6c322b_0",
"build_number": 0,
"depends": [
"boost-cpp >=1.78.0,<1.79.0a0",
"fmt >=9.1.0,<10.0a0",
"hdf5 >=1.12.2,<1.12.3.0a0",
"heyoka >=0.21.0",
"heyoka >=0.21.0,<0.22.0a0",
"heyoka.py >=0.21.0",
"libcxx >=14.0.6",
"numpy",
"pybind11-abi 4",
"python >=3.10,<3.11.0a0",
"python_abi 3.10.* *_cp310",
"spdlog >=1.11.0,<1.12.0a0",
"tbb >=2021.8.0",
"xtensor",
"xtensor-blas"
],
"license": "MPL-2.0",
"name": "cascade",
"platform": "osx",
"subdir": "osx-64",
"timestamp": 1677367283346,
"version": "0.1.1"
}
Probably those builds of cascade
have been done against xtensor==0.24.5
.
I think xtensor
should be reported in this case, as it is the case with:
micromamba repoquery whoneeds xtensor -c conda-forge --platform osx-64 | grep cascade
cascade 0.1.1 py38h5ce3968_0 xtensor conda-forge conda-forge
cascade 0.1.1 py310ha6c322b_0 xtensor conda-forge conda-forge
cascade 0.1.1 py39hb1d9d96_0 xtensor conda-forge conda-forge
What do you think?
@@ -621,7 +614,7 @@ namespace mamba | |||
else if (col.find_first_of(":") == col.npos) | |||
{ | |||
headers.emplace_back(col); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could the current code have problem as well? How about?
headers.emplace_back(col); | |
headers.emplace_back(std::string(col)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Converting col
to std::string
in cmds.push_back(std::string(col));
is due to changing cmds
to std::vector<std::string>
(instead of std::vector<std::string_view>
).
But it's not needed in headers.emplace_back(col);
as headers
(std::vector<mamba::printers::FormattedString>
) already have a constructor accepting std::string_view
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, my remark was not clear.
I was wondering whether we could also have this problem for all vectors referencing std::string_view
s directly or indirectly, i.e. could we have the problem with headers
again here if the original std::string
of std::string_view
are freed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since headers
is a vector of a struct (FormattedString
) containing a string
and not a string_view
, it should be okay.
The only string_view
s pointing to a local string
being out of scope later (sfmt
) were cmds
and args
which were modified to string
now.
So seems ok so far.
micromamba/tests/test_repoquery.py
Outdated
res = helpers.umamba_repoquery("whoneeds", "-c", "conda-forge", spec, "--platform", "osx-64") | ||
assert "Name Version Build Depends Channel Subdir" in helpers.remove_whitespaces(res) | ||
if spec == "xtensor=0.24.5": # `Depends` column is empty here (bug?) | ||
assert "cascade 0.1.1 py38h5ce3968_0 conda-forge osx-64" in helpers.remove_whitespaces(res) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The first builds of cascade
(i.e. the ones of 0.1.1
) depend on xtensor
, but not on xtensor==0.24.5
, here is one of their index.json
:
{
"arch": "x86_64",
"build": "py310ha6c322b_0",
"build_number": 0,
"depends": [
"boost-cpp >=1.78.0,<1.79.0a0",
"fmt >=9.1.0,<10.0a0",
"hdf5 >=1.12.2,<1.12.3.0a0",
"heyoka >=0.21.0",
"heyoka >=0.21.0,<0.22.0a0",
"heyoka.py >=0.21.0",
"libcxx >=14.0.6",
"numpy",
"pybind11-abi 4",
"python >=3.10,<3.11.0a0",
"python_abi 3.10.* *_cp310",
"spdlog >=1.11.0,<1.12.0a0",
"tbb >=2021.8.0",
"xtensor",
"xtensor-blas"
],
"license": "MPL-2.0",
"name": "cascade",
"platform": "osx",
"subdir": "osx-64",
"timestamp": 1677367283346,
"version": "0.1.1"
}
Probably those builds of cascade
have been done against xtensor==0.24.5
.
I think xtensor
should be reported in this case, as it is the case with:
micromamba repoquery whoneeds xtensor -c conda-forge --platform osx-64 | grep cascade
cascade 0.1.1 py38h5ce3968_0 xtensor conda-forge conda-forge
cascade 0.1.1 py310ha6c322b_0 xtensor conda-forge conda-forge
cascade 0.1.1 py39hb1d9d96_0 xtensor conda-forge conda-forge
What do you think?