diff --git a/cpupower.changes b/cpupower.changes index 0ef023b..1dca8ab 100644 --- a/cpupower.changes +++ b/cpupower.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Dec 4 12:14:23 UTC 2018 - trenn@suse.de + +- Add bash completion for cpupower command (from mainline submit) +A cpupower_bash-completion_for_cpupower_tool.patch + ------------------------------------------------------------------- Tue Oct 16 12:50:20 UTC 2018 - trenn@suse.de diff --git a/cpupower.spec b/cpupower.spec index 84c8387..be0232e 100644 --- a/cpupower.spec +++ b/cpupower.spec @@ -13,7 +13,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -25,7 +25,7 @@ Release: 0 %define tsversion 18.07.27 %define pbversion 17.05.11 Summary: Tools to determine and set CPU Power related Settings -License: GPL-2.0 +License: GPL-2.0-only Group: System/Base Url: https://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git Source: %name-%version.tar.bz2 @@ -37,6 +37,7 @@ Patch1: cpupower_rapl.patch Patch2: rapl_monitor.patch Patch3: cpupower_exclude_kernel_Makefile.patch Patch4: cpupower_fix_compilation_and_sysfs_read_file_mess.patch +Patch5: cpupower_bash-completion_for_cpupower_tool.patch Patch22: turbostat_makefile_fix_asm_header.patch # Fixes bsc#1048546: @@ -90,6 +91,7 @@ powersave module. %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 cd ../turbostat-%tsversion %patch22 -p1 @@ -136,6 +138,7 @@ cd ../x86_energy_perf_policy-%{pbversion} %files -f %name.lang %defattr (-,root,root) +/usr/share/bash-completion/completions/cpupower %_mandir/man1/cpupower* %_bindir/cpupower %ifarch ix86 x86_64 diff --git a/cpupower_bash-completion_for_cpupower_tool.patch b/cpupower_bash-completion_for_cpupower_tool.patch new file mode 100644 index 0000000..cafdcb2 --- /dev/null +++ b/cpupower_bash-completion_for_cpupower_tool.patch @@ -0,0 +1,175 @@ +From: "Abhishek Goel" + +cpupower : bash-completion for cpupower tool + +Signed-off-by: Abhishek Goel +--- + Makefile | 4 +- + cpupower-completion.bash | 129 ++++++++++++++++++ + 2 files changed, 132 insertions(+), 1 deletion(-) + create mode 100644 cpupower-completion.bash + +Index: cpupower-4.19/Makefile +=================================================================== +--- cpupower-4.19.orig/Makefile 2018-12-04 12:56:27.824106229 +0100 ++++ cpupower-4.19/Makefile 2018-12-04 13:16:53.452172269 +0100 +@@ -87,6 +87,7 @@ endif + localedir ?= /usr/share/locale + docdir ?= /usr/share/doc/packages/cpupower + confdir ?= /etc/ ++bash_completion_dir ?= /usr/share/bash-completion/completions + + # Toolchain: what tools do we use, and what options do they need: + +@@ -94,7 +95,7 @@ CP = cp -fpR + INSTALL = /usr/bin/install -c + INSTALL_PROGRAM = ${INSTALL} + INSTALL_DATA = ${INSTALL} -m 644 +-INSTALL_SCRIPT = ${INSTALL_PROGRAM} ++INSTALL_SCRIPT = ${INSTALL} -m 755 + + # If you are running a cross compiler, you may want to set this + # to something more interesting, like "arm-linux-". If you want +@@ -288,6 +289,8 @@ install-lib: + install-tools: + $(INSTALL) -d $(DESTDIR)${bindir} + $(INSTALL_PROGRAM) $(OUTPUT)cpupower $(DESTDIR)${bindir} ++ $(INSTALL) -d $(DESTDIR)${bindir} ++ $(INSTALL_DATA) -D cpupower-completion.sh '$(DESTDIR)${bash_completion_dir}/cpupower' + + install-man: + $(INSTALL_DATA) -D man/cpupower.1 $(DESTDIR)${mandir}/man1/cpupower.1 +Index: cpupower-4.19/cpupower-completion.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ cpupower-4.19/cpupower-completion.sh 2018-12-04 12:58:53.776114094 +0100 +@@ -0,0 +1,129 @@ ++# -*- shell-script -*- ++# bash completion script for cpupower ++# Taken from git.git's completion script. ++ ++_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor" ++ ++_frequency_info () ++{ ++ local flags="-f -w -l -d -p -g -a -s -y -o -m -n --freq --hwfreq --hwlimits --driver --policy --governors --related-cpus --affected-cpus --stats --latency --proc --human --no-rounding" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ esac ++} ++ ++_frequency_set () ++{ ++ local flags="-f -g --freq --governor -d --min -u --max -r --related" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ -f| --freq | -d | --min | -u | --max) ++ if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then ++ COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur")) ++ fi ;; ++ -g| --governor) ++ if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then ++ COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur")) ++ fi;; ++ frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ ++ esac ++} ++ ++_idle_info() ++{ ++ local flags="-f --silent" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ esac ++} ++ ++_idle_set() ++{ ++ local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ esac ++} ++ ++_set() ++{ ++ local flags="--perf-bias, -b" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ esac ++} ++ ++_monitor() ++{ ++ local flags="-l -m -i -c -v" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev" in ++ monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; ++ esac ++} ++ ++_taskset() ++{ ++ local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}" ++ local prev="${COMP_WORDS[COMP_CWORD-1]}" ++ local cur="${COMP_WORDS[COMP_CWORD]}" ++ case "$prev_to_prev" in ++ -c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;; ++ esac ++ case "$prev" in ++ frequency-info) _frequency_info ;; ++ frequency-set) _frequency_set ;; ++ idle-info) _idle_info ;; ++ idle-set) _idle_set ;; ++ set) _set ;; ++ monitor) _monitor ;; ++ esac ++ ++} ++ ++_cpupower () ++{ ++ local i ++ local c=1 ++ local command ++ ++ while test $c -lt $COMP_CWORD; do ++ if test $c == 1; then ++ command="${COMP_WORDS[c]}" ++ fi ++ c=$((++c)) ++ done ++ ++ # Complete name of subcommand if the user has not finished typing it yet. ++ if test $c -eq $COMP_CWORD -a -z "$command"; then ++ COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ++ return ++ fi ++ ++ # Complete arguments to subcommands. ++ case "$command" in ++ -v|--version) return ;; ++ -c|--cpu) _taskset ;; ++ help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;; ++ frequency-info) _frequency_info ;; ++ frequency-set) _frequency_set ;; ++ idle-info) _idle_info ;; ++ idle-set) _idle_set ;; ++ set) _set ;; ++ monitor) _monitor ;; ++ esac ++} ++ ++complete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \ ++ || complete -o default -F _cpupower cpupower