diff --git a/MOVED b/MOVED index ca7d712fea99f..33a85b0ab179c 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 9730356163eb1..6424224f90dd0 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 0000000000000..765c5eca48b2a --- /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 diff --git a/x11-wm/hyprland-devel/distinfo b/x11-wm/hyprland-devel/distinfo new file mode 100644 index 0000000000000..a891bd16c2884 --- /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 0000000000000..0f099fd8359da --- /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 0000000000000..20c74f73f8890 --- /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 0000000000000..55c7dfda1748d --- /dev/null +++ b/x11-wm/hyprland-devel/pkg-message @@ -0,0 +1,10 @@ +[ +{ type: install + message: <