summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-03-09 16:31:47 +0000
committerCoprDistGit <infra@openeuler.org>2023-03-09 16:31:47 +0000
commita60c0864c6e7822dc06990ac0cfd614111c1164c (patch)
tree44653e01db7cde6387a61c419881dd3478d457fc
parent21fdb08997749b9c0ac536a79c20bbff2cce0cca (diff)
automatic import of python-rmol
-rw-r--r--.gitignore1
-rw-r--r--python-rmol.spec645
-rw-r--r--sources1
3 files changed, 647 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..da573a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/rmol-1.0.6.post1.tar.gz
diff --git a/python-rmol.spec b/python-rmol.spec
new file mode 100644
index 0000000..484f326
--- /dev/null
+++ b/python-rmol.spec
@@ -0,0 +1,645 @@
+%global _empty_manifest_terminate_build 0
+Name: python-rmol
+Version: 1.0.6.post1
+Release: 1
+Summary: Simple Python wrapper for RMOL
+License: MIT
+URL: https://github.com/airsim/rmol
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/16/d3/f1c69e6f91e2a6cd6fd87bfa9b75b633674b7f2ecf681e17bc59f960591d/rmol-1.0.6.post1.tar.gz
+BuildArch: noarch
+
+
+%description
+# Summary
+RMOL is a C++ library of Revenue Management and Optimisation classes
+and functions. Typically, that library may be used by service providers
+(_e.g._, airlines offering flight seats, hotels offering rooms, rental car
+companies offering rental days, broadcasting company offering advertisement
+slots, theaters offering seats, _etc_) to help in optimising their revenues
+from seat capacities.
+Most of the algorithms implemented are public and documented in the
+following book:
+The Theory and practice of Revenue Management, by Kalyan T. Talluri and
+Garrett J. van Ryzin, Kluwer Academic Publishers, 2004, ISBN 1-4020-7701-7
+RMOL makes an extensive use of existing open-source libraries for
+increased functionality, speed and accuracy. In particular the
+Boost (C++ Standard Extensions: http://www.boost.org) library is used.
+RMOL is the one of the components of the Travel Market Simulator
+(https://travel-sim.org). However, it may be used in a
+stand-alone mode.
+# Installation
+## On Fedora/CentOS/RedHat distribution
+Just use DNF:
+```bash
+$ dnf -y install rmol-devel rmol-doc
+```
+You can also get the RPM packages (which may work on Linux
+distributions like Suse and Mandriva) from the Fedora repository
+(_e.g._, for Fedora 32,
+https://fr2.rpmfind.net/linux/RPM/fedora/32/x86_64/)
+## Building the library and test binary from Git repository
+The Git repository may be cloned as following:
+```bash
+$ git clone git@github.com:airsim/rmol.git rmolgit # through SSH
+$ git clone https://github.com/airsim/rmol.git # if the firewall filters SSH
+$ cd rmolgit
+```
+Then, you need the following packages (Fedora/RedHat/CentOS names here,
+but names may vary according to distributions):
+* `cmake`
+* `gcc-c++`
+* `boost-devel` / `libboost-dev`
+* `python-devel` / `python-dev`
+* `gettext-devel` / `gettext`
+* `sqlite3-devel` / `libsqlite3-dev`
+* `readline-devel` / `libreadline-dev`
+* `libncurses5-devel`
+* `soci-mysql-devel`, `soci-sqlite3-devel`
+* `stdair-devel` / `libstdair-dev`
+* `airrac-devel` / `libairrac-dev`
+* `doxygen`, `ghostscript`, `graphviz`
+* `tetex-latex` (optional)
+* `rpm-build` (optional)
+## Building the library and test binary from the tarball
+The latest stable source tarball (`rmol*.tar.gz` or `.bz2`) can be
+found on GitHub: http://github.com/airsim/rmol/releases, _e.g._,
+https://github.com/airsim/rmol/archive/rmol-1.00.6.tar.gz
+As RMOL depends on other
+[Travel Market Simulator (TvlSim/AirSim)](https://github.com/airsim/)
+modules, more specifically [StdAir](https://github.com/airsim/stdair)
+and [AirRAC](https://github.com/airsim/airrac), it may be
+convenient to use the
+[MetaSim project](https://github.com/airsim/metasim),
+which pulls at once all the components of TvlSim in the same place,
+and then orchestrates the dependencies for the builds, installations
+and use of components.
+If MetaSim is not used, in order to customise the following to your
+environment, you can alter the path to the installation directory:
+```bash
+export INSTALL_BASEDIR="${HOME}/dev/deliveries"
+export RMOL_VER="1.00.6"
+if [ -d /usr/lib64 ]; then LIBSUFFIX="64"; fi
+export LIBSUFFIX_4_CMAKE="-DLIB_SUFFIX=$LIBSUFFIX"
+```
+Then, as usual:
+* To configure the project, type something like:
+```bash
+ mkdir build && cd build
+ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_BASEDIR}/rmol-$RMOL_VER \
+ -DWITH_STDAIR_PREFIX=${INSTALL_BASEDIR}/stdair-stable \
+ -DWITH_AIRRAC_PREFIX=${INSTALL_BASEDIR}/airrac-stable \
+ -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_TEST:BOOL=ON -DINSTALL_DOC:BOOL=ON \
+ -DRUN_GCOV:BOOL=OFF ${LIBSUFFIX_4_CMAKE} ..
+ ${LIBSUFFIX_4_CMAKE} ..
+```
+* To build the project, type:
+```bash
+ make
+```
+* To test the project, type:
+```bash
+ make check
+```
+* To install the library (`librmol*.so*`) and the binary (`rmol`),
+```bash
+ make install
+ cd ${INSTALL_BASEDIR}
+ rm -f rmol-stable && ln -s rmol-${RMOL_VER} rmol-stable
+ cd -
+```
+* To package the source files, type:
+```bash
+ make dist
+```
+* To package the binary and the (HTML and PDF) documentation:
+```bash
+ make package
+```
+* To browse the (just installed, if enabled) HTML documentation:
+```bash
+ open file://${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/index.html
+```
+* To browse the (just installed, if enabled) PDF documentation:
+```bash
+ open ${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/refman.pdf
+```
+* To run the local binary version:
+```
+ ./rmol/rmol -b
+```
+* To run the installed version:
+```bash
+ ${INSTALL_BASEDIR}/rmol-$RMOL_VER/bin/rmol -b
+```
+# Python extension
+The way to interact with a C++-based Python extension is extensively described
+in the [OpenTREP project](https://github.com/trep/opentrep).
+Only a quick start is given here.
+## Python dependencies
+* Install Python dependencies:
+```bash
+$ python3 -m pip install -U pip
+$ python3 -m pip install -U wheel
+$ python3 -m pip install -U build setuptools scikit-build tox pytest sphinx twine
+```
+## Build the Python extension
+* Build the Python extension with SciKit-Build:
+```bash
+$ rm -rf _skbuild/ dist/ MANIFEST_
+$ python3 setup.py --build-type=Debug build sdist bdist_wheel
+```
+* The Python artifacts should be similar to:
+```bash
+$ ls -lFh dist/
+total 5872
+-rw-r--r-- 1 user staff 2.0M Jun 1 15:49 rmol-1.0.5.post1-cp38-cp38-macosx_10_15_x86_64.whl
+-rw-r--r-- 1 user staff 834K Jun 1 15:49 rmol-1.0.5.post1.tar.gz
+```
+* Updload the RMOL Python extension onto PyPi:
+```bash
+$ twine upload -u __token__ --repository-url https://upload.pypi.org/legacy/ dist/*
+```
+* The RMOL Python artifacts may then be browsed on PyyPI:
+ https://pypi.org/project/rmol/
+## Use the Python extension
+* Launch the Python interpreter:
+```bash
+$ export PYTHONPATH=${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib:${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib/python3.8/site-packages/pyrmol
+$ DYLD_INSERT_LIBRARIES=/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib ASAN_OPTIONS=detect_container_overflow=0 /usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/Resources/Python.app/Contents/MacOS/Python
+```
+* Within the Python interpreter, import, initialize
+ and use the RMOL Python extension:
+```python
+Python 3.8.3 (default, May 27 2020, 20:54:22)
+[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import pyrmol
+>>> rmolLibrary = pyrmol.RMOLer()
+>>> rmolLibrary.init('rmol.log', 40, 1, '')
+True
+>>> rmolLibrary.rmol(100, 10, 40.0)
+'RMOL has completed the generation of the booking requests. See the log file for more details.\n'
+>>> quit()
+```
+* Back to the Shell session, look for the results in the RMOL log file:
+```bash
+$ cat rmol.log
+Python wrapper initialisation
+[D]${STDAIR_PREFIX}/stdair/command/CmdBomManager.cpp:52: StdAir is building the BOM tree from built-in specifications.
+Python wrapper initialised
+Optimisation for 100 draws, capacity of 40, and with the following method: 10
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:491: Optimisation by Monte-Carlo performed in 0.000321
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:492: Result:
+Yield: 100.00, Protection: 70.48, Booking limit: 100.00
+Yield: 70.00, Protection: 156.19, Booking limit: 29.52
+Yield: 42.00, Protection: -0.00, Booking limit: -56.19
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:505: Bid-Price Vector (BPV): 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 99.00, 99.00, 99.00, 99.00, 99.00, 98.00, 98.00, 97.00, 96.00, 96.00, 96.00, 96.00, 96.00, 95.00, 94.00, 94.00, 90.00, 90.00, 89.00, 88.00, 86.00, 84.00, 82.00, 80.00, 80.00, 79.00, 77.00, 76.00, 75.00, 72.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00
+End of the optimisation.
+RMOL output:
+```
+* Of course, a few more features could be added to the Python extension API,
+ in order not to have to leave the Python interpreter to interact with the
+ results of invoking the optimizer. Do not hesitate to contribute
+ through [Pull Requests](https://github.com/airsim/rmol/pulls), which are
+ always welcome!
+
+%package -n python3-rmol
+Summary: Simple Python wrapper for RMOL
+Provides: python-rmol
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-rmol
+# Summary
+RMOL is a C++ library of Revenue Management and Optimisation classes
+and functions. Typically, that library may be used by service providers
+(_e.g._, airlines offering flight seats, hotels offering rooms, rental car
+companies offering rental days, broadcasting company offering advertisement
+slots, theaters offering seats, _etc_) to help in optimising their revenues
+from seat capacities.
+Most of the algorithms implemented are public and documented in the
+following book:
+The Theory and practice of Revenue Management, by Kalyan T. Talluri and
+Garrett J. van Ryzin, Kluwer Academic Publishers, 2004, ISBN 1-4020-7701-7
+RMOL makes an extensive use of existing open-source libraries for
+increased functionality, speed and accuracy. In particular the
+Boost (C++ Standard Extensions: http://www.boost.org) library is used.
+RMOL is the one of the components of the Travel Market Simulator
+(https://travel-sim.org). However, it may be used in a
+stand-alone mode.
+# Installation
+## On Fedora/CentOS/RedHat distribution
+Just use DNF:
+```bash
+$ dnf -y install rmol-devel rmol-doc
+```
+You can also get the RPM packages (which may work on Linux
+distributions like Suse and Mandriva) from the Fedora repository
+(_e.g._, for Fedora 32,
+https://fr2.rpmfind.net/linux/RPM/fedora/32/x86_64/)
+## Building the library and test binary from Git repository
+The Git repository may be cloned as following:
+```bash
+$ git clone git@github.com:airsim/rmol.git rmolgit # through SSH
+$ git clone https://github.com/airsim/rmol.git # if the firewall filters SSH
+$ cd rmolgit
+```
+Then, you need the following packages (Fedora/RedHat/CentOS names here,
+but names may vary according to distributions):
+* `cmake`
+* `gcc-c++`
+* `boost-devel` / `libboost-dev`
+* `python-devel` / `python-dev`
+* `gettext-devel` / `gettext`
+* `sqlite3-devel` / `libsqlite3-dev`
+* `readline-devel` / `libreadline-dev`
+* `libncurses5-devel`
+* `soci-mysql-devel`, `soci-sqlite3-devel`
+* `stdair-devel` / `libstdair-dev`
+* `airrac-devel` / `libairrac-dev`
+* `doxygen`, `ghostscript`, `graphviz`
+* `tetex-latex` (optional)
+* `rpm-build` (optional)
+## Building the library and test binary from the tarball
+The latest stable source tarball (`rmol*.tar.gz` or `.bz2`) can be
+found on GitHub: http://github.com/airsim/rmol/releases, _e.g._,
+https://github.com/airsim/rmol/archive/rmol-1.00.6.tar.gz
+As RMOL depends on other
+[Travel Market Simulator (TvlSim/AirSim)](https://github.com/airsim/)
+modules, more specifically [StdAir](https://github.com/airsim/stdair)
+and [AirRAC](https://github.com/airsim/airrac), it may be
+convenient to use the
+[MetaSim project](https://github.com/airsim/metasim),
+which pulls at once all the components of TvlSim in the same place,
+and then orchestrates the dependencies for the builds, installations
+and use of components.
+If MetaSim is not used, in order to customise the following to your
+environment, you can alter the path to the installation directory:
+```bash
+export INSTALL_BASEDIR="${HOME}/dev/deliveries"
+export RMOL_VER="1.00.6"
+if [ -d /usr/lib64 ]; then LIBSUFFIX="64"; fi
+export LIBSUFFIX_4_CMAKE="-DLIB_SUFFIX=$LIBSUFFIX"
+```
+Then, as usual:
+* To configure the project, type something like:
+```bash
+ mkdir build && cd build
+ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_BASEDIR}/rmol-$RMOL_VER \
+ -DWITH_STDAIR_PREFIX=${INSTALL_BASEDIR}/stdair-stable \
+ -DWITH_AIRRAC_PREFIX=${INSTALL_BASEDIR}/airrac-stable \
+ -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_TEST:BOOL=ON -DINSTALL_DOC:BOOL=ON \
+ -DRUN_GCOV:BOOL=OFF ${LIBSUFFIX_4_CMAKE} ..
+ ${LIBSUFFIX_4_CMAKE} ..
+```
+* To build the project, type:
+```bash
+ make
+```
+* To test the project, type:
+```bash
+ make check
+```
+* To install the library (`librmol*.so*`) and the binary (`rmol`),
+```bash
+ make install
+ cd ${INSTALL_BASEDIR}
+ rm -f rmol-stable && ln -s rmol-${RMOL_VER} rmol-stable
+ cd -
+```
+* To package the source files, type:
+```bash
+ make dist
+```
+* To package the binary and the (HTML and PDF) documentation:
+```bash
+ make package
+```
+* To browse the (just installed, if enabled) HTML documentation:
+```bash
+ open file://${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/index.html
+```
+* To browse the (just installed, if enabled) PDF documentation:
+```bash
+ open ${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/refman.pdf
+```
+* To run the local binary version:
+```
+ ./rmol/rmol -b
+```
+* To run the installed version:
+```bash
+ ${INSTALL_BASEDIR}/rmol-$RMOL_VER/bin/rmol -b
+```
+# Python extension
+The way to interact with a C++-based Python extension is extensively described
+in the [OpenTREP project](https://github.com/trep/opentrep).
+Only a quick start is given here.
+## Python dependencies
+* Install Python dependencies:
+```bash
+$ python3 -m pip install -U pip
+$ python3 -m pip install -U wheel
+$ python3 -m pip install -U build setuptools scikit-build tox pytest sphinx twine
+```
+## Build the Python extension
+* Build the Python extension with SciKit-Build:
+```bash
+$ rm -rf _skbuild/ dist/ MANIFEST_
+$ python3 setup.py --build-type=Debug build sdist bdist_wheel
+```
+* The Python artifacts should be similar to:
+```bash
+$ ls -lFh dist/
+total 5872
+-rw-r--r-- 1 user staff 2.0M Jun 1 15:49 rmol-1.0.5.post1-cp38-cp38-macosx_10_15_x86_64.whl
+-rw-r--r-- 1 user staff 834K Jun 1 15:49 rmol-1.0.5.post1.tar.gz
+```
+* Updload the RMOL Python extension onto PyPi:
+```bash
+$ twine upload -u __token__ --repository-url https://upload.pypi.org/legacy/ dist/*
+```
+* The RMOL Python artifacts may then be browsed on PyyPI:
+ https://pypi.org/project/rmol/
+## Use the Python extension
+* Launch the Python interpreter:
+```bash
+$ export PYTHONPATH=${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib:${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib/python3.8/site-packages/pyrmol
+$ DYLD_INSERT_LIBRARIES=/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib ASAN_OPTIONS=detect_container_overflow=0 /usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/Resources/Python.app/Contents/MacOS/Python
+```
+* Within the Python interpreter, import, initialize
+ and use the RMOL Python extension:
+```python
+Python 3.8.3 (default, May 27 2020, 20:54:22)
+[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import pyrmol
+>>> rmolLibrary = pyrmol.RMOLer()
+>>> rmolLibrary.init('rmol.log', 40, 1, '')
+True
+>>> rmolLibrary.rmol(100, 10, 40.0)
+'RMOL has completed the generation of the booking requests. See the log file for more details.\n'
+>>> quit()
+```
+* Back to the Shell session, look for the results in the RMOL log file:
+```bash
+$ cat rmol.log
+Python wrapper initialisation
+[D]${STDAIR_PREFIX}/stdair/command/CmdBomManager.cpp:52: StdAir is building the BOM tree from built-in specifications.
+Python wrapper initialised
+Optimisation for 100 draws, capacity of 40, and with the following method: 10
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:491: Optimisation by Monte-Carlo performed in 0.000321
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:492: Result:
+Yield: 100.00, Protection: 70.48, Booking limit: 100.00
+Yield: 70.00, Protection: 156.19, Booking limit: 29.52
+Yield: 42.00, Protection: -0.00, Booking limit: -56.19
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:505: Bid-Price Vector (BPV): 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 99.00, 99.00, 99.00, 99.00, 99.00, 98.00, 98.00, 97.00, 96.00, 96.00, 96.00, 96.00, 96.00, 95.00, 94.00, 94.00, 90.00, 90.00, 89.00, 88.00, 86.00, 84.00, 82.00, 80.00, 80.00, 79.00, 77.00, 76.00, 75.00, 72.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00
+End of the optimisation.
+RMOL output:
+```
+* Of course, a few more features could be added to the Python extension API,
+ in order not to have to leave the Python interpreter to interact with the
+ results of invoking the optimizer. Do not hesitate to contribute
+ through [Pull Requests](https://github.com/airsim/rmol/pulls), which are
+ always welcome!
+
+%package help
+Summary: Development documents and examples for rmol
+Provides: python3-rmol-doc
+%description help
+# Summary
+RMOL is a C++ library of Revenue Management and Optimisation classes
+and functions. Typically, that library may be used by service providers
+(_e.g._, airlines offering flight seats, hotels offering rooms, rental car
+companies offering rental days, broadcasting company offering advertisement
+slots, theaters offering seats, _etc_) to help in optimising their revenues
+from seat capacities.
+Most of the algorithms implemented are public and documented in the
+following book:
+The Theory and practice of Revenue Management, by Kalyan T. Talluri and
+Garrett J. van Ryzin, Kluwer Academic Publishers, 2004, ISBN 1-4020-7701-7
+RMOL makes an extensive use of existing open-source libraries for
+increased functionality, speed and accuracy. In particular the
+Boost (C++ Standard Extensions: http://www.boost.org) library is used.
+RMOL is the one of the components of the Travel Market Simulator
+(https://travel-sim.org). However, it may be used in a
+stand-alone mode.
+# Installation
+## On Fedora/CentOS/RedHat distribution
+Just use DNF:
+```bash
+$ dnf -y install rmol-devel rmol-doc
+```
+You can also get the RPM packages (which may work on Linux
+distributions like Suse and Mandriva) from the Fedora repository
+(_e.g._, for Fedora 32,
+https://fr2.rpmfind.net/linux/RPM/fedora/32/x86_64/)
+## Building the library and test binary from Git repository
+The Git repository may be cloned as following:
+```bash
+$ git clone git@github.com:airsim/rmol.git rmolgit # through SSH
+$ git clone https://github.com/airsim/rmol.git # if the firewall filters SSH
+$ cd rmolgit
+```
+Then, you need the following packages (Fedora/RedHat/CentOS names here,
+but names may vary according to distributions):
+* `cmake`
+* `gcc-c++`
+* `boost-devel` / `libboost-dev`
+* `python-devel` / `python-dev`
+* `gettext-devel` / `gettext`
+* `sqlite3-devel` / `libsqlite3-dev`
+* `readline-devel` / `libreadline-dev`
+* `libncurses5-devel`
+* `soci-mysql-devel`, `soci-sqlite3-devel`
+* `stdair-devel` / `libstdair-dev`
+* `airrac-devel` / `libairrac-dev`
+* `doxygen`, `ghostscript`, `graphviz`
+* `tetex-latex` (optional)
+* `rpm-build` (optional)
+## Building the library and test binary from the tarball
+The latest stable source tarball (`rmol*.tar.gz` or `.bz2`) can be
+found on GitHub: http://github.com/airsim/rmol/releases, _e.g._,
+https://github.com/airsim/rmol/archive/rmol-1.00.6.tar.gz
+As RMOL depends on other
+[Travel Market Simulator (TvlSim/AirSim)](https://github.com/airsim/)
+modules, more specifically [StdAir](https://github.com/airsim/stdair)
+and [AirRAC](https://github.com/airsim/airrac), it may be
+convenient to use the
+[MetaSim project](https://github.com/airsim/metasim),
+which pulls at once all the components of TvlSim in the same place,
+and then orchestrates the dependencies for the builds, installations
+and use of components.
+If MetaSim is not used, in order to customise the following to your
+environment, you can alter the path to the installation directory:
+```bash
+export INSTALL_BASEDIR="${HOME}/dev/deliveries"
+export RMOL_VER="1.00.6"
+if [ -d /usr/lib64 ]; then LIBSUFFIX="64"; fi
+export LIBSUFFIX_4_CMAKE="-DLIB_SUFFIX=$LIBSUFFIX"
+```
+Then, as usual:
+* To configure the project, type something like:
+```bash
+ mkdir build && cd build
+ cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_BASEDIR}/rmol-$RMOL_VER \
+ -DWITH_STDAIR_PREFIX=${INSTALL_BASEDIR}/stdair-stable \
+ -DWITH_AIRRAC_PREFIX=${INSTALL_BASEDIR}/airrac-stable \
+ -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_TEST:BOOL=ON -DINSTALL_DOC:BOOL=ON \
+ -DRUN_GCOV:BOOL=OFF ${LIBSUFFIX_4_CMAKE} ..
+ ${LIBSUFFIX_4_CMAKE} ..
+```
+* To build the project, type:
+```bash
+ make
+```
+* To test the project, type:
+```bash
+ make check
+```
+* To install the library (`librmol*.so*`) and the binary (`rmol`),
+```bash
+ make install
+ cd ${INSTALL_BASEDIR}
+ rm -f rmol-stable && ln -s rmol-${RMOL_VER} rmol-stable
+ cd -
+```
+* To package the source files, type:
+```bash
+ make dist
+```
+* To package the binary and the (HTML and PDF) documentation:
+```bash
+ make package
+```
+* To browse the (just installed, if enabled) HTML documentation:
+```bash
+ open file://${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/index.html
+```
+* To browse the (just installed, if enabled) PDF documentation:
+```bash
+ open ${INSTALL_BASEDIR}/rmol-${RMOL_VER}/share/doc/rmol/html/refman.pdf
+```
+* To run the local binary version:
+```
+ ./rmol/rmol -b
+```
+* To run the installed version:
+```bash
+ ${INSTALL_BASEDIR}/rmol-$RMOL_VER/bin/rmol -b
+```
+# Python extension
+The way to interact with a C++-based Python extension is extensively described
+in the [OpenTREP project](https://github.com/trep/opentrep).
+Only a quick start is given here.
+## Python dependencies
+* Install Python dependencies:
+```bash
+$ python3 -m pip install -U pip
+$ python3 -m pip install -U wheel
+$ python3 -m pip install -U build setuptools scikit-build tox pytest sphinx twine
+```
+## Build the Python extension
+* Build the Python extension with SciKit-Build:
+```bash
+$ rm -rf _skbuild/ dist/ MANIFEST_
+$ python3 setup.py --build-type=Debug build sdist bdist_wheel
+```
+* The Python artifacts should be similar to:
+```bash
+$ ls -lFh dist/
+total 5872
+-rw-r--r-- 1 user staff 2.0M Jun 1 15:49 rmol-1.0.5.post1-cp38-cp38-macosx_10_15_x86_64.whl
+-rw-r--r-- 1 user staff 834K Jun 1 15:49 rmol-1.0.5.post1.tar.gz
+```
+* Updload the RMOL Python extension onto PyPi:
+```bash
+$ twine upload -u __token__ --repository-url https://upload.pypi.org/legacy/ dist/*
+```
+* The RMOL Python artifacts may then be browsed on PyyPI:
+ https://pypi.org/project/rmol/
+## Use the Python extension
+* Launch the Python interpreter:
+```bash
+$ export PYTHONPATH=${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib:${PWD}/_skbuild/macosx-10.15-x86_64-3.8/cmake-install/lib/python3.8/site-packages/pyrmol
+$ DYLD_INSERT_LIBRARIES=/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib ASAN_OPTIONS=detect_container_overflow=0 /usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/Resources/Python.app/Contents/MacOS/Python
+```
+* Within the Python interpreter, import, initialize
+ and use the RMOL Python extension:
+```python
+Python 3.8.3 (default, May 27 2020, 20:54:22)
+[Clang 11.0.3 (clang-1103.0.32.59)] on darwin
+Type "help", "copyright", "credits" or "license" for more information.
+>>> import pyrmol
+>>> rmolLibrary = pyrmol.RMOLer()
+>>> rmolLibrary.init('rmol.log', 40, 1, '')
+True
+>>> rmolLibrary.rmol(100, 10, 40.0)
+'RMOL has completed the generation of the booking requests. See the log file for more details.\n'
+>>> quit()
+```
+* Back to the Shell session, look for the results in the RMOL log file:
+```bash
+$ cat rmol.log
+Python wrapper initialisation
+[D]${STDAIR_PREFIX}/stdair/command/CmdBomManager.cpp:52: StdAir is building the BOM tree from built-in specifications.
+Python wrapper initialised
+Optimisation for 100 draws, capacity of 40, and with the following method: 10
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:491: Optimisation by Monte-Carlo performed in 0.000321
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:492: Result:
+Yield: 100.00, Protection: 70.48, Booking limit: 100.00
+Yield: 70.00, Protection: 156.19, Booking limit: 29.52
+Yield: 42.00, Protection: -0.00, Booking limit: -56.19
+[D]${RMOL_PREFIX}/rmol/service/RMOL_Service.cpp:505: Bid-Price Vector (BPV): 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 100.00, 99.00, 99.00, 99.00, 99.00, 99.00, 98.00, 98.00, 97.00, 96.00, 96.00, 96.00, 96.00, 96.00, 95.00, 94.00, 94.00, 90.00, 90.00, 89.00, 88.00, 86.00, 84.00, 82.00, 80.00, 80.00, 79.00, 77.00, 76.00, 75.00, 72.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00, 70.00
+End of the optimisation.
+RMOL output:
+```
+* Of course, a few more features could be added to the Python extension API,
+ in order not to have to leave the Python interpreter to interact with the
+ results of invoking the optimizer. Do not hesitate to contribute
+ through [Pull Requests](https://github.com/airsim/rmol/pulls), which are
+ always welcome!
+
+%prep
+%autosetup -n rmol-1.0.6.post1
+
+%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-rmol -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 1.0.6.post1-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..ba212f2
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+2c1f20ac00f6f8a50cbfcecd1ffbfbf0 rmol-1.0.6.post1.tar.gz