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

Add Package: bigdft-suite #19683

Merged
merged 78 commits into from
Oct 6, 2022
Merged
Show file tree
Hide file tree
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 Jul 15, 2022
afc3542
Fix build config
william-dawson Jul 15, 2022
f7afea3
No testing
william-dawson Jul 15, 2022
7dfe0f2
Fix prefix
william-dawson Jul 15, 2022
158b4c9
Fix activate
william-dawson Jul 15, 2022
f791035
Fill out the script
william-dawson Jul 16, 2022
a492cd5
Split up script
william-dawson Jul 16, 2022
8d93d4b
Second patch required for output
william-dawson Jul 16, 2022
e32efea
Activate won't work for this case
william-dawson Jul 16, 2022
ce05ae5
Fix activate script
william-dawson Jul 16, 2022
9e96d6c
Fix build number
william-dawson Jul 16, 2022
51b0b28
Setup to skip yaml and PyYAML
william-dawson Jul 16, 2022
974f8b4
Sub licenses
william-dawson Jul 16, 2022
7775916
Should clarify that this is the suite version
william-dawson Jul 16, 2022
78e6434
Build 0
william-dawson Jul 16, 2022
f99572c
NTPoly can be satisfied externally
william-dawson Jul 16, 2022
fa6a642
Lint
william-dawson Jul 16, 2022
5d42b94
GNU make
william-dawson Jul 16, 2022
5f18966
Setup tool for python packages
william-dawson Jul 16, 2022
0e50165
Maybe pip is what's needed.
william-dawson Jul 16, 2022
be2eca6
Skip mac for now
william-dawson Jul 16, 2022
8dc918f
Try pyproject.toml definition
william-dawson Jul 17, 2022
e6f38be
Fix directory
william-dawson Jul 17, 2022
b861ccd
Run as root allowed
william-dawson Jul 19, 2022
d852812
Needs binutils
william-dawson Jul 19, 2022
37f8659
Maybe setuptools has to be in host
william-dawson Jul 19, 2022
0e66148
Looks like we didn't need this patch
william-dawson Jul 19, 2022
0fecf82
Revert "Maybe setuptools has to be in host"
william-dawson Jul 19, 2022
649cb3b
Reverted too far...
william-dawson Jul 19, 2022
f596240
Knowledge base says only put mpi as a host requirement
william-dawson Jul 19, 2022
29bfa8f
Running openmpi requires ssh
william-dawson Jul 19, 2022
60d5f1b
lint
william-dawson Jul 19, 2022
88a1c17
patches in meta.yaml
william-dawson Jul 20, 2022
91967f7
Fix patch configuration
william-dawson Jul 20, 2022
93512f5
Test compatability of libxc
william-dawson Jul 21, 2022
20148ab
Try using built in libxc version 4
william-dawson Jul 21, 2022
cbafa76
Run time dependency?
william-dawson Jul 21, 2022
f8b4960
Try using run exports
william-dawson Jul 21, 2022
b0c0994
Revert "Try using run exports"
william-dawson Jul 21, 2022
12b94fa
Libxc license no longer needed to be explicitly included
william-dawson Jul 21, 2022
1e9a710
Lint
william-dawson Jul 21, 2022
f045485
Match abinit's spec on libxc
william-dawson Jul 21, 2022
8d2bbe3
Release (#1)
william-dawson Jul 28, 2022
a334e68
Try the newest
william-dawson Aug 4, 2022
ab3f13d
Fix hash
william-dawson Aug 4, 2022
9b450bc
Semantically versioned
william-dawson Aug 12, 2022
70df2ae
Underscore?
william-dawson Aug 12, 2022
51e9514
Fix hash
william-dawson Aug 12, 2022
d35bb86
Deactivate script
william-dawson Aug 15, 2022
088f2c6
Explicit unset
william-dawson Aug 15, 2022
0e83742
Revert "Explicit unset"
william-dawson Aug 15, 2022
2abe151
Don't write actual values, everything is a variable
william-dawson Aug 15, 2022
1959a35
Fix input path
william-dawson Aug 15, 2022
7e26cb4
Debug this variable issue
william-dawson Aug 15, 2022
19efef3
Verify by printing the generated files
william-dawson Aug 15, 2022
f6f43d4
Unset all of the conda variables
william-dawson Aug 15, 2022
1dcb006
Include all license files by globbing
william-dawson Aug 24, 2022
e2caaa8
Copy the licenses explicitly in the build script
william-dawson Aug 24, 2022
743563e
Explicit list, don't use glob
william-dawson Aug 24, 2022
fc49bdc
Fix path
william-dawson Aug 24, 2022
47514d2
Update recipes/bigdft/meta.yaml
william-dawson Aug 24, 2022
23f9378
Add mpi version info to string
william-dawson Aug 29, 2022
e7385aa
A few cli tests for useful apps
william-dawson Aug 31, 2022
23fe3be
Absolute path
william-dawson Aug 31, 2022
1e6c7bd
Test more imports
william-dawson Aug 31, 2022
55e0163
Indeed GI is not ready
william-dawson Aug 31, 2022
7ba86f2
Shared build
william-dawson Aug 31, 2022
e6a76e4
Needed a space
william-dawson Aug 31, 2022
7e8b01c
Dynamic, not shared
william-dawson Aug 31, 2022
baa5ad9
Check the lib directory
william-dawson Aug 31, 2022
faff6bd
Remove jhbuild
william-dawson Sep 1, 2022
70cb7e6
Debug
william-dawson Sep 1, 2022
d6eda59
Remove jhbuild fixed
william-dawson Sep 1, 2022
0b66b62
For now just list them so I can get the names
william-dawson Sep 2, 2022
f7f0453
Remove static libraries
william-dawson Sep 2, 2022
1c228c0
Pin only to minor version
william-dawson Sep 6, 2022
4c0532a
Update recipes/bigdft/run_test.sh
william-dawson Sep 6, 2022
7f9271c
Remove test of liborbs
william-dawson Sep 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions recipes/bigdft/LICENSE
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

3 changes: 3 additions & 0 deletions recipes/bigdft/activate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source backup_conda.sh
source bigdftvars.sh

32 changes: 32 additions & 0 deletions recipes/bigdft/backup_variables.py
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")
31 changes: 31 additions & 0 deletions recipes/bigdft/build.sh
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
Copy link
Member

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.

Copy link
Contributor Author

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.

Copy link
Member

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=code

Copy link
Member

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 sourced script is doing, though :)

Copy link
Contributor Author

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.

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
33 changes: 33 additions & 0 deletions recipes/bigdft/conda.rc
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()
7 changes: 7 additions & 0 deletions recipes/bigdft/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
mpi:
- openmpi
- mpich

channel_targets:
- conda-forge bigdft_dev

1 change: 1 addition & 0 deletions recipes/bigdft/deactivate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
source $BIGDFT_ROOT/restore_conda.sh
Loading