summaryrefslogtreecommitdiff
path: root/.github/workflows/test.yml
blob: b87d1406af72c7d18e5512e1b3b00ee80ce7d770 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: CI

on:
  push:
    branches: [master]
  pull_request:
    branches: [master]

jobs:
  test-ubuntu:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        emacs-version:
          - '26.3'
          - '27.2'
          - '28.2'
          - '29.4'
          - 'snapshot'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Emacs
        uses: purcell/setup-emacs@master
        with:
          version: ${{ matrix.emacs-version }}

      - name: Install Cask
        uses: conao3/setup-cask@master
        with:
          version: 'snapshot'

      - name: Install server build dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y make automake autoconf gcc g++ \
            libpng-dev libpoppler-glib-dev libpoppler-private-dev \
            libz-dev pkg-config

      - name: Compile epdfinfo server
        run: make autobuild

      - name: Install Elisp dependencies
        run: cask install

      - name: Run tests
        run: make test

  test-macos:
    runs-on: macos-latest
    env:
      HOMEBREW_NO_AUTO_UPDATE: 1
      HOMEBREW_NO_INSTALL_CLEANUP: 1
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Emacs
        uses: purcell/setup-emacs@master
        with:
          version: '29.4'

      - name: Install Cask
        uses: conao3/setup-cask@master
        with:
          version: 'snapshot'

      - name: Install server build dependencies
        run: |
          brew install automake autoconf poppler pkg-config gnu-sed
          echo "$(brew --prefix gnu-sed)/libexec/gnubin" >> $GITHUB_PATH

      - name: Compile epdfinfo server
        run: make autobuild

      - name: Install Elisp dependencies
        run: cask install

      - name: Run tests
        run: make test

  build-windows:
    runs-on: windows-latest
    defaults:
      run:
        shell: msys2 {0}
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup MSYS2
        uses: msys2/setup-msys2@v2
        with:
          msystem: MINGW64
          update: true
          install: >-
            git
            base-devel
            autoconf
            automake
            mingw-w64-x86_64-toolchain
            mingw-w64-x86_64-libpng
            mingw-w64-x86_64-poppler
            mingw-w64-x86_64-imagemagick
            mingw-w64-x86_64-zlib
            mingw-w64-x86_64-openssl
            mingw-w64-x86_64-emacs

      - name: Install Cask
        run: git clone https://github.com/cask/cask ~/.cask

      - name: Compile epdfinfo server
        run: |
          export PATH="$HOME/.cask/bin:$PATH"
          make autobuild

      - name: Package Windows binaries
        run: |
          mkdir -p pack
          cp server/epdfinfo.exe pack/
          ldd server/epdfinfo.exe | grep mingw | cut -d' ' -f3 | xargs -I {} cp {} pack/
          cp /mingw64/bin/libcrypto*.dll pack/ || true
          cp /mingw64/bin/libssl*.dll pack/ || true

      - name: Upload Windows artifact
        uses: actions/upload-artifact@v4
        with:
          name: epdfinfo-mingw64
          path: pack/