diff options
Diffstat (limited to 'python-elperiodic.spec')
| -rw-r--r-- | python-elperiodic.spec | 237 |
1 files changed, 237 insertions, 0 deletions
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 +[](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[](https://travis-ci.com/sobomax/libelperiodic) +[](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 <elperiodic.h> + + 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 +[](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[](https://travis-ci.com/sobomax/libelperiodic) +[](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 <elperiodic.h> + + 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 +[](https://github.com/sobomax/libelperiodic/actions?query=branch%3Amaster++) +[](https://travis-ci.com/sobomax/libelperiodic) +[](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 <elperiodic.h> + + 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 <Python_Bot@openeuler.org> - 1.2-1 +- Package Spec generated |
