From 94efee70a4b648acda53c669f5aa60b3e83e90e5 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Fri, 5 May 2023 08:54:28 +0000 Subject: automatic import of python-elperiodic --- .gitignore | 1 + python-elperiodic.spec | 237 +++++++++++++++++++++++++++++++++++++++++++++++++ sources | 1 + 3 files changed, 239 insertions(+) create mode 100644 python-elperiodic.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore index e69de29..e9a8fdb 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/ElPeriodic-1.2.tar.gz diff --git a/python-elperiodic.spec b/python-elperiodic.spec new file mode 100644 index 0000000..cd431ee --- /dev/null +++ b/python-elperiodic.spec @@ -0,0 +1,237 @@ +%global _empty_manifest_terminate_build 0 +Name: python-ElPeriodic +Version: 1.2 +Release: 1 +Summary: Phase-locked userland scheduling library +License: BSD License +URL: https://github.com/sobomax/libelperiodic +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/de/91/16ee87d73f3f00431c9f840ec20366a52c927397e8cd05af68b9094c8a4f/ElPeriodic-1.2.tar.gz +BuildArch: noarch + + +%description +[![Build Status@GitHub](https://github.com/sobomax/libelperiodic/workflows/Main%20CI/badge.svg?branch=master)](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[![Build Status](https://travis-ci.com/sobomax/libelperiodic.svg?branch=master)](https://travis-ci.com/sobomax/libelperiodic) +[![Coverage Status](https://coveralls.io/repos/github/sobomax/libelperiodic/badge.svg?branch=master)](https://coveralls.io/github/sobomax/libelperiodic?branch=master) + +# libElPeriodic +Library to run frequent periodic tasks. + +## Principle of Operation +The libElPeriodic is designed to simplify writing control loops that are +expected to run at constant "tick" intervals with smallest possible overhead +and little or no support from the underlying run time environment. + +The library is optimized to align active periods of the control loop +to the set frequency (and optionally phase as well) by applying phase +locked loop design with a proportional phase detector and a low-pass +filter as an error amplifier. + +## Usage + +Sample usage pattern is demonstrated below. The code block denoted by the square +brackets will be executing 125.5 times a second, untul the value returned by the +`is_runnable()` routine is non-zero. Provided of course that the "logic" +does not take more than 0.01 second to run on average and that OS scheduler +plays the ball. + + #include + + extern int is_runnable(void); + + void + event_loop(void) + { + double frequency = 125.5; /* Hz */ + void *elp; + int i; + + prd = prdic_init(freq, 0.0); + assert(prd != NULL); + + while (is_runnable()) { + // [----------------------]; + // [Insert your logic here]; + // [----------------------]; + prdic_procrastinate(prd); + } + prdic_free(prd); + } + +## Story + +It came about having to write the same code over and over again in multiple +real-time projects, ranging from game [Digger](https://github.com/sobomax/digger), +RTP relay server [RTPProxy](https://github.com/sippy/rtpproxy). It has also +been recently utilized to replace a heavy-weight (and at the time not portable +to Python 3) "Twisted" framework in the +[Python Sippy B2BUA](https://github.com/sippy/b2bua) project. + +%package -n python3-ElPeriodic +Summary: Phase-locked userland scheduling library +Provides: python-ElPeriodic +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-ElPeriodic +[![Build Status@GitHub](https://github.com/sobomax/libelperiodic/workflows/Main%20CI/badge.svg?branch=master)](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[![Build Status](https://travis-ci.com/sobomax/libelperiodic.svg?branch=master)](https://travis-ci.com/sobomax/libelperiodic) +[![Coverage Status](https://coveralls.io/repos/github/sobomax/libelperiodic/badge.svg?branch=master)](https://coveralls.io/github/sobomax/libelperiodic?branch=master) + +# libElPeriodic +Library to run frequent periodic tasks. + +## Principle of Operation +The libElPeriodic is designed to simplify writing control loops that are +expected to run at constant "tick" intervals with smallest possible overhead +and little or no support from the underlying run time environment. + +The library is optimized to align active periods of the control loop +to the set frequency (and optionally phase as well) by applying phase +locked loop design with a proportional phase detector and a low-pass +filter as an error amplifier. + +## Usage + +Sample usage pattern is demonstrated below. The code block denoted by the square +brackets will be executing 125.5 times a second, untul the value returned by the +`is_runnable()` routine is non-zero. Provided of course that the "logic" +does not take more than 0.01 second to run on average and that OS scheduler +plays the ball. + + #include + + extern int is_runnable(void); + + void + event_loop(void) + { + double frequency = 125.5; /* Hz */ + void *elp; + int i; + + prd = prdic_init(freq, 0.0); + assert(prd != NULL); + + while (is_runnable()) { + // [----------------------]; + // [Insert your logic here]; + // [----------------------]; + prdic_procrastinate(prd); + } + prdic_free(prd); + } + +## Story + +It came about having to write the same code over and over again in multiple +real-time projects, ranging from game [Digger](https://github.com/sobomax/digger), +RTP relay server [RTPProxy](https://github.com/sippy/rtpproxy). It has also +been recently utilized to replace a heavy-weight (and at the time not portable +to Python 3) "Twisted" framework in the +[Python Sippy B2BUA](https://github.com/sippy/b2bua) project. + +%package help +Summary: Development documents and examples for ElPeriodic +Provides: python3-ElPeriodic-doc +%description help +[![Build Status@GitHub](https://github.com/sobomax/libelperiodic/workflows/Main%20CI/badge.svg?branch=master)](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[![Build Status](https://travis-ci.com/sobomax/libelperiodic.svg?branch=master)](https://travis-ci.com/sobomax/libelperiodic) +[![Coverage Status](https://coveralls.io/repos/github/sobomax/libelperiodic/badge.svg?branch=master)](https://coveralls.io/github/sobomax/libelperiodic?branch=master) + +# libElPeriodic +Library to run frequent periodic tasks. + +## Principle of Operation +The libElPeriodic is designed to simplify writing control loops that are +expected to run at constant "tick" intervals with smallest possible overhead +and little or no support from the underlying run time environment. + +The library is optimized to align active periods of the control loop +to the set frequency (and optionally phase as well) by applying phase +locked loop design with a proportional phase detector and a low-pass +filter as an error amplifier. + +## Usage + +Sample usage pattern is demonstrated below. The code block denoted by the square +brackets will be executing 125.5 times a second, untul the value returned by the +`is_runnable()` routine is non-zero. Provided of course that the "logic" +does not take more than 0.01 second to run on average and that OS scheduler +plays the ball. + + #include + + extern int is_runnable(void); + + void + event_loop(void) + { + double frequency = 125.5; /* Hz */ + void *elp; + int i; + + prd = prdic_init(freq, 0.0); + assert(prd != NULL); + + while (is_runnable()) { + // [----------------------]; + // [Insert your logic here]; + // [----------------------]; + prdic_procrastinate(prd); + } + prdic_free(prd); + } + +## Story + +It came about having to write the same code over and over again in multiple +real-time projects, ranging from game [Digger](https://github.com/sobomax/digger), +RTP relay server [RTPProxy](https://github.com/sippy/rtpproxy). It has also +been recently utilized to replace a heavy-weight (and at the time not portable +to Python 3) "Twisted" framework in the +[Python Sippy B2BUA](https://github.com/sippy/b2bua) project. + +%prep +%autosetup -n ElPeriodic-1.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-ElPeriodic -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot - 1.2-1 +- Package Spec generated diff --git a/sources b/sources new file mode 100644 index 0000000..67d5c48 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +c51bd80fc54349248d541426927d9fb4 ElPeriodic-1.2.tar.gz -- cgit v1.2.3