-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
Add a package for Picard #4398
Add a package for Picard #4398
Conversation
See the discussion about installing jar files in spack#4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.
@hartzell What are the benefits of hard-coding the path to the java executable into the wrapper scripts ? If you provide multiple java versions their corresponding modules should set the $JAVA_HOME variable. For Python and Perl scripts, I am using shebang lines, which do not hard-code the interpreter executable, but rather take the first version that they find in the environment (in module files paths are usually prepended instead of appended, therefore you should get the desired version of the interpreter, when you load a module): #!/usr/bin/env python This way you do not restrict the script to a single version of the interpreter. For java a similar setup would be to use $JAVA_HOME/bin/java instead of using the full path. |
One of Spack's goals is that you should always run an executable with the dependencies it was built with. For shared objects, this means adding dependent libraries with RPATH. For scripting languages like Python, this means hard-coding the path to the |
@samfux84, thanks for asking!
Put briefly, because I want to be sure that the applications that I deploy reliably work. There's no guarantee that some random At one job that favored the The most dramatic failures involve modules that include compiled C code, trying to run something compiled with Even pure perl modules aren't really safe, if you install an application with a Proper perl packaging (thank goodness I have a pop filter on my keyboard) has you starting your scripts with The two exceptions to this are fatpacked applications (e.g. ack) and scripts that are so so so simple that "nothing could possibly go wrong". Of course, creative individuals can still wreak havoc via The other dynamic languages have similar issues. I'm less experienced with Java (and I don't do Windows...), but I see no reason to let users monkey up a perfectly good application because they have something funny in their |
@hartzell @adamjstewart Thank you both for your answers. I am still in the process of switching from manual installations to using spack. In the previous software stack that I have setup manually (about 260 software packages, 180 Python modules, 120 R packages) I tried to keep everything as flexible as possible, avoiding to hard-code things wherever possible. For me switching to RPATH and hard-coding things wherever possible is a paradigm change that needs some time to get used to. It makes sense to restrict the number of ways a cluster user can do things wrong to a minimum. |
One of the beautiful things about this kind of infrastructure/automation is:
|
See the discussion about installing jar files in spack#4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.
See the discussion about installing jar files in spack#4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.
See the discussion about installing jar files in spack#4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.
See the discussion about installing jar files in spack#4386. Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.
See the discussion about installing jar files in #4386.
Also installs a wrapper script that has explicit references to the prerequisite java exe and to the jar file in it's final resting place.