CI #52
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
# Workflow for building Psychtoolbox mex files for Matlab/Octave on Ubuntu Linux 20.04-LTS. | |
# Currently builds all mex files except Datapixx, due to lack of SDK availability in VM. | |
# | |
# Note: - Free GitHub runners are only available for public / OSS repositories. | |
# - The free Matlab runner is only available for Linux. | |
# | |
# Copyright (c) 2022-2023 by Mario Kleiner, licensed under MIT license. | |
# | |
name: CI | |
# Controls when the workflow will run | |
on: | |
# Triggers the workflow on push or pull request events but only for the master branch | |
#push: | |
# branches: [ master ] | |
#pull_request: | |
# branches: [ master ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
# Run a job to build the majority of the mex files targetting Ubuntu 20.04-LTS and later, simply called "build" | |
build: | |
name: Run commands to build+upload Matlab+Octave mex files for 64-Bit Ubuntu Linux 20.04-LTS on Intel. | |
# The type of runner that the job will run on: Fixed to Ubuntu 20.04-LTS | |
runs-on: ubuntu-20.04 | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Check out Psychtoolbox repository to runner. | |
uses: actions/checkout@v3 | |
- name: Add SR-Research Eyelink repositories. | |
run: sudo apt-key adv --fetch-keys https://apt.sr-research.com/SRResearch_key ; sudo add-apt-repository 'deb [arch=amd64] https://apt.sr-research.com SRResearch main' | |
- name: Setup additional build and runtime dependencies of Psychtoolbox. | |
run: sudo apt update ; sudo apt install -y octave-psychtoolbox-3 liboctave-dev libfontconfig1-dev libopenhmd-dev libusb-1.0-0-dev xorg-dev libx11-xcb-dev libxcb*-dev libglu1-mesa-dev freeglut3-dev libgstreamer*-dev libasound2-dev portaudio19-dev libfreenect-dev libopenal-dev libapriltag-dev ; sudo apt remove -y libgamemode0; sudo apt install -y libdc1394-dev | |
- name: Setup OculusVR SDK 0.5 for 64-Bit Linux. | |
run: tar xvf PsychSourceGL/Cohorts/OculusSDK/ovr_sdk_linux_0.5.0.1.tar.xz; cd ovr_sdk_linux_0.5.0.1 ; sudo cp --recursive LibOVR/Include/* /usr/local/include/ ; sudo cp ../PsychSourceGL/Cohorts/OculusSDK/libOVR.a /usr/local/lib/ | |
- name: Setup OpenXR SDK and OpenXR loader for PsychOpenXRCore build, backported for 64-Bit Ubuntu Linux 20.04. | |
run: sudo add-apt-repository ppa:monado-xr/monado; sudo apt-get update; sudo apt install -y libopenxr-dev; | |
- name: Setup latest Vulkan SDK from LunarG for PsychVulkanCore build, as Ubuntu 20.04 SDK is too old for all our needs. | |
run: wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - ; sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.243-focal.list https://packages.lunarg.com/vulkan/1.3.243/lunarg-vulkan-1.3.243-focal.list ; sudo apt update ; sudo apt install -y vulkan-sdk ; | |
- name: Install minimal SR-Research Eyelink SDK for building Eyelink mex files. | |
run: sudo apt install eyelinkcore | |
- name: Set up latest MATLAB | |
uses: matlab-actions/setup-matlab@v1 | |
- name: Build all eligible Psychtoolbox Matlab mex files. | |
uses: matlab-actions/run-command@v1 | |
with: | |
command: cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); cd('../PsychSourceGL/Source'); pwd, linuxmakeit64(-1, 1); | |
- name: Build all eligible Psychtoolbox Octave mex files. | |
run: octave --eval "warning('off', 'Octave:shadowed-function'); cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); cd('../PsychSourceGL/Source'); pwd, linuxmakeitoctave3(-1, 1); linuxmakeitoctave3(12, 0); linuxmakeitoctave3(4, 0); cd('../Cohorts/FTGLTextRenderer'); makeftglplugin;" | |
- name: Archive built 64-Bit Matlab and Octave mex files for 64-Bit Intel | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Linux64BitIntelMexFiles | |
path: | | |
Psychtoolbox/PsychBasic/Octave5LinuxFiles64/*.mex | |
Psychtoolbox/PsychBasic/*.mexa64 | |
Psychtoolbox/PsychBasic/PsychPlugins/libptbdrawtext_ftgl64.so.1 | |
- name: Use xvfb for basic testing of Psychtoolbox under Octave. Rendering tests under llvmpipe, some basic queries. | |
run: xvfb-run octave --eval "warning('off', 'Octave:shadowed-function'); cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); addpath(genpath([pwd '/PsychBasic/Octave5LinuxFiles64'])); PsychDebugWindowConfiguration; Screen('Preference', 'ConserveVRAM', 4194304); [a,b,c] = GetKeyboardIndices, [d,e,f] = GetMouseIndices" | |
# Run a job called "buildforubuntu22.04", only for some few mex files which are targetted at only easily running on Ubuntu 22.04 and later: | |
buildforubuntu22-04: | |
name: Run commands to build+upload some Matlab+Octave mex files for 64-Bit Ubuntu Linux 22.04-LTS on Intel. | |
# The type of runner that the job will run on: Fixed to Ubuntu 22.04-LTS | |
runs-on: ubuntu-22.04 | |
# Steps represent a sequence of tasks that will be executed as part of the job | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- name: Check out Psychtoolbox repository to runner. | |
uses: actions/checkout@v3 | |
# - name: Add SR-Research Eyelink repositories. | |
# run: sudo apt-key adv --fetch-keys https://apt.sr-research.com/SRResearch_key ; sudo add-apt-repository 'deb [arch=amd64] https://apt.sr-research.com SRResearch main' | |
- name: Setup additional build and runtime dependencies of Psychtoolbox. Currently only libapriltag | |
run: sudo apt update ; sudo apt install -y octave-psychtoolbox-3 liboctave-dev libapriltag-dev | |
# - name: Setup OculusVR SDK 0.5 for 64-Bit Linux. | |
# run: tar xvf PsychSourceGL/Cohorts/OculusSDK/ovr_sdk_linux_0.5.0.1.tar.xz; cd ovr_sdk_linux_0.5.0.1 ; sudo cp --recursive LibOVR/Include/* /usr/local/include/ ; sudo cp ../PsychSourceGL/Cohorts/OculusSDK/libOVR.a /usr/local/lib/ | |
# - name: Setup OpenXR SDK and OpenXR loader for PsychOpenXRCore build, backported for 64-Bit Ubuntu Linux 20.04. | |
# run: sudo add-apt-repository ppa:monado-xr/monado; sudo apt-get update; sudo apt install -y libopenxr-dev; | |
# - name: Setup latest Vulkan SDK from LunarG for PsychVulkanCore build, as Ubuntu 20.04 SDK is too old for all our needs. | |
# run: wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - ; sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-1.3.243-focal.list https://packages.lunarg.com/vulkan/1.3.243/lunarg-vulkan-1.3.243-focal.list ; sudo apt update ; sudo apt install -y vulkan-sdk ; | |
# - name: Install minimal SR-Research Eyelink SDK for building Eyelink mex files. | |
# run: sudo apt install eyelinkcore | |
- name: Set up latest MATLAB | |
uses: matlab-actions/setup-matlab@v1 | |
- name: Build all eligible Psychtoolbox Matlab mex files. Currently only PsychCV | |
uses: matlab-actions/run-command@v1 | |
with: | |
command: cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); cd('../PsychSourceGL/Source'); pwd, linuxmakeit64(10, 1); | |
- name: Build all eligible Psychtoolbox Octave mex files. Currently only PsychCV | |
run: octave --eval "warning('off', 'Octave:shadowed-function'); cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); cd('../PsychSourceGL/Source'); linuxmakeitoctave3(10, 1);" | |
- name: Archive built 64-Bit Matlab and Octave mex files for 64-Bit Intel on Ubuntu 22.04 | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Linux64BitIntelMexFilesForUbuntu22.04 | |
path: | | |
Psychtoolbox/PsychBasic/Octave5LinuxFiles64/*.mex | |
Psychtoolbox/PsychBasic/*.mexa64 | |
# Psychtoolbox/PsychBasic/PsychPlugins/libptbdrawtext_ftgl64.so.1 | |
# - name: Use xvfb for basic testing of Psychtoolbox under Octave. Rendering tests under llvmpipe, some basic queries. | |
# run: xvfb-run octave --eval "warning('off', 'Octave:shadowed-function'); cd('Psychtoolbox'); pwd, addpath(genpath(pwd)); addpath(genpath([pwd '/PsychBasic/Octave5LinuxFiles64'])); PsychDebugWindowConfiguration; Screen('Preference', 'ConserveVRAM', 4194304); [a,b,c] = GetKeyboardIndices, [d,e,f] = GetMouseIndices" |