aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/ci.yaml
blob: 54248e3a57793fbe822b687dc446c07cf11a6720 (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
132
133
134
135
136
137
name: Build Hyprland

on: [push, pull_request, workflow_dispatch]
jobs:
  gcc:
    name: "Build Hyprland (Arch)"
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Get required pacman pkgs
        run: |
           sed -i 's/SigLevel    = Required DatabaseOptional/SigLevel    = Optional TrustAll/' /etc/pacman.conf
           pacman --noconfirm --noprogressbar -Syyu
           pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers xcb-util-errors xcb-util-renderutil xcb-util-wm xorg-fonts-encodings xorg-server-common xorg-setxkbmap xorg-xkbcomp xorg-xwayland git cmake go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd python libliftoff
      - name: Set up user
        run: |
          useradd -m githubuser
          echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
      - name: Install libdisplay-info from the AUR
        run: |
          su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
      - name: Fix permissions for git
        run: |
          git config --global --add safe.directory /__w/Hyprland/Hyprland
      - name: Checkout Hyprland
        uses: actions/checkout@v3
        with:
          submodules: recursive
      - name: Build Hyprland
        run: |
          git submodule sync --recursive && git submodule update --init --force --recursive
          make all
      - name: Compress and package artifacts
        run: |
          mkdir x86_64-pc-linux-gnu
          mkdir hyprland
          mkdir hyprland/example
          mkdir hyprland/assets
          cp ./LICENSE hyprland/
          cp build/Hyprland hyprland/
          cp build/hyprctl/hyprctl hyprland/
          cp subprojects/wlroots/build/libwlroots.so.13032 hyprland/
          cp build/Hyprland hyprland/
          cp -r example/ hyprland/
          cp -r assets/ hyprland/
          tar -cvf Hyprland.tar.xz hyprland
      - name: Release
        uses: actions/upload-artifact@v3
        with:
          name: Build archive
          path: Hyprland.tar.xz

  meson:
    name: "Build Hyprland with Meson (Arch)"
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Download dependencies
        run: |
          sed -i 's/SigLevel    = Required DatabaseOptional/SigLevel    = Optional TrustAll/' /etc/pacman.conf
          pacman --noconfirm --noprogressbar -Syyu
          pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd cmake jq python libliftoff
      - name: Set up user
        run: |
          useradd -m githubuser
          echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
      - name: Install libdisplay-info from the AUR
        run: |
          su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
      - name: Checkout Hyprland
        uses: actions/checkout@v3
        with:
          submodules: true
      - name: Configure
        run: |
          meson obj-x86_64-pc-linux-gnu \
            -Ddefault_library=static
      - name: Compile
        run: ninja -C obj-x86_64-pc-linux-gnu

  noxwayland:
    name: "Build Hyprland in pure Wayland (Arch)"
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Download dependencies
        run: |
          sed -i 's/SigLevel    = Required DatabaseOptional/SigLevel    = Optional TrustAll/' /etc/pacman.conf
          pacman --noconfirm --noprogressbar -Syyu
          pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git cmake go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd libliftoff
      - name: Set up user
        run: |
          useradd -m githubuser
          echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
      - name: Install libdisplay-info from the AUR
        run: |
          su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
      - name: Checkout Hyprland
        uses: actions/checkout@v3
        with:
          submodules: true
      - name: Configure
        run: mkdir -p build && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DNO_XWAYLAND:STRING=true -H./ -B./build -G Ninja 
      - name: Compile
        run: make release

  clang-format:
    name: "Code Style (Arch)"
    runs-on: ubuntu-latest
    container:
      image: archlinux
    steps:
      - name: Download dependencies
        run: |
          sed -i 's/SigLevel    = Required DatabaseOptional/SigLevel    = Optional TrustAll/' /etc/pacman.conf
          pacman --noconfirm --noprogressbar -Syyu
          pacman --noconfirm --noprogressbar -Sy glslang libepoxy libfontenc libxcvt libxfont2 libxkbfile vulkan-headers vulkan-validation-layers git go clang lld libc++ pkgconf meson ninja wayland wayland-protocols libinput libxkbcommon pixman glm libdrm libglvnd cairo pango systemd scdoc base-devel seatd cmake jq python libliftoff tomlplusplus
      - name: Set up user
        run: |
          useradd -m githubuser
          echo -e "root ALL=(ALL:ALL) ALL\ngithubuser ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers
      - name: Install libdisplay-info from the AUR
        run: |
          su githubuser -c "cd ~ && git clone https://aur.archlinux.org/libdisplay-info.git && cd ./libdisplay-info && makepkg -si --skippgpcheck --noconfirm --noprogressbar"
      - name: Checkout Hyprland
        uses: actions/checkout@v3
        with:
          submodules: true
      - name: Configure
        run: |
          meson obj-x86_64-pc-linux-gnu \
            -Ddefault_library=static
      - name: clang-format check
        run: ninja -C obj-x86_64-pc-linux-gnu clang-format-check