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

installation in github actions #18

Open
stenczelt opened this issue Jun 5, 2022 · 2 comments
Open

installation in github actions #18

stenczelt opened this issue Jun 5, 2022 · 2 comments

Comments

@stenczelt
Copy link

Do you have a tried and tested github actions script for using sparrow within projects with CI/CD?

I am trying to install Sparrow in a github actions environment for testing some python code that is supposed to use it. I am trying to run the cmake installation, but for some reason it fails at the point of downloading the dependencies using your cmake tools. Oddly enough, if I am doing the same in Docker for example it just works, with the warning about cmake version settings not provided being shown as well and ignored (likely you are calling cmake from a non toplevel directory as well?)

The error is:

-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Warning at cmake/ComponentSetup.cmake:56 (message):
  You are compiling Scine components with an architecture-specific ISA:
  -march=native.  Linking together libraries with mismatched architecture
  build flags can cause problems, in particular with Eigen.  Watch out!
Call Stack (most recent call first):
  CMakeLists.txt:16 (scine_setup_component)


CMake Error in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.23)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".


CMake Error at cmake/DownloadProject.cmake:167 (message):
  CMake step for googletest failed: 1
Call Stack (most recent call first):
  cmake/ImportGTest.cmake:16 (download_project)
  cmake/ComponentSetup.cmake:63 (import_gtest)
  CMakeLists.txt:16 (scine_setup_component)


-- Configuring incomplete, errors occurred!
See also "/opt/sparrow/build/CMakeFiles/CMakeOutput.log".
##[error]Process completed with exit code 1.

and the whole action file is as follows, that reproduces this:

name: Sparrow installation

on:
  push:

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v3
        with:
          python-version: '3.9'

      - name: Install dependencies / apt-get
        run: |
          sudo apt-get update -y
          sudo apt-get install -y \
            cmake \
            libeigen3-dev \
            libboost-all-dev \
            --

      - name: Download Sparrow
        working-directory: /opt
        run: |
          # clone Sparrow
          git clone https://github.com/qcscine/sparrow.git --branch=2.0.1 --single-branch --depth 1 --recursive

      - name: Setup Sparrow for Installation
        working-directory: /opt/sparrow
        run: |
          mkdir build install
          cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DSCINE_BUILD_PYTHON_BINDINGS=ON

      - name: Build & Install Sparrow
        working-directory: /opt/sparrow
        run: |
          cmake --build ./build
          cmake --install ./build

      - name: Sparrow path
        run: |
          export PATH="/opt/sparrow/install/bin:$PATH"
          export PYTHONPATH=$PYTHONPATH:/opt/sparrow/install/lib/python3.9/site-packages
          export SCINE_MODULE_PATH=/opt/sparrow/install/lib



I have taken this stripped-down version of the installation scripts and put them into a puclic repo as well for you to see:
https://github.com/stenczelt/actions-test/runs/6746640491

@stenczelt
Copy link
Author

PS. the project depends on sparrow 2.0.1... I am not sure if 3.0.0 would work, is there any compatibility issue or breaking changes for the python parts?

@awvwgk
Copy link

awvwgk commented Jun 5, 2022

I wouldn't recommend building in CI since Sparrow is very expensive to compile. I packaged a version on conda-forge which can be installed using mamba-org/provision-with-micromamba in GHA:

    # Important to keep the conda environment active between steps
    defaults:
      run:
        shell: bash -l {0}
    # ...
    steps:
    # ...
    - name: Install dependencies
      uses: mamba-org/provision-with-micromamba@main
      with:
        environment-file: environment.yml

You can use this environment.yml to get scine-sparrow-python:

name: sparrow
channels:
  - conda-forge
dependencies:
  - scine-sparrow-python

You need at least the name and channels key in the environment.yml, the dependencies can also be passed directly to the action with the extra-specs option:

    - name: Install dependencies
      uses: mamba-org/provision-with-micromamba@main
      with:
        environment-file: environment.yml
        extra-specs: |
          scine-sparrow-python

If you rely on conda-forge for Python packages it is best to install all Python packages from conda-forge.

the project depends on sparrow 2.0.1... I am not sure if 3.0.0 would work, is there any compatibility issue or breaking changes for the python parts?

There are a lot of breaking changes, like change of the coordinate unit from Ångström to Bohr. I helped fixing a compatibility interface which makes Sparrow 3.0.0 look like Sparrow 2.0.1 a while ago, this can serve as reference for the required upgrade steps. See

https://github.com/gncs/molgym/blob/master/molgym/calculator.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants