Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cpupower: Improve cpupower build process description

Enhance cpupower build process description with the information on
building and installing the utility to the user defined directories
as well as with the information on the way of running the utility from
the custom defined installation directory.

Signed-off-by: Roman Storozhenko <romeusmeister@gmail.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

authored by

Roman Storozhenko and committed by
Shuah Khan
3dbc9214 705c80df

+149 -9
+149 -9
tools/power/cpupower/README
··· 22 22 compilation and installation 23 23 ---------------------------- 24 24 25 - make 26 - su 27 - make install 25 + There are 2 output directories - one for the build output and another for 26 + the installation of the build results, that is the utility, library, 27 + man pages, etc... 28 28 29 - should suffice on most systems. It builds libcpupower to put in 30 - /usr/lib; cpupower, cpufreq-bench_plot.sh to put in /usr/bin; and 31 - cpufreq-bench to put in /usr/sbin. If you want to set up the paths 32 - differently and/or want to configure the package to your specific 33 - needs, you need to open "Makefile" with an editor of your choice and 34 - edit the block marked CONFIGURATION. 29 + default directory 30 + ----------------- 31 + 32 + In the case of default directory, build and install process requires no 33 + additional parameters: 34 + 35 + build 36 + ----- 37 + 38 + $ make 39 + 40 + The output directory for the 'make' command is the current directory and 41 + its subdirs in the kernel tree: 42 + tools/power/cpupower 43 + 44 + install 45 + ------- 46 + 47 + $ sudo make install 48 + 49 + 'make install' command puts targets to default system dirs: 50 + 51 + ----------------------------------------------------------------------- 52 + | Installing file | System dir | 53 + ----------------------------------------------------------------------- 54 + | libcpupower | /usr/lib | 55 + ----------------------------------------------------------------------- 56 + | cpupower | /usr/bin | 57 + ----------------------------------------------------------------------- 58 + | cpufreq-bench_plot.sh | /usr/bin | 59 + ----------------------------------------------------------------------- 60 + | man pages | /usr/man | 61 + ----------------------------------------------------------------------- 62 + 63 + To put it in other words it makes build results available system-wide, 64 + enabling any user to simply start using it without any additional steps 65 + 66 + custom directory 67 + ---------------- 68 + 69 + There are 2 make's command-line variables 'O' and 'DESTDIR' that setup 70 + appropriate dirs: 71 + 'O' - build directory 72 + 'DESTDIR' - installation directory. This variable could also be setup in 73 + the 'CONFIGURATION' block of the "Makefile" 74 + 75 + build 76 + ----- 77 + 78 + $ make O=<your_custom_build_catalog> 79 + 80 + Example: 81 + $ make O=/home/hedin/prj/cpupower/build 82 + 83 + install 84 + ------- 85 + 86 + $ make O=<your_custom_build_catalog> DESTDIR=<your_custom_install_catalog> 87 + 88 + Example: 89 + $ make O=/home/hedin/prj/cpupower/build DESTDIR=/home/hedin/prj/cpupower \ 90 + > install 91 + 92 + Notice that both variables 'O' and 'DESTDIR' have been provided. The reason 93 + is that the build results are saved in the custom output dir defined by 'O' 94 + variable. So, this dir is the source for the installation step. If only 95 + 'DESTDIR' were provided then the 'install' target would assume that the 96 + build directory is the current one, build everything there and install 97 + from the current dir. 98 + 99 + The files will be installed to the following dirs: 100 + 101 + ----------------------------------------------------------------------- 102 + | Installing file | System dir | 103 + ----------------------------------------------------------------------- 104 + | libcpupower | ${DESTDIR}/usr/lib | 105 + ----------------------------------------------------------------------- 106 + | cpupower | ${DESTDIR}/usr/bin | 107 + ----------------------------------------------------------------------- 108 + | cpufreq-bench_plot.sh | ${DESTDIR}/usr/bin | 109 + ----------------------------------------------------------------------- 110 + | man pages | ${DESTDIR}/usr/man | 111 + ----------------------------------------------------------------------- 112 + 113 + If you look at the table for the default 'make' output dirs you will 114 + notice that the only difference with the non-default case is the 115 + ${DESTDIR} prefix. So, the structure of the output dirs remains the same 116 + regardles of the root output directory. 117 + 118 + 119 + clean and uninstall 120 + ------------------- 121 + 122 + 'clean' target is intended for cleanup the build catalog from build results 123 + 'uninstall' target is intended for removing installed files from the 124 + installation directory 125 + 126 + default directory 127 + ----------------- 128 + 129 + This case is a straightforward one: 130 + $ make clean 131 + $ make uninstall 132 + 133 + custom directory 134 + ---------------- 135 + 136 + Use 'O' command line variable to remove previously built files from the 137 + build dir: 138 + $ make O=<your_custom_build_catalog> clean 139 + 140 + Example: 141 + $ make O=/home/hedin/prj/cpupower/build clean 142 + 143 + Use 'DESTDIR' command line variable to uninstall previously installed files 144 + from the given dir: 145 + $ make DESTDIR=<your_custom_install_catalog> 146 + 147 + Example: 148 + make DESTDIR=/home/hedin/prj/cpupower uninstall 149 + 150 + 151 + running the tool 152 + ---------------- 153 + 154 + default directory 155 + ----------------- 156 + 157 + $ sudo cpupower 158 + 159 + custom directory 160 + ---------------- 161 + 162 + When it comes to run the utility from the custom build catalog things 163 + become a little bit complicated as 'just run' approach doesn't work. 164 + Assuming that the current dir is '<your_custom_install_catalog>/usr', 165 + issuing the following command: 166 + 167 + $ sudo ./bin/cpupower 168 + will produce the following error output: 169 + ./bin/cpupower: error while loading shared libraries: libcpupower.so.1: 170 + cannot open shared object file: No such file or directory 171 + 172 + The issue is that binary cannot find the 'libcpupower' library. So, we 173 + shall point to the lib dir: 174 + sudo LD_LIBRARY_PATH=lib64/ ./bin/cpupower 35 175 36 176 37 177 THANKS