Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewSazonov committed Jul 24, 2024
1 parent c1c69df commit caef5dc
Show file tree
Hide file tree
Showing 2 changed files with 145 additions and 31 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ jobs:
shell: bash
run: scripts/print_build_variables.sh # bash -x scripts/print_build_variables.sh for printing commands

- name: Create scripts, CFML and pyCFML directories
- name: Create CFML and pyCFML directories
shell: bash
run: |
scripts/create_cfml_repo_dir.sh
Expand Down
174 changes: 144 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,184 @@
[![](http://github-actions.40ants.com/AndrewSazonov/TEST_PyCrysFML/matrix.svg)](https://github.com/AndrewSazonov/TEST_PyCrysFML/actions)
This is a repository for creating a python library **pycrysfml** based on the new automatically generated Python API for the crystallographic library CrysFML2008 (Fortran 2008) from https://code.ill.fr/scientific-software/CrysFML2008.

This is a repository for testing the build process of both the fortran crystallographic library [CrysFML2008](https://code.ill.fr/rodriguez-carvajal/CrysFML2008) and its python interface [PyCrysFML08](https://code.ill.fr/scientific-software/PyCrysFML08).

### Build matrix
### Build and test jobs

| Platform / Compiler | gfortran | ifx | ifort | nagfor |
| ------------------------- | -------- | ----------- | ------------- | ---------- |
| Windows 10 |||| |
| Ubuntu 22.04 |||| |
| macOS 12 (Intel) || Unsupported || |
| macOS 14 (Apple Silicone) || Unsupported | Unsupported | ✅ Local |
| Windows 10 || ❌1 || ⚙️ Testing |
| Ubuntu 22.04 |||| ⚙️ Testing |
| macOS 12 (Intel) || Unsupported | ❌2 | ⚙️ Testing |
| macOS 14 (Apple Silicone) || Unsupported | Unsupported | ⚙️ Testing |

* ❌1 Failed at the _:::::: Running unit tests from 'tests/functional_tests/pyCFML'_ step (tests job):

```
tests\functional_tests\pyCFML\cfml_utilities\powder_pattern_from_json\test__powder_pattern_from_json.py . [ 33%]
Windows fatal exception: access violation
Current thread 0x0000068c (most recent call first):
### Main steps
...
* Download the [CrysFML2008](https://code.ill.fr/rodriguez-carvajal/CrysFML2008) project (`nagfor` branch)
* Build the CrysFML2008 static library
* Build and run CrysFML2008 functional test programs
* Download the [PyCrysFML08](https://code.ill.fr/scientific-software/PyCrysFML08) project (`master` branch)
* Build selected PyCrysFML08 modules
* Create the PyCrysFML08 python package and install PyCrysFML08 from it
* Run the PyCrysFML08 unit tests
* Run `powder_mod` from PyCrysFML08 to generate the powder diffraction pattern
scripts/run_pycfml_functional_tests_no_benchmarks.sh: line 2: 1359 Segmentation fault
```
* ❌2 Failed at the _:::::: Building fortran shared obj or dynamic lib 'crysfml08lib.so'_ step (build job):

More details are in the [CI script](.github/workflows/main.yml).
```
Undefined symbols for architecture x86_64:
"_cfml_kvec_symmetry_mp_inlat_", referenced from:
_cfml_kvec_symmetry_mp_latsym_ in libCrysFML08.a(ksym_auxsub.o)
"_cfml_kvec_symmetry_mp_ltr_", referenced from:
_cfml_kvec_symmetry_mp_latsym_ in libCrysFML08.a(ksym_auxsub.o)
"_cfml_kvec_symmetry_mp_nlat_", referenced from:
_cfml_kvec_symmetry_mp_latsym_ in libCrysFML08.a(ksym_auxsub.o)
ld: symbol(s) not found for architecture x86_64
```

### To run locally
### Local build

* Create and activate a python environment (_optional_)
* Create and activate a python environment (_optional_)

***macOS and Linux***

```
$ python3.11 -m venv .venv
$ source .venv/bin/activate
python3.11 -m venv .venv
source .venv/bin/activate
```

***Windows***

```
python3.11 -m venv .venv
.venv\Scripts\activate
```

* Upgrade the package installer for Python (_optional_)

```
$ python -m pip install --upgrade pip
pip install --upgrade pip
```

* Install Python dependences, including extras
* Install Python dependences, including extras (ci and test)

```
$ python -m pip install '.[ci,test]'
pip install '.[ci,test]'
```

* Print possible options for creating job scripts (_optional_)

```
$ python scripts.py --help
python scripts.py --help
```

* Create job scripts with default options

```
$ python scripts.py
python scripts.py
```

* Print some build-specific variables (_optional_)

```
$ scripts/print_build_variables.sh
scripts/print_build_variables.sh
```

* Create CFML and pyCFML directories

```
scripts/create_cfml_repo_dir.sh
scripts/create_cfml_build_dir.sh
scripts/create_cfml_dist_dir.sh
scripts/create_pycfml_src_dir.sh
scripts/create_pycfml_build_dir.sh
scripts/create_pycfml_dist_dir.sh
```

* Download CFML repository

```
scripts/download_cfml_repo.sh
```

* Build CFML modules

```
scripts/rename_global_deps_file.sh
scripts/build_cfml_modules_obj.sh
scripts/delete_renamed_global_deps_file.sh
```

* Build CFML static library

```
scripts/build_cfml_static_lib.sh
```

* Make CFML distribution

```
scripts/move_built_to_cfml_dist.sh
```

* Build und run CFML functional test programs

```
scripts/build_cfml_test_programs.sh
scripts/copy_cfml_test_programs_to_tests_dir.sh
scripts/run_cfml_functional_tests_no_benchmarks.sh
```

* Create pyCFML source code

```
scripts/create_pycfml_src.sh
```

* Build pyCFML modules

```
scripts/build_pycfml_modules_obj.sh
```

* Build pyCFML shared obj / dynamic library

```
scripts/build_pycfml_lib_obj.sh
scripts/build_pycfml_shared_obj_or_dynamic_lib.sh
```

* Make pyCFML distribution

```
scripts/copy_built_to_pycfml_dist.sh
scripts/change_runpath_for_built_pycfml.sh
scripts/copy_extra_libs_to_pycfml_dist.sh
scripts/copy_py_api_files_to_pycfml_dist.sh
scripts/copy_init_file_to_pycfml_dist.sh
scripts/copy_cfml_databases_to_pycfml_dist.sh
```

* Create Python package wheel of pyCFML

```
scripts/validate_pyproject_toml.sh
scripts/create_pycfml_python_wheel.sh
scripts/rename_pycfml_python_wheel.sh
```

* Install pyCFML from Python package wheel (with dev extras)

```
scripts/install_pycfml_from_wheel.sh
```

* Run pyCFML unit tests

```
scripts/run_pycfml_unit_tests.sh
```

* Run all scripts in sequence
* Run pyCFML functional tests

```
$ scripts/main_script.sh
scripts/run_pycfml_functional_tests_no_benchmarks.sh
```

0 comments on commit caef5dc

Please sign in to comment.