trunkmaster / nextspace

NeXTSTEP-like desktop environment for Linux
https://trunkmaster.github.io
GNU General Public License v3.0
1.9k stars 69 forks source link

Build fails on Fedora 39 #431

Closed dboris closed 7 months ago

dboris commented 7 months ago
./0_build_libdispatch.sh
(...)
Installed:
  clang-17.0.6-2.fc39.x86_64                 clang-libs-17.0.6-2.fc39.x86_64     clang-resource-filesystem-17.0.6-2.fc39.noarch
  cmake-3.27.7-1.fc39.x86_64                 cmake-data-3.27.7-1.fc39.noarch     cmake-filesystem-3.27.7-1.fc39.x86_64
  cmake-rpm-macros-3.27.7-1.fc39.noarch      jsoncpp-1.9.5-5.fc39.x86_64         libbsd-0.11.7-5.fc39.x86_64
  libbsd-devel-0.11.7-5.fc39.x86_64          libmd-1.1.0-2.fc39.x86_64           libmd-devel-1.1.0-2.fc39.x86_64
  libuv-1:1.48.0-1.fc39.x86_64               llvm-17.0.6-3.fc39.x86_64           rhash-1.4.3-3.fc39.x86_64
  vim-filesystem-2:9.1.181-1.fc39.noarch
(...)
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:12 (project):
  No CMAKE_C_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
  the compiler, or to the compiler name if it is in the PATH.

CMake Error at CMakeLists.txt:12 (project):
  No CMAKE_CXX_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
  to the compiler, or to the compiler name if it is in the PATH.
trunkmaster commented 7 months ago

Show me your which clang output.

dboris commented 7 months ago
[boris@fedora ~]$ which clang
/usr/lib64/ccache/clang
[boris@fedora ~]$ clang -v
clang version 17.0.6 (Fedora 17.0.6-2.fc39)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/13
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/13
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
trunkmaster commented 7 months ago

It should work then.

dboris commented 7 months ago

I tried re-running the installer. This time it proceeded a bit further:

(...)
-- Build files have been written to: /root/rpmbuild/BUILD/swift-corelibs-libdispatch-swift-5.4.2-RELEASE/_build
+ make -j4
[  3%] Generating /root/rpmbuild/BUILD/swift-corelibs-libdispatch-swift-5.4.2-RELEASE/dispatch/module.modulemap, /root/rpmbuild/BUILD/swift-corelibs-libdispatch-swift-5.4.2-RELEASE/private/module.modulemap
[  6%] Building C object src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/runtime.c.o
[ 10%] Building C object src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/data.c.o
[ 10%] Built target module-maps
clang: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument]
make[2]: *** [src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/build.make:76: src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/data.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
clang: error: optimization flag '-ffat-lto-objects' is not supported [-Werror,-Wignored-optimization-argument]
make[2]: *** [src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/build.make:90: src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/runtime.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:259: src/BlocksRuntime/CMakeFiles/BlocksRuntime.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.L6I0Sf (%build)

RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.L6I0Sf (%build)
================================================================================
 Building of Grand Central Dispatch library RPM FAILED!
================================================================================
trunkmaster commented 7 months ago

I guess I understand the problem. Please run build scripts from Packaging/Sources directory. Packaging/RedHat is not up-to-date yet.

dboris commented 7 months ago

It doesn't go very far:

[root@fedora ~]# ./nextspace/Packaging/Sources/0_build_libdispatch.sh 
./nextspace/Packaging/Sources/0_build_libdispatch.sh: line 3: ./versions.inc.sh: No such file or directory
trunkmaster commented 7 months ago

[root@fedora ~]# cd ./nextspace/Packaging/Sources [root@fedora ~]# ./0_build_libdispatch.sh Also notice that you don't have to run scripts as root user.

dboris commented 7 months ago

Step 5 had some issues:

Making install for resource_set base-resources...
Making install in Tests ...
gmake[1]: Nothing to be done for 'install'.
Unit gdomap.service could not be found.
Created symlink /etc/systemd/system/gdomap.service → /usr/NextSpace/lib/systemd/gdomap.service.
Created symlink /etc/systemd/system/multi-user.target.wants/gdomap.service → /usr/NextSpace/lib/systemd/gdomap.service.
Unit gdnc.service could not be found.
Created symlink /etc/systemd/system/gdnc.service → /usr/NextSpace/lib/systemd/gdnc.service.
Created symlink /etc/systemd/system/multi-user.target.wants/gdnc.service → /usr/NextSpace/lib/systemd/gdnc.service.
Created symlink /etc/systemd/system/gdnc-local.service → /usr/NextSpace/lib/systemd/gdnc-local.service.
Created symlink /etc/systemd/system/multi-user.target.wants/gdnc-local.service → /usr/NextSpace/lib/systemd/gdnc-local.service.
Job for gdomap.service failed because the control process exited with error code.
See "systemctl status gdomap.service" and "journalctl -xeu gdomap.service" for details.

Then at step 6:

(...)
NSBitmapImageRep+GIF.m:500:12: error: call to undeclared function 'GifQuantizeBuffer'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  500 |   status = GifQuantizeBuffer(width, height, &colorMapSize,
gmake[4]: *** [/Developer/Makefiles/rules.make:521: obj/libgnustep-gui.obj/NSBitmapImageRep+GIF.m.o] Error 1
gmake[3]: *** [/Developer/Makefiles/Instance/library.make:286: internal-library-all_] Error 2
gmake[2]: *** [/Developer/Makefiles/Master/rules.make:297: libgnustep-gui.all.library.variables] Error 2
gmake[1]: *** [/Developer/Makefiles/Master/library.make:37: internal-all] Error 2
gmake: *** [/Developer/Makefiles/Master/serial-subdirectories.make:53: internal-all] Error 2
trunkmaster commented 7 months ago

Step 6 is known problem, see issue #425.

dboris commented 7 months ago

Last stretch, step 9:

Making all for bundle Login...
 Creating Login.preferences/....
 Compiling file Login.m ...
Login.m:44:9: fatal error: 'DesktopKit/NXTAlert.h' file not found
   44 | #import <DesktopKit/NXTAlert.h>
      |         ^~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
gmake[5]: *** [/Developer/Makefiles/rules.make:521: obj/Login.obj/Login.m.o] Error 1
gmake[4]: *** [/Developer/Makefiles/Instance/bundle.make:193: internal-bundle-run-compile-submake] Error 2
gmake[3]: *** [/Developer/Makefiles/Master/rules.make:297: Login.all.bundle.variables] Error 2
gmake[2]: *** [/Developer/Makefiles/Master/bundle.make:37: internal-all] Error 2
gmake[1]: *** [/Developer/Makefiles/Master/serial-subdirectories.make:53: internal-all] Error 2
gmake: *** [/Developer/Makefiles/Master/serial-subdirectories.make:53: internal-all] Error 2
trunkmaster commented 7 months ago

Have you missed step 8? Check if /usr/NextSpace/Frameworks contains DesktopKit.framework.

dboris commented 7 months ago

I haven't missed step 8. When I re-run it, the output is this:

Dependencies resolved.
Nothing to do.
Complete!
Last metadata expiration check: 0:00:08 ago on Fri 05 Apr 2024 03:29:42 PM.
Package bash-5.2.26-1.fc39.x86_64 is already installed.
Package dbus-libs-1:1.14.10-1.fc39.x86_64 is already installed.
No match for argument: >=
No match for argument: 1.6.12
Package file-libs-5.44-5.fc39.x86_64 is already installed.
No match for argument: 5.11
Package glib2-2.78.3-1.fc39.x86_64 is already installed.
No match for argument: 2.42.2
Package libXcursor-1.2.1-4.fc39.x86_64 is already installed.
No match for argument: 1.1.14
Package libXrandr-1.5.4-1.fc39.x86_64 is already installed.
No match for argument: 1.4.2
Package libudisks2-2.10.1-1.fc39.x86_64 is already installed.
No match for argument: 2.1.2
Package libxkbfile-1.1.1-3.fc39.x86_64 is already installed.
No match for argument: 1.0.9
No match for argument: 10.0
Package pulseaudio-libs-16.1-5.fc39.x86_64 is already installed.
Package udisks2-2.10.1-1.fc39.x86_64 is already installed.
Package upower-1.90.2-3.fc39.x86_64 is already installed.
No match for argument: 0.99.2
Error: Unable to find a match: >= 1.6.12 5.11 2.42.2 1.1.14 1.4.2 2.1.2 1.0.9 10.0 0.99.2

/usr/NextSpace/Frameworks contains only CoreFoundation.framework.

trunkmaster commented 7 months ago

Frameworks build ends with error. Thanks for information. It seems spec file format has been changed in Fedora 39. I need to upgrade Fedora and investigate the problem.

trunkmaster commented 7 months ago

Fixed, thanks. Check out latest sources and rerun step 8 build script.

dboris commented 7 months ago

Still no go:

Error: 
 Problem: problem with installed package pipewire-pulseaudio-1.0.4-2.fc39.x86_64
  - package pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from @System conflicts with pulseaudio provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - package pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from @System conflicts with pulseaudio-daemon provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - package pulseaudio-16.1-5.fc39.x86_64 from fedora conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from @System
  - package pipewire-pulseaudio-0.3.80-1.fc39.x86_64 from fedora conflicts with pulseaudio provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - package pipewire-pulseaudio-0.3.80-1.fc39.x86_64 from fedora conflicts with pulseaudio-daemon provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - package pulseaudio-16.1-5.fc39.x86_64 from fedora conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-0.3.80-1.fc39.x86_64 from fedora
  - package pulseaudio-16.1-5.fc39.x86_64 from fedora conflicts with pulseaudio-daemon provided by pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from updates
  - package pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from updates conflicts with pulseaudio provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - package pipewire-pulseaudio-1.0.4-2.fc39.x86_64 from updates conflicts with pulseaudio-daemon provided by pulseaudio-16.1-5.fc39.x86_64 from fedora
  - conflicting requests
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)
trunkmaster commented 7 months ago

SoundKit is not PipeWire compatible. Please remove all pipewire packages (`dnf erase pipewire\`) and rerun build script.

dboris commented 7 months ago

The build was successful, but when I log in after a reboot, I'm greeted with an error window "Session finished with error" and two buttons: Cleanup and Restart. Both buttons kick me back to the login window.

trunkmaster commented 7 months ago

It may be SELinux related. See issue #427.

dboris commented 7 months ago

That was it. Thank you very much. I can play with it now.