about summary refs log tree commit diff
path: root/pkgs/by-name/au
diff options
context:
space:
mode:
authorisabel <isabel@isabelroses.com>2024-05-31 19:49:11 +0100
committerisabel <isabel@isabelroses.com>2024-05-31 19:51:23 +0100
commitaa31715677f0ff3d0c4b430d65c4a7ff8f0eb768 (patch)
tree1d9781b003e57d410c29d7562f0bc8912a20d5be /pkgs/by-name/au
parent34b9d656bdf1fd0a8edf9b08ba2313f3ad84ee7d (diff)
auto-cpufreq: move to pkgs/by-name
Diffstat (limited to 'pkgs/by-name/au')
-rw-r--r--pkgs/by-name/au/auto-cpufreq/fix-version-output.patch33
-rw-r--r--pkgs/by-name/au/auto-cpufreq/package.nix100
-rw-r--r--pkgs/by-name/au/auto-cpufreq/prevent-install-and-copy.patch162
-rw-r--r--pkgs/by-name/au/auto-cpufreq/prevent-update.patch152
4 files changed, 447 insertions, 0 deletions
diff --git a/pkgs/by-name/au/auto-cpufreq/fix-version-output.patch b/pkgs/by-name/au/auto-cpufreq/fix-version-output.patch
new file mode 100644
index 0000000000000..be21ca889081d
--- /dev/null
+++ b/pkgs/by-name/au/auto-cpufreq/fix-version-output.patch
@@ -0,0 +1,33 @@
+diff --git a/auto_cpufreq/core.py b/auto_cpufreq/core.py
+index 58cedb7..89e77a4 100755
+--- a/auto_cpufreq/core.py
++++ b/auto_cpufreq/core.py
+@@ -136,26 +136,8 @@ except PermissionError:
+
+ # display running version of auto-cpufreq
+ def app_version():
+-
+-    print("auto-cpufreq version: ", end="")
+-
+-    # snap package
+-    if os.getenv("PKG_MARKER") == "SNAP":
+-        print(getoutput(r"echo \(Snap\) $SNAP_VERSION"))
+-    # aur package
+-    elif dist_name in ["arch", "manjaro", "garuda"]:
+-        aur_pkg_check = call("pacman -Qs auto-cpufreq > /dev/null", shell=True)
+-        if aur_pkg_check == 1:
+-            print(get_formatted_version())
+-        else:
+-            print(getoutput("pacman -Qi auto-cpufreq | grep Version"))
+-    else:
+-        # source code (auto-cpufreq-installer)
+-        try:
+-            print(get_formatted_version())
+-        except Exception as e:
+-            print(repr(e))
+-            pass
++   print("auto-cpufreq version: @version@")
++   print("Git commit: v@version@")
+
+ def check_for_update():
+     # returns True if a new release is available from the GitHub repo
diff --git a/pkgs/by-name/au/auto-cpufreq/package.nix b/pkgs/by-name/au/auto-cpufreq/package.nix
new file mode 100644
index 0000000000000..4121096359c83
--- /dev/null
+++ b/pkgs/by-name/au/auto-cpufreq/package.nix
@@ -0,0 +1,100 @@
+{
+  lib,
+  python3Packages,
+  fetchFromGitHub,
+  substituteAll,
+  gobject-introspection,
+  wrapGAppsHook3,
+  gtk3,
+}:
+python3Packages.buildPythonPackage rec {
+  pname = "auto-cpufreq";
+  version = "2.3.0";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "AdnanHodzic";
+    repo = "auto-cpufreq";
+    rev = "v${version}";
+    hash = "sha256-Bet/WOVveLIA+0Mvly4AsielR+r/AJXIgHdWrtc7i/U=";
+  };
+
+  nativeBuildInputs = [
+    gobject-introspection
+    wrapGAppsHook3
+  ];
+
+  buildInputs = [
+    gtk3
+    python3Packages.poetry-core
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    click
+    distro
+    psutil
+    pygobject3
+    poetry-dynamic-versioning
+    setuptools
+    pyinotify
+  ];
+
+  doCheck = false;
+  pythonImportsCheck = [ "auto_cpufreq" ];
+
+  patches = [
+    # hardcodes version output
+    (substituteAll {
+      src = ./fix-version-output.patch;
+      inherit version;
+    })
+
+    # patch to prevent script copying and to disable install
+    ./prevent-install-and-copy.patch
+    # patch to prevent update
+    ./prevent-update.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace auto_cpufreq/core.py \
+      --replace-fail '/opt/auto-cpufreq/override.pickle' /var/run/override.pickle
+    substituteInPlace scripts/org.auto-cpufreq.pkexec.policy \
+      --replace-fail "/opt/auto-cpufreq/venv/bin/auto-cpufreq" $out/bin/auto-cpufreq
+    substituteInPlace auto_cpufreq/gui/app.py auto_cpufreq/gui/objects.py \
+      --replace-fail "/usr/local/share/auto-cpufreq/images/icon.png" $out/share/pixmaps/auto-cpufreq.png
+    substituteInPlace auto_cpufreq/gui/app.py \
+      --replace-fail "/usr/local/share/auto-cpufreq/scripts/style.css" $out/share/auto-cpufreq/scripts/style.css
+  '';
+
+  postInstall = ''
+    # copy script manually
+    cp ${src}/scripts/cpufreqctl.sh $out/bin/cpufreqctl.auto-cpufreq
+
+    # copy css file
+    mkdir -p $out/share/auto-cpufreq/scripts
+    cp scripts/style.css $out/share/auto-cpufreq/scripts/style.css
+
+    # systemd service
+    mkdir -p $out/lib/systemd/system
+    cp ${src}/scripts/auto-cpufreq.service $out/lib/systemd/system
+
+    # desktop icon
+    mkdir -p $out/share/applications
+    mkdir $out/share/pixmaps
+    cp scripts/auto-cpufreq-gtk.desktop $out/share/applications
+    cp images/icon.png $out/share/pixmaps/auto-cpufreq.python3Packages
+
+    # polkit policy
+    mkdir -p $out/share/polkit-1/actions
+    cp scripts/org.auto-cpufreq.pkexec.policy $out/share/polkit-1/actions
+  '';
+
+  meta = {
+    mainProgram = "auto-cpufreq";
+    homepage = "https://github.com/AdnanHodzic/auto-cpufreq";
+    description = "Automatic CPU speed & power optimizer for Linux";
+    license = lib.licenses.lgpl3Plus;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ Technical27 ];
+  };
+}
diff --git a/pkgs/by-name/au/auto-cpufreq/prevent-install-and-copy.patch b/pkgs/by-name/au/auto-cpufreq/prevent-install-and-copy.patch
new file mode 100644
index 0000000000000..2b3c9de1b6b07
--- /dev/null
+++ b/pkgs/by-name/au/auto-cpufreq/prevent-install-and-copy.patch
@@ -0,0 +1,162 @@
+diff --git a/auto_cpufreq/bin/auto_cpufreq.py b/auto_cpufreq/bin/auto_cpufreq.py
+index 4343b8d..dc286f6 100755
+--- a/auto_cpufreq/bin/auto_cpufreq.py
++++ b/auto_cpufreq/bin/auto_cpufreq.py
+@@ -199,41 +199,9 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta
+             print("https://github.com/AdnanHodzic/auto-cpufreq/#donate")
+             footer()
+         elif install:
+-            if os.getenv("PKG_MARKER") == "SNAP":
+-                root_check()
+-                running_daemon_check()
+-                gnome_power_detect_snap()
+-                tlp_service_detect_snap()
+-                bluetooth_notif_snap()
+-                gov_check()
+-                run("snapctl set daemon=enabled", shell=True)
+-                run("snapctl start --enable auto-cpufreq", shell=True)
+-                deploy_complete_msg()
+-            else:
+-                root_check()
+-                running_daemon_check()
+-                gov_check()
+-                deploy_daemon()
+-                deploy_complete_msg()
++            print("install is disabled in the nix package")
+         elif remove:
+-            if os.getenv("PKG_MARKER") == "SNAP":
+-                root_check()
+-                run("snapctl set daemon=disabled", shell=True)
+-                run("snapctl stop --disable auto-cpufreq", shell=True)
+-                if auto_cpufreq_stats_path.exists():
+-                    if auto_cpufreq_stats_file is not None:
+-                        auto_cpufreq_stats_file.close()
+-
+-                    auto_cpufreq_stats_path.unlink()
+-                # ToDo: 
+-                # {the following snippet also used in --update, update it there too(if required)}
+-                # * undo bluetooth boot disable
+-                gnome_power_rm_reminder_snap()
+-                remove_complete_msg()
+-            else:
+-                root_check()
+-                remove_daemon()
+-                remove_complete_msg()
++            print("remove is disabled in the nix package")
+         elif update:
+             root_check()
+             custom_dir = "/opt/auto-cpufreq/source"
+diff --git a/auto_cpufreq/core.py b/auto_cpufreq/core.py
+index 58cedb7..c50b0e1 100755
+--- a/auto_cpufreq/core.py
++++ b/auto_cpufreq/core.py
+@@ -391,30 +391,13 @@ def get_current_gov():
+ 
+ 
+ def cpufreqctl():
+-    """
+-    deploy cpufreqctl script
+-    """
+-
+-    # detect if running on a SNAP
+-    if os.getenv("PKG_MARKER") == "SNAP":
+-        pass
+-    else:
+-        # deploy cpufreqctl.auto-cpufreq script
+-        if not os.path.isfile("/usr/local/bin/cpufreqctl.auto-cpufreq"):
+-            shutil.copy(SCRIPTS_DIR / "cpufreqctl.sh", "/usr/local/bin/cpufreqctl.auto-cpufreq")
++    # scripts are already in the correct place
++    pass
+ 
+ 
+ def cpufreqctl_restore():
+-    """
+-    remove cpufreqctl.auto-cpufreq script
+-    """
+-    # detect if running on a SNAP
+-    if os.getenv("PKG_MARKER") == "SNAP":
+-        pass
+-    else:
+-        if os.path.isfile("/usr/local/bin/cpufreqctl.auto-cpufreq"):
+-            os.remove("/usr/local/bin/cpufreqctl.auto-cpufreq")
+-
++    # no need to restore
++    pass
+ 
+ def footer(l=79):
+     print("\n" + "-" * l + "\n")
+@@ -441,30 +424,8 @@ def remove_complete_msg():
+ 
+ 
+ def deploy_daemon():
+-    print("\n" + "-" * 21 + " Deploying auto-cpufreq as a daemon " + "-" * 22 + "\n")
+-
+-    # deploy cpufreqctl script func call
+-    cpufreqctl()
+-
+-    # turn off bluetooth on boot
+-    bluetooth_disable()
+-
+-    auto_cpufreq_stats_path.touch(exist_ok=True)
+-
+-    print("\n* Deploy auto-cpufreq install script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/local/bin/auto-cpufreq-install")
+-
+-    print("\n* Deploy auto-cpufreq remove script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-remove.sh", "/usr/local/bin/auto-cpufreq-remove")
+-
+-    # output warning if gnome power profile is running
+-    gnome_power_detect_install()
+-    gnome_power_svc_disable()
+-
+-    # output warning if TLP service is detected
+-    tlp_service_detect()
+-
+-    call("/usr/local/bin/auto-cpufreq-install", shell=True)
++    # prevent needless copying and system changes
++    pass
+ 
+ 
+ def deploy_daemon_performance():
+@@ -504,40 +465,7 @@ def deploy_daemon_performance():
+ 
+ # remove auto-cpufreq daemon
+ def remove_daemon():
+-
+-    # check if auto-cpufreq is installed
+-    if not os.path.exists("/usr/local/bin/auto-cpufreq-remove"):
+-        print("\nauto-cpufreq daemon is not installed.\n")
+-        sys.exit(1)
+-
+-    print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
+-
+-    # turn on bluetooth on boot
+-    bluetooth_enable()
+-
+-    # output warning if gnome power profile is stopped
+-    gnome_power_rm_reminder()
+-    gnome_power_svc_enable()
+-
+-    # run auto-cpufreq daemon remove script
+-    call("/usr/local/bin/auto-cpufreq-remove", shell=True)
+-
+-    # remove auto-cpufreq-remove
+-    os.remove("/usr/local/bin/auto-cpufreq-remove")
+-
+-    # delete override pickle if it exists
+-    if os.path.exists(governor_override_state):
+-        os.remove(governor_override_state)
+-
+-    # delete stats file
+-    if auto_cpufreq_stats_path.exists():
+-        if auto_cpufreq_stats_file is not None:
+-            auto_cpufreq_stats_file.close()
+-
+-        auto_cpufreq_stats_path.unlink()
+-
+-    # restore original cpufrectl script
+-    cpufreqctl_restore()
++    pass
+ 
+ 
+ def gov_check():
diff --git a/pkgs/by-name/au/auto-cpufreq/prevent-update.patch b/pkgs/by-name/au/auto-cpufreq/prevent-update.patch
new file mode 100644
index 0000000000000..840c7230313d7
--- /dev/null
+++ b/pkgs/by-name/au/auto-cpufreq/prevent-update.patch
@@ -0,0 +1,152 @@
+diff --git a/auto_cpufreq/bin/auto_cpufreq.py b/auto_cpufreq/bin/auto_cpufreq.py
+index 4343b8d..183c2e9 100755
+--- a/auto_cpufreq/bin/auto_cpufreq.py
++++ b/auto_cpufreq/bin/auto_cpufreq.py
+@@ -235,47 +235,7 @@ def main(config, daemon, debug, update, install, remove, live, log, monitor, sta
+                 remove_daemon()
+                 remove_complete_msg()
+         elif update:
+-            root_check()
+-            custom_dir = "/opt/auto-cpufreq/source"
+-            for arg in sys.argv:
+-                if arg.startswith("--update="):
+-                    custom_dir = arg.split("=")[1]
+-                    sys.argv.remove(arg)
+-                    
+-            if "--update" in sys.argv:
+-                update = True
+-                sys.argv.remove("--update")
+-                if len(sys.argv) == 2:
+-                    custom_dir = sys.argv[1] 
+-                    
+-            if os.getenv("PKG_MARKER") == "SNAP":
+-                print("Detected auto-cpufreq was installed using snap")
+-                # refresh snap directly using this command
+-                # path wont work in this case
+-
+-                print("Please update using snap package manager, i.e: `sudo snap refresh auto-cpufreq`.")
+-                #check for AUR 
+-            elif subprocess.run(["bash", "-c", "command -v pacman >/dev/null 2>&1"]).returncode == 0 and subprocess.run(["bash", "-c", "pacman -Q auto-cpufreq >/dev/null 2>&1"]).returncode == 0:
+-                print("Arch-based distribution with AUR support detected. Please refresh auto-cpufreq using your AUR helper.")
+-            else:
+-                is_new_update = check_for_update()
+-                if not is_new_update:
+-                    return
+-                ans = input("Do you want to update auto-cpufreq to the latest release? [Y/n]: ").strip().lower()
+-                if not os.path.exists(custom_dir):
+-                    os.makedirs(custom_dir)
+-                if os.path.exists(os.path.join(custom_dir, "auto-cpufreq")):
+-                    shutil.rmtree(os.path.join(custom_dir, "auto-cpufreq"))
+-                if ans in ['', 'y', 'yes']:
+-                    remove_daemon()
+-                    remove_complete_msg()
+-                    new_update(custom_dir)
+-                    print("enabling daemon")
+-                    run(["auto-cpufreq", "--install"])
+-                    print("auto-cpufreq is installed with the latest version")
+-                    run(["auto-cpufreq", "--version"])
+-                else:
+-                    print("Aborted")
++            print("update is disabled in the nix package")
+ 
+         elif completions:
+             if completions == "bash":
+diff --git a/auto_cpufreq/core.py b/auto_cpufreq/core.py
+index 58cedb7..8b44712 100755
+--- a/auto_cpufreq/core.py
++++ b/auto_cpufreq/core.py
+@@ -17,8 +17,7 @@ import importlib.metadata
+ from math import isclose
+ from pathlib import Path
+ from shutil import which
+-from subprocess import getoutput, call, run, check_output, DEVNULL
+-import requests
++from subprocess import getoutput, call, run, DEVNULL
+ import re
+ 
+ # execution timestamp used in countdown func
+@@ -158,55 +157,7 @@ def app_version():
+             pass
+ 
+ def check_for_update():
+-    # returns True if a new release is available from the GitHub repo
+-
+-    # Specify the repository and package name
+-    # IT IS IMPORTANT TO  THAT IF THE REPOSITORY STRUCTURE IS CHANGED, THE FOLLOWING FUNCTION NEEDS TO BE UPDATED ACCORDINGLY
+-    # Fetch the latest release information from GitHub API
+-    latest_release_url = f"https://api.github.com/repos/AdnanHodzic/auto-cpufreq/releases/latest"
+-    try:
+-        response = requests.get(latest_release_url)
+-        if response.status_code == 200:
+-            latest_release = response.json()
+-        else:
+-            message = response.json().get("message")
+-            print("Error fetching recent release!")
+-            if message is not None and message.startswith("API rate limit exceeded"):
+-                print("GitHub Rate limit exceeded. Please try again later within 1 hour or use different network/VPN.")
+-            else:
+-                print("Unexpected status code:", response.status_code)
+-            return False
+-    except (requests.exceptions.ConnectionError, requests.exceptions.Timeout,
+-            requests.exceptions.RequestException, requests.exceptions.HTTPError) as err:
+-        print("Error Connecting to server!")
+-        return False
+-
+-    latest_version = latest_release.get("tag_name")
+-
+-    if latest_version is not None:
+-        # Get the current version of auto-cpufreq
+-        # Extract version number from the output string
+-        output = check_output(['auto-cpufreq', '--version']).decode('utf-8')
+-        try:
+-            version_line = next((re.search(r'\d+\.\d+\.\d+', line).group() for line in output.split('\n') if line.startswith('auto-cpufreq version')), None)
+-        except AttributeError:
+-            print("Error Retrieving Current Version!")
+-            exit(1)
+-        installed_version = "v" + version_line
+-        #Check whether the same is installed or not
+-        # Compare the latest version with the installed version and perform update if necessary
+-        if latest_version == installed_version:
+-            print("auto-cpufreq is up to date")
+-            return False
+-        else:
+-            print(f"Updates are available,\nCurrent version: {installed_version}\nLatest version: {latest_version}")
+-            print("Note that your previous custom settings might be erased with the following update")
+-            return True
+-    else:
+-        # Handle the case where "tag_name" key doesn't exist
+-        print("Malformed Released data!\nReinstall manually or Open an issue on GitHub for help!")
+-
+-
++    pass
+ 
+ def new_update(custom_dir):
+     os.chdir(custom_dir)
+diff --git a/poetry.lock b/poetry.lock
+index 2a99ca6..9bc26e2 100644
+--- a/poetry.lock
++++ b/poetry.lock
+@@ -1,4 +1,4 @@
+-# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
++# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+ 
+ [[package]]
+ name = "attrs"
+@@ -1300,4 +1300,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
+ [metadata]
+ lock-version = "2.0"
+ python-versions = "^3.8"
+-content-hash = "ee73b2db6a43cac87120f38c93d0a8a297bec52f1346b55bc0ca2992aa464482"
++content-hash = "1ba0c404ffea01a611e7c74f9c104de44a914b0a6fad2350470f15880931ae42"
+diff --git a/pyproject.toml b/pyproject.toml
+index 876d80c..7190356 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -25,7 +25,6 @@ python = "^3.8"
+ psutil = {git = "https://github.com/giampaolo/psutil.git", rev = "4cf56e08c1bc883ec89758834b50954380759858"}
+ click = "^8.1.0"
+ distro = "^1.8.0"
+-requests = "^2.31.0"
+ PyGObject = "^3.46.0"
+ pyinotify = {git = "https://github.com/shadeyg56/pyinotify-3.12"}
+