aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-07-17 18:11:02 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-07-17 22:08:15 +0300
commite98d1ec5a7d2de0b5ba901e56a3e810e37fdcdec (patch)
tree8c0d0c9335a93fa1e998f2b4bbf18378d24bb3bf
parent3ace97660fde7fe1f0cc07a3925d1114af9a9c2f (diff)
downloadniri-e98d1ec5a7d2de0b5ba901e56a3e810e37fdcdec.tar.gz
niri-e98d1ec5a7d2de0b5ba901e56a3e810e37fdcdec.tar.bz2
niri-e98d1ec5a7d2de0b5ba901e56a3e810e37fdcdec.zip
Add an rpkg spec template
-rw-r--r--niri.spec.rpkg146
1 files changed, 146 insertions, 0 deletions
diff --git a/niri.spec.rpkg b/niri.spec.rpkg
new file mode 100644
index 00000000..f40e7594
--- /dev/null
+++ b/niri.spec.rpkg
@@ -0,0 +1,146 @@
+%bcond_without check
+
+%global cargo_install_lib 0
+
+# We want panic backtraces to work without installing the debuginfo package,
+# so we leave the debuginfo in the main binary.
+%global debug_package %{nil}
+%global __strip /bin/true
+
+# To reduce the file size, do some convincing of rust-srpm-macros
+# to leave alone the chosen debug settings from Cargo.toml.
+%global rustflags_debuginfo please-remove-me
+%global build_rustflags %{shrink:
+ -Copt-level=%rustflags_opt_level
+ -Ccodegen-units=%rustflags_codegen_units
+ -Cstrip=none
+ %{expr:0%{?_include_frame_pointers} && ("%{_arch}" != "ppc64le" && "%{_arch}" != "s390x" && "%{_arch}" != "i386") ? "-Cforce-frame-pointers=yes" : ""}
+ -Clink-arg=-Wl,-z,relro
+ -Clink-arg=-Wl,-z,now
+ %[0%{?_package_note_status} ? "-Clink-arg=%_package_note_flags" : ""]
+ --cap-lints=warn
+}
+
+# Convince rust-srpm-macros to use Cargo.lock with the Smithay commit.
+%global __cargo_common_opts %{?_smp_mflags} -Z avoid-dev-deps --locked
+
+%global version {{{ git_dir_version }}}
+
+Name: niri
+Version: %{version}
+Release: 1%{?dist}
+Summary: Scrollable-tiling Wayland compositor
+
+SourceLicense: GPL-3.0-or-later
+
+# (MIT OR Apache-2.0) AND BSD-3-Clause
+# 0BSD OR MIT OR Apache-2.0
+# Apache-2.0
+# Apache-2.0 OR BSL-1.0
+# Apache-2.0 OR MIT
+# Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT
+# BSD-2-Clause
+# BSD-2-Clause OR Apache-2.0 OR MIT
+# BSD-3-Clause
+# BSD-3-Clause OR MIT OR Apache-2.0
+# GPL-3.0-or-later
+# ISC
+# MIT
+# MIT OR Apache-2.0
+# MIT OR Apache-2.0 OR Zlib
+# MIT OR Zlib OR Apache-2.0
+# MPL-2.0
+# Unlicense OR MIT
+# Zlib OR Apache-2.0 OR MIT
+License: ((MIT OR Apache-2.0) AND BSD-3-Clause) AND (0BSD OR MIT OR Apache-2.0) AND (Apache-2.0) AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND (BSD-2-Clause) AND (BSD-2-Clause OR Apache-2.0 OR MIT) AND (BSD-3-Clause) AND (BSD-3-Clause OR MIT OR Apache-2.0) AND (GPL-3.0-or-later) AND (ISC) AND (MIT) AND (MIT OR Apache-2.0) AND (MIT OR Apache-2.0 OR Zlib) AND (MIT OR Zlib OR Apache-2.0) AND (MPL-2.0) AND (Unlicense OR MIT) AND (Zlib OR Apache-2.0 OR MIT)
+# LICENSE.dependencies contains a full license breakdown
+
+URL: https://github.com/YaLTeR/niri
+VCS: {{{ git_dir_vcs }}}
+Source: {{{ git_dir_pack }}}
+
+BuildRequires: cargo-rpm-macros >= 26
+BuildRequires: pkgconfig(udev)
+BuildRequires: pkgconfig(gbm)
+BuildRequires: pkgconfig(xkbcommon)
+BuildRequires: wayland-devel
+BuildRequires: pkgconfig(libinput)
+BuildRequires: pkgconfig(dbus-1)
+BuildRequires: pkgconfig(systemd)
+BuildRequires: pkgconfig(libseat)
+BuildRequires: pipewire-devel
+BuildRequires: pango-devel
+BuildRequires: cairo-gobject-devel
+# Needed for pipewire-rs
+BuildRequires: clang
+
+Requires: mesa-dri-drivers
+
+# Portal implementations used by niri
+Recommends: xdg-desktop-portal-gtk
+Recommends: xdg-desktop-portal-gnome
+Recommends: gnome-keyring
+
+# Suggested utilities, bound in the default config
+Recommends: alacritty
+Recommends: fuzzel
+Recommends: swaylock
+# Suggested utilities
+Recommends: swaybg
+Recommends: mako
+Recommends: swayidle
+
+%description
+A scrollable-tiling Wayland compositor.
+
+Windows are arranged in columns on an infinite strip going to the right.
+Opening a new window never causes existing windows to resize.
+
+%prep
+{{{ git_dir_setup_macro }}}
+
+# Make the version log message look nicer: since we're building not from niri's git repository,
+# the git version macro will show its fallback string.
+sed -i 's/"unknown commit"/"%{version}"/' src/utils/mod.rs
+
+%cargo_prep -N
+
+# We're doing an online build.
+sed -i 's/^offline = true$//' .cargo/config.toml
+
+# Final step in leaving alone our debug settings.
+sed -i 's/.*please-remove-me$//' .cargo/config.toml
+
+%build
+%cargo_build
+
+%install
+%cargo_install
+
+install -Dm755 -t %{buildroot}%{_bindir} ./resources/niri-session
+install -Dm644 -t %{buildroot}%{_datadir}/wayland-sessions ./resources/niri.desktop
+install -Dm644 -t %{buildroot}%{_datadir}/xdg-desktop-portal ./resources/niri-portals.conf
+install -Dm644 -t %{buildroot}%{_userunitdir} ./resources/niri.service
+install -Dm644 -t %{buildroot}%{_userunitdir} ./resources/niri-shutdown.target
+
+%if %{with check}
+%check
+%cargo_test -- --workspace --exclude niri-visual-tests
+%endif
+
+%files
+%license LICENSE
+%doc README.md
+%doc resources/default-config.kdl
+%doc wiki
+%{_bindir}/niri
+%{_bindir}/niri-session
+%{_datadir}/wayland-sessions/niri.desktop
+%dir %{_datadir}/xdg-desktop-portal
+%{_datadir}/xdg-desktop-portal/niri-portals.conf
+%{_userunitdir}/niri.service
+%{_userunitdir}/niri-shutdown.target
+
+%changelog
+{{{ git_dir_changelog }}}
+