summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: e5b9692622c6ae7a12510e3d21bbf0b648391419 (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
138
139
140
# Maintainer: FabioLolix
# Maintainer: éclairevoyant
# Contributor: ThatOneCalculator <kainoa at t1c dot dev>

pkgname=hyprland-git
pkgver=0.29.1.r85.c8cc811e
pkgrel=1
pkgdesc="A dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks."
arch=(x86_64 aarch64)
url="https://github.com/hyprwm/Hyprland"
license=(BSD)
depends=(cairo
         gcc-libs
         glib2
         glibc
         glslang
         libdisplay-info
         libdrm
         libglvnd
         libinput
         libliftoff
         libx11
         libxcb
         libxcomposite
         libxfixes
         libxkbcommon
         libxrender
         opengl-driver
         pango
         pixman
         pixman
         polkit
         seatd
         systemd-libs
         vulkan-icd-loader
         vulkan-validation-layers
         wayland
         wayland-protocols
         xcb-proto
         xcb-util
         xcb-util-errors
         xcb-util-keysyms
         xcb-util-renderutil
         xcb-util-wm
         xorg-xinput
         xorg-xwayland)
depends+=(libdisplay-info.so)
makedepends=(cmake
             gdb
             git
             meson
             ninja
             vulkan-headers
             xorgproto)
provides=("hyprland=${pkgver%%.r*}")
conflicts=(hyprland)
source=("git+https://github.com/hyprwm/Hyprland.git"
        "git+https://gitlab.freedesktop.org/wlroots/wlroots.git"
        "git+https://github.com/hyprwm/hyprland-protocols.git"
        "git+https://github.com/canihavesomecoffee/udis86.git"
        "git+https://github.com/wolfpld/tracy.git")
b2sums=('SKIP'
        'SKIP'
        'SKIP'
        'SKIP'
        'SKIP')

pick_mr() {
  git pull origin pull/$1/head --no-edit
}

prepare() {
  cd Hyprland
  git submodule init
  git config submodule.wlroots.url                        "$srcdir/wlroots"
  git config submodule.subprojects/hyprland-protocols.url "$srcdir/hyprland-protocols"
  git config submodule.subprojects/udis86.url             "$srcdir/udis86"
  git config submodule.subprojects/tracy.url              "$srcdir/tracy"
  git -c protocol.file.allow=always submodule update

  if [[ -z "$(git config --get user.name)" ]]; then
    git config user.name local && git config user.email '<>' && git config commit.gpgsign false
  fi

  # Pick pull requests from github using `pick_mr <pull request number>`.

  make fixwlr
  sed -i '/^release:/{n;s/-D/-DCMAKE_SKIP_RPATH=ON -D/}' Makefile
  # respect build flags to allow full RELRO
  sed -i '/CXX/ s|)|) $(CXXFLAGS)|;/CXX/ s|$| $(LDFLAGS)|;' hyprctl/Makefile
}

pkgver() {
  git -C Hyprland describe --long --tags | sed 's/^v//;s/\([^-]*-\)g/r\1/;s/-/./g'
}

build() {
  cd Hyprland
  pushd subprojects/wlroots
  meson build/ --prefix="$srcdir/tmpwlr" --buildtype=release -Dexamples=false
  ninja -C build/
  mkdir -p "$srcdir/tmpwlr"
  ninja -C build/ install
  popd
  pushd subprojects/udis86
  cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -H./ -B./build -G Ninja
  cmake --build ./build --config Release --target all
  popd
  make protocols
  make release
  pushd hyprctl
  make all
}

package() {
  cd Hyprland
  find src -name '*.hpp' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/{}" \;
  pushd subprojects/wlroots/include
  find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots/{}" \;
  popd
  pushd subprojects/wlroots/build/include
  # fix $srcdir reference
  sed -i '/ICONDIR/ s|".*"|"/usr/share/icons"|' config.h
  find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots/{}" \;
  popd
  mkdir -p "$pkgdir/usr/include/hyprland/protocols"
  cp protocols/*-protocol.h "$pkgdir/usr/include/hyprland/protocols"
  pushd build
  cmake -DCMAKE_INSTALL_PREFIX=/usr ..
  popd
  install -Dm0644 -t "$pkgdir/usr/share/pkgconfig" build/hyprland.pc
  install -Dm0755 -t "$pkgdir/usr/bin" build/Hyprland
  install -Dm0755 -t "$pkgdir/usr/bin" hyprctl/hyprctl
  install -Dm0644 -t "$pkgdir/usr/share/hyprland" assets/*.png
  install -Dm0644 -t "$pkgdir/usr/share/wayland-sessions" "example/hyprland.desktop"
  install -Dm0644 -t "$pkgdir/usr/share/hyprland" "example/hyprland.conf"
  install -Dm0644 -t "$pkgdir/usr/share/licenses/${pkgname}" LICENSE
  install -Dm0755 -t "$pkgdir/usr/lib" "$srcdir/tmpwlr/lib/libwlroots.so.12032"
}
# vi: et ts=2 sw=2