outfoxxed / hy3

Hyprland plugin for an i3 / sway like manual tiling layout
GNU General Public License v3.0
494 stars 44 forks source link

hy3 listed for 0.42.0 does not build on 0.42.0 #136

Closed zetaPRIME closed 1 month ago

zetaPRIME commented 2 months ago

I'm currently stuck on i3 because my setup is completely reliant on hy3, and hyprpm no longer works at all on 0.41.x; I gave it another try due to the commit, but:


In file included from /tmp/hyprpm/zetaprime/src/globals.hpp:9,
                 from /tmp/hyprpm/zetaprime/src/main.cpp:7:
/tmp/hyprpm/zetaprime/src/Hy3Layout.hpp:78:14: error: ‘void Hy3Layout::recalculateMonitor(const int&)’ marked ‘override’, but does not override
   78 |         void recalculateMonitor(const int& monitor_id) override;
      |              ^~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14.2.1/memory:78,
                 from /home/zetaprime/.local/share/hyprpm/headersRoot/include/hyprland/src/Compositor.hpp:3,
                 from /tmp/hyprpm/zetaprime/src/main.cpp:1:
/usr/include/c++/14.2.1/bits/unique_ptr.h: In instantiation of ‘constexpr std::__detail::__unique_ptr_t<_Tp> std::make_unique(_Args&& ...) [with _Tp = Hy3Layout; _Args = {}; __detail::__unique_ptr_t<_Tp> = __detail::__unique_ptr_t<Hy3Layout>]’:
/tmp/hyprpm/zetaprime/src/main.cpp:68:43:   required from here
   68 |         g_Hy3Layout = std::make_unique<Hy3Layout>();
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/usr/include/c++/14.2.1/bits/unique_ptr.h:1076:30: error: invalid new-expression of abstract class type ‘Hy3Layout’
 1076 |     { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/hyprpm/zetaprime/src/Hy3Layout.hpp:71:7: note:   because the following virtual functions are pure within ‘Hy3Layout’:
   71 | class Hy3Layout: public IHyprLayout {
      |       ^~~~~~~~~
In file included from /home/zetaprime/.local/share/hyprpm/headersRoot/include/hyprland/src/managers/../layout/DwindleLayout.hpp:3,
                 from /home/zetaprime/.local/share/hyprpm/headersRoot/include/hyprland/src/managers/LayoutManager.hpp:3,
                 from /home/zetaprime/.local/share/hyprpm/headersRoot/include/hyprland/src/Compositor.hpp:15:
/home/zetaprime/.local/share/hyprpm/headersRoot/include/hyprland/src/managers/../layout/IHyprLayout.hpp:66:18: note:     ‘virtual void IHyprLayout::recalculateMonitor(const MONITORID&)’
   66 |     virtual void recalculateMonitor(const MONITORID&) = 0;
      |                  ^~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/hy3.dir/build.make:76: CMakeFiles/hy3.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/hy3.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

✖ Plugin hy3 failed to build.```
outfoxxed commented 2 months ago

Are you sure you're building for 0.42.0 and not -git? -git is currently broken, but I just recompiled 0.42.0 and its fine.

zetaPRIME commented 2 months ago

huh. it was -git but I checked commits and I thought it was the same commit as 42.0 release

justend29 commented 2 months ago

Just 4 days ago, Hyprland changed the signature of recalculateMonitor to void IHyprLayout::recalculateMonitor(const MONITORID&), where MONITORID is a typedef for int64_t, not int any more. This signature change is present in the -git variant of the package but not the official release.

@outfoxxed can correct me if I'm wrong, but I believe a Hy3 change would be needed, but only once the Hyprland signature changes are rolled out as an official release.