%global forgeurl https://github.com/SerenityOS/serenity %global date 20230102 %global commit 65b420f99699ce308b88a15b8144c76a2f682f50 %global shortcommit %(c=%{commit}; echo ${c:0:7}) # GCC consistently OOMs at link stage due to LTO, use clang instead %global toolchain clang Name: serenity Version: 0^%{date}git%{shortcommit} Release: %autorelease Summary: Serenity Operating System License: BSD-2-Clause URL: https://serenityos.org Source: %{forgeurl}/archive/%{commit}/%{name}-%{commit}.tar.gz # Ladybird: install SQLServer binary Patch: https://github.com/SerenityOS/serenity/pull/16784.patch # SerenityOS is x86-64 only by design ExclusiveArch: x86_64 BuildRequires: clang BuildRequires: chrpath BuildRequires: cmake BuildRequires: ninja-build BuildRequires: sed BuildRequires: libglvnd-devel BuildRequires: libxkbcommon-devel BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qttools-devel BuildRequires: qt6-qtwayland-devel %description SerenityOS is a graphical Unix-like operating system for x86-64 computers. %package data Summary: Data files for %{name} BuildArch: noarch %description data This package contains resources and data files for SerenityOS. %package doc Summary: Documentation for %{name} BuildArch: noarch %description doc This package contains additional documentation for SerenityOS. %package -n ladybird Summary: Web browser built on the SerenityOS LibWeb and LibJS engines Requires: %{name}-data = %{version}-%{release} %description -n ladybird Ladybird is a web browser built on the LibWeb and LibJS engines from SerenityOS with a cross-platform GUI in Qt. %package -n lagom Summary: Serenity C++ library, for other Operating Systems %description -n lagom Lagom is the Serenity C++ library, for other Operating Systems. If you want to bring the comfortable Serenity classes with you to another system, look no further. This is basically a "port" of the AK and LibCore libraries to generic *nix systems. %prep %autosetup -n %{name}-%{commit} -p1 # Use absolute path in include to workaround build issue f=LibCompress/BrotliDictionaryData.bin sed -i "s:${f}:%{_builddir}/%{name}-%{commit}/Userland/Libraries/${f}:" \ Userland/Libraries/LibCompress/BrotliDictionary.cpp # Fix paths for resources and utility binaries sed -i 's:LexicalPath(app_dir).parent().append("share"sv).string():DeprecatedString("%{_datadir}/%{name}"):' \ Ladybird/Utilities.cpp sed -i 's:./SQLServer/SQLServer:%{_libexecdir}/ladybird/SQLServer:' \ Ladybird/main.cpp sed -i 's:./WebContent/WebContent:%{_libexecdir}/ladybird/WebContent:' \ Ladybird/WebContentView.cpp %build pushd Ladybird %cmake -GNinja \ -DENABLE_TIME_ZONE_DATABASE_DOWNLOAD=OFF \ -DENABLE_UNICODE_DATABASE_DOWNLOAD=OFF %cmake_build %install pushd Ladybird %cmake_install # Relocate resources and utility binaries mkdir -p %{buildroot}%{_datadir}/%{name} %{buildroot}%{_libexecdir}/ladybird mv %{buildroot}%{_datadir}/res %{buildroot}%{_datadir}/%{name}/ mv %{buildroot}%{_bindir}/{SQLServer,WebContent} \ %{buildroot}%{_libexecdir}/ladybird/ # Remove unneeded development files rm %{buildroot}%{_libdir}/liblagom-*.so rm -r %{buildroot}%{_datadir}/ladybird # Fix rpath chrpath -d %{buildroot}%{_bindir}/ladybird %files data %license LICENSE %{_datadir}/%{name}/ %files doc %license LICENSE %doc README.md CONTRIBUTING.md SECURITY.md Documentation %files -n ladybird %license LICENSE %doc Ladybird/README.md %{_bindir}/ladybird %{_libexecdir}/ladybird/ %files -n lagom %license LICENSE %doc Meta/Lagom/ReadMe.md %{_libdir}/liblagom-*.so.* %changelog %autochangelog