linux.yml raw

   1  # SPDX-License-Identifier: Unlicense OR MIT
   2  image: debian/testing
   3  packages:
   4   - curl
   5   - pkg-config
   6   - libwayland-dev
   7   - libx11-dev
   8   - libx11-xcb-dev
   9   - libxkbcommon-dev
  10   - libxkbcommon-x11-dev
  11   - libgles2-mesa-dev
  12   - libegl1-mesa-dev
  13   - libffi-dev
  14   - libxcursor-dev
  15   - libxrandr-dev
  16   - libxinerama-dev
  17   - libxi-dev
  18   - libxxf86vm-dev
  19   - wine
  20   - xvfb
  21   - xdotool
  22   - scrot
  23   - sway
  24   - grim
  25   - wine
  26   - unzip
  27  sources:
  28   - https://git.sr.ht/~eliasnaur/gio
  29  environment:
  30   GOFLAGS: -mod=readonly
  31   PATH: /home/build/sdk/go/bin:/usr/bin:/home/build/go/bin:/home/build/android/tools/bin
  32   ANDROID_SDK_ROOT: /home/build/android
  33   android_sdk_tools_zip: sdk-tools-linux-3859397.zip
  34   android_ndk_zip: android-ndk-r20-linux-x86_64.zip
  35   github_mirror: git@github.com:gioui/gio
  36  secrets:
  37   - 75d8a1eb-5fc5-4074-8a36-db6015d6ed5a
  38  tasks:
  39   - install_go1_14: |
  40       mkdir -p /home/build/sdk
  41       curl -s https://dl.google.com/go/go1.14.linux-amd64.tar.gz | tar -C /home/build/sdk -xzf -
  42   - test_gio: |
  43       cd gio
  44       export EGL_PLATFORM=surfaceless # for headless tests
  45       go test -race ./...
  46       GOOS=windows go test -exec=wine ./...
  47       GOOS=js GOARCH=wasm go build -o /dev/null ./...
  48   - install_chrome: |
  49       curl -s https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
  50       sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
  51       sudo apt-get -qq update
  52       sudo apt-get -qq install -y google-chrome-stable
  53   - test_cmd: |
  54       cd gio/cmd
  55       go test ./...
  56       go test -race ./...
  57       cd gogio # since we need -modfile to point at the parent directory
  58       GOFLAGS=-modfile=../go.local.mod go test
  59   - install_jdk8: |
  60       curl -so jdk.deb "https://cdn.azul.com/zulu/bin/zulu8.42.0.21-ca-jdk8.0.232-linux_amd64.deb"
  61       sudo apt-get -qq install -y -f ./jdk.deb
  62   - install_android: |
  63       mkdir android
  64       cd android
  65       curl -so sdk-tools.zip https://dl.google.com/android/repository/$android_sdk_tools_zip
  66       unzip -q sdk-tools.zip
  67       rm sdk-tools.zip
  68       curl -so ndk.zip https://dl.google.com/android/repository/$android_ndk_zip
  69       unzip -q ndk.zip
  70       rm ndk.zip
  71       mv android-ndk-* ndk-bundle
  72       yes|sdkmanager --licenses
  73       sdkmanager "platforms;android-29" "build-tools;29.0.2"
  74   - test_android: |
  75       cd gio
  76       CC=$ANDROID_SDK_ROOT/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang GOOS=android GOARCH=arm64 CGO_ENABLED=1 go build ./...
  77   - install_gogio: |
  78       cd gio/cmd
  79       go install ./gogio
  80   - test_android_gogio: |
  81       mkdir tmp
  82       cd tmp
  83       go mod init example.com
  84       go get -d github.com/p9c/p9/pkg/gel/gio/example/kitchen
  85       gogio -target android github.com/p9c/p9/pkg/gel/gio/example/kitchen
  86   - check_gofmt: |
  87       cd gio
  88       test -z "$(gofmt -s -l .)"
  89   - check_sign_off: |
  90       set +x -e
  91       cd gio
  92       for hash in $(git log -n 20 --format="%H"); do
  93          message=$(git log -1 --format=%B $hash)
  94          if [[ ! "$message" =~ "Signed-off-by: " ]]; then
  95              echo "Missing 'Signed-off-by' in commit $hash"
  96              exit 1
  97          fi
  98       done
  99   - mirror: |
 100       # mirror to github
 101       ssh-keyscan github.com > "$HOME"/.ssh/known_hosts && cd gio && git push --mirror "$github_mirror" || echo "failed mirroring"
 102