Update to version 0.42.0
depends on #1192543 OBS-URL: https://build.opensuse.org/package/show/X11:Wayland/hyprland?expand=0&rev=87
This commit is contained in:
commit
ed10ff1f32
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
18
_service
Normal file
18
_service
Normal file
@ -0,0 +1,18 @@
|
||||
<!-- vim: set ft=xml ts=4 sw=4 noet: -->
|
||||
<services>
|
||||
<service name="obs_scm" mode="manual">
|
||||
<param name="url">https://github.com/hyprwm/Hyprland.git</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="filename">hyprland</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
<param name="revision">@PARENT_TAG@</param>
|
||||
<param name="submodule">enable</param>
|
||||
</service>
|
||||
<service name="tar" mode="manual" />
|
||||
<service name="recompress" mode="manual">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">xz</param>
|
||||
</service>
|
||||
<service name="set_version" mode="manual" />
|
||||
</services>
|
3
hyprland-0.41.2.tar.xz
Normal file
3
hyprland-0.41.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cbf31acef7031076888e8b0891cbcf6093c6a08f9399735aecbbdd45ee3bb0ee
|
||||
size 51587912
|
3
hyprland-0.42.0.tar.xz
Normal file
3
hyprland-0.42.0.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2ef6a30f5a68cea1171dd69e8bbe84a773c6a83b5d70e101c8318320a758b003
|
||||
size 51160524
|
3939
hyprland.changes
Normal file
3939
hyprland.changes
Normal file
File diff suppressed because it is too large
Load Diff
2
hyprland.rpmlintrc
Normal file
2
hyprland.rpmlintrc
Normal file
@ -0,0 +1,2 @@
|
||||
# not a comment
|
||||
addFilter("macro-in-comment")
|
210
hyprland.spec
Normal file
210
hyprland.spec
Normal file
@ -0,0 +1,210 @@
|
||||
#
|
||||
# spec file for package hyprland
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
# Copyright (c) 2022-24 Florian "sp1rit" <packaging@sp1rit.anonaddy.me>
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%bcond_without devel
|
||||
|
||||
%define shortname hypr
|
||||
|
||||
Name: hyprland
|
||||
Version: 0.42.0
|
||||
Release: 0
|
||||
Summary: Dynamic tiling Wayland compositor
|
||||
License: BSD-3-Clause
|
||||
URL: https://hyprland.org/
|
||||
Source0: %{name}-%{version}.tar.xz
|
||||
Source99: %{name}.rpmlintrc
|
||||
Patch100: opensuse-hyprpm-use-hyprland-devel-subpkg.patch
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc-c++ >= 11
|
||||
BuildRequires: git
|
||||
BuildRequires: glslang-devel
|
||||
BuildRequires: meson
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(aquamarine)
|
||||
BuildRequires: pkgconfig(cairo)
|
||||
BuildRequires: pkgconfig(egl)
|
||||
BuildRequires: pkgconfig(gbm) >= 17.1.0
|
||||
BuildRequires: pkgconfig(gl)
|
||||
BuildRequires: pkgconfig(glesv2)
|
||||
BuildRequires: pkgconfig(hyprcursor) >= 0.1.9
|
||||
BuildRequires: pkgconfig(hyprlang) >= 0.3.2
|
||||
BuildRequires: pkgconfig(hyprutils) >= 0.2.1
|
||||
BuildRequires: pkgconfig(hyprwayland-scanner) >= 0.3.8
|
||||
BuildRequires: pkgconfig(libdrm) >= 2.4.118
|
||||
BuildRequires: pkgconfig(libinput) >= 1.14.0
|
||||
BuildRequires: pkgconfig(libudev)
|
||||
BuildRequires: pkgconfig(pango)
|
||||
BuildRequires: pkgconfig(pangocairo)
|
||||
BuildRequires: pkgconfig(pixman-1) >= 0.42.0
|
||||
BuildRequires: pkgconfig(tomlplusplus)
|
||||
BuildRequires: pkgconfig(uuid)
|
||||
BuildRequires: pkgconfig(vulkan) >= 1.2.182
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
BuildRequires: pkgconfig(wayland-protocols) >= 1.26
|
||||
BuildRequires: pkgconfig(wayland-scanner)
|
||||
BuildRequires: pkgconfig(wayland-server) >= 1.22
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(xcb-icccm)
|
||||
BuildRequires: pkgconfig(xcb-renderutil)
|
||||
BuildRequires: pkgconfig(xcursor)
|
||||
BuildRequires: pkgconfig(xkbcommon)
|
||||
BuildRequires: pkgconfig(xwayland)
|
||||
%if 0%{?suse_version}
|
||||
BuildRequires: Mesa-libGLESv3-devel
|
||||
%bcond_without xcb_errors
|
||||
%else
|
||||
%bcond_with xcb_errors
|
||||
%endif
|
||||
%if %{with xcb_errors}
|
||||
BuildRequires: pkgconfig(xcb-errors)
|
||||
%endif
|
||||
Recommends: %{name}-wallpapers
|
||||
%if %{with devel}
|
||||
Suggests: %{name}-devel
|
||||
%endif
|
||||
|
||||
%description
|
||||
Hyprland is a dynamic tiling Wayland compositor based on wlroots
|
||||
that doesn't sacrifice on its looks.
|
||||
|
||||
It supports multiple layouts, fancy effects, has a very flexible IPC
|
||||
model allowing for a lot of customization, and more.
|
||||
|
||||
%package wallpapers
|
||||
Summary: Hyprland wallpapers
|
||||
BuildArch: noarch
|
||||
|
||||
%description wallpapers
|
||||
Additional wallpapers for hyprland.
|
||||
|
||||
%if %{with devel}
|
||||
%package devel
|
||||
Summary: Files required to build Hyprland plugins
|
||||
Requires: %{name}
|
||||
BuildArch: noarch
|
||||
|
||||
%description devel
|
||||
This package contains the neccessary files that are required to
|
||||
build plugins for hyprland.
|
||||
%endif
|
||||
|
||||
%package bash-completion
|
||||
Summary: Bash Completion for %{name}
|
||||
Group: System/Shells
|
||||
Requires: %{name}
|
||||
Requires: awk
|
||||
Requires: bash-completion
|
||||
Supplements: (%{name} and bash-completion)
|
||||
BuildArch: noarch
|
||||
|
||||
%description bash-completion
|
||||
The official bash completion script for %{name}.
|
||||
|
||||
%package fish-completion
|
||||
Summary: Fish Completion for %{name}
|
||||
Group: System/Shells
|
||||
Requires: %{name}
|
||||
Requires: awk
|
||||
Requires: fish
|
||||
Supplements: (%{name} and fish)
|
||||
BuildArch: noarch
|
||||
|
||||
%description fish-completion
|
||||
The official fish completion script for %{name}.
|
||||
|
||||
%package zsh-completion
|
||||
Summary: ZSH Completion for %{name}
|
||||
Group: System/Shells
|
||||
Requires: %{name}
|
||||
Requires: awk
|
||||
Requires: zsh
|
||||
Supplements: (%{name} and zsh)
|
||||
BuildArch: noarch
|
||||
|
||||
%description zsh-completion
|
||||
The official zsh completion script for %{name}.
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
# at this point of time we do not have repository information anymore
|
||||
# don't attemt to generate version.h from git, use our own.
|
||||
sed -i '/version_h/d' meson.build
|
||||
cat > src/version.h << EOF
|
||||
#pragma once
|
||||
#define GIT_COMMIT_HASH "0000000000000000000000000000000000000000"
|
||||
#define GIT_BRANCH "openSUSE"
|
||||
#define GIT_COMMIT_MESSAGE "Built for %_host"
|
||||
#define GIT_COMMIT_DATE "Thu Jan 01 00:00:00 1970"
|
||||
#define GIT_DIRTY ""
|
||||
#define GIT_TAG "%{version}"
|
||||
#define GIT_COMMITS "-1"
|
||||
EOF
|
||||
sed -i 's;REPLACE_ME_WITH_PREFIX;%{_prefix};' hyprpm/src/core/DataState.cpp
|
||||
|
||||
%build
|
||||
%meson \
|
||||
-Dwlroots-hyprland:xcb-errors=%{?with_xcb_errors:enabled}%{!?with_xcb_errors:disabled}
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install --tags runtime,man%{?with_devel:,devel}
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/Hyprland
|
||||
%{_bindir}/hyprctl
|
||||
%{_bindir}/hyprpm
|
||||
%dir %{_datadir}/%{shortname}
|
||||
%{_datadir}/%{shortname}/hyprland.conf
|
||||
%dir %{_datadir}/wayland-sessions/
|
||||
%{_datadir}/wayland-sessions/%{name}.desktop
|
||||
%dir %{_datadir}/xdg-desktop-portal
|
||||
%{_datadir}/xdg-desktop-portal/%{name}-portals.conf
|
||||
%{_mandir}/man1/Hyprland.*
|
||||
%{_mandir}/man1/hyprctl.*
|
||||
|
||||
%files wallpapers
|
||||
%{_datadir}/%{shortname}/wall*
|
||||
|
||||
%if %{with devel}
|
||||
%files devel
|
||||
%{_includedir}/%{name}
|
||||
%{_datadir}/pkgconfig/%{name}.pc
|
||||
%endif
|
||||
|
||||
%files bash-completion
|
||||
%dir %{_datadir}/bash-completion/
|
||||
%dir %{_datadir}/bash-completion/completions/
|
||||
%{_datadir}/bash-completion/completions/hyprctl
|
||||
%{_datadir}/bash-completion/completions/hyprpm
|
||||
|
||||
%files fish-completion
|
||||
%dir %{_datadir}/fish/
|
||||
%dir %{_datadir}/fish/vendor_completions.d/
|
||||
%{_datadir}/fish/vendor_completions.d/hyprctl.fish
|
||||
%{_datadir}/fish/vendor_completions.d/hyprpm.fish
|
||||
|
||||
%files zsh-completion
|
||||
%dir %{_datadir}/zsh/
|
||||
%dir %{_datadir}/zsh/site-functions/
|
||||
%{_datadir}/zsh/site-functions/_hyprctl
|
||||
%{_datadir}/zsh/site-functions/_hyprpm
|
||||
|
||||
%changelog
|
219
opensuse-hyprpm-use-hyprland-devel-subpkg.patch
Normal file
219
opensuse-hyprpm-use-hyprland-devel-subpkg.patch
Normal file
@ -0,0 +1,219 @@
|
||||
From c34dc954cc6388e9bc9ea608152ae4fc3f201bb1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20sp1rit=E2=80=8B?= <sp1rit@disroot.org>
|
||||
Date: Fri, 14 Jun 2024 23:43:46 +0200
|
||||
Subject: [PATCH] openSUSE: Use hyprland-devel instead of downloading from
|
||||
upstream
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
The plugin manager needs headers in order to build plugins for hyprland.
|
||||
This patch removes the ability of hyprpm to download another copy of
|
||||
hyprland upstream and instead forces hyprpm to use the headers already
|
||||
installed from the hyprland-devel subpackage.
|
||||
|
||||
It also adds a new check to ensure that the subpackage is instealled.
|
||||
|
||||
Signed-off-by: Florian "sp1rit" <sp1rit@disroot.org>
|
||||
---
|
||||
hyprpm/src/core/DataState.cpp | 2 +-
|
||||
hyprpm/src/core/PluginManager.cpp | 140 +++++-------------------------
|
||||
2 files changed, 21 insertions(+), 121 deletions(-)
|
||||
|
||||
diff --git a/hyprpm/src/core/DataState.cpp b/hyprpm/src/core/DataState.cpp
|
||||
index 61ad336..99dbadd 100644
|
||||
--- a/hyprpm/src/core/DataState.cpp
|
||||
+++ b/hyprpm/src/core/DataState.cpp
|
||||
@@ -21,7 +21,7 @@ std::string DataState::getDataStatePath() {
|
||||
}
|
||||
|
||||
std::string DataState::getHeadersPath() {
|
||||
- return getDataStatePath() + "/headersRoot";
|
||||
+ return "REPLACE_ME_WITH_PREFIX/";
|
||||
}
|
||||
|
||||
void DataState::ensureStateStoreExists() {
|
||||
diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
|
||||
index 6988547..036c705 100644
|
||||
--- a/hyprpm/src/core/PluginManager.cpp
|
||||
+++ b/hyprpm/src/core/PluginManager.cpp
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <sys/wait.h>
|
||||
#include <pwd.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -406,134 +407,20 @@ bool CPluginManager::updateHeaders(bool force) {
|
||||
const auto HLVER = getHyprlandVersion();
|
||||
|
||||
if (!hasDeps()) {
|
||||
- std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not update. Dependencies not satisfied. Hyprpm requires: cmake, meson, cpio\n";
|
||||
+ std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not update. Dependencies not satisfied. Hyprpm requires: hyprland-devel, cmake, meson, cpio\n";
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- if (!std::filesystem::exists("/tmp/hyprpm")) {
|
||||
- std::filesystem::create_directory("/tmp/hyprpm");
|
||||
- std::filesystem::permissions("/tmp/hyprpm", std::filesystem::perms::all, std::filesystem::perm_options::replace);
|
||||
- }
|
||||
-
|
||||
- if (!force && headersValid() == HEADERS_OK) {
|
||||
- std::cout << "\n" << std::string{Colors::GREEN} + "✔" + Colors::RESET + " Headers up to date.\n";
|
||||
- return true;
|
||||
- }
|
||||
-
|
||||
+
|
||||
CProgressBar progress;
|
||||
- progress.m_iMaxSteps = 5;
|
||||
+ progress.m_iMaxSteps = 1;
|
||||
progress.m_iSteps = 0;
|
||||
- progress.m_szCurrentMessage = "Cloning the hyprland repository";
|
||||
- progress.print();
|
||||
-
|
||||
- const std::string USERNAME = getpwuid(getuid())->pw_name;
|
||||
- const auto WORKINGDIR = "/tmp/hyprpm/hyprland-" + USERNAME;
|
||||
-
|
||||
- if (!createSafeDirectory(WORKINGDIR)) {
|
||||
- std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not prepare working dir for hl\n";
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- progress.printMessageAbove(std::string{Colors::YELLOW} + "!" + Colors::RESET + " Cloning https://github.com/hyprwm/hyprland, this might take a moment.");
|
||||
-
|
||||
- const bool bShallow = (HLVER.branch == "main" || HLVER.branch == "") && !m_bNoShallow;
|
||||
-
|
||||
- // let us give a bit of leg-room for shallowing
|
||||
- // due to timezones, etc.
|
||||
- const std::string SHALLOW_DATE =
|
||||
- trim(HLVER.date).empty() ? "" : execAndGet("LC_TIME=\"en_US.UTF-8\" date --date='" + HLVER.date + " - 1 weeks' '+\%a \%b \%d \%H:\%M:\%S \%Y'");
|
||||
-
|
||||
- if (m_bVerbose && bShallow)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "will shallow since: " + SHALLOW_DATE);
|
||||
-
|
||||
- std::string ret =
|
||||
- execAndGet("cd /tmp/hyprpm && git clone --recursive https://github.com/hyprwm/hyprland hyprland-" + USERNAME + (bShallow ? " --shallow-since='" + SHALLOW_DATE + "'" : ""));
|
||||
-
|
||||
- if (!std::filesystem::exists(WORKINGDIR)) {
|
||||
- progress.printMessageAbove(std::string{Colors::RED} + "✖" + Colors::RESET + " Clone failed. Retrying without shallow.");
|
||||
- ret = execAndGet("cd /tmp/hyprpm && git clone --recursive https://github.com/hyprwm/hyprland hyprland-" + USERNAME);
|
||||
- }
|
||||
-
|
||||
- if (!std::filesystem::exists(WORKINGDIR + "/.git")) {
|
||||
- std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not clone the hyprland repository. shell returned:\n" << ret << "\n";
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " cloned");
|
||||
- progress.m_iSteps = 2;
|
||||
- progress.m_szCurrentMessage = "Checking out sources";
|
||||
- progress.print();
|
||||
-
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "will run: " + "cd " + WORKINGDIR + " && git checkout " + HLVER.hash + " 2>&1");
|
||||
-
|
||||
- ret = execAndGet("cd " + WORKINGDIR + " && git checkout " + HLVER.hash + " 2>&1");
|
||||
-
|
||||
- if (ret.contains("fatal: unable to read tree")) {
|
||||
- std::cerr << "\n"
|
||||
- << Colors::RED << "✖" << Colors::RESET
|
||||
- << " Could not checkout the running Hyprland commit. If you are on -git, try updating.\nYou can also try re-running hyprpm update with --no-shallow.\n";
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "git returned (co): " + ret);
|
||||
-
|
||||
- ret = execAndGet("cd " + WORKINGDIR + " ; git rm subprojects/tracy ; git submodule update --init 2>&1 ; git reset --hard --recurse-submodules " + HLVER.hash);
|
||||
-
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "git returned (rs): " + ret);
|
||||
-
|
||||
- progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " checked out to running ver");
|
||||
- progress.m_iSteps = 3;
|
||||
- progress.m_szCurrentMessage = "Building Hyprland";
|
||||
- progress.print();
|
||||
-
|
||||
- progress.printMessageAbove(std::string{Colors::YELLOW} + "!" + Colors::RESET + " configuring Hyprland");
|
||||
-
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "setting PREFIX for cmake to " + DataState::getHeadersPath());
|
||||
-
|
||||
- ret = execAndGet(std::format("cd {} && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:STRING=\"{}\" -S . -B ./build -G Ninja", WORKINGDIR,
|
||||
- DataState::getHeadersPath()));
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "cmake returned: " + ret);
|
||||
-
|
||||
- if (ret.contains("CMake Error at")) {
|
||||
- // missing deps, let the user know.
|
||||
- std::string missing = ret.substr(ret.find("CMake Error at"));
|
||||
- missing = ret.substr(ret.find_first_of('\n') + 1);
|
||||
- missing = missing.substr(0, missing.find("-- Configuring incomplete"));
|
||||
- missing = missing.substr(0, missing.find_last_of('\n'));
|
||||
-
|
||||
- std::cerr << "\n"
|
||||
- << Colors::RED << "✖" << Colors::RESET << " Could not configure the hyprland source, cmake complained:\n"
|
||||
- << missing << "\n\nThis likely means that you are missing the above dependencies or they are out of date.\n";
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
- progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " configured Hyprland");
|
||||
- progress.m_iSteps = 4;
|
||||
- progress.m_szCurrentMessage = "Installing sources";
|
||||
+ progress.m_szCurrentMessage = "Checking headers";
|
||||
progress.print();
|
||||
|
||||
- std::string cmd =
|
||||
- std::format("sed -i -e \"s#PREFIX = /usr/local#PREFIX = {}#\" {}/Makefile && cd {} && make installheaders", DataState::getHeadersPath(), WORKINGDIR, WORKINGDIR);
|
||||
- if (m_bVerbose)
|
||||
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "installation will run: " + cmd);
|
||||
-
|
||||
- ret = execAndGet(cmd);
|
||||
-
|
||||
- if (m_bVerbose)
|
||||
- std::cout << Colors::BLUE << "[v] " << Colors::RESET << "installer returned: " << ret << "\n";
|
||||
-
|
||||
- // remove build files
|
||||
- std::filesystem::remove_all(WORKINGDIR);
|
||||
-
|
||||
auto HEADERSVALID = headersValid();
|
||||
if (HEADERSVALID == HEADERS_OK) {
|
||||
progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " installed headers");
|
||||
- progress.m_iSteps = 5;
|
||||
+ progress.m_iSteps = 1;
|
||||
progress.m_szCurrentMessage = "Done!";
|
||||
progress.print();
|
||||
|
||||
@@ -541,7 +428,7 @@ bool CPluginManager::updateHeaders(bool force) {
|
||||
} else {
|
||||
progress.printMessageAbove(std::string{Colors::RED} + "✖" + Colors::RESET + " failed to install headers with error code " + std::to_string((int)HEADERSVALID) + " (" +
|
||||
headerErrorShort(HEADERSVALID) + ")");
|
||||
- progress.m_iSteps = 5;
|
||||
+ progress.m_iSteps = 1;
|
||||
progress.m_szCurrentMessage = "Failed";
|
||||
progress.print();
|
||||
|
||||
@@ -904,6 +791,19 @@ std::string CPluginManager::headerErrorShort(const eHeadersErrors err) {
|
||||
}
|
||||
|
||||
bool CPluginManager::hasDeps() {
|
||||
+ pid_t pid = fork();
|
||||
+ if (pid == 0) {
|
||||
+ close(STDOUT_FILENO);
|
||||
+ execlp("rpm", "rpm", "-q", "hyprland-devel", NULL);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ int status;
|
||||
+ pid = waitpid(pid, &status, 0);
|
||||
+ if (pid < 0)
|
||||
+ return false;
|
||||
+ if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
|
||||
+ return false;
|
||||
+
|
||||
std::vector<std::string> deps = {"meson", "cpio", "cmake"};
|
||||
for (auto& d : deps) {
|
||||
if (!execAndGet("which " + d + " 2>&1").contains("/"))
|
||||
--
|
||||
2.45.2
|
||||
|
Loading…
Reference in New Issue
Block a user