Makrennel / hyprland-void

void linux hyprland templates for building with xbps-src
Other
114 stars 11 forks source link

hyprpm update not working #29

Closed tommyalatalo closed 2 months ago

tommyalatalo commented 5 months ago

I'm trying to use hyprpm for the first time and running hyprpm update seems to not be working. Not sure if this is a packaging issue and can be fixed in the templates, or if this is something that should be handled by the user locally?

Wondering if others have this running with hyprland on void.

❯ hyprpm update --verbose
[v] version returned: Hyprland, built from branch HEAD at commit 03ebbe18ed8517ee22591eac82cd54322f42cb7d  (props: bump ver to 0.34.0).
Date: Mon Jan 1 12:03:15 2024
Tag: v0.34.0

flags: (if any)

[v] parsed commit 03ebbe18ed8517ee22591eac82cd54322f42cb7d at branch HEAD

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
✔ cloned
[v] git returned: Your branch is up to date with 'origin/main'.
HEAD is now at 03ebbe18 props: bump ver to 0.34.0

✔ checked out to running ver
! configuring Hyprland
[v] setting PREFIX for cmake to /home/user/.local/share/hyprpm/headersRoot
[v] cmake returned: sh: 1: cmake: not found

[v] meson returned: sh: 1: meson: not found

✔ configured Hyprland
[v] installation will run: sed -i -e "s#PREFIX = /usr/local#PREFIX = /home/user/.local/share/hyprpm/headersRoot#" /tmp/hyprpm/hyprland/Makefile && cd /tmp/hyprpm/hyprland && make installheaders
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━  4 / 5  Installing sources[v] installer returned: -en You need to run make all first.

make: *** [Makefile:75: installheaders] Error 1

✖ failed to install headers with error code 2
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  5 / 5  Failed

✖ Headers missing. Please run hyprpm update to fix those.

Even if I install cmake and meson that seem to be missing above I still get the same error about installing headers:

❯ hyprpm update --verbose
[v] version returned: Hyprland, built from branch HEAD at commit 03ebbe18ed8517ee22591eac82cd54322f42cb7d  (props: bump ver to 0.34.0).
Date: Mon Jan 1 12:03:15 2024
Tag: v0.34.0

flags: (if any)

[v] parsed commit 03ebbe18ed8517ee22591eac82cd54322f42cb7d at branch HEAD

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
✔ cloned
[v] git returned: Your branch is up to date with 'origin/main'.
HEAD is now at 03ebbe18 props: bump ver to 0.34.0

✔ checked out to running ver
! configuring Hyprland
[v] setting PREFIX for cmake to /home/user/.local/share/hyprpm/headersRoot
[v] cmake returned: Not searching for unused variables given on the command line.
-- The C compiler identification is GNU 13.2.0
-- The CXX compiler identification is GNU 13.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Gathering git info
-- Found Python3: /usr/bin/python3.12 (found version "3.12.1") found components: Interpreter
Building itab.c/itab.h...
-- Setting up wlroots
-- Found WaylandScanner at WaylandScanner-NOTFOUND
-- Found wayland-protocols at
-- Configuring Hyprland in Release with CMake
-- Checking deps...
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)
Call Stack (most recent call first):
  /usr/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.27/Modules/FindPkgConfig.cmake:99 (find_package_handle_standard_args)
  CMakeLists.txt:102 (find_package)

-- Configuring incomplete, errors occurred!

[v] meson returned: The Meson build system
Version: 1.3.1
Source dir: /tmp/hyprpm/hyprland/subprojects/wlroots
Build dir: /tmp/hyprpm/hyprland/subprojects/wlroots/build
Build type: native build
Project name: wlroots
Project version: 0.18.0-dev
C compiler for the host machine: cc (gcc 13.2.0 "cc (GCC) 13.2.0")
C linker for the host machine: cc ld.bfd 2.41
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -Wundef: YES
Compiler for C supports arguments -Wlogical-op: YES
Compiler for C supports arguments -Wmissing-include-dirs: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Wpointer-arith: YES
Compiler for C supports arguments -Winit-self: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Wimplicit-fallthrough=2: YES
Compiler for C supports arguments -Wendif-labels: YES
Compiler for C supports arguments -Wstrict-aliasing=2: YES
Compiler for C supports arguments -Woverflow: YES
Compiler for C supports arguments -Wmissing-prototypes: YES
Compiler for C supports arguments -Walloca: YES
Compiler for C supports arguments -Wno-missing-braces: YES
Compiler for C supports arguments -Wno-missing-field-initializers: YES
Compiler for C supports arguments -Wno-unused-parameter: YES
Compiler for C supports arguments -fmacro-prefix-map=/prefix/to/hide=: YES
Did not find pkg-config by name 'pkg-config'
Found pkg-config: NO
Found CMake: /usr/bin/cmake (3.27.6)
Run-time dependency wayland-server found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency wayland-server

meson.build:105:17: ERROR: Neither a subproject directory nor a wayland.wrap file was found.

A full log can be found at /tmp/hyprpm/hyprland/subprojects/wlroots/build/meson-logs/meson-log.txt

✔ configured Hyprland
[v] installation will run: sed -i -e "s#PREFIX = /usr/local#PREFIX = /home/user/.local/share/hyprpm/headersRoot#" /tmp/hyprpm/hyprland/Makefile && cd /tmp/hyprpm/hyprland && make installheaders
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━  4 / 5  Installing sources[v] installer returned: mkdir -p /home/user/.local/share/hyprpm/headersRoot/include/hyprland
mkdir -p /home/user/.local/share/hyprpm/headersRoot/include/hyprland/protocols
mkdir -p /home/user/.local/share/hyprpm/headersRoot/include/hyprland/wlroots
mkdir -p /home/user/.local/share/hyprpm/headersRoot/share/pkgconfig
find src -name '*.h*' -print0 | cpio --quiet -0dump /home/user/.local/share/hyprpm/headersRoot/include/hyprland
cd subprojects/wlroots/include && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/user/.local/share/hyprpm/headersRoot/include/hyprland/wlroots && cd ../../..
cd subprojects/wlroots/build/include && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/user/.local/share/hyprpm/headersRoot/include/hyprland/wlroots && cd ../../../..
/bin/sh: 1: cd: can't cd to subprojects/wlroots/build/include
make: *** [Makefile:83: installheaders] Error 2

✖ failed to install headers with error code 2
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  5 / 5  Failed

✖ Headers missing. Please run hyprpm update to fix those.
Makrennel commented 5 months ago

Yeah I'm aware; been talking about this with someone else on the Hyprland discord. I'm going to make a hyprland-devel subpackage which automatically installs dependencies for this, it's just that Void splits the headers into separate "-devel" packages and the build dependencies are not installed onto your host system (this is also a problem on some other distros).

You can manually deal with it for now by installing everything under makedepends and hostmakedepends in the template, and using the -v flag when adding plugins will give you more information as to what files exactly are missing – some things may need to be manually symlinked to /usr/include/ from, for example, /usr/include/wayland/ for it to pick them up even after the -devel packages are installed (not sure, that's just been the case for me on OpenSUSE).

Also, libdrm-devel will need to be installed using void-packages with this repo applied because as with everything in void the upstream void-packages version of libdrm is out of date.

Makrennel commented 5 months ago

This should be fixed in #31 using hyprland-devel although I've made a lot of dependency changes so I want to test it on a clean install of void before merging to make sure all the necessary dependencies are there, and I haven't had the chance as the 3D acceleration on my VMs isn't working.

Makrennel commented 4 months ago

So I have gotten it most of the way there with hyprland-devel in 0.36.0 – just make and gcc have to be manually installed. That said, there still appears to be some issue and I'm not sure what's causing it. Maybe because hyprpm update only builds using make all which builds with systemd support while the template builds with the "no systemd" flag specified. I really can't say for sure, but I do know that (at least on glibc which I've tested it on) Hyprland with make all recognizes void linux as having systemd for whatever reason???

Makrennel commented 4 months ago

Hyprland with make all recognizes void linux as having systemd for whatever reason???

On further inspection this appears to be due to libelogind, which is a dependency of libseat-devel, which Hyprland depends on. Basically the NO_SYSTEMD flag is useless.

Still no clue why hyprpm fails. I tried building it without the NO_SYSTEMD flag to see if there was maybe a slight difference, but nothing changed. I would say this does not seem to be an issue that is isolated to void – I've found the only way to reliably get plugins working on OpenSUSE as well is to build from source rather than use the distro packages.

I'm getting to the part where it finishes installing headers to XDG_DATA_HOME/hyprpm/headersRoot and changes the mode to 755, but then it just throws up failed to install headers with error code 2

tommyalatalo commented 4 months ago

Hyprland with make all recognizes void linux as having systemd for whatever reason???

On further inspection this appears to be due to libelogind, which is a dependency of libseat-devel, which Hyprland depends on. Basically the NO_SYSTEMD flag is useless.

Still no clue why hyprpm fails. I tried building it without the NO_SYSTEMD flag to see if there was maybe a slight difference, but nothing changed. I would say this does not seem to be an issue that is isolated to void – I've found the only way to reliably get plugins working on OpenSUSE as well is to build from source rather than use the distro packages.

I'm getting to the part where it finishes installing headers to XDG_DATA_HOME/hyprpm/headersRoot and changes the mode to 755, but then it just throws up failed to install headers with error code 2

Have you gotten any input on this from the hyprland/hyprpm devs, specifically regarding the manual build differences vs distro packages?

Makrennel commented 4 months ago

Have you gotten any input on this from the hyprland/hyprpm devs, specifically regarding the manual build differences vs distro packages?

Haven't asked yet. Will do when I have the time after looking into it a bit more.

rickalex21 commented 4 months ago

I'm getting the same error, I can't install any plugins.

Is there a temp workaround we can try? Like boot into arch install hyprland and copy the header files in to /usr/local/include? Or is there somewhere I can copy the header files?

Makrennel commented 2 months ago

I've changed pkg-config to pkgconf and added gcc and make. Hopefully this fixes it? At least it seems to have done so on my virtual machine.