-
-
Notifications
You must be signed in to change notification settings - Fork 5k
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 Package: bigdft-suite #19683
Merged
Merged
Add Package: bigdft-suite #19683
Changes from all commits
Commits
Show all changes
78 commits
Select commit
Hold shift + click to select a range
6beadea
BigDFT build recipe
william-dawson afc3542
Fix build config
william-dawson f7afea3
No testing
william-dawson 7dfe0f2
Fix prefix
william-dawson 158b4c9
Fix activate
william-dawson f791035
Fill out the script
william-dawson a492cd5
Split up script
william-dawson 8d93d4b
Second patch required for output
william-dawson e32efea
Activate won't work for this case
william-dawson ce05ae5
Fix activate script
william-dawson 9e96d6c
Fix build number
william-dawson 51b0b28
Setup to skip yaml and PyYAML
william-dawson 974f8b4
Sub licenses
william-dawson 7775916
Should clarify that this is the suite version
william-dawson 78e6434
Build 0
william-dawson f99572c
NTPoly can be satisfied externally
william-dawson fa6a642
Lint
william-dawson 5d42b94
GNU make
william-dawson 5f18966
Setup tool for python packages
william-dawson 0e50165
Maybe pip is what's needed.
william-dawson be2eca6
Skip mac for now
william-dawson 8dc918f
Try pyproject.toml definition
william-dawson e6f38be
Fix directory
william-dawson b861ccd
Run as root allowed
william-dawson d852812
Needs binutils
william-dawson 37f8659
Maybe setuptools has to be in host
william-dawson 0e66148
Looks like we didn't need this patch
william-dawson 0fecf82
Revert "Maybe setuptools has to be in host"
william-dawson 649cb3b
Reverted too far...
william-dawson f596240
Knowledge base says only put mpi as a host requirement
william-dawson 29bfa8f
Running openmpi requires ssh
william-dawson 60d5f1b
lint
william-dawson 88a1c17
patches in meta.yaml
william-dawson 91967f7
Fix patch configuration
william-dawson 93512f5
Test compatability of libxc
william-dawson 20148ab
Try using built in libxc version 4
william-dawson cbafa76
Run time dependency?
william-dawson f8b4960
Try using run exports
william-dawson b0c0994
Revert "Try using run exports"
william-dawson 12b94fa
Libxc license no longer needed to be explicitly included
william-dawson 1e9a710
Lint
william-dawson f045485
Match abinit's spec on libxc
william-dawson 8d2bbe3
Release (#1)
william-dawson a334e68
Try the newest
william-dawson ab3f13d
Fix hash
william-dawson 9b450bc
Semantically versioned
william-dawson 70df2ae
Underscore?
william-dawson 51e9514
Fix hash
william-dawson d35bb86
Deactivate script
william-dawson 088f2c6
Explicit unset
william-dawson 0e83742
Revert "Explicit unset"
william-dawson 2abe151
Don't write actual values, everything is a variable
william-dawson 1959a35
Fix input path
william-dawson 7e26cb4
Debug this variable issue
william-dawson 19efef3
Verify by printing the generated files
william-dawson f6f43d4
Unset all of the conda variables
william-dawson 1dcb006
Include all license files by globbing
william-dawson e2caaa8
Copy the licenses explicitly in the build script
william-dawson 743563e
Explicit list, don't use glob
william-dawson fc49bdc
Fix path
william-dawson 47514d2
Update recipes/bigdft/meta.yaml
william-dawson 23f9378
Add mpi version info to string
william-dawson e7385aa
A few cli tests for useful apps
william-dawson 23fe3be
Absolute path
william-dawson 1e6c7bd
Test more imports
william-dawson 55e0163
Indeed GI is not ready
william-dawson 7ba86f2
Shared build
william-dawson e6a76e4
Needed a space
william-dawson 7e8b01c
Dynamic, not shared
william-dawson baa5ad9
Check the lib directory
william-dawson faff6bd
Remove jhbuild
william-dawson 70cb7e6
Debug
william-dawson d6eda59
Remove jhbuild fixed
william-dawson 0b66b62
For now just list them so I can get the names
william-dawson f7f0453
Remove static libraries
william-dawson 1c228c0
Pin only to minor version
william-dawson 4c0532a
Update recipes/bigdft/run_test.sh
william-dawson 7f9271c
Remove test of liborbs
william-dawson File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
Please refer to the licenses of each individual component: | ||
|
||
licenses/atlab.copying | ||
licenses/bigdft.copying | ||
licenses/chess.copying | ||
licenses/futile.copying | ||
licenses/GaIN.copying | ||
licenses/libabinit.copying | ||
licenses/psolver.copying | ||
licenses/pybigdft.copying | ||
licenses/spred.copying | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
source backup_conda.sh | ||
source bigdftvars.sh | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
""" | ||
Generate scripts that backup the environment variables which are | ||
set by bigdftvars.sh | ||
|
||
Usage: | ||
python backup_variables.py /path/to/bigdftvars.sh | ||
""" | ||
from sys import argv | ||
from os.path import join, dirname | ||
|
||
if __name__ == "__main__": | ||
var_file = argv[1] | ||
|
||
# Get a list of variables that are set, and their current values | ||
variables = [] | ||
with open(var_file) as ifile: | ||
for line in ifile: | ||
exp, _ = line.split("=") | ||
variables.append(exp.split()[1]) | ||
|
||
# Write a script that stores those values when sourced | ||
backup_file = join(dirname(var_file), "backup_conda.sh") | ||
with open(backup_file, "w") as ofile: | ||
for var in variables: | ||
ofile.write("export " + var + "_CONDA=$" + var + "\n") | ||
|
||
# Write a script that restores those values | ||
restore_file = join(dirname(var_file), "restore_conda.sh") | ||
with open(restore_file, "w") as ofile: | ||
for var in variables: | ||
ofile.write("export " + var + "=$" + var + "_CONDA\n") | ||
ofile.write("unset " + var + "_CONDA\n") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# Files | ||
cp $RECIPE_DIR/conda.rc . | ||
|
||
# Build | ||
export JHBUILD_RUN_AS_ROOT="please do it" | ||
mkdir build | ||
cd build | ||
python ../Installer.py -y autogen | ||
python ../Installer.py -y build -f ../conda.rc | ||
|
||
# Environment variables | ||
python $RECIPE_DIR/backup_variables.py $PREFIX/bin/bigdftvars.sh | ||
cat $PREFIX/bin/*conda.sh | ||
|
||
# Activate script | ||
mkdir -p "${PREFIX}/etc/conda/activate.d" | ||
cp "${RECIPE_DIR}/activate.sh" "${PREFIX}/etc/conda/activate.d/${PKG_NAME}_activate.sh" | ||
mkdir -p "${PREFIX}/etc/conda/deactivate.d" | ||
cp "${RECIPE_DIR}/deactivate.sh" "${PREFIX}/etc/conda/deactivate.d/${PKG_NAME}_deactivate.sh" | ||
|
||
# Remove Extra Files | ||
rm -r $PREFIX/_jhbuild | ||
rm $PREFIX/lib/libabinit.a | ||
rm $PREFIX/lib/libatlab-1.a | ||
rm $PREFIX/lib/libbigdft-1.a | ||
rm $PREFIX/lib/libCheSS-1.a | ||
rm $PREFIX/lib/libdicts.a | ||
rm $PREFIX/lib/libfutile-1.a | ||
rm $PREFIX/lib/libGaIn.a | ||
rm $PREFIX/lib/liborbs.a | ||
rm $PREFIX/lib/libPSolver-1.a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
#This is the configuration file for the BigDFT installer | ||
#This is a python script which is executed by the build suite | ||
|
||
#List the module the this rcfile will build | ||
modules = ['bigdft'] | ||
skip = ["spglib", "PyYAML", "libyaml", "ntpoly", "libxc"] | ||
|
||
from os import environ | ||
prefix = environ["PREFIX"] | ||
|
||
def env_configuration(): | ||
''' | ||
Species the configure line for various autotools packages. | ||
''' | ||
from sys import platform | ||
from os import environ | ||
from os.path import join | ||
env = {} | ||
env["FC"] = "mpifort" | ||
env["CC"] = environ["CC_FOR_BUILD"] | ||
env["CXX"] = environ["CXX_FOR_BUILD"] | ||
env["CFLAGS"] = "-O2 -DCONDA " + environ["CFLAGS"] + " -ldl" | ||
env["CPPFLAGS"] = environ["CPPFLAGS"] | ||
env["CPPFLAGS"] += " -I" + join(prefix, "include", "futile") | ||
env["FCFLAGS"] = "-O2 -fopenmp -fallow-argument-mismatch " | ||
env["FCFLAGS"] += environ["FORTRANFLAGS"] + " -ldl" | ||
env["--with-ext-linalg"] = "-llapack -lblas" | ||
env["--with-yaml-path"] = prefix | ||
return " ".join(['"' + x + '=' + y + '"' for x, y in env.items()]) + \ | ||
" --enable-dynamic-libraries" | ||
|
||
#here follow the configuration instructions for the modules built | ||
autogenargs = env_configuration() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
mpi: | ||
- openmpi | ||
- mpich | ||
|
||
channel_targets: | ||
- conda-forge bigdft_dev | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
source $BIGDFT_ROOT/restore_conda.sh |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ideally, this should be paired with a
deactivate.sh
script that undoes the effect of the activation script, so the env vars set do not permeate into the user session once the env is deactivated.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Do you know of any projects that have well written
deactivate.sh
scripts that unset environment variables? Because it seems like I'd first need to store all of the original environment variable values somewhere (noting that multiple sessions with different initial conditions could be inside the environment at the same time) for restoring. I can write a script to do all this but I'd like to avoid any pitfalls.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can search Github for projects in the conda-forge organization which use a
deactivate.sh
script https://github.com/search?q=org%3Aconda-forge+deactivate.sh&type=codeThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good example. The idea is to backup potential values that were set for that env var before you activate. Then on deactivation, restore to the backup or, if empty, unset.
You will need to take notes of what the
source
d script is doing, though :)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the suggestions! Storing in environment variables with the
conda
suffix seems like a good strategy. I've implemented a deactivate script based on this.