Skip to content

Async GUI clipboard on Linux #798

Async GUI clipboard on Linux

Async GUI clipboard on Linux #798

Workflow file for this run

name: Clipboard Tests
on: [push, pull_request]
jobs:
ubuntu-gcc:
strategy:
fail-fast: false
matrix:
os:
- version: 22.04
no_lto: "0"
gcc: [ 11, 12 ]
x11: [ "1", "0" ]
wayland: [ "1", "0" ]
arch:
- os: i386
gcc: i686-linux-gnu
- os: amd64
gcc: x86_64-linux-gnu
runs-on: ubuntu-${{ matrix.os.version }}
steps:
- uses: actions/checkout@v3
- name: Run a script
shell: 'script -q -e -c "bash --noprofile --norc -eo pipefail {0}"'
run: |
NO_X11=1
NO_WAYLAND=1
PACKAGES="g++-${{ matrix.gcc }}-${{ matrix.arch.gcc }}"
if [[ "${{ matrix.arch.gcc }}" == "$(uname --processor)-linux-gnu" ]]; then
PACKAGES="g++-${{ matrix.gcc }}"
fi
if [[ "${{ matrix.x11 }}" == "1" ]]
then
NO_X11=0
PACKAGES="${PACKAGES} libx11-dev libx11-dev:${{ matrix.arch.os }} libgcc-s1:${{ matrix.arch.os }}"
fi
if [[ "${{ matrix.wayland }}" == "1" ]]
then
NO_WAYLAND=0
PACKAGES="${PACKAGES} libwayland-dev libwayland-dev:${{ matrix.arch.os }} libgcc-s1:${{ matrix.arch.os }} wayland-protocols wayland-protocols:${{ matrix.arch.os }}"
fi
sudo dpkg --add-architecture "${{ matrix.arch.os }}"
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y $PACKAGES xvfb sway xclip wl-clipboard squeekboard libasound-dev liburing-dev
cd build
cmake .. \
"-DCMAKE_CXX_COMPILER=${{ matrix.arch.gcc }}-g++-${{ matrix.gcc }}" \
"-DCMAKE_C_COMPILER=${{ matrix.arch.gcc }}-gcc-${{ matrix.gcc }}" \
"-DNO_X11=${NO_X11}" \
"-DNO_WAYLAND=${NO_WAYLAND}" \
"-DNO_LTO=${{ matrix.os.no_lto }}" \
"-DCMAKE_BUILD_TYPE=Debug"
cmake --build . -j 2
sudo cmake --install .
export CLIPBOARD_TMPDIR=/tmp
export CLIPBOARD_REQUIREX11=${{ matrix.x11 }}
export CLIPBOARD_REQUIREWAYLAND=${{ matrix.wayland }}
export WLR_BACKENDS=headless
export WLR_LIBINPUT_NO_DEVICES=1
export WAYLAND_DISPLAY=wayland-1
export LIBGL_ALWAYS_SOFTWARE=1
export XDG_RUNTIME_DIR=/tmp
sway -d &
sleep 5
squeekboard &
stty rows 80 cols 120 # GHA doesn't provide the right amount by default
xvfb-run bash ../src/tests/suite.sh
find . -name '*.gcda' | xargs gcov-${{ matrix.gcc }}
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
ubuntu-cross-gcc:
strategy:
fail-fast: false
matrix:
gcc: [ 11, 12 ]
x11: [ "1", "0" ]
wayland: [ "1", "0" ]
#arch: [ "armv7", "aarch64", "riscv64", "s390x", "ppc64le" ]
arch: [ "aarch64", "riscv64", "s390x", "ppc64le" ]
distro: [ "ubuntu22.04" ]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: uraimo/run-on-arch-action@v2
name: Test Clipboard
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
dockerRunArgs: |
--init
install: |
NO_X11=1
NO_WAYLAND=1
PACKAGES="g++-${{ matrix.gcc }}"
if [[ "${{ matrix.x11 }}" == "1" ]]
then
NO_X11=0
PACKAGES="${PACKAGES} libx11-dev"
fi
if [[ "${{ matrix.wayland }}" == "1" ]]
then
NO_WAYLAND=0
PACKAGES="${PACKAGES} libwayland-dev wayland-protocols"
fi
apt-get update
apt-get upgrade -y
apt-get install -y $PACKAGES xvfb sway xclip cmake wl-clipboard squeekboard sudo pkg-config cmake-data libasound-dev liburing-dev
run: |
NO_X11=1
NO_WAYLAND=1
if [[ "${{ matrix.x11 }}" == "1" ]]
then
NO_X11=0
fi
if [[ "${{ matrix.wayland }}" == "1" ]]
then
NO_WAYLAND=0
fi
cd build
cmake .. \
"-DCMAKE_CXX_COMPILER=g++-${{ matrix.gcc }}" \
"-DCMAKE_C_COMPILER=gcc-${{ matrix.gcc }}" \
"-DNO_X11=${NO_X11}" \
"-DNO_WAYLAND=${NO_WAYLAND}" \
"-DCMAKE_BUILD_TYPE=Debug"
cmake --build . -j 2
cmake --install .
export CLIPBOARD_TMPDIR=/tmp
export CLIPBOARD_REQUIREX11=${{ matrix.x11 }}
export CLIPBOARD_REQUIREWAYLAND=${{ matrix.wayland }}
export WLR_BACKENDS=headless
export WLR_LIBINPUT_NO_DEVICES=1
export WAYLAND_DISPLAY=wayland-1
export LIBGL_ALWAYS_SOFTWARE=1
export XDG_RUNTIME_DIR=/tmp
useradd -m -s /bin/bash user
chown -R user:user /home/user
echo "user ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
sudo -u user -E sway -d &
sleep 5
squeekboard &
stty rows 80 cols 120 # GHA doesn't provide the right amount by default
xvfb-run bash ../src/tests/suite.sh
find . -name '*.gcda' | xargs gcov-${{ matrix.gcc }}
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
macos-arm64-amd64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
run: |
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build . --config Debug --parallel 2
cmake --install .
export CLIPBOARD_TMPDIR=$TMPDIR
bash ../src/tests/suite.sh
find . -name '*.gcda' | xargs gcov
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
windows-amd64:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
shell: bash
run: |
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build . --config Release -j 2
echo $HOME
export TMPDIR=/c/Users/runneradmin/AppData/Local/Temp
cmake --install .
#installs to C:/Program Files (x86)/Clipboard/bin/cb.exe
#add to path
export PATH=$PATH:/c/Program\ Files\ \(x86\)/Clipboard/bin
export CLIPBOARD_TMPDIR=/c/Users/runneradmin/AppData/Local/Temp
bash ../src/tests/suite.sh
freebsd-amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
uses: cross-platform-actions/[email protected]
with:
operating_system: freebsd
architecture: x86-64
version: '13.1'
shell: bash
run: |
sudo pkg install -y cmake llvm15 xorg wayland
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=clang15 -DCMAKE_CXX_COMPILER=clang++15 -DNO_X11=1 -DNO_COVERAGE=1
cmake --build . -j 2
sudo cmake --install .
export CLIPBOARD_TMPDIR=/tmp
bash ../src/tests/suite.sh
openbsd-amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
uses: cross-platform-actions/[email protected]
with:
operating_system: openbsd
architecture: x86-64
version: '7.2'
shell: bash
run: |
sudo pkg_add cmake
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DNO_X11=1 -DNO_COVERAGE=1
cmake --build . -j 2
sudo cmake --install .
export CLIPBOARD_TMPDIR=/tmp
bash ../src/tests/suite.sh
openbsd-arm64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
uses: cross-platform-actions/[email protected]
with:
operating_system: openbsd
architecture: arm64
version: '7.2'
shell: bash
run: |
sudo pkg_add cmake
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DNO_X11=1 -DNO_COVERAGE=1
cmake --build . -j 2
sudo cmake --install .
export CLIPBOARD_TMPDIR=/tmp
bash ../src/tests/suite.sh
netbsd-amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run a script
uses: cross-platform-actions/[email protected]
with:
operating_system: netbsd
architecture: x86_64
version: '9.2'
shell: bash
run: |
sudo pkgin -y install cmake gcc12
cd build
cmake .. -DNO_LTO=1 -DNO_COVERAGE=1 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=/usr/pkg/gcc12/bin/g++ -DCMAKE_C_COMPILER=/usr/pkg/gcc12/bin/gcc
cmake --build . -j 2
sudo cmake --install .
export CLIPBOARD_TMPDIR=/tmp
bash ../src/tests/suite.sh