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

also install Python bindings for recent Ninja easyconfigs #16025

Closed

Conversation

boegel
Copy link
Member

@boegel boegel commented Aug 10, 2022

Comment on lines +17 to +18
('CMake', '3.20.1'),
('scikit-build', '0.15.0'),
Copy link
Contributor

Choose a reason for hiding this comment

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

I'm also really concerned we are building in some circular dependency hell here, the extra (build)dependencies really worries me for a build tool.

Copy link
Member Author

Choose a reason for hiding this comment

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

Ninja already depends on Python, and scikit-build sits directly on top of Python, so I don't see room for introducing a circular dependency?

}

exts_list = [
('ninja', '1.10.2.3', {
Copy link
Contributor

Choose a reason for hiding this comment

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

As far as i could tell pypi "sources" aren't actually new code compared to the Ninja source tarball itself, just structured different + perhaps some autogenerated stuff (i think?), but, this approach worries me in 2 ways;

  1. these version don't match with the easyconfig version, i think we should definitely do that
  2. the python package also installs the bin/ninja binary (i think, at least, pip install ninja installs a bin/ninja). So i guess this is overwriting the one we just built?

so, perhaps we could opt to just use the pypi source? or, if possible, generate the python package from the original source?

Copy link
Member Author

Choose a reason for hiding this comment

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

There are no 1.10.1.x versions of scikit-build, so can't "match" with Ninja 1.10.1...

I should look into the bin/ninja part, that may be a problem I overlooked indeed.

The sources for the ninja Python package are in https://github.com/scikit-build/ninja-python-distributions .
That mentions that the wheels include an actual ninja binary, but I'm not sure that's also the case when building from source...

Copy link
Member Author

Choose a reason for hiding this comment

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

It looks like the bin/ninja that comes with the Python package is a light wrapper on top of the actual ninja binary (it's equivalent to the ninja function in https://github.com/scikit-build/ninja-python-distributions/blob/master/src/ninja/__init__.py)

Copy link
Member

@migueldiascosta migueldiascosta Aug 11, 2022

Choose a reason for hiding this comment

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

The sources for the ninja Python package are in https://github.com/scikit-build/ninja-python-distributions .
That mentions that the wheels include an actual ninja binary, but I'm not sure that's also the case when building from source...

Seems it is? https://github.com/scikit-build/ninja-python-distributions/blob/450d8bb0dc375a536ee2a12eacca0d263dae3be2/CMakeLists.txt#L83-L102

Copy link
Member

Choose a reason for hiding this comment

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

It looks like the bin/ninja that comes with the Python package is a light wrapper on top of the actual ninja binary (it's equivalent to the ninja function in https://github.com/scikit-build/ninja-python-distributions/blob/master/src/ninja/__init__.py)

hm, it seems there are two ninjas (?) https://github.com/scikit-build/ninja-python-distributions/blob/450d8bb0dc375a536ee2a12eacca0d263dae3be2/CMakeLists.txt#L155-L156

@boegel
Copy link
Member Author

boegel commented Aug 10, 2022

Test report by @boegel
SUCCESS
Build succeeded for 4 out of 4 (4 easyconfigs in total)
node3131.skitty.os - Linux RHEL 8.4, x86_64, Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz (skylake_avx512), Python 3.6.8
See https://gist.github.com/7349d8f1efab0d7831b17c7848876036 for a full test report.

@boegel
Copy link
Member Author

boegel commented Aug 25, 2022

Also installing the ninja Python package as an extension effectively wipes the original ninja binary:

$ module load Ninja/1.10.1-GCCcore-10.2.0
$ which ninja
/software/Ninja/1.10.1-GCCcore-10.2.0/bin/ninja

$ file $(which ninja)
/software/Ninja/1.10.1-GCCcore-10.2.0/bin/ninja: Python script, ASCII text executable

$ ninja --version
1.10.2.git.kitware.jobserver-1

ninja is clearly more than just Python bindings to the ninja binary, and as far I can tell there no way to point to an existing Ninja installation, so installing ninja as an extension along with the classic Ninja installation doesn't make much sense...

@boegel boegel closed this Aug 25, 2022
@boegel boegel deleted the 20220810220130_new_pr_Ninja1101 branch August 25, 2022 19:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants