git: df687223708c - main - x11-wm/hyprland-devel: restore port

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sat, 22 Apr 2023 14:45:29 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=df687223708c10e34034276da12e005ec9610e11

commit df687223708c10e34034276da12e005ec9610e11
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-04-22 14:11:27 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-04-22 14:40:10 +0000

    x11-wm/hyprland-devel: restore port
    
    This reverts commit d16353f0cc66fcb3cd7f9c594ef252687d109b3a.
---
 MOVED                                            |  1 -
 x11-wm/Makefile                                  |  1 +
 x11-wm/hyprland-devel/Makefile                   | 93 ++++++++++++++++++++++++
 x11-wm/hyprland-devel/distinfo                   |  9 +++
 x11-wm/hyprland-devel/files/patch-system-wlroots | 26 +++++++
 x11-wm/hyprland-devel/pkg-descr                  |  5 ++
 x11-wm/hyprland-devel/pkg-message                | 10 +++
 x11-wm/hyprland-devel/pkg-plist                  |  9 +++
 x11-wm/hyprland/Makefile                         |  2 +
 9 files changed, 155 insertions(+), 1 deletion(-)

diff --git a/MOVED b/MOVED
index ca7d712fea99..33a85b0ab179 100644
--- a/MOVED
+++ b/MOVED
@@ -17578,7 +17578,6 @@ multimedia/mpv034||2022-11-14|No longer needed
 devel/py-types-xxhash||2022-11-15|No longer needed, type annotations are now available in xxhash module
 devel/awscli|devel/py-awscli|2022-11-15|Renamed comply with Python Ports Policy and flavored
 graphics/sciplot|science/sciplot|2022-11-15|Move to avoid conflict with graphics/SciPlot
-x11-wm/hyprland-devel|x11-wm/hyprland|2022-11-16|Updated to the latest stable version
 net/rabbitmq-c-devel|net/rabbitmq-c|2022-11-16|Remove obsolete devel port, use net/rabbitmq-c instead
 databases/foundationdb-devel|databases/foundationdb|2022-11-16|Remove obsolete devel port, use databases/foundationdb instead
 devel/py-pytest4-asyncio||2022-11-19|Has expired: legacy version for pytest4 no longer used by any port
diff --git a/x11-wm/Makefile b/x11-wm/Makefile
index 9730356163eb..6424224f90dd 100644
--- a/x11-wm/Makefile
+++ b/x11-wm/Makefile
@@ -47,6 +47,7 @@
     SUBDIR += hikari
     SUBDIR += hs-xmonad
     SUBDIR += hyprland
+    SUBDIR += hyprland-devel
     SUBDIR += i3
     SUBDIR += icewm
     SUBDIR += ittywm
diff --git a/x11-wm/hyprland-devel/Makefile b/x11-wm/hyprland-devel/Makefile
new file mode 100644
index 000000000000..765c5eca48b2
--- /dev/null
+++ b/x11-wm/hyprland-devel/Makefile
@@ -0,0 +1,93 @@
+PORTNAME=	hyprland
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.24.1-87
+DISTVERSIONSUFFIX=	-g4a92deec
+CATEGORIES=	x11-wm wayland
+PKGNAMESUFFIX=	-devel
+
+MAINTAINER=	jbeich@FreeBSD.org
+COMMENT=	Dynamic tiling Wayland compositor that doesn't sacrifice on its looks (development snapshot) #'
+WWW=		https://hyprland.org/
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	cmake:devel/cmake-core \
+		evdev-proto>0:devel/evdev-proto \
+		wayland-protocols>=1.25:graphics/wayland-protocols \
+		wlroots>=0.16.0.346<0.17.0:x11-toolkits/wlroots
+LIB_DEPENDS=	libwayland-server.so:graphics/wayland \
+		libwlroots.so:x11-toolkits/wlroots \
+		libinput.so:x11/libinput \
+		libxkbcommon.so:x11/libxkbcommon
+
+USES=		compiler:c++11-lib gl gnome meson pkgconfig xorg
+USE_GITHUB=	yes
+USE_GL=		egl opengl
+USE_GNOME=	cairo pango
+USE_XORG=	pixman
+GH_ACCOUNT=	hyprwm
+GH_PROJECT=	Hyprland
+GH_TUPLE=	hyprwm:hyprland-protocols:4d29e48:hyprland_protocols/subprojects/hyprland-protocols \
+		canihavesomecoffee:udis86:1.7.2-186-g5336633:udis86/subprojects/udis86
+MESON_ARGS=	-Dsystemd=disabled
+
+CONFLICTS_INSTALL=	${PORTNAME}
+
+OPTIONS_DEFINE=	X11
+OPTIONS_DEFAULT=X11
+
+X11_USE=		XORG=xcb
+X11_MESON_ENABLED=	xwayland
+
+post-patch:
+# Extract (snapshot) version from the port instead of meson.build
+	@${REINPLACE_CMD} -i .nogit -e "/GIT_BRANCH/s/run_command.*/'main'/" \
+		-e "/GIT_COMMIT_HASH/s/run_command.*/'${DISTVERSIONFULL}'/" \
+		-e "/GIT_COMMIT_MESSAGE/s/run_command.*/'?'/" \
+		-e "/GIT_DIRTY/s/run_command.*/'portbld'/" \
+		-e "/version.*jq/s/run_command.*/'${DISTVERSIONFULL}',/" \
+		${WRKSRC}/meson.build
+# Respect PREFIX for wallpapers
+	@${REINPLACE_CMD} 's,/usr/share,${DATADIR:H},' \
+		${WRKSRC}/src/render/OpenGL.cpp
+# Respect LOCALBASE for xdg-desktop-portal-hyprland installation
+	@${REINPLACE_CMD} 's,/usr/share,${LOCALBASE}/share,g' \
+		${WRKSRC}/src/Compositor.cpp
+
+.ifdef GH_TUPLE
+post-install:
+# XXX USES=meson invokes ninja directly, so doesn't support --skip-subprojects
+	@${RM} -r ${STAGEDIR}${PREFIX}/share/hyprland-protocols
+	@${RM} -r ${STAGEDIR}${PREFIX}/share/pkgconfig
+.endif
+
+# XXX Drop after FreeBSD 13.2 EOL around 2024-05-01 (don't forget distinfo)
+.if ${CXX} == c++ && exists(/usr/lib/libc++.so)
+.if !exists(/usr/include/c++/v1/__ranges/as_rvalue_view.h) || make(makesum) || make(fetch)
+USES+=		llvm:min=16,build
+PATH:=		${LLVM_PREFIX}/bin:${PATH} # XXX _CMAKE_TOOLCHAIN_SUFFIX vs. devel/llvm*
+CC=		clang${LLVM_VERSION}
+CXX=		clang++${LLVM_VERSION}
+CPP=		clang-cpp${LLVM_VERSION}
+CONFIGURE_ENV+=	CC="${CC}" CXX="${CXX}" CPP="${CPP}"
+CMAKE_BIN=	${LOCALBASE}/bin/cmake
+
+# XXX Move into separate port and standardize via USES
+GH_TUPLE+=	llvm:llvm-project:llvmorg-16.0.1:libcxx
+CXXFLAGS+=	-nostdinc++ -isystem${WRKDIR}/libcxx_prefix/include/c++/v1
+# Don't link against new libc++ as it's not necessary
+#LDFLAGS+=	-nostdlib++ -L${WRKDIR}/libcxx_prefix/lib -l:libc++.a -lcxxrt
+
+pre-configure:	bundled-libcxx
+bundled-libcxx:
+	@${SETENV} ${CONFIGURE_ENV} ${CMAKE_BIN} ${CMAKE_ARGS} \
+		-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
+		-DCMAKE_INSTALL_PREFIX:PATH=${WRKDIR}/libcxx_prefix \
+		-B ${WRKDIR}/libcxx_build -S ${WRKSRC_libcxx}/libcxx
+	@${DO_MAKE_BUILD:NDESTDIR*} install -C ${WRKDIR}/libcxx_build
+.endif
+.endif # exists(/usr/lib/libc++.so)
+
+.include "${.CURDIR:H:H}/x11-toolkits/wlroots-devel/override.mk"
+.include <bsd.port.mk>
diff --git a/x11-wm/hyprland-devel/distinfo b/x11-wm/hyprland-devel/distinfo
new file mode 100644
index 000000000000..a891bd16c288
--- /dev/null
+++ b/x11-wm/hyprland-devel/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1682166019
+SHA256 (hyprwm-Hyprland-v0.24.1-87-g4a92deec_GH0.tar.gz) = f88bbc019f44c66681cce5555bbde32fff7e49f4c298f6a93cd7de676468ff28
+SIZE (hyprwm-Hyprland-v0.24.1-87-g4a92deec_GH0.tar.gz) = 762712
+SHA256 (hyprwm-hyprland-protocols-4d29e48_GH0.tar.gz) = 1384ccdbb0149cdc40d74fbe21fba97d706db08b718c7df9481076381d852c74
+SIZE (hyprwm-hyprland-protocols-4d29e48_GH0.tar.gz) = 6340
+SHA256 (canihavesomecoffee-udis86-1.7.2-186-g5336633_GH0.tar.gz) = 69aff959179ff6247b375b92e797221dbd8e078eabbf1366280b0532617e7fb8
+SIZE (canihavesomecoffee-udis86-1.7.2-186-g5336633_GH0.tar.gz) = 116938
+SHA256 (llvm-llvm-project-llvmorg-16.0.1_GH0.tar.gz) = b5a9ff1793b1e2d388a3819bf35797002b1d2e40bb35a10c65605e0ea1435271
+SIZE (llvm-llvm-project-llvmorg-16.0.1_GH0.tar.gz) = 179289803
diff --git a/x11-wm/hyprland-devel/files/patch-system-wlroots b/x11-wm/hyprland-devel/files/patch-system-wlroots
new file mode 100644
index 000000000000..0f099fd8359d
--- /dev/null
+++ b/x11-wm/hyprland-devel/files/patch-system-wlroots
@@ -0,0 +1,26 @@
+Allow system wlroots to reduce maintenance (wlroots has tons of options)
+
+--- meson.build.orig	2023-03-14 21:56:31 UTC
++++ meson.build
+@@ -39,8 +39,8 @@ add_project_arguments(
+   ],
+   language: 'cpp')
+ 
+-wlroots = subproject('wlroots', default_options: ['examples=false'])
+-have_xwlr = wlroots.get_variable('features').get('xwayland')
++wlroots = dependency('wlroots', version: ['>=0.17.0', '<0.18.0'], default_options: ['examples=false'])
++have_xwlr = wlroots.get_variable(pkgconfig: 'have_xwayland', internal: 'have_xwayland') == 'true'
+ xcb_dep = dependency('xcb', required: get_option('xwayland'))
+ 
+ cmake = import('cmake')
+--- src/meson.build.orig	2023-03-14 21:56:31 UTC
++++ src/meson.build
+@@ -7,7 +7,7 @@ executable('Hyprland', src,
+     server_protos,
+     dependency('wayland-server'),
+     dependency('wayland-client'),
+-    wlroots.get_variable('wlroots'),
++    wlroots,
+     dependency('cairo'),
+     dependency('libdrm'),
+     dependency('egl'),
diff --git a/x11-wm/hyprland-devel/pkg-descr b/x11-wm/hyprland-devel/pkg-descr
new file mode 100644
index 000000000000..20c74f73f889
--- /dev/null
+++ b/x11-wm/hyprland-devel/pkg-descr
@@ -0,0 +1,5 @@
+Hyprland is a dynamic tiling Wayland compositor based on wlroots that
+doesn't sacrifice on its looks.
+
+It supports multiple layouts, fancy effects, has a very flexible IPC
+model allowing for a lot of customization, and more.
diff --git a/x11-wm/hyprland-devel/pkg-message b/x11-wm/hyprland-devel/pkg-message
new file mode 100644
index 000000000000..55c7dfda1748
--- /dev/null
+++ b/x11-wm/hyprland-devel/pkg-message
@@ -0,0 +1,10 @@
+[
+{ type: install
+  message: <<EOM
+Additional packages recommended for new users:
+- hyprpaper
+- hyprpicker
+- xdg-desktop-portal-hyprland
+EOM
+}
+]
diff --git a/x11-wm/hyprland-devel/pkg-plist b/x11-wm/hyprland-devel/pkg-plist
new file mode 100644
index 000000000000..3c6d77e4eefd
--- /dev/null
+++ b/x11-wm/hyprland-devel/pkg-plist
@@ -0,0 +1,9 @@
+bin/Hyprland
+bin/hyprctl
+man/man1/Hyprland.1.gz
+man/man1/hyprctl.1.gz
+%%DATADIR%%/hyprland.conf
+%%DATADIR%%/wall_2K.png
+%%DATADIR%%/wall_4K.png
+%%DATADIR%%/wall_8K.png
+share/wayland-sessions/hyprland.desktop
diff --git a/x11-wm/hyprland/Makefile b/x11-wm/hyprland/Makefile
index c5f489752d67..5969e5044697 100644
--- a/x11-wm/hyprland/Makefile
+++ b/x11-wm/hyprland/Makefile
@@ -36,6 +36,8 @@ GH_TUPLE=	hyprwm:hyprland-protocols:d7d403b:hyprland_protocols/subprojects/hyprl
 		canihavesomecoffee:udis86:1.7.2-186-g5336633:udis86/subprojects/udis86
 MESON_ARGS=	-Dsystemd=disabled
 
+CONFLICTS_INSTALL=	${PORTNAME}-devel
+
 OPTIONS_DEFINE=	X11
 OPTIONS_DEFAULT=X11