hyprland-plugins icon indicating copy to clipboard operation
hyprland-plugins copied to clipboard

New plugin hyprexpo fails to build

Open alerque opened this issue 10 months ago • 25 comments

As a follow up to #105, hyprexpo is now in the manifest, but it doesn't build. All the other plugins in the manifest seem to have built, and no logs or useful errors are output:

$ hyprpm add https://github.com/hyprwm/hyprland-plugins.git
✔ adding a new plugin repository from https://github.com/hyprwm/hyprland-plugins.git
  MAKE SURE that you trust the authors. DO NOT install random plugins without verifying the code and author.
  Are you sure? [Y/n] y

! old plugin repo build files found in temp directory, removing.
 → Cloning https://github.com/hyprwm/hyprland-plugins.git
✔ cloned
✔ found hyprpm manifest
✔ parsed manifest, found 6 plugins:
 → borders-plus-plus by Vaxry version
 → csgo-vulkan-fix by Vaxry version
 → hyprbars by Vaxry version
 → hyprexpo by Vaxry version
 → hyprtrails by Vaxry version
 → hyprwinwrap by Vaxry version
 → Manifest has 8 pins, checking
✔ commit pin e45066d0741a1a4b9298a4c5ec43a5e57b059a4e matched hl, resetting
✔ Hyprland headers OK
 → Building borders-plus-plus
✔ built borders-plus-plus into borders-plus-plus/borders-plus-plus.so
 → Building csgo-vulkan-fix
✔ built csgo-vulkan-fix into csgo-vulkan-fix/csgo-vulkan-fix.so
 → Building hyprbars
✔ built hyprbars into hyprbars/hyprbars.so
 → Building hyprexpo
✖ Plugin hyprexpo failed to build.

 → Building hyprtrails
✔ built hyprtrails into hyprtrails/hyprtrails.so
 → Building hyprwinwrap
✔ built hyprwinwrap into hyprwinwrap/hyprwinwrap.so
✔ all plugins built
✔ installed repository
✔ you can now enable the plugin(s) with hyprpm enable

Perhaps a user hint for what to do next when a build fails would be a good thing to add to the output. Is there a place to find build logs even?

alerque avatar Apr 03 '24 20:04 alerque

Are you using the last commit hyprland-git ?

MysticBytes786 avatar Apr 03 '24 20:04 MysticBytes786

expo needs today's git. Add -v to your hyprpm command to see what went wrong

vaxerski avatar Apr 03 '24 20:04 vaxerski

This issue is more about the UX of what do do. The "failed to build" error should probably include a "rerun with --verbose to see messages" if they are not logged somewhere you can tell the user to find them.

And the verbose log gives no useful clues at all, "directory not found" without even saying what directory it expects where.

But no I'm not running Hyprland Git HEAD, I have the latest tagged release (I'm the packager for Arch Linux, so I typically dogfood that package). The plugins repo said it needed at least v0.33 so I figured I was fine. I suppose each plugin should have something that identifies a minimum supported version.

alerque avatar Apr 03 '24 20:04 alerque

can you paste the output of the verbose run?

The plugins repo said it needed at least v0.33 so I figured I was fine. I suppose each plugin should have something that identifies a minimum supported version.

That is there, if you're on tagged then hyprpm will checkout to a pin for that release and compile all plugins there.

vaxerski avatar Apr 03 '24 20:04 vaxerski

I agree with the UX part, though.

vaxerski avatar Apr 03 '24 20:04 vaxerski

hyprpm update -v output

[v] version returned: Hyprland, built from branch main at commit fbdaf74a82b38e11a0a6914b3c9f7cb934ac1624 dirty (master: fix swapped workspaces (5397)).
Date: Wed Apr 3 02:22:59 2024
Tag: v0.38.0-10-gfbdaf74a

flags: (if any)


[v] parsed commit fbdaf74a82b38e11a0a6914b3c9f7cb934ac1624 at branch main

✔ Headers up to date.

 → checking for updates for hyprland-plugins                                                                                                                                                 
! old update build files found in temp directory, removing.                                                                                                                                  
 → Cloning https://github.com/hyprwm/hyprland-plugins                                                                                                                                        
✔ repository hyprland-plugins has updates.                                                                                                                                                   
 → Building hyprland-plugins                                                                                                                                                                 
✔ found hyprpm manifest                                                                                                                                                                      
 → Manifest has 8 pins, checking                                                                                                                                                             
 → Building borders-plus-plus                                                                                                                                                                
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating hyprland-plugins[v] shell returned:  -> cd /tmp/hyprpm/update && PKG_CONFIG_PATH="/home/alba4k/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C borders-plus-plus all
make: ingresso nella directory «/tmp/hyprpm/update/borders-plus-plus»
g++ -shared -fPIC --no-gnu-unique main.cpp borderDeco.cpp -o borders-plus-plus.so -g `pkg-config --cflags pixman-1 libdrm hyprland` -std=c++2b -O2
borderDeco.cpp: In member function ‘virtual void CBordersPlusPlus::damageEntire()’:
borderDeco.cpp:143:16: warning: narrowing conversion of ‘(int)(((CBordersPlusPlus*)this)->CBordersPlusPlus::m_vLastWindowPos.Vector2D::x - ((CBordersPlusPlus*)this)->CBordersPlusPlus::m_seExtents.SWindowDecorationExtents::topLeft.Vector2D::x)’ from ‘int’ to ‘double’ [-Wnarrowing]
  143 |     CBox dm = {(int)(m_vLastWindowPos.x - m_seExtents.topLeft.x), (int)(m_vLastWindowPos.y - m_seExtents.topLeft.y),
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
borderDeco.cpp:143:67: warning: narrowing conversion of ‘(int)(((CBordersPlusPlus*)this)->CBordersPlusPlus::m_vLastWindowPos.Vector2D::y - ((CBordersPlusPlus*)this)->CBordersPlusPlus::m_seExtents.SWindowDecorationExtents::topLeft.Vector2D::y)’ from ‘int’ to ‘double’ [-Wnarrowing]
  143 |     CBox dm = {(int)(m_vLastWindowPos.x - m_seExtents.topLeft.x), (int)(m_vLastWindowPos.y - m_seExtents.topLeft.y),
      |                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
borderDeco.cpp:144:16: warning: narrowing conversion of ‘(int)(((CBordersPlusPlus*)this)->CBordersPlusPlus::m_vLastWindowSize.Vector2D::x + ((CBordersPlusPlus*)this)->CBordersPlusPlus::m_seExtents.SWindowDecorationExtents::topLeft.Vector2D::x + ((CBordersPlusPlus*)this)->CBordersPlusPlus::m_seExtents.SWindowDecorationExtents::bottomRight.Vector2D::x)’ from ‘int’ to ‘double’ [-Wnarrowing]
  144 |                (int)(m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x), (int)m_seExtents.topLeft.y};
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
borderDeco.cpp:144:96: warning: narrowing conversion of ‘(int)((CBordersPlusPlus*)this)->CBordersPlusPlus::m_seExtents.SWindowDecorationExtents::topLeft.Vector2D::y’ from ‘int’ to ‘double’ [-Wnarrowing]
  144 |                (int)(m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x), (int)m_seExtents.topLeft.y};
      |                                                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
make: uscita dalla directory «/tmp/hyprpm/update/borders-plus-plus»


✔ built borders-plus-plus into borders-plus-plus/borders-plus-plus.so                                                                                                                        
 → Building csgo-vulkan-fix                                                                                                                                                                  
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating hyprland-plugins[v] shell returned:  -> cd /tmp/hyprpm/update && PKG_CONFIG_PATH="/home/alba4k/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C csgo-vulkan-fix all
make: ingresso nella directory «/tmp/hyprpm/update/csgo-vulkan-fix»
g++ -shared -fPIC --no-gnu-unique main.cpp -o csgo-vulkan-fix.so -g `pkg-config --cflags pixman-1 libdrm hyprland` -std=c++2b -O2
make: uscita dalla directory «/tmp/hyprpm/update/csgo-vulkan-fix»


✔ built csgo-vulkan-fix into csgo-vulkan-fix/csgo-vulkan-fix.so                                                                                                                              
 → Building hyprbars                                                                                                                                                                         
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating hyprland-plugins[v] shell returned:  -> cd /tmp/hyprpm/update && PKG_CONFIG_PATH="/home/alba4k/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprbars all
make: ingresso nella directory «/tmp/hyprpm/update/hyprbars»
g++ -shared -fPIC --no-gnu-unique -g -std=c++2b -Wno-c++11-narrowing `pkg-config --cflags pixman-1 libdrm hyprland pangocairo libinput libudev wayland-server hyprland` main.cpp barDeco.cpp  -o hyprbars.so `pkg-config --libs pangocairo` -O2
barDeco.cpp: In member function ‘virtual SDecorationPositioningInfo CHyprBar::getPositioningInfo()’:
barDeco.cpp:38:32: warning: narrowing conversion of ‘*(long int*)(*(long int* const*)PHEIGHT)’ from ‘long int’ to ‘double’ [-Wnarrowing]
   38 |     info.desiredExtents = {{0, **PHEIGHT}, {0, 0}};
      |                                ^~~~~~~~~
barDeco.cpp: In member function ‘void CHyprBar::onMouseDown(SCallbackInfo&, wlr_pointer_button_event*)’:
barDeco.cpp:78:18: warning: comparison between ‘enum wl_pointer_button_state’ and ‘enum wlr_button_state’ [-Wenum-compare]
   78 |     if (e->state != WLR_BUTTON_PRESSED) {
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
barDeco.cpp:108:42: warning: narrowing conversion of ‘(int)__builtin_memcpy(&<unnamed>, & this->assignedBoxGlobal()()).CBox::<unnamed>.CBox::._anon_363::w’ from ‘int’ to ‘double’ [-Wnarrowing]
  108 |         const auto BARBUF     = Vector2D{(int)assignedBoxGlobal().w, **PHEIGHT};
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
barDeco.cpp:108:70: warning: narrowing conversion of ‘*(long int*)(*(long int* const*)PHEIGHT)’ from ‘long int’ to ‘double’ [-Wnarrowing]
  108 |         const auto BARBUF     = Vector2D{(int)assignedBoxGlobal().w, **PHEIGHT};
      |                                                                      ^~~~~~~~~
barDeco.cpp: In member function ‘virtual void CHyprBar::draw(CMonitor*, float)’:
barDeco.cpp:409:24: warning: narrowing conversion of ‘*(long int*)(*(long int* const*)PHEIGHT)’ from ‘long int’ to ‘double’ [-Wnarrowing]
  409 |     m_seExtents = {{0, **PHEIGHT}, {}};
      |                        ^~~~~~~~~
barDeco.cpp:469:51: warning: narrowing conversion of ‘(int)(double)BARBUF.Vector2D::x’ from ‘int’ to ‘double’ [-Wnarrowing]
  469 |     CBox textBox = {titleBarBox.x, titleBarBox.y, (int)BARBUF.x, (int)BARBUF.y};
      |                                                   ^~~~~~~~~~~~~
barDeco.cpp:469:66: warning: narrowing conversion of ‘(int)(double)BARBUF.Vector2D::y’ from ‘int’ to ‘double’ [-Wnarrowing]
  469 |     CBox textBox = {titleBarBox.x, titleBarBox.y, (int)BARBUF.x, (int)BARBUF.y};
      |                                                                  ^~~~~~~~~~~~~
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-c++11-narrowing’ may have been intended to silence earlier diagnostics
make: uscita dalla directory «/tmp/hyprpm/update/hyprbars»


✔ built hyprbars into hyprbars/hyprbars.so                                                                                                                                                   
 → Building hyprexpo                                                                                                                                                                         
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating hyprland-plugins[v] shell returned:  -> cd /tmp/hyprpm/update && PKG_CONFIG_PATH="/home/alba4k/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprexpo all
make: ingresso nella directory «/tmp/hyprpm/update/hyprexpo»
g++ -shared -fPIC --no-gnu-unique main.cpp overview.cpp -o hyprexpo.so -g `pkg-config --cflags pixman-1 libdrm hyprland` -std=c++2b -Wno-narrowing
overview.cpp: In constructor ‘COverview::COverview(PHLWORKSPACE, bool)’:
overview.cpp:104:16: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  104 |     startedOn->m_bVisible = false;
      |                ^~~~~~~~~~
overview.cpp:124:25: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  124 |             PWORKSPACE->m_bVisible = true;
      |                         ^~~~~~~~~~
overview.cpp:131:25: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  131 |             PWORKSPACE->m_bVisible = false;
      |                         ^~~~~~~~~~
overview.cpp:149:16: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  149 |     startedOn->m_bVisible            = true;
      |                ^~~~~~~~~~
overview.cpp: In member function ‘void COverview::redrawID(int, bool)’:
overview.cpp:238:16: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  238 |     startedOn->m_bVisible = false;
      |                ^~~~~~~~~~
overview.cpp:243:21: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  243 |         PWORKSPACE->m_bVisible = true;
      |                     ^~~~~~~~~~
overview.cpp:250:21: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  250 |         PWORKSPACE->m_bVisible = false;
      |                     ^~~~~~~~~~
overview.cpp:262:16: error: ‘using std::__shared_ptr_access<CWorkspace, __gnu_cxx::_S_atomic, false, false>::element_type = class CWorkspace’ {aka ‘class CWorkspace’} has no member named ‘m_bVisible’
  262 |     startedOn->m_bVisible            = true;
      |                ^~~~~~~~~~
make: *** [Makefile:2: all] Error 1
make: uscita dalla directory «/tmp/hyprpm/update/hyprexpo»



✖ Plugin hyprexpo failed to build.
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  4 / 4  Done!                                                                                                                            
✔ Ensuring plugin load state
✔ Plugin load state ensured

alba4k avatar Apr 03 '24 20:04 alba4k

well your output just shows you're on an outdated git

vaxerski avatar Apr 03 '24 20:04 vaxerski

what about this build error?

✔ built hyprbars into hyprbars/hyprbars.so                                                                                                         
 → Building hyprexpo                                                                                                                               
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━  3 / 5  Building plugin(s)[v] shell returned:  -> cd /tmp/hyprpm/new && PKG_CONFIG_PATH="/home/yusuf/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprexpo all
make: Entering directory '/tmp/hyprpm/new'
make: *** hyprexpo: No such file or directory.  Stop.
make: Leaving directory '/tmp/hyprpm/new'


✖ Plugin hyprexpo failed to build. 

Includes the directory not found error

Yusuf-Duran avatar Apr 03 '24 20:04 Yusuf-Duran

this is odd.. Do you perhaps have a /tmp cleaner or something? hyprpm uses /tmp/hyprpm/new to store the source to build while it's doing so.

vaxerski avatar Apr 03 '24 20:04 vaxerski

this is odd.. Do you perhaps have a /tmp cleaner or something? hyprpm uses /tmp/hyprpm/new to store the source to build while it's doing so.

shouldn't be, this is a rather fresh arch install. Is there a way to check if I do?

Yusuf-Duran avatar Apr 03 '24 20:04 Yusuf-Duran

oh wait, I misread the thing.

Uhh yeah hyprexpo won't build cuz you're on tagged. hyprexpo is -git only. (or, well future 0.39)

vaxerski avatar Apr 03 '24 20:04 vaxerski

I tried hyprland-git and barely anything built so I tried hyprland. Lemme try hyprland-git again and see if this changes anything brb

Yusuf-Duran avatar Apr 03 '24 20:04 Yusuf-Duran

oh wait, I misread the thing.

Uhh yeah hyprexpo won't build cuz you're on tagged. hyprexpo is -git only. (or, well future 0.39)

❯ hyprpm add https://github.com/hyprwm/hyprland-plugins.git --verbose
[v] version returned: Hyprland, built from branch main at commit 10146f5ec50caeae2d835f5f6296137e2ac6f243 dirty (core: fix some crash conditions around workspace ptrs in CWindow).
Date: Wed Apr 3 21:42:38 2024
Tag: v0.38.0-18-g10146f5e

flags: (if any)


[v] parsed commit 10146f5ec50caeae2d835f5f6296137e2ac6f243 at branch main

[...]

 → Building hyprexpo                                                                                                                               
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━  3 / 5  Building plugin(s)[v] shell returned:  -> cd /tmp/hyprpm/new && PKG_CONFIG_PATH="/home/yusuf/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprexpo all
make: Entering directory '/tmp/hyprpm/new/hyprexpo'
g++ -shared -fPIC --no-gnu-unique main.cpp overview.cpp -o hyprexpo.so -g `pkg-config --cflags pixman-1 libdrm hyprland` -std=c++2b -Wno-narrowing
overview.cpp: In constructor ‘COverview::COverview(PHLWORKSPACE, bool)’:
overview.cpp:144:37: error: ‘struct SCurrentRenderData’ has no member named ‘blockScreenShader’
  144 |         g_pHyprOpenGL->m_RenderData.blockScreenShader = true;
      |                                     ^~~~~~~~~~~~~~~~~
overview.cpp: In member function ‘void COverview::redrawID(int, bool)’:
overview.cpp:261:33: error: ‘struct SCurrentRenderData’ has no member named ‘blockScreenShader’
  261 |     g_pHyprOpenGL->m_RenderData.blockScreenShader = true;
      |                                 ^~~~~~~~~~~~~~~~~
make: *** [Makefile:2: all] Error 1
make: Leaving directory '/tmp/hyprpm/new/hyprexpo'


✖ Plugin hyprexpo failed to build.    

also about the "it only builds for the newest version", shouldn't hyprpm skip the plugin then if it isn't for the version?

Yusuf-Duran avatar Apr 03 '24 20:04 Yusuf-Duran

it does that. "failed to build" isn't fatal. You can still use those that did.

also about the "it only builds for the newest version"

error indicates you're not on newest. The missing prop the compiler is complaining about is from like ~15 mins ago

vaxerski avatar Apr 03 '24 20:04 vaxerski

Def the error message isn't fatal. Everything else that can build builds, so you can use the plugins that you can. My problem is rather (and prob that of @alerque I think) is that the error messages could be clearer on letting the user know it is not a problem on the code's end but rather on their end (for having a too low version).

Yusuf-Duran avatar Apr 03 '24 20:04 Yusuf-Duran

yea that's fine and I agreed with that, but if it's just UX, then it's something to do in hyprpm, so it doesn't relate to this repo (plugins don't have anything to do with this)

vaxerski avatar Apr 03 '24 20:04 vaxerski

Ok yeah that is valid, should I create an issue at the hyprland repo then?

Yusuf-Duran avatar Apr 03 '24 21:04 Yusuf-Duran

Given the UX issue actually belongs on a different repo I guess we can consider keeping this issue for the build problem.

I've just switch to the hyprland-git package from the AUR on Arch built about an hour ago and am still having the same issue:

$ hyprpm update --verbose
...
Tag: v0.38.0-18-g10146f5e
...
 → Building hyprexpo
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating hyprland-plugins[v] shell returned:  -> cd /tmp/hyprpm/update && PKG_CONFIG_PATH="/home/caleb/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprexpo all
make: Entering directory '/tmp/hyprpm/update/hyprexpo'
g++ -shared -fPIC --no-gnu-unique main.cpp overview.cpp -o hyprexpo.so -g `pkg-config --cflags pixman-1 libdrm hyprland` -std=c++2b -Wno-narrowing
overview.cpp: In constructor ‘COverview::COverview(PHLWORKSPACE, bool)’:
overview.cpp:144:37: error: ‘struct SCurrentRenderData’ has no member named ‘blockScreenShader’
  144 |         g_pHyprOpenGL->m_RenderData.blockScreenShader = true;
      |                                     ^~~~~~~~~~~~~~~~~
overview.cpp: In member function ‘void COverview::redrawID(int, bool)’:
overview.cpp:261:33: error: ‘struct SCurrentRenderData’ has no member named ‘blockScreenShader’
  261 |     g_pHyprOpenGL->m_RenderData.blockScreenShader = true;
      |                                 ^~~~~~~~~~~~~~~~~
make: *** [Makefile:2: all] Error 1
make: Leaving directory '/tmp/hyprpm/update/hyprexpo'



✖ Plugin hyprexpo failed to build.

This is a different error than I was seeing before the update, but still not a success.

alerque avatar Apr 03 '24 21:04 alerque

seems to be the same issue as mine, that is simply because the git package isn't on the newest version yet (the one that is like 1h old). Just wait for an update on the package

Yusuf-Duran avatar Apr 03 '24 21:04 Yusuf-Duran

@Yusuf-Duran I don't think you understand how *-git packages work in the Arch Linux AUR. They build directly from a fresh clone of the upstream repo default branch, so the version is updated whenever you build it, not when the packaging info was last updated.

My version is quite fresh and was built after @vaxerski said I needed a current one, so presumable whatever commits were needed for support would have been included as of then.

alerque avatar Apr 03 '24 21:04 alerque

Okay several issues:

  • Yes the version matters, but since @vaxerski first said it needed to be "today's Git", it has changed again. Now it needs to be a version ever after what was posted at the time that was said. I guess the plugin and compositor commits are ratcheting up on eachother.
  • You can't update the package and rebuild the plugins, it doesn't use the libraries installed on the system it uses it's own vendored copy of what is running on the system. That means you have to restart the running compositor before trying to build plugins.
  • You can't build plugins without the compositor running. A tmux session left open while the Wayland session logged out and back in won't gut it. You have to be in a child process of the currently running compositor to build plugins.

Tag: v0.38.0-21-g36a8ae9b works (to build at least, haven't tried using it) given those other points.

This brings us back to UX. The experience of trying to build plugins is quite opaque and the errors point nowhere useful for any of this. The running sessions vs. downloaded vendored copy of hyprland source code needs to be explained, as does the issue wind needing to be in a running copy, and of course plugins should clearly identify a minimum version and that should produce a different error than any of the above.

alerque avatar Apr 03 '24 21:04 alerque

makes sense. I'll try to do something about the UX tomorrow.

vaxerski avatar Apr 03 '24 22:04 vaxerski

I've added some stuff so that it's like this now: image

worth noting it won't work retroactively, it's available in git now. Is that enough?

Ignore the duplicate bars its me being a bit goof

vaxerski avatar Apr 04 '24 23:04 vaxerski

not working for me

CRAG666 avatar Apr 11 '24 16:04 CRAG666

deleted /usr/include/hyprland and switched to hyprland-git solved it for me just now

CarloCattano avatar Apr 12 '24 14:04 CarloCattano

Build failing for me even in hyprland-git.

Scelester avatar May 11 '24 05:05 Scelester

build failing for me on latest hyprland built from source

hyprland info

$ hyprctl systeminfo
Hyprland, built from branch main at commit b6a7fb9e9125e56bf742f68e0ec46f52d5c34f4c  (layersurface: fix invalid use of std::move).
Date: Sat May 11 15:43:44 2024
Tag: v0.40.0-61-gb6a7fb9e, commits: 4667

flags: (if any)


System Information:
System name: Linux
Node name: socrates
Release: 6.8.9-arch1-2
Version: #1 SMP PREEMPT_DYNAMIC Tue, 07 May 2024 21:35:54 +0000


GPU information: 
26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef) (prog-if 00 [VGA controller])


os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo


plugins:


→ Building hyprexpo                                                                                                                                                                                            
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━  3 / 5  Building plugin(s)[v] shell returned:  -> cd /tmp/hyprpm/simon && PKG_CONFIG_PATH="/home/simon/.local/share/hyprpm/headersRoot/share/pkgconfig" make -C hyprexpo all
make: Entering directory '/tmp/hyprpm/simon/hyprexpo'
g++ -shared -fPIC --no-gnu-unique main.cpp overview.cpp -o hyprexpo.so -g `pkg-config --cflags pixman-1 libdrm hyprland pangocairo libinput libudev wayland-server xkbcommon` -std=c++2b -Wno-narrowing
overview.cpp: In constructor ‘COverview::COverview(PHLWORKSPACE, bool)’:
overview.cpp:26:27: error: cannot convert ‘const CWeakPointer<CMonitor>’ to ‘CMonitor*’ in assignment
   26 |     pMonitor            = PMONITOR;
      |                           ^~~~~~~~
      |                           |
      |                           const CWeakPointer<CMonitor>
overview.cpp:120:38: error: cannot convert ‘const CWeakPointer<CMonitor>’ to ‘CMonitor*’
  120 |         g_pHyprRenderer->beginRender(PMONITOR, fakeDamage, RENDER_MODE_FULL_FAKE, nullptr, &image.fb);
      |                                      ^~~~~~~~
      |                                      |
      |                                      const CWeakPointer<CMonitor>
In file included from overview.cpp:4:
/home/simon/.local/share/hyprpm/headersRoot/include/hyprland/src/render/Renderer.hpp:77:32: note:   initializing argument 1 of ‘bool CHyprRenderer::beginRender(CMonitor*, CRegion&, eRenderMode, wlr_buffer*, CFramebuffer*, bool)’
   77 |     bool beginRender(CMonitor* pMonitor, CRegion& damage, eRenderMode mode = RENDER_MODE_NORMAL, wlr_buffer* buffer = nullptr, CFramebuffer* fb = nullptr, bool simple = false);
      |                      ~~~~~~~~~~^~~~~~~~
overview.cpp:138:46: error: cannot convert ‘const CWeakPointer<CMonitor>’ to ‘CMonitor*’
  138 |             g_pHyprRenderer->renderWorkspace(PMONITOR, PWORKSPACE, &now, monbox);
      |                                              ^~~~~~~~
      |                                              |
      |                                              const CWeakPointer<CMonitor>
/home/simon/.local/share/hyprpm/headersRoot/include/hyprland/src/render/Renderer.hpp:116:46: note:   initializing argument 1 of ‘void CHyprRenderer::renderWorkspace(CMonitor*, PHLWORKSPACE, timespec*, const CBox&)’
  116 |     void           renderWorkspace(CMonitor* pMonitor, PHLWORKSPACE pWorkspace, timespec* now, const CBox& geometry);
      |                                    ~~~~~~~~~~^~~~~~~~
overview.cpp:146:46: error: cannot convert ‘const CWeakPointer<CMonitor>’ to ‘CMonitor*’
  146 |             g_pHyprRenderer->renderWorkspace(PMONITOR, PWORKSPACE, &now, monbox);
      |                                              ^~~~~~~~
      |                                              |
      |                                              const CWeakPointer<CMonitor>
/home/simon/.local/share/hyprpm/headersRoot/include/hyprland/src/render/Renderer.hpp:116:46: note:   initializing argument 1 of ‘void CHyprRenderer::renderWorkspace(CMonitor*, PHLWORKSPACE, timespec*, const CBox&)’
  116 |     void           renderWorkspace(CMonitor* pMonitor, PHLWORKSPACE pWorkspace, timespec* now, const CBox& geometry);
      |                                    ~~~~~~~~~~^~~~~~~~
make: *** [Makefile:2: all] Error 1
make: Leaving directory '/tmp/hyprpm/simon/hyprexpo'


✖ Plugin hyprexpo failed to build.           

Mr-Ples avatar May 11 '24 17:05 Mr-Ples

Build if failing for me too. The versbose command outputs the same thing as @Mr-Ples

Heyian avatar May 12 '24 17:05 Heyian

yes maybe because I havent updated them 2 seconds after a breaking hyprland change. Can we stop the spam? If you want your plugins to build 100% of the time, stick to releases

vaxerski avatar May 13 '24 14:05 vaxerski