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

implemented setup.py for install easybuild-easyconfigs #3

Merged
merged 11 commits into from
Oct 23, 2012

Conversation

boegel
Copy link
Member

@boegel boegel commented Oct 19, 2012

No description provided.

@ghost ghost assigned JensTimmerman Oct 19, 2012
@boegel
Copy link
Member Author

boegel commented Oct 19, 2012

Tested both with python setup install --prefix=/tmp, and with easy_install --prefix=/tmp https://github.com/boegel/easybuild-easyconfigs/tarball/easy_install_support, works perfectly.

@JensTimmerman
Copy link
Contributor

Can you also update the README.md to reflect this installation method?

@boegel
Copy link
Member Author

boegel commented Oct 20, 2012

Turns out this doesn't work as expected with setuptools v0.6c5 and Python 2.4, which is what we have installed on our gengar cluster.

It's installed a zipped egg with that setup, and thus the easyconfigs are not easy to use. You can install an unzipped egg with easy_installs --always-unzip option, but then the easyconfigs reside in a share directory inside the egg, which is not what we want.

@boegel
Copy link
Member Author

boegel commented Oct 20, 2012

I just looked into fixing the setup.py script such that the easyconfigs are also installed in $PREFIX/share when easy_i stall is used.
It turns out that the version of setuptools has nothing to do with it. The hack that's in place now in setup.py which works when the easyconfigs are installed with "python setup.py install [--prefix /tmp]" just doesn't work with easy_install.

After over two hours of fiddling about and figuring out the easy_install source code, my conclusion is that there is no decent way to get around the fact that setuptools want to install everything inside an egg, even data files that are basically just text files.
The hack that works for the setup.py installation mode is pretty ugly already, and I haven't found a way to extend it so that also easy_install is tricked into installing the easyconfigs somewhere outside of an egg.

Thus, I feel we just have to live with the fact that the easyconfigs will be installed in a somewhat fishy (imho) directory deep inside the install dir that was specified.
We can slightly relieve this issue by making EasyBuild look for the easyconfig file there in case a non-absolute path was specified, and add an option to list all available easyconfigs. It would probably also make sense to make this the default path for --robot. I plan to implement exactly that and include it in the setup.py pull request in the easybuild-framework repo.

Thoughts, @JensTimmerman, @stdweird?

…n /share, doesn't work when easy_install is used; add zip_safe = False to force unzipped egg being installed
@stdweird
Copy link
Contributor

since easy_install installs inside a containerised environment, you can't put anything out of that container (i tried hard for VSC-tools).
what we could do is ship an easyconfig installer (ie wrapper around regular distutils setup.py) with the framework; or add such an option to the eb script (--update-configs ?).
for the easyblocks it's a similar issue imho, on one side they actaully do belong in an egg (being modules and all that), on the other side, people also want to modify/study them.

apologies for raising more issues @boegel @JensTimmerman

@boegel
Copy link
Member Author

boegel commented Oct 21, 2012

I disagree that this is a similar issue for easyblocks. If people want to see the code, they can browse the repository on GitHub.
For easyconfigs however, you need to specify their path to EasyBuild. I'd hate to run EasyBuild each time with a command line like eb /usr/local/lib/python2.4/site-packages/easybuild_easyconfigs-0.9.0dev-py2.7.egg/easybuild/easyconfigs/g/GCC/GCC-4.5.3.eb . That's just insane.

We could resolve this by making EasyBuild look in this path for relative easyconfig paths that can not be resolved in the regular way, thus making eb g/GCC/GCC-4.5.3.eb or even eb GCC-4.5.3.eb equivalent to the above, no matter where the easybuild-easyconfigs package is installed.

@stdweird
Copy link
Contributor

to make handling the easyconfig more user-friendly, eb should indeed look relative to the install path if it can't resolve the easyconfig file argument as a file (abolute path is not the issue, but reltive to current working directory).
the only missing feature then will be tab-completion. but even that cna be solved, see http://aplawrence.com/Unix/customtab.html, it's bash specific and requires to add something to .bashrc, but i think we can live with that.

@JensTimmerman
Copy link
Contributor

look into generate_wiki script for code that lists all easyconf files
(but it's basically just a os.walk and parse files that look like eb's)
If you do add a function that does this, the generate wiki script can use this instead of doing the os.walk itself
However, try to keep in mind that it we would like to add a method to list all easyconfigs inside a github repository aswell. (using the github api)

@boegel
Copy link
Member Author

boegel commented Oct 21, 2012

@JensTimmerman: It's already there, see easybuilders/easybuild-framework@64a5252 .

This may be hoisted into a function that the wiki generation script can use as well, let's look into that later. I really want to move forward now, get this easy_install show on the road so we can test the whole toolchain business.

@boegel
Copy link
Member Author

boegel commented Oct 21, 2012

Fixing this also results in a much nicer quick demo for the impatient. It boils down to a single short line now:

eb HPL-2.0-goalf-1.1.0-no-OFED.eb --robot

Nice!

@boegel
Copy link
Member Author

boegel commented Oct 22, 2012

@JensTimmerman, please review and test via e.g. easy_install --user easybuild

@JensTimmerman
Copy link
Contributor

works here.

boegel added a commit that referenced this pull request Oct 23, 2012
implemented setup.py for install easybuild-easyconfigs
@boegel boegel merged commit 2335fa3 into easybuilders:develop Oct 23, 2012
JensTimmerman added a commit that referenced this pull request Jan 7, 2013
fix MDP file naming + style fixes
boegel pushed a commit that referenced this pull request Jan 17, 2013
fix wikibeamer easyconfig, install it as a Python package
boegel pushed a commit that referenced this pull request Jan 13, 2014
Signed-off-by: Fotis Georgatos <fotis.georgatos@uni.lu>
boegel pushed a commit that referenced this pull request Aug 14, 2015
style fixes in modloadmsg for texinfo
boegel pushed a commit that referenced this pull request Oct 15, 2015
small style fix in netCDF 4.3.0 patches spec
boegel pushed a commit that referenced this pull request Jan 23, 2016
boegel pushed a commit that referenced this pull request Feb 29, 2016
sync with develop & resolve conflicts
boegel pushed a commit that referenced this pull request Mar 2, 2016
fix syntax & style issues in horton easyconfig file
boegel pushed a commit that referenced this pull request Apr 13, 2016
boegel pushed a commit that referenced this pull request May 11, 2016
boegel pushed a commit that referenced this pull request May 13, 2016
break up long lines in SuperLu easyconfigs
boegel pushed a commit that referenced this pull request Aug 18, 2016
…3.5.1

add sanity_check_paths to configurable-http-proxy easyconfigs + minor style fixes (tabs, long lines)
boegel pushed a commit that referenced this pull request Aug 26, 2016
fix minor style issues (indent/order/long lines)
boegel pushed a commit that referenced this pull request Aug 30, 2016
fix version in PETSc 3.7.3 easyconfigs + add --LIBS configure option
boegel pushed a commit that referenced this pull request Nov 15, 2016
use 'Conda' easyblock + empty version for dummy toolchain + some minor enhancements
boegel pushed a commit that referenced this pull request Dec 12, 2016
use available Mono easyblock, add build deps in Mono easyconfigs
boegel pushed a commit that referenced this pull request Mar 14, 2017
jordiblasco pushed a commit to jordiblasco/easybuild-easyconfigs that referenced this pull request Sep 22, 2017
adding Automake 1.15 with GCC-5.4.0 and intel-2017.01
boegel pushed a commit that referenced this pull request Jun 12, 2018
filter out Boost version used as dependency for software that depends on a particular version of Boost
boegel pushed a commit that referenced this pull request Aug 16, 2018
style fixes, add missing libgeotiff dep + switch to Python 3.6.6
boegel pushed a commit that referenced this pull request Mar 7, 2019
…R2018b

add whitelist for Python packages that don't support installation with pip
boegel pushed a commit that referenced this pull request Nov 15, 2019
consistently add missing libjpeg-turbo dependency in LibTIFF 4.0.9 and 4.0.10 easyconfigs
smoors pushed a commit that referenced this pull request Jan 10, 2020
boegel pushed a commit that referenced this pull request Nov 2, 2020
also use https URLs in comments in Geant4 easyconfigs
boegel pushed a commit that referenced this pull request Sep 3, 2021
add -Java-1.8 versionsuffix for Bazel 0.29.1 with GCCcore/9.3.0
boegel pushed a commit that referenced this pull request Sep 16, 2021
Update and rename TensorFlow-2.2.2-foss-2020b.eb to TensorFlow-2.2.3-foss-2020b.eb
boegel pushed a commit that referenced this pull request Oct 20, 2021
…02107

update SciPy-bundle wiht foss/2021.07 toolchain to latest pythran/pandas
lexming pushed a commit that referenced this pull request Feb 21, 2024
…atch

Two more patches for PyTorch-2.1.2-foss-2023a-CUDA-12.1.1.eb
jfgrimm pushed a commit that referenced this pull request Feb 22, 2024
use external EMSF instead of bundled binaries
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

Successfully merging this pull request may close these issues.

3 participants