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
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions easybuild/easyconfigs/n/Ninja/Ninja-1.10.1-GCCcore-10.2.0.eb
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,44 @@ checksums = ['a6b6f7ac360d4aabd54e299cc1d8fa7b234cd81b9401693da21221c62569a23e']

builddependencies = [
('binutils', '2.35'),
('CMake', '3.20.1'),
('scikit-build', '0.15.0'),
Micket marked this conversation as resolved.
Show resolved Hide resolved
Comment on lines +17 to +18
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?

]

dependencies = [
('Python', '3.8.6'),
]

cmds_map = [('.*', "./configure.py --bootstrap")]

files_to_copy = [(['ninja'], 'bin')]

exts_defaultclass = 'PythonPackage'
exts_default_options = {
'source_urls': [PYPI_SOURCE],
'download_dep_fail': True,
'use_pip': True,
}

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

'checksums': ['e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408'],
}),
]

modextrapaths = {
'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']
}

sanity_check_paths = {
'files': ['bin/ninja'],
'dirs': [],
'dirs': ['lib/python%(pyshortver)s/site-packages'],
}

sanity_check_commands = ["ninja --version"]
sanity_check_commands = [
"ninja --version",
"pip check",
"python -c 'import ninja'",
]

moduleclass = 'tools'
30 changes: 28 additions & 2 deletions easybuild/easyconfigs/n/Ninja/Ninja-1.10.2-GCCcore-10.3.0.eb
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,44 @@ checksums = ['ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed']

builddependencies = [
('binutils', '2.36.1'),
('CMake', '3.20.1'),
('scikit-build', '0.15.0'),
]

dependencies = [
('Python', '3.9.5'),
]

cmds_map = [('.*', "./configure.py --bootstrap")]

files_to_copy = [(['ninja'], 'bin')]

exts_defaultclass = 'PythonPackage'
exts_default_options = {
'source_urls': [PYPI_SOURCE],
'download_dep_fail': True,
'use_pip': True,
}

exts_list = [
('ninja', '1.10.2.3', {
'checksums': ['e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408'],
}),
]

modextrapaths = {
'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']
}

sanity_check_paths = {
'files': ['bin/ninja'],
'dirs': [],
'dirs': ['lib/python%(pyshortver)s/site-packages'],
}

sanity_check_commands = ["ninja --version"]
sanity_check_commands = [
"ninja --version",
"pip check",
"python -c 'import ninja'",
]

moduleclass = 'tools'
30 changes: 28 additions & 2 deletions easybuild/easyconfigs/n/Ninja/Ninja-1.10.2-GCCcore-11.2.0.eb
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,44 @@ checksums = ['ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed']

builddependencies = [
('binutils', '2.37'),
('CMake', '3.22.1'),
]

dependencies = [
('Python', '3.9.6'),
('scikit-build', '0.15.0'),
]

cmds_map = [('.*', "./configure.py --bootstrap")]

files_to_copy = [(['ninja'], 'bin')]

exts_defaultclass = 'PythonPackage'
exts_default_options = {
'source_urls': [PYPI_SOURCE],
'download_dep_fail': True,
'use_pip': True,
}

exts_list = [
('ninja', '1.10.2.3', {
'checksums': ['e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408'],
}),
]

modextrapaths = {
'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']
}

sanity_check_paths = {
'files': ['bin/ninja'],
'dirs': [],
'dirs': ['lib/python%(pyshortver)s/site-packages'],
}

sanity_check_commands = ["ninja --version"]
sanity_check_commands = [
"ninja --version",
"pip check",
"python -c 'import ninja'",
]

moduleclass = 'tools'
30 changes: 28 additions & 2 deletions easybuild/easyconfigs/n/Ninja/Ninja-1.10.2-GCCcore-11.3.0.eb
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,44 @@ checksums = ['ce35865411f0490368a8fc383f29071de6690cbadc27704734978221f25e2bed']

builddependencies = [
('binutils', '2.38'),
('CMake', '3.23.1'),
('scikit-build', '0.15.0'),
]

dependencies = [
('Python', '3.10.4'),
]

cmds_map = [('.*', "./configure.py --bootstrap")]

files_to_copy = [(['ninja'], 'bin')]

exts_defaultclass = 'PythonPackage'
exts_default_options = {
'source_urls': [PYPI_SOURCE],
'download_dep_fail': True,
'use_pip': True,
}

exts_list = [
('ninja', '1.10.2.3', {
'checksums': ['e1b86ad50d4e681a7dbdff05fc23bb52cb773edb90bc428efba33fa027738408'],
}),
]

modextrapaths = {
'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']
}

sanity_check_paths = {
'files': ['bin/ninja'],
'dirs': [],
'dirs': ['lib/python%(pyshortver)s/site-packages'],
}

sanity_check_commands = ["ninja --version"]
sanity_check_commands = [
"ninja --version",
"pip check",
"python -c 'import ninja'",
]

moduleclass = 'tools'