Skip to main content

GEOPM - Global Extensible Open Power Manager Daemon

Project description

geopmdpy

This directory contains source code for the geopmdpy Python package, which provides python bindings for libgeopmd, as well as the geopmd daemon, geopmaccess tool for administrators, and the geopmsession tool for end users.

Subdirectories include:

  • debian: Configuration files for debian packaging scripts
  • geopmdpy: Source code for modules in this package
  • test: Test code for this package

Set Up a Development Environment

Run pip install . to install this package. Optionally use the -e installation option to install in editable mode (so you don't need to reinstall between updating python source code and re-running tests). The install command will also install the python execution-time dependencies of this package.

The geopmdpy package wraps libgeopmd. Be sure to follow the build instructions in the directory for that library as part of setting up a geopmdpy development environment. Either install libgeopmd somewhere on your path, or manually add it to your LD_LIBRARY_PATH (examples in the next section).

Building Against Non-System-Installed Libraries

If you want to build geopmdpy against non-system-installed headers and libgeopmd binaries, you need to set your compiler's environment variables to tell it where to search for GEOPM. For example, if you built and installed libgeopmd with --prefix=$HOME/build/geopm and your python extensions are compiled with gcc, then run:

CC=gcc \
LIBRARY_PATH=$HOME/build/geopm/lib \
C_INCLUDE_PATH=$HOME/build/geopm/include \
python3 -m pip install ./

to build and install this package.

User Build/Install Helper Script for geopmdpy and libgeopmd

A script called install_user.sh is provided which builds and installs libgeopmd and geopmdpy for a single user. This script may be a simple helper for running the build of the two directories geopm/geopmdpy and geopm/libgeopmd, but it may also be used as a stand-alone solution in place of:

python3 -m pip install "geopmdpy @ git+https://github.com/geopm/geopm.git#subdirectory=geopmdpy"

The above command will install the geopmdpy package from the dev branch on GitHub, but it will not install a development snapshot of libgeopmd which may also be required. To combine these two installation steps, run the following commands instead:

wget https://raw.githubusercontent.com/geopm/geopm/refs/heads/dev/geopmdpy/install_user.sh
chmod a+x install_user.sh
export GEOPM_GIT_PATH=$(mktemp -d)/geopm
./install_user.sh --prefix=$HOME/geopm-build --enable-levelzero
rm -rf $(dirname $GEOPM_GIT_PATH)
export LD_LIBRARY_PATH=$HOME/geopm-build/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Note that the options provided to install_user.sh above are one example. See the output from ./install_user.sh --help for more information about how to use the script.

Executing Tests

Run LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/../libgeopmd/.libs" python3 test from this directory to launch the entire test suite. Some of the tests depend on libgeopmd, so it should be built before running tests. Alternatively, run LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/../libgeopmd/.libs" python3 -m unittest discover -p 'Test*.py'

Execute a single test case with LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/../libgeopm/.libs" python3 -m unittest <one.or.more.test.modules.or.classes.or.functions>.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geopmdpy-3.2.2.tar.gz (116.9 kB view details)

Uploaded Source

File details

Details for the file geopmdpy-3.2.2.tar.gz.

File metadata

  • Download URL: geopmdpy-3.2.2.tar.gz
  • Upload date:
  • Size: 116.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for geopmdpy-3.2.2.tar.gz
Algorithm Hash digest
SHA256 2f11ccbce244fba7cd9de49c5a7958da9e4c9d0bf379b700171ffb83cf0f960f
MD5 fb0627debaa7135fbabc324dc50a7592
BLAKE2b-256 2815c6d06d1e61490eded24ee92be87cd8f275b2d2fde521c2ff7114314719a9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page