Comments (14)
Worthwhile and should not be hard to implement.
from easybuild-framework.
Hi there,
I've been following the thread on zlib and it just proves once more how messy this osdep business can be.
Request to ignore osdependencies (see #102), or to support them better, is a sensible workaround?
OK, I tried to play a bit with it, to add the --ignore-osdependencies
parameter, but was lost a little bit in the source:
- easybuild/build.py: is the obvious place to scan for the parameter and set a python var about it
- easybuild/framework/easyconfig.py: where def validate() calls def validate_os_deps(); here it should take effect
I just haven't understood too well the logic of the code, to pass down the variable to easyconfig.py;
my suspicion is that there must be some other "better" way to prevent validate_os_deps() to be used!
Your offers?
tia.
from easybuild-framework.
There's a few things you can do.
You can add an extra named parameter to EasyConfig
's __init__
that's enabled by default, and that you can disable when --ignore-osdependencies
is used, e.g. check_osdeps=True
.
You can then pass that to validate
(define the same named variable there), and then use that to check whether validate_os_deps
needs to be called.
Another alternative is to create a function in easyconfig.py that let's you change the list of os dependencies, e.g. set_osdeps(osdeps_list)
; that way you can just empty the list which yield the same result.
We don't really have rules on what's better, that's up to the guy who implements it. As long as it's not too crazy, we'll merge it. ;-)
from easybuild-framework.
This is an important issue for anyone using EasyBuild on non-RedHat systems, so let's bump the milestone to v1.1.
from easybuild-framework.
We never managed to get to really discuss this during the hackathon,
yet it is recognized as important one for cross-platform compatibility.
Since the interpretation of osdependencies is very system-specific,
I think it would be ideal if an external tool is being called for it
(eg. on the mac you could have macports/homebrew, while freebsd is with ports etc).
The simplest interface might be that you call a tool and it returns true
IFF all of its parameters are available as installed packages.
In that case, the answer to this thread would be (the fictional option is installtool):
installtool=/bin/true
and then, you have good orthogonality and need not increase the SLOC by
adding --ignore-osdependencies, which can also be served by --strict=ignore !
Fotis
from easybuild-framework.
I think our current fallback tool is which
This works fine for binaries, but not for libraries, maybe we could even fall deeper down to locate (however the locate database is not created by default on OS X iirc)
And yes, it would be amazing if someone wrote a completey cross platform is_installed
tool, and if we allow for
configuring this in easybuild. But writing this ourselves is currently not on our roadmap. (maybe hashdist might ever provide something like this)
But yes, your suggested option would be a great workaround for now for people who know what they are doing.
from easybuild-framework.
We do fall back on locate
already in v1.0.
It will first try rpm
or dpkg
(whatever is available), then which
, and if needed also locate
.
However, using locate
for libraries or header files doesn't make much sense, because it doesn't tell you whether they're included in the library (-L
) / header file (-I
) search path...
from easybuild-framework.
Hi there,
On Mon, Dec 3, 2012 at 11:20 AM, Kenneth Hoste [email protected]:
It will first try rpm or dpkg (whatever is available), then which, and if
needed also locate.
Avoid trying to bring the solution as part of easybuild because that's
going to be a mess:
look eg. the packaging of boost libraries across distros... AFAIR, it was a
horror story.
More generally, outsource the problem because then, we MAY also deliver a
hook
to provide eg. tcsh via a module instead (which is a really smart choice
actually!).
cheers,
F
from easybuild-framework.
The problem is that there's no tool out there that solves this cross-platform, imho.
We need a more general solution for this, but up until now, I don't know how to tackle this. Mac OS X doesn't have a package manager to talk to, so we might as well go for a more generic solution (e.g. actually try to use commands, header files, libraries, etc.).
Where possible, we should use explicit dependencies, but sometimes it's just not an option.
from easybuild-framework.
Fotis, an update on this?
I thought you had already mentioned you had a way of doing this?
from easybuild-framework.
Basically, I do "--strict=ignore" which does the job fine for me,
so, I've lowered the priority for this one.
More generally, for this particular issue, I had this fancy idea at some
point:
Use decorators on functions to make a codeblock "@escapable";
ie., let's not pollute the "eb --help" parameter space with all possible
small quirks and bits of tuning we need, and provide instead something like:
--escape=_os_dependency_check OR --escape=sanity_check_step
I think that would allow to experiment for more with the code without
putting excessive pressure to extend it with features and command line
switches...
...anyway, as said, --ignore-osdependencies does have its short-term
solution,
so this issue can be discussed in more detail in a face to face meeting.
On Tue, Feb 19, 2013 at 11:33 AM, Jens Timmerman
[email protected]:
Fotis, an update on this?
I thought you had already mentioned you had a way of doing this?—
Reply to this email directly or view it on GitHubhttps://github.com//issues/102#issuecomment-13766090.
from easybuild-framework.
Jens wrote:
it would be amazing if someone wrote a completey cross platform is_installed tool,
another belayed bit of info, on this thread: (if it fits elsewhere, notify)
This project seems to care for the mappings of packages across distributions:
http://enricozini.org/2011/debian/distromatch/
Perhaps there is a solution to osdependencies by either using that
or, other software projects that depend on it.
from easybuild-framework.
distromatch
looks like a very promising solution for the problem at hand, because in some cases we won't be able to get rid of all the osdependencies
...
from easybuild-framework.
addressed via #799
from easybuild-framework.
Related Issues (20)
- `eb` command fails outside of framework source folder HOT 4
- Auto-enable Fortran oneAPI compilers HOT 1
- Add option to ignore default config files
- refactor easyconfig parameters and template constants to use a consistent naming style HOT 9
- Add `sysroot` support to intel compilers
- `run_shell_cmd` hooks should be applied earlier
- `ModuleNotFoundError` for `distutils` when running with Python 3.12 without setuptools HOT 1
- enhance `--avail-easyconfig-params` to also accept a (single) easyconfig from which to derive the easyblock
- Change the group of the software and module on installation
- The GCC OpenMP runtime (`libgomp`) should be a banned library for `GCCcore` (only) HOT 5
- Environment variable change in module cray-libsci of CPE 23.12 HOT 2
- easyconfig files for dependencies not found when using `--from-commit`
- Dumping of reprod directory happening after post_package_hook
- ERROR: Unexpected number of args for 'unload command' HOT 2
- Defining multiple classes inside an easyblock file
- Building an easystack.yml with --job results in redundant/conflicting build jobs for common dependencies HOT 1
- Improving support for systems using Omni-Path interconnect
- Log file messages regrading downloads are misleading
- META - parameter renaming effort
- change default job backend to Slurm + deprecate support for using GC3Pie as job backend HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from easybuild-framework.