Skip to content

Commit

Permalink
x11-wm/hyprland-devel: restore port
Browse files Browse the repository at this point in the history
This reverts commit d16353f.
  • Loading branch information
jbeich committed Apr 22, 2023
1 parent 6f63bb8 commit df68722
Show file tree
Hide file tree
Showing 9 changed files with 155 additions and 1 deletion.
1 change: 0 additions & 1 deletion MOVED
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions x11-wm/Makefile
Expand Up @@ -47,6 +47,7 @@
SUBDIR += hikari
SUBDIR += hs-xmonad
SUBDIR += hyprland
SUBDIR += hyprland-devel
SUBDIR += i3
SUBDIR += icewm
SUBDIR += ittywm
Expand Down
93 changes: 93 additions & 0 deletions 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>
9 changes: 9 additions & 0 deletions 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
26 changes: 26 additions & 0 deletions 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'),
5 changes: 5 additions & 0 deletions 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.
10 changes: 10 additions & 0 deletions 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
}
]
9 changes: 9 additions & 0 deletions 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
2 changes: 2 additions & 0 deletions x11-wm/hyprland/Makefile
Expand Up @@ -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

Expand Down

0 comments on commit df68722

Please sign in to comment.