blob: 19c577dd3e5207f61122229e08aa154ebc0fc17f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..13} )
DISTUTILS_USE_PEP517=poetry
inherit distutils-r1 systemd xdg-utils desktop
DESCRIPTION="Automatic CPU speed & power optimizer for Linux"
HOMEPAGE="https://github.com/AdnanHodzic/auto-cpufreq"
SRC_URI="https://github.com/AdnanHodzic/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="LGPL-3+"
SLOT="0"
KEYWORDS="~amd64"
RDEPEND="
dev-python/click[${PYTHON_USEDEP}]
dev-python/distro[${PYTHON_USEDEP}]
dev-python/psutil[${PYTHON_USEDEP}]
dev-python/pygobject[${PYTHON_USEDEP}]
dev-python/pyinotify[${PYTHON_USEDEP}]
dev-python/requests[${PYTHON_USEDEP}]
"
DEPEND="${RDEPEND}"
BDEPEND="
dev-python/poetry-core[${PYTHON_USEDEP}]
"
DOCS=( README.md )
src_prepare() {
default
# Update pyproject.toml to avoid dynamic_versioning in poetry
sed -i 's/poetry_dynamic_versioning.backend/poetry.core.masonry.api/' pyproject.toml || die
# Replace /usr/local/ paths with /usr/ in the source code to adhere to Gentoo standards
sed -i 's|/usr/local/share|/usr/share|g' scripts/auto-cpufreq-install.sh || die
sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/core.py || die
sed -i 's|usr/local|usr|g' "scripts/${PN}.service" "scripts/${PN}-openrc" auto_cpufreq/gui/app.py || die
# Modify the service file to launch auto-cpufreq natively without the need for virtual environment
sed -i 's|WorkingDirectory=/opt/auto-cpufreq/venv||g' scripts/auto-cpufreq.service || die
sed -i 's|Environment=PYTHONPATH=/opt/auto-cpufreq||g' scripts/auto-cpufreq.service || die
sed -i 's|ExecStart=/opt/auto-cpufreq/venv/bin/python /opt/auto-cpufreq/venv/bin/auto-cpufreq --daemon|ExecStart=/usr/bin/auto-cpufreq --daemon|g' scripts/auto-cpufreq.service || die
# Change the path in core.py
sed -i 's|/opt/auto-cpufreq/override.pickle|/var/lib/auto-cpufreq/override.pickle|g' auto_cpufreq/core.py || die
distutils-r1_src_prepare
}
python_install() {
distutils-r1_python_install
# Create the scripts directory if it doesn't exist
dodir "/usr/share/${PN}/scripts"
# Create the directory for override.pickle
dodir /var/lib/auto-cpufreq
keepdir /var/lib/auto-cpufreq
fowners root:root /var/lib/auto-cpufreq
fperms 0755 /var/lib/auto-cpufreq
# Copy all scripts from the 'scripts' directory
for script in scripts/*; do
if [[ -f "$script" ]]; then
case "${script##*/}" in
*.sh|*.py|auto-cpufreq-*|cpufreqctl.sh)
exeinto "/usr/share/${PN}/scripts"
doexe "$script"
;;
*)
insinto "/usr/share/${PN}/scripts"
doins "$script"
;;
esac
fi
done
# Copy images
insinto "/usr/share/${PN}/images"
doins images/*
# Install icon
doicon -s 128 images/icon.png
# Install polkit policy
insinto /usr/share/polkit-1/actions
doins scripts/org.auto-cpufreq.pkexec.policy
# Install desktop file
domenu scripts/auto-cpufreq-gtk.desktop
# Install systemd service file
systemd_dounit "scripts/${PN}.service"
# Install OpenRC init script
newinitd "scripts/${PN}-openrc" "${PN}"
}
pkg_postinst() {
xdg_icon_cache_update
xdg_desktop_database_update
elog "Updating XDG database"
elog "The auto-cpufreq override file will be stored in /var/lib/auto-cpufreq/override.pickle"
# Create log file
touch /var/log/auto-cpufreq.log
elog ""
elog "Enable auto-cpufreq daemon service at boot:"
elog "systemd: systemctl enable --now auto-cpufreq"
elog "openrc: rc-update add auto-cpufreq default"
elog ""
elog "To view live log, run:"
elog "auto-cpufreq --stats"
}
pkg_postrm() {
xdg_icon_cache_update
xdg_desktop_database_update
# Remove the override.pickle file and directory
if [[ -d "${EROOT}/var/lib/auto-cpufreq" ]]; then
rm -rf "${EROOT}"/var/lib/auto-cpufreq || die
fi
# Remove auto-cpufreq log file
if [ -f "${EROOT}/var/log/auto-cpufreq.log" ]; then
rm "${EROOT}"/var/log/auto-cpufreq.log || die
fi
# Remove auto-cpufreq-install script
if [ -f "${EROOT}/usr/bin/auto-cpufreq-install" ]; then
rm "${EROOT}"/usr/bin/auto-cpufreq-install || die
fi
# Restore original cpufreqctl binary if backup was made
if [ -f "${EROOT}/usr/bin/cpufreqctl.auto-cpufreq.bak" ]; then
mv "${EROOT}"/usr/bin/cpufreqctl.auto-cpufreq{.bak,} || die
fi
# Remove auto-cpufreq's cpufreqctl binary
# it overwrites cpufreqctl.sh
if [ -f "${EROOT}/usr/bin/cpufreqctl" ]; then
rm "${EROOT}"/usr/bin/cpufreqctl || die
fi
}
|