CI #49
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: | |
# This workflow contains a single job 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; 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" |