hyprwm / Hypr

Hypr is a tiling window manager written in modern C++.
BSD 3-Clause "New" or "Revised" License
1.05k stars 32 forks source link

Hypr fails to compile on 32-bit Alpine Linux 3.18 #117

Open hello-smile6 opened 12 months ago

hello-smile6 commented 12 months ago

Hypr cannot be compiled on 32-bit Alpine Linux.

Steps to reproduce:

  1. Try to compile Hypr on the latest 32-bit version of Alpine.

Expected behavior I expected Hypr to compile and run normally.

Screenshots N/A

Anything else? No

Log: https://termbin.com/ybuu

Coredump: N/A (never got that far)

bluelhf commented 12 months ago

Could you try the following:

  1. Navigate to the build directory created by the failed compilation.
  2. Run the command that failed manually:

    /usr/bin/g++  -isystem /usr/include/gtkmm-3.0 -isystem /usr/lib/gtkmm-3.0/include -isystem /usr/include/atkmm-1.6 -isystem /usr/lib/atkmm-1.6/include -isystem /usr/include/gtk-3.0/unix-print -isystem /usr/include/gdkmm-3.0 -isystem /usr/lib/gdkmm-3.0/include -isystem /usr/include/gtk-3.0 -isystem /usr/include/pango-1.0 -isystem /usr/include/sigc++-2.0 -isystem /usr/lib/sigc++-2.0/include -isystem /usr/include/pangomm-1.4 -isystem /usr/lib/pangomm-1.4/include -isystem /usr/include/giomm-2.4 -isystem /usr/lib/giomm-2.4/include -isystem /usr/include/glibmm-2.4 -isystem /usr/lib/glibmm-2.4/include -isystem /usr/include/cairomm-1.0 -isystem /usr/lib/cairomm-1.0/include -isystem /usr/include/cairo -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/dbus-1.0/include -isystem /usr/include/atk-1.0 -isystem /usr/include/harfbuzz -isystem /usr/include/freetype2 -isystem /usr/include/glib-2.0 -isystem /usr/lib/glib-2.0/include -isystem /usr/include/at-spi2-atk/2.0 -isystem /usr/include/webp -isystem /usr/include/blkid -isystem /usr/include/at-spi-2.0 -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/libmount -isystem /usr/include/libdrm -isystem /usr/include/pixman-1 -isystem /usr/include/fribidi -isystem /usr/include/libpng16 -std=c++17 -Wall -Wextra -pthread -MD -MT CMakeFiles/Hypr.dir/src/events/events.cpp.o -MF CMakeFiles/Hypr.dir/src/events/events.cpp.o.d -o CMakeFiles/Hypr.dir/src/events/events.cpp.o -c /root/hypr/src/events/events.cpp
  3. Send the errors here
nekopsykose commented 11 months ago

the fix is

-     xcb_atom_t TYPEATOM = NULL;
+     xcb_atom_t TYPEATOM = 0;

the NULL is broken by https://git.musl-libc.org/cgit/musl/commit/?id=98e688a9da5e7b2925dda17a2d6820dddf1fb287 from musl 1.2.3 which defines NULL as nullptr for c++11 (valid by c++ language spec), but that can't be asigned to a non-pointer type. since before it was just '0L', the 0 is equivalent.