optimise mAIC computation for mixed data (sum lnL, compute total mAIC… #277
This file contains hidden or 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
| name: Build | |
| on: | |
| push: | |
| branches: ["*"] | |
| pull_request: | |
| branches: ["master"] | |
| # If a Second Commit is Pushed After, and Build is Not Complete, Cancel | |
| # Extremely Important with the High Computation Time and Power Required of Arm Linux Builds | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-linux-x86-64: | |
| name: Linux x86-64 gcc-${{ matrix.gcc-version }} cmake-${{ matrix.cmake-version }} | |
| runs-on: ubuntu-22.04 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Oldest supported gcc and cmake versions | |
| - gcc-version: 9 | |
| cmake-version: 3.14.7 | |
| upload: true | |
| runtime-arg: Linux-gcc-9 | |
| memory-arg: Linux-gcc-9 | |
| # Latest supported gcc and cmake versions | |
| - gcc-version: 12 | |
| cmake-version: latest | |
| upload: false | |
| runtime-arg: Linux-gcc-12 | |
| memory-arg: Linux-gcc-12 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update -q -y | |
| sudo apt-get install -q -y gcc-${{ matrix.gcc-version }} g++-${{ matrix.gcc-version}} libeigen3-dev libboost-dev | |
| - name: Setup cmake | |
| uses: jwlawson/actions-setup-cmake@v2 | |
| with: | |
| cmake-version: ${{ matrix.cmake-version }} | |
| - name: Build | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake .. -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DIQTREE_FLAGS=static -DCMAKE_C_COMPILER=$(which gcc-${{ matrix.gcc-version }}) -DCMAKE_CXX_COMPILER=$(which g++-${{ matrix.gcc-version }}) | |
| make -j | |
| make package | |
| file iqtree3 | grep x86-64 | |
| file iqtree*.tar.gz | grep gzip | |
| - name: Upload Built Binary | |
| # Only upload for one of the gcc & cmake tests | |
| if: ${{ matrix.upload }} | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Linux x86-64 | |
| path: build/iqtree*.tar.gz | |
| if-no-files-found: error | |
| - name: Run test_iqtree.sh | |
| run: | | |
| chmod +x test_scripts/test_iqtree.sh | |
| ./test_scripts/test_iqtree.sh | |
| - name: Run verify_results.sh | |
| run: | | |
| chmod +x test_scripts/verify_results.sh | |
| ./test_scripts/verify_results.sh | |
| - name: Run verify_runtimes.sh | |
| run: | | |
| chmod +x test_scripts/verify_runtime.sh | |
| ./test_scripts/verify_runtime.sh "${{ matrix.runtime-arg }}" | |
| - name: Run verify_memory.sh | |
| run: | | |
| chmod +x test_scripts/verify_memory.sh | |
| ./test_scripts/verify_memory.sh "${{ matrix.memory-arg }}" | |
| build-linux-aarch64: | |
| name: Linux aarch64 | |
| runs-on: ubuntu-22.04-arm | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update -q -y | |
| sudo apt-get install -q -y gcc g++ libeigen3-dev libboost-dev | |
| - name: Build | |
| run: | | |
| mkdir build | |
| cd build | |
| cmake .. -DIQTREE_FLAGS=static | |
| make -j | |
| make package | |
| file iqtree3 | grep aarch64 | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Linux AArch64 | |
| path: build/iqtree*.tar.gz | |
| if-no-files-found: error | |
| - name: Run test_iqtree.sh | |
| run: | | |
| chmod +x test_scripts/test_iqtree.sh | |
| ./test_scripts/test_iqtree.sh | |
| - name: Run verify_results.sh | |
| run: | | |
| chmod +x test_scripts/verify_results.sh | |
| ./test_scripts/verify_results.sh | |
| - name: Run verify_runtimes.sh | |
| run: | | |
| chmod +x test_scripts/verify_runtime.sh | |
| ./test_scripts/verify_runtime.sh Linux-aarch64 | |
| - name: Run verify_memory.sh | |
| run: | | |
| chmod +x test_scripts/verify_memory.sh | |
| ./test_scripts/verify_memory.sh Linux-aarch64 | |
| compile-linux-universal: | |
| name: Linux Universal | |
| runs-on: ubuntu-latest | |
| needs: | |
| - build-linux-x86-64 | |
| - build-linux-aarch64 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download Linux x86-64 Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Linux x86-64 | |
| path: x86 | |
| - name: Download Linux Arm Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Linux AArch64 | |
| path: arm | |
| - name: Combine Artifacts | |
| run: | | |
| chmod +x test_scripts/make_linux_universal.sh | |
| file1=$(ls x86/iqtree*.tar.gz) | |
| file2=$(ls arm/iqtree*.tar.gz) | |
| test_scripts/make_linux_universal.sh "$file1" "$file2" | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Linux Universal | |
| path: iqtree*.tar.gz | |
| if-no-files-found: error | |
| build-macos-x86_64: | |
| name: Mac OS x86-64 | |
| runs-on: macos-15-intel # replaces deprecated macos-13 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Install dependencies | |
| run: brew install make eigen boost libomp | |
| - name: Build | |
| run: | | |
| set -x | |
| mkdir build | |
| cd build | |
| export CPPFLAGS="-I/usr/local/opt/libomp/include" | |
| export CXXFLAGS="-I/usr/local/opt/libomp/include" | |
| cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DEIGEN3_INCLUDE_DIR=$(brew --prefix eigen)/include/eigen3 | |
| make -j | |
| make package | |
| file iqtree3 | grep x86_64 | |
| file iqtree*.zip | grep Zip | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Mac x86-64 | |
| path: build/iqtree*.zip | |
| if-no-files-found: error | |
| - name: Run test_iqtree.sh | |
| run: | | |
| chmod +x test_scripts/test_iqtree.sh | |
| ./test_scripts/test_iqtree.sh | |
| - name: Run verify_results.sh | |
| run: | | |
| chmod +x test_scripts/verify_results.sh | |
| ./test_scripts/verify_results.sh | |
| - name: Run verify_runtimes.sh | |
| run: | | |
| chmod +x test_scripts/verify_runtime.sh | |
| ./test_scripts/verify_runtime.sh mac-os-x86-64 | |
| - name: Run verify_memory.sh | |
| run: | | |
| chmod +x test_scripts/verify_memory.sh | |
| ./test_scripts/verify_memory.sh mac-os-x86-64 | |
| build-macos-arm: | |
| name: Mac OS ARM64 | |
| runs-on: macos-14 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Install dependencies | |
| run: brew install make eigen boost libomp | |
| - name: Build | |
| run: | | |
| set -x | |
| mkdir build | |
| cd build | |
| export CPPFLAGS="-I/opt/homebrew/opt/libomp/include" | |
| export CXXFLAGS="-I/opt/homebrew/opt/libomp/include" | |
| cmake .. -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DEIGEN3_INCLUDE_DIR=$(brew --prefix eigen)/include/eigen3 | |
| make -j | |
| make package | |
| file iqtree3 | grep arm64 | |
| file iqtree*.zip | grep Zip | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Mac Arm | |
| path: build/iqtree*.zip | |
| if-no-files-found: error | |
| - name: Run test_iqtree.sh | |
| run: | | |
| chmod +x test_scripts/test_iqtree.sh | |
| ./test_scripts/test_iqtree.sh | |
| - name: Run verify_results.sh | |
| run: | | |
| chmod +x test_scripts/verify_results.sh | |
| ./test_scripts/verify_results.sh | |
| - name: Run verify_runtimes.sh | |
| run: | | |
| chmod +x test_scripts/verify_runtime.sh | |
| ./test_scripts/verify_runtime.sh mac-os-arm64 | |
| - name: Run verify_memory.sh | |
| run: | | |
| chmod +x test_scripts/verify_memory.sh | |
| ./test_scripts/verify_memory.sh mac-os-arm64 | |
| compile-mac-universal: | |
| name: Mac OS Universal | |
| runs-on: macos-14 | |
| needs: | |
| - build-macos-x86_64 | |
| - build-macos-arm | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download Mac x86-64 Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Mac x86-64 | |
| path: x86 | |
| - name: Download Mac Arm Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: Mac Arm | |
| path: arm | |
| - name: Combine Artifacts | |
| run: | | |
| chmod +x test_scripts/make_universal.sh | |
| file1=$(ls x86/iqtree*.zip) | |
| file2=$(ls arm/iqtree*.zip) | |
| test_scripts/make_universal.sh "$file1" "$file2" | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Mac Universal | |
| path: iqtree*.zip | |
| if-no-files-found: error | |
| build-windows-x86-64: | |
| name: Windows x86-64 | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: "recursive" | |
| - name: Install LLVM v14 | |
| shell: cmd | |
| run: choco install llvm --version=14.0.6 --allow-downgrade | |
| - name: Download and Extract Boost 1.84.0 | |
| shell: pwsh | |
| run: | | |
| curl -L -o boost.tar.gz https://github.com/MarkusJx/prebuilt-boost/releases/download/1.84.0/boost-1.84.0-windows-2022-mingw-static-x86.tar.gz | |
| tar -xzf boost.tar.gz | |
| mv boost C:/local/boost | |
| - name: Install Eigen3 | |
| shell: cmd | |
| run: choco install eigen | |
| - name: Compile | |
| shell: cmd | |
| run: | | |
| if exist build rd /s /q build | |
| mkdir build | |
| cd build | |
| cmake -G "MinGW Makefiles" ^ | |
| -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ^ | |
| -DCMAKE_C_FLAGS=--target=x86_64-pc-windows-gnu ^ | |
| -DCMAKE_CXX_FLAGS=--target=x86_64-pc-windows-gnu ^ | |
| -DCMAKE_MAKE_PROGRAM=mingw32-make ^ | |
| -DBoost_INCLUDE_DIR="C:/local/boost/include" ^ | |
| -DBoost_LIBRARY_DIRS="C:/local/boost/lib" ^ | |
| -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ^ | |
| -DIQTREE_FLAGS="static cpp14" .. | |
| make -j | |
| make package | |
| env: | |
| BOOST_ROOT: "C:/local/boost" | |
| - name: Check File Arch | |
| shell: bash | |
| run: | | |
| cd build | |
| file iqtree3.exe | grep x86-64 | |
| file iqtree*.zip | |
| - name: Upload Built Binary | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Windows x86-64 | |
| path: build/iqtree*.zip | |
| if-no-files-found: error | |
| - name: Run test_iqtree.ps1 | |
| shell: pwsh | |
| run: | | |
| ./test_scripts/test_iqtree.ps1 | |
| - name: Run verify_results.ps1 | |
| shell: pwsh | |
| run: | | |
| ./test_scripts/verify_results.ps1 | |
| - name: Run verify_runtimes.ps1 | |
| shell: pwsh | |
| run: | | |
| ./test_scripts/verify_runtime.ps1 | |
| - name: Run verify_memory.ps1 | |
| run: | | |
| ./test_scripts/verify_memory.ps1 |