-
Notifications
You must be signed in to change notification settings - Fork 9
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
Non-standard installation of plugins to <prefix>/plugins
may lead to conflicts
#136
Comments
We'll look into this. Historically, it was never a good idea to install this type of software in /usr or even /usr/local. However, with containerization, it seems much less problematic. |
And why not, actually? Generally this has been avoided because it requires adhering to some standards, being somewhat organized, and figuring out some things in the interest of user experience. For as long as have been involved in software development at JLab I have found it very useful to make sure everything can be installed in |
The main issues are:
The /usr and /usr/local system is really designed for user-level software, not developer environments. The software in our field has been largely needed as a developer environment. Even with ROOT on my laptop, I have several versions simultaneously which simply would not work if they were all trying to install in /usr/local Having said that, containers are a different story. It is effectively like having many different computers, each having to support only a single set of software versions. There, the single directory tree installation structure is much more reasonable. |
I definitely don't recommend people do system installs of JANA, (or any scientific software for that matter, particularly any scientific software that has transitive dependencies on both Python and ROOT... In fact I prefer not linking against any system libraries in most cases.) If the user doesn't provide a That being said, we don't disallow users from installing in |
I install all scientific software into spack environment views equivalent to You have to stop thinking that JANA2 is something each user will install themselves; they won't (regardless of containers or cvmfs or central system install on a JLab group disk). There will be system administrators and software librarians who will have to roll this out for others. Installing stacks of software in a single prefix is very common, and |
I'm pretty sure we arguing completely different things at this point. Re-reading Wouter's original post, I believe his concern is regarding the directory structure under being compatible with other packages that are also installing under . The The main requests here are:
instead of
where the former is a little misleading since that file does not exist under the JANA directory in the source tree, Alternatively, we could install the directories for all plugin headers under
I'm not 100% sure the best way to handle this, but I do agree tightening thing up so JANA can play nicely with other packages installed in the same |
…942) ### Briefly, what does this PR introduce? `JANA_PLUGIN_PATH` in eic-shell (and therefore CI environments) is prepopulated with `/usr/local/lib/EICrecon/plugins:/usr/local/plugins`. This means that removing (intentionally or otherwise) a plugin in a PR will still cause it to be found in `/usr/local/lib/EICrecon/plugins`. We need `/usr/local/plugins` though, because that contains the `janadot` plugin to create callgraphs. There's an issue reported to JANA2 (JeffersonLab/JANA2#136) that points out that installing plugins in a shared namespace at `/usr/local/plugins` may lead to issues and does not conform to the linux FHS. But at least EICrecon plugins are not installed there, otherwise we would have exactly this issue. ### What kind of change does this PR introduce? - [x] Bug fix (issues, potentially) - [ ] New feature (issue #__) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [ ] Documentation has been added / updated - [ ] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? No. ### Does this PR change default behavior? No.
- Plugin libraries install to lib/JANA/plugins/ - Plugin headers install to include/JANA/plugins/$PLUGIN_NAME Addresses issue #136
Pretty much all of the discussion here is incorporated into PR #330. Several loose ends to consider:
|
Currently JANA2 installs plugins into the
<prefix>/plugins
directory. This directory that could resolve (for system-wide installs) to e.g./usr/plugins
which is non-standard and can lead to conflicts when generic names such asdd4hep.so
,podio.so
ortutorial.so
are used, where the full path does not include any reference to JANA2. (Naming libraries as<name>.so
without thelib
prefix appears to be acceptable in dedicated plugin directories.) This affects downstream projects such as EICrecon as well and prevents multiple independent downstream projects from installing identically-named plugins into the same prefix. This is particularly relevant for environments like eic-shell which uses spack views to install into/usr/local
and will fail upon collisions.A brief search indicates that the following locations are used by other packages:
<prefix>/lib/<packagename>/plugins/<pluginname>/*.so
(vlc, qt5, qt6, rpm-utils, meshlab, krb5)<prefix>/lib/<packagename>[/<version>]/plugins/*.so
(thunderbird, uniquity)There are a few other files which may lead to collisions as well:
<prefix>/include/external/catch.hpp
(should not be installed)<prefix>/include/regressiontest
(should be under a<packagename>
directory ininclude
)The text was updated successfully, but these errors were encountered: