summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-swiglpk.spec353
-rw-r--r--sources1
3 files changed, 355 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..6ac5d80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/swiglpk-5.0.8.tar.gz
diff --git a/python-swiglpk.spec b/python-swiglpk.spec
new file mode 100644
index 0000000..f61aa95
--- /dev/null
+++ b/python-swiglpk.spec
@@ -0,0 +1,353 @@
+%global _empty_manifest_terminate_build 0
+Name: python-swiglpk
+Version: 5.0.8
+Release: 1
+Summary: swiglpk - Simple swig bindings for the GNU Linear Programming Kit
+License: GPL v3
+URL: https://github.com/biosustain/swiglpk
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/1e/c5/19eb970b1ccbc048e76960cb608726b52dd4826eabebb335333a458154c9/swiglpk-5.0.8.tar.gz
+
+
+%description
+*Plain python bindings for the GNU Linear Programming Kit (GLPK)*
+|PyPI| |License| |Build Status|
+Why?
+~~~~
+*swiglpk* is not a high-level wrapper for GLPK (take a look at
+`optlang <https://github.com/biosustain/optlang>`__ if you are
+interested in a python-based mathematical programming language). It just
+provides plain vanilla `swig <http://www.swig.org/>`__ bindings to the
+underlying C library. In constrast to other GLPK wrappers for python
+(e.g. `PyGLPK <http://tfinley.net/software/pyglpk/>`__,
+`Python-GLPK <http://www.dcc.fc.up.pt/~jpp/code/python-glpk/>`__,
+`ctypes-glpk <https://code.google.com/p/ctypes-glpk/>`__,
+`ecyglpki <https://github.com/equaeghe/ecyglpki>`__ etc.) it is fairly
+version agnostic: it will try to guess the location of the glpk.h header
+file (using ``which glpsol``) and then compile the extension for your
+particular GLPK installation. Furthermore, swiglpk provides binary wheels
+for all major platforms, which are always up-to-date with the most
+recent GLPK version (swiglpk versions follow GLPK versioning in the major
+and minor version digits to emphasize that).
+Please show us some love by staring this repo if you find swiglpk useful!
+Installation
+~~~~~~~~~~~~
+ pip install swiglpk
+That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary.
+Example
+~~~~~~~
+Running the following (slightly adapted) example from the `GLPK
+manual <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__ ...
+ from swiglpk import *
+ ia = intArray(1+1000); ja = intArray(1+1000);
+ ar = doubleArray(1+1000);
+ lp = glp_create_prob();
+ glp_set_prob_name(lp, "sample");
+ glp_set_obj_dir(lp, GLP_MAX);
+ glp_add_rows(lp, 3);
+ glp_set_row_name(lp, 1, "p");
+ glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0);
+ glp_set_row_name(lp, 2, "q");
+ glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0);
+ glp_set_row_name(lp, 3, "r");
+ glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0);
+ glp_add_cols(lp, 3);
+ glp_set_col_name(lp, 1, "x1");
+ glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 1, 10.0);
+ glp_set_col_name(lp, 2, "x2");
+ glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 2, 6.0);
+ glp_set_col_name(lp, 3, "x3");
+ glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 3, 4.0);
+ ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1
+ ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1
+ ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1
+ ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10
+ ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2
+ ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4
+ ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2
+ ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5
+ ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6
+ glp_load_matrix(lp, 9, ia, ja, ar);
+ glp_simplex(lp, None);
+ Z = glp_get_obj_val(lp);
+ x1 = glp_get_col_prim(lp, 1);
+ x2 = glp_get_col_prim(lp, 2);
+ x3 = glp_get_col_prim(lp, 3);
+ print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3))
+ glp_delete_prob(lp);
+examples/example.py):
+ GLPK Simplex Optimizer, v4.52
+ 3 rows, 3 columns, 9 non-zeros
+ * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0)
+ * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0)
+ OPTIMAL LP SOLUTION FOUND
+ Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0
+Pretty ugly right? Consider using `optlang <https://github.com/biosustain/optlang>`__ for formulating and solving your optimization problems.
+Documentation
+~~~~~~~~~~~~~
+You can find documentation on GLPK's C API `here <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__
+Development
+~~~~~~~~~~~
+You still want to install it from source? Then you'll need to install the following
+dependencies first.
+- GLPK
+- swig
+If you're on OS X, swig and GLPK can easily be installed with
+`homebrew <http://brew.sh/>`__.
+ brew install swig glpk
+If you're using ubuntu linux, you can install swig and GLPK using
+``apt-get``.
+ apt-get install glpk-utils libglpk-dev swig
+If you're on Windows, you are on your own (checkout the `appveyor.yml <https://github.com/biosustain/swiglpk/blob/master/appveyor.yml>`_ config file for directions).
+Then clone the repo and run the following.
+ python setup.py install
+
+%package -n python3-swiglpk
+Summary: swiglpk - Simple swig bindings for the GNU Linear Programming Kit
+Provides: python-swiglpk
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+BuildRequires: python3-cffi
+BuildRequires: gcc
+BuildRequires: gdb
+%description -n python3-swiglpk
+*Plain python bindings for the GNU Linear Programming Kit (GLPK)*
+|PyPI| |License| |Build Status|
+Why?
+~~~~
+*swiglpk* is not a high-level wrapper for GLPK (take a look at
+`optlang <https://github.com/biosustain/optlang>`__ if you are
+interested in a python-based mathematical programming language). It just
+provides plain vanilla `swig <http://www.swig.org/>`__ bindings to the
+underlying C library. In constrast to other GLPK wrappers for python
+(e.g. `PyGLPK <http://tfinley.net/software/pyglpk/>`__,
+`Python-GLPK <http://www.dcc.fc.up.pt/~jpp/code/python-glpk/>`__,
+`ctypes-glpk <https://code.google.com/p/ctypes-glpk/>`__,
+`ecyglpki <https://github.com/equaeghe/ecyglpki>`__ etc.) it is fairly
+version agnostic: it will try to guess the location of the glpk.h header
+file (using ``which glpsol``) and then compile the extension for your
+particular GLPK installation. Furthermore, swiglpk provides binary wheels
+for all major platforms, which are always up-to-date with the most
+recent GLPK version (swiglpk versions follow GLPK versioning in the major
+and minor version digits to emphasize that).
+Please show us some love by staring this repo if you find swiglpk useful!
+Installation
+~~~~~~~~~~~~
+ pip install swiglpk
+That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary.
+Example
+~~~~~~~
+Running the following (slightly adapted) example from the `GLPK
+manual <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__ ...
+ from swiglpk import *
+ ia = intArray(1+1000); ja = intArray(1+1000);
+ ar = doubleArray(1+1000);
+ lp = glp_create_prob();
+ glp_set_prob_name(lp, "sample");
+ glp_set_obj_dir(lp, GLP_MAX);
+ glp_add_rows(lp, 3);
+ glp_set_row_name(lp, 1, "p");
+ glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0);
+ glp_set_row_name(lp, 2, "q");
+ glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0);
+ glp_set_row_name(lp, 3, "r");
+ glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0);
+ glp_add_cols(lp, 3);
+ glp_set_col_name(lp, 1, "x1");
+ glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 1, 10.0);
+ glp_set_col_name(lp, 2, "x2");
+ glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 2, 6.0);
+ glp_set_col_name(lp, 3, "x3");
+ glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 3, 4.0);
+ ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1
+ ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1
+ ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1
+ ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10
+ ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2
+ ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4
+ ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2
+ ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5
+ ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6
+ glp_load_matrix(lp, 9, ia, ja, ar);
+ glp_simplex(lp, None);
+ Z = glp_get_obj_val(lp);
+ x1 = glp_get_col_prim(lp, 1);
+ x2 = glp_get_col_prim(lp, 2);
+ x3 = glp_get_col_prim(lp, 3);
+ print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3))
+ glp_delete_prob(lp);
+examples/example.py):
+ GLPK Simplex Optimizer, v4.52
+ 3 rows, 3 columns, 9 non-zeros
+ * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0)
+ * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0)
+ OPTIMAL LP SOLUTION FOUND
+ Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0
+Pretty ugly right? Consider using `optlang <https://github.com/biosustain/optlang>`__ for formulating and solving your optimization problems.
+Documentation
+~~~~~~~~~~~~~
+You can find documentation on GLPK's C API `here <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__
+Development
+~~~~~~~~~~~
+You still want to install it from source? Then you'll need to install the following
+dependencies first.
+- GLPK
+- swig
+If you're on OS X, swig and GLPK can easily be installed with
+`homebrew <http://brew.sh/>`__.
+ brew install swig glpk
+If you're using ubuntu linux, you can install swig and GLPK using
+``apt-get``.
+ apt-get install glpk-utils libglpk-dev swig
+If you're on Windows, you are on your own (checkout the `appveyor.yml <https://github.com/biosustain/swiglpk/blob/master/appveyor.yml>`_ config file for directions).
+Then clone the repo and run the following.
+ python setup.py install
+
+%package help
+Summary: Development documents and examples for swiglpk
+Provides: python3-swiglpk-doc
+%description help
+*Plain python bindings for the GNU Linear Programming Kit (GLPK)*
+|PyPI| |License| |Build Status|
+Why?
+~~~~
+*swiglpk* is not a high-level wrapper for GLPK (take a look at
+`optlang <https://github.com/biosustain/optlang>`__ if you are
+interested in a python-based mathematical programming language). It just
+provides plain vanilla `swig <http://www.swig.org/>`__ bindings to the
+underlying C library. In constrast to other GLPK wrappers for python
+(e.g. `PyGLPK <http://tfinley.net/software/pyglpk/>`__,
+`Python-GLPK <http://www.dcc.fc.up.pt/~jpp/code/python-glpk/>`__,
+`ctypes-glpk <https://code.google.com/p/ctypes-glpk/>`__,
+`ecyglpki <https://github.com/equaeghe/ecyglpki>`__ etc.) it is fairly
+version agnostic: it will try to guess the location of the glpk.h header
+file (using ``which glpsol``) and then compile the extension for your
+particular GLPK installation. Furthermore, swiglpk provides binary wheels
+for all major platforms, which are always up-to-date with the most
+recent GLPK version (swiglpk versions follow GLPK versioning in the major
+and minor version digits to emphasize that).
+Please show us some love by staring this repo if you find swiglpk useful!
+Installation
+~~~~~~~~~~~~
+ pip install swiglpk
+That's it. swiglpk comes with binary wheels for Windows, Mac, and Linux. No installation of third-party dependencies necessary.
+Example
+~~~~~~~
+Running the following (slightly adapted) example from the `GLPK
+manual <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__ ...
+ from swiglpk import *
+ ia = intArray(1+1000); ja = intArray(1+1000);
+ ar = doubleArray(1+1000);
+ lp = glp_create_prob();
+ glp_set_prob_name(lp, "sample");
+ glp_set_obj_dir(lp, GLP_MAX);
+ glp_add_rows(lp, 3);
+ glp_set_row_name(lp, 1, "p");
+ glp_set_row_bnds(lp, 1, GLP_UP, 0.0, 100.0);
+ glp_set_row_name(lp, 2, "q");
+ glp_set_row_bnds(lp, 2, GLP_UP, 0.0, 600.0);
+ glp_set_row_name(lp, 3, "r");
+ glp_set_row_bnds(lp, 3, GLP_UP, 0.0, 300.0);
+ glp_add_cols(lp, 3);
+ glp_set_col_name(lp, 1, "x1");
+ glp_set_col_bnds(lp, 1, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 1, 10.0);
+ glp_set_col_name(lp, 2, "x2");
+ glp_set_col_bnds(lp, 2, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 2, 6.0);
+ glp_set_col_name(lp, 3, "x3");
+ glp_set_col_bnds(lp, 3, GLP_LO, 0.0, 0.0);
+ glp_set_obj_coef(lp, 3, 4.0);
+ ia[1] = 1; ja[1] = 1; ar[1] = 1.0; # a[1,1] = 1
+ ia[2] = 1; ja[2] = 2; ar[2] = 1.0; # a[1,2] = 1
+ ia[3] = 1; ja[3] = 3; ar[3] = 1.0; # a[1,3] = 1
+ ia[4] = 2; ja[4] = 1; ar[4] = 10.0; # a[2,1] = 10
+ ia[5] = 3; ja[5] = 1; ar[5] = 2.0; # a[3,1] = 2
+ ia[6] = 2; ja[6] = 2; ar[6] = 4.0; # a[2,2] = 4
+ ia[7] = 3; ja[7] = 2; ar[7] = 2.0; # a[3,2] = 2
+ ia[8] = 2; ja[8] = 3; ar[8] = 5.0; # a[2,3] = 5
+ ia[9] = 3; ja[9] = 3; ar[9] = 6.0; # a[3,3] = 6
+ glp_load_matrix(lp, 9, ia, ja, ar);
+ glp_simplex(lp, None);
+ Z = glp_get_obj_val(lp);
+ x1 = glp_get_col_prim(lp, 1);
+ x2 = glp_get_col_prim(lp, 2);
+ x3 = glp_get_col_prim(lp, 3);
+ print("\nZ = %g; x1 = %g; x2 = %g; x3 = %g\n" % (Z, x1, x2, x3))
+ glp_delete_prob(lp);
+examples/example.py):
+ GLPK Simplex Optimizer, v4.52
+ 3 rows, 3 columns, 9 non-zeros
+ * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0)
+ * 2: obj = 7.333333333e+02 infeas = 0.000e+00 (0)
+ OPTIMAL LP SOLUTION FOUND
+ Z = 733.333; x1 = 33.3333; x2 = 66.6667; x3 = 0
+Pretty ugly right? Consider using `optlang <https://github.com/biosustain/optlang>`__ for formulating and solving your optimization problems.
+Documentation
+~~~~~~~~~~~~~
+You can find documentation on GLPK's C API `here <http://kam.mff.cuni.cz/~elias/glpk.pdf>`__
+Development
+~~~~~~~~~~~
+You still want to install it from source? Then you'll need to install the following
+dependencies first.
+- GLPK
+- swig
+If you're on OS X, swig and GLPK can easily be installed with
+`homebrew <http://brew.sh/>`__.
+ brew install swig glpk
+If you're using ubuntu linux, you can install swig and GLPK using
+``apt-get``.
+ apt-get install glpk-utils libglpk-dev swig
+If you're on Windows, you are on your own (checkout the `appveyor.yml <https://github.com/biosustain/swiglpk/blob/master/appveyor.yml>`_ config file for directions).
+Then clone the repo and run the following.
+ python setup.py install
+
+%prep
+%autosetup -n swiglpk-5.0.8
+
+%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-swiglpk -f filelist.lst
+%dir %{python3_sitearch}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 5.0.8-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..b175e45
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+bd3792d104af594c668905562caec800 swiglpk-5.0.8.tar.gz