Skip to content

Instantly share code, notes, and snippets.

@Skerse

Skerse/PKGBUILD Secret

Last active May 7, 2024 17:48
Show Gist options
  • Save Skerse/0780196bda625b41df9ca292c360f47a to your computer and use it in GitHub Desktop.
Save Skerse/0780196bda625b41df9ca292c360f47a to your computer and use it in GitHub Desktop.
Official Hyprland MAKEPKG, modified for legacyrenderer build
pkgname=hyprland-legacyrenderer
pkgver=0.39.1
pkgrel=1
pkgdesc='a highly customizable dynamic tiling Wayland compositor (using the legacyrenderer build option)'
arch=(x86_64 aarch64)
url="https://github.com/hyprwm/hyprland"
license=(BSD-3-Clause)
depends=(cairo # libcairo.so
gcc-libs # libgcc_s.so libstdc++.so
glibc # libc.so libm.so
glib2 libgobject-2.0.so
glslang
hyprcursor libhyprcursor.so
hyprlang libhyprlang.so
libdisplay-info libdisplay-info.so
libdrm # libdrm.so
libglvnd libEGL.so libGLESv2.so libOpenGL.so
libinput # libinput.so
libliftoff libliftoff.so
libx11
libxcb # libxcb-dri3.so libxcb-present.so libxcb-render.so libxcb-res.so libxcb-shm.so libxcb.so libxcb-xfixes.so libxcb-xinput.so
libxcomposite # libxcb-composite.so
libxfixes
libxkbcommon libxkbcommon.so
libxrender
mesa # libgbm.so
opengl-driver
pango libpango-1.0.so libpangocairo-1.0.so
pixman libpixman-1.so
seatd libseat.so
systemd-libs libsystemd.so
tomlplusplus libtomlplusplus.so libudev.so
vulkan-icd-loader
vulkan-validation-layers
wayland libwayland-client.so libwayland-server.so
wayland-protocols
xcb-proto
xcb-util
xcb-util-errors # libxcb-errors.so
xcb-util-image
xcb-util-keysyms
xcb-util-renderutil # libxcb-render-util.so
xcb-util-wm # libxcb-ewmh.so libxcb-icccm.so
xorg-xinput
xorg-xwayland)
makedepends=(cmake
gdb
meson
ninja
vulkan-headers
xorgproto)
optdepends=('cmake: to build and install plugins using hyprpm'
'cpio: to build and install plugins using hyprpm'
'meson: to build and install plugins using hyprpm')
_archive="${pkgname^}-$pkgver"
source=("$_archive.tar.gz::$url/releases/download/v$pkgver/source-v$pkgver.tar.gz")
sha256sums=('48d1c58fd8db365635a56d76e05e6ea2d99fa20c020a061ee88a20407cfde787')
prepare() {
ln -sf hyprland-source "$_archive"
cd "$_archive"
sed -i -e '/^release:/{n;s/-D/-DCMAKE_SKIP_RPATH=ON -D/}' Makefile
}
build() {
cd "$_archive"
make legacyrenderer
}
package() {
cd "$_archive"
find src \( -name '*.h' -o -name '*.hpp' \) -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/{}" \;
pushd subprojects/wlroots-hyprland/include
find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots-hyprland/{}" \;
popd
pushd subprojects/wlroots-hyprland/build/include
find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots-hyprland/{}" \;
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 -Dm0644 -t "$pkgdir/usr/share/man/man1" docs/{Hyprland,hyprctl}.1
for cmd in hyprctl hyprpm; do
install -Dm0644 "$cmd/$cmd.bash" "$pkgdir/usr/share/bash-completion/completions/$cmd"
install -Dm0644 "$cmd/$cmd.zsh" "$pkgdir/usr/share/zsh/site-functions/_$cmd"
install -Dm0644 -t "$pkgdir/usr/share/fish/vendor_completions.d/" "$cmd/$cmd.fish"
done
install -Dm0755 -t "$pkgdir/usr/bin/" build/Hyprland build/hyprctl/hyprctl build/hyprpm/hyprpm
install -Dm0644 -t "$pkgdir/usr/share/$pkgname/" assets/*.png
install -Dm0644 -t "$pkgdir/usr/share/wayland-sessions/" "example/$pkgname.desktop"
install -Dm0644 -t "$pkgdir/usr/share/$pkgname/" "example/$pkgname.conf"
install -Dm0644 -t "$pkgdir/usr/share/licenses/$pkgname/" LICENSE
find subprojects/wlroots-hyprland/build -name 'libwlroots.so.*' -type f -execdir \
install -Dm0755 -t "$pkgdir/usr/lib/" {} \;
}
@kRHYME7
Copy link

kRHYME7 commented Apr 30, 2024

@Skerse
Copy link
Author

Skerse commented Apr 30, 2024

url="https://github.com/hyprwm/Hyprland"

Oops, forgot about that. Thanks!

@kRHYME7
Copy link

kRHYME7 commented Apr 30, 2024

# Maintainer: Skerse 

pkgname=hyprland-legacyrenderer
_pkgname=hyprland
pkgver=0.39.1
pkgrel=1
pkgdesc='a highly customizable dynamic tiling Wayland compositor (using the legacyrenderer build option by Skerse https://gist.github.com/Skerse/0780196bda625b41df9ca292c360f47a)'
arch=(x86_64 aarch64)
url="https://github.com/hyprwm/Hyprland"
license=(BSD-3-Clause)
depends=(cairo # libcairo.so
         gcc-libs # libgcc_s.so libstdc++.so
         glibc # libc.so libm.so
         glib2 libgobject-2.0.so
         glslang
         hyprcursor libhyprcursor.so
         hyprlang libhyprlang.so
         libdisplay-info libdisplay-info.so
         libdrm # libdrm.so
         libglvnd libEGL.so libGLESv2.so libOpenGL.so
         libinput # libinput.so
         libliftoff libliftoff.so
         libx11
         libxcb # libxcb-dri3.so libxcb-present.so libxcb-render.so libxcb-res.so libxcb-shm.so libxcb.so libxcb-xfixes.so libxcb-xinput.so
         libxcomposite # libxcb-composite.so
         libxfixes
         libxkbcommon libxkbcommon.so
         libxrender
         mesa # libgbm.so
         opengl-driver
         pango libpango-1.0.so libpangocairo-1.0.so
         pixman libpixman-1.so
         seatd libseat.so
         systemd-libs libsystemd.so
         tomlplusplus libtomlplusplus.so libudev.so
         vulkan-icd-loader
         vulkan-validation-layers
         wayland libwayland-client.so libwayland-server.so
         wayland-protocols
         xcb-proto
         xcb-util
         xcb-util-errors # libxcb-errors.so
         xcb-util-image
         xcb-util-keysyms
         xcb-util-renderutil # libxcb-render-util.so 
         xcb-util-wm # libxcb-ewmh.so  libxcb-icccm.so 
         xorg-xinput
         xorg-xwayland)
makedepends=(cmake
             gdb
             meson
             ninja
             vulkan-headers
             xorgproto)
optdepends=('cmake: to build and install plugins using hyprpm'
            'cpio: to build and install plugins using hyprpm'
            'meson: to build and install plugins using hyprpm')
conflicts=("$_pkgname" "$_pkgname-git")
_archive="${_pkgname^}-$pkgver"
source=("$_archive.tar.gz::$url/releases/download/v$pkgver/source-v$pkgver.tar.gz")
sha256sums=('48d1c58fd8db365635a56d76e05e6ea2d99fa20c020a061ee88a20407cfde787')

prepare() {
	ln -sf hyprland-source "$_archive"
	cd "$_archive"
	sed -i -e '/^release:/{n;s/-D/-DCMAKE_SKIP_RPATH=ON -D/}' Makefile
}

build() {
	cd "$_archive"
	make legacyrenderer
}

package() {
	cd "$_archive"
	find src \( -name '*.h' -o -name '*.hpp' \) -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/{}" \;
	pushd subprojects/wlroots-hyprland/include
	find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots-hyprland/{}" \;
	popd
	pushd subprojects/wlroots-hyprland/build/include
	find . -name '*.h' -exec install -Dm0644 {} "$pkgdir/usr/include/hyprland/wlroots-hyprland/{}" \;
	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 -Dm0644 -t "$pkgdir/usr/share/man/man1" docs/{Hyprland,hyprctl}.1
	for cmd in hyprctl hyprpm; do
		install -Dm0644 "$cmd/$cmd.bash" "$pkgdir/usr/share/bash-completion/completions/$cmd"
		install -Dm0644 "$cmd/$cmd.zsh" "$pkgdir/usr/share/zsh/site-functions/_$cmd"
		install -Dm0644 -t "$pkgdir/usr/share/fish/vendor_completions.d/" "$cmd/$cmd.fish"
	done
	install -Dm0755 -t "$pkgdir/usr/bin/" build/Hyprland build/hyprctl/hyprctl build/hyprpm/hyprpm
	install -Dm0644 -t "$pkgdir/usr/share/$_pkgname/" assets/*.png
	install -Dm0644 -t "$pkgdir/usr/share/wayland-sessions/" "example/$_pkgname.desktop"
	install -Dm0644 -t "$pkgdir/usr/share/$_pkgname/" "example/$_pkgname.conf"
	install -Dm0644 -t "$pkgdir/usr/share/licenses/$_pkgname/" LICENSE
        find subprojects/wlroots-hyprland/build -name 'libwlroots.so.*' -type f -execdir \
                install -Dm0755 -t "$pkgdir/usr/lib/" {} \;
}

pkgname=hyprland-legacy-render
_pkgname=hyprland

use pkgname only for makepkg to be recognized. The rest should not have any suffix.

Note: If it's okay for you that I will host this in the AUR, what should be the package name? The hyprland-legacyrender is not yet deleted.
use hyprland-legacy-render instead ?

@kRHYME7
Copy link

kRHYME7 commented Apr 30, 2024

Ops, I somehow adopted the AUR would you like me to add you as maintainer?

@Skerse
Copy link
Author

Skerse commented May 1, 2024

I somehow adopted the AUR would you like me to add you as maintainer?

Yeah, that would be nice, I need to make an account first so let me do that soon.

The hyprland-legacyrender is not yet deleted. use hyprland-legacy-render instead ?

I just noticed you adopted the hyprland-legacyrenderer package, so it's good have that!

@kRHYME7
Copy link

kRHYME7 commented May 1, 2024

I will also try to maintain the upstream git. Please DM me your username in case you're done making an account.

I hope can run Hypland-legacyrenderer on a VM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment