Update to latest git
Port to python 3
This commit is contained in:
parent
2a4c9f702d
commit
624b847dd4
1
.gitignore
vendored
1
.gitignore
vendored
@ -10,3 +10,4 @@ gdl-0.9rc4.tar.gz
|
|||||||
/gdl-0.9.7.tgz
|
/gdl-0.9.7.tgz
|
||||||
/gdl-0.9.8.tgz
|
/gdl-0.9.8.tgz
|
||||||
/gdl-0.9.8-git-f3b6e01.tar.gz
|
/gdl-0.9.8-git-f3b6e01.tar.gz
|
||||||
|
/gdl-0.9.8-git-d892ee5.tar.gz
|
||||||
|
182
gdl-python3.patch
Normal file
182
gdl-python3.patch
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
diff --git a/src/datatypes.cpp b/src/datatypes.cpp
|
||||||
|
index 1a8d126..e8b08a1 100644
|
||||||
|
--- a/src/datatypes.cpp
|
||||||
|
+++ b/src/datatypes.cpp
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
#include "includefirst.hpp"
|
||||||
|
|
||||||
|
#if defined(USE_PYTHON) || defined(PYTHON_MODULE)
|
||||||
|
+#include <patchlevel.h>
|
||||||
|
#include <numpy/arrayobject.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff --git a/src/gdlpython.cpp b/src/gdlpython.cpp
|
||||||
|
index 7835ec9..dd17598 100644
|
||||||
|
--- a/src/gdlpython.cpp
|
||||||
|
+++ b/src/gdlpython.cpp
|
||||||
|
@@ -32,18 +32,32 @@
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+int PythonInit()
|
||||||
|
+{
|
||||||
|
+ if( Py_IsInitialized()) return NULL;
|
||||||
|
+#else
|
||||||
|
void PythonInit()
|
||||||
|
{
|
||||||
|
if( Py_IsInitialized()) return;
|
||||||
|
+#endif
|
||||||
|
Py_Initialize(); // signal handlers?
|
||||||
|
|
||||||
|
static int argc = 1;
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ static wchar_t* arg0 = Py_DecodeLocale("./py/python.exe",NULL);
|
||||||
|
+ static wchar_t* argv[] = {arg0};
|
||||||
|
+#else
|
||||||
|
static char* arg0 = (char*)"./py/python.exe";
|
||||||
|
static char* argv[] = {arg0};
|
||||||
|
+#endif
|
||||||
|
PySys_SetArgv(argc, argv);
|
||||||
|
|
||||||
|
// http://docs.scipy.org/doc/numpy/reference/c-api.array.html#miscellaneous
|
||||||
|
import_array();
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ return NULL;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void PythonEnd()
|
||||||
|
@@ -71,6 +85,12 @@ BaseGDL* FromPython( PyObject* pyObj)
|
||||||
|
{
|
||||||
|
if( !PyArray_Check( pyObj))
|
||||||
|
{
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ if( PyUnicode_Check( pyObj))
|
||||||
|
+ {
|
||||||
|
+ return new DStringGDL( PyUnicode_AsUTF8( pyObj));
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
if( PyString_Check( pyObj))
|
||||||
|
{
|
||||||
|
return new DStringGDL( PyString_AsString( pyObj));
|
||||||
|
@@ -79,6 +99,7 @@ BaseGDL* FromPython( PyObject* pyObj)
|
||||||
|
{
|
||||||
|
return new DLongGDL( PyInt_AsLong( pyObj));
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
if( PyLong_Check( pyObj))
|
||||||
|
{
|
||||||
|
return new DLongGDL( PyLong_AsLong( pyObj));
|
||||||
|
@@ -174,11 +195,19 @@ namespace lib {
|
||||||
|
e->Throw( "ARGV keyword must be of type STRING.");
|
||||||
|
|
||||||
|
int argc = argvS->N_Elements();
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ wchar_t** argv = new wchar_t*[ argc];
|
||||||
|
+#else
|
||||||
|
char** argv = new char*[ argc];
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
- // pyhton copies the value -> threats it as const
|
||||||
|
+ // python copies the value -> treats it as const
|
||||||
|
for( int i=0; i<argc; ++i)
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ argv[i] = Py_DecodeLocale(const_cast<char*>((*argvS)[ i].c_str()), NULL);
|
||||||
|
+#else
|
||||||
|
argv[i] = const_cast<char*>((*argvS)[ i].c_str());
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
PySys_SetArgv(argc, argv);
|
||||||
|
delete[] argv;
|
||||||
|
diff --git a/src/gdlpython.hpp b/src/gdlpython.hpp
|
||||||
|
index 45ef436..cb53bd7 100644
|
||||||
|
--- a/src/gdlpython.hpp
|
||||||
|
+++ b/src/gdlpython.hpp
|
||||||
|
@@ -18,7 +18,11 @@
|
||||||
|
#ifndef GDLPYTHON_HPP_
|
||||||
|
#define GDLPYTHON_HPP_
|
||||||
|
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+int PythonInit();
|
||||||
|
+#else
|
||||||
|
void PythonInit();
|
||||||
|
+#endif
|
||||||
|
void PythonEnd();
|
||||||
|
BaseGDL* FromPython( PyObject* pyObj);
|
||||||
|
|
||||||
|
diff --git a/src/pythongdl.cpp b/src/pythongdl.cpp
|
||||||
|
index a3b5afd..e541ba5 100644
|
||||||
|
--- a/src/pythongdl.cpp
|
||||||
|
+++ b/src/pythongdl.cpp
|
||||||
|
@@ -191,14 +191,22 @@ bool CopyArgFromPython( vector<BaseGDL*>& parRef,
|
||||||
|
for( SizeT k=0; k<nKW; ++k)
|
||||||
|
{
|
||||||
|
PyDict_Next( kwDict, &dictPos, &key, &value);
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ int keyIsString = PyUnicode_Check( key);
|
||||||
|
+#else
|
||||||
|
int keyIsString = PyString_Check( key);
|
||||||
|
+#endif
|
||||||
|
if( !keyIsString)
|
||||||
|
{
|
||||||
|
PyErr_SetString( gdlError,
|
||||||
|
"Keywords must be of type string");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ const char* keyChar = PyUnicode_AsUTF8( key);
|
||||||
|
+#else
|
||||||
|
const char* keyChar = PyString_AsString( key);
|
||||||
|
+#endif
|
||||||
|
string keyString = StrUpCase( keyChar);
|
||||||
|
int kwIx = e.GetPro()->FindKey( keyString);
|
||||||
|
if( kwIx == -1)
|
||||||
|
@@ -523,6 +531,35 @@ extern "C" {
|
||||||
|
{NULL, NULL, 0, NULL} // Sentinel
|
||||||
|
};
|
||||||
|
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ struct module_state {
|
||||||
|
+ PyObject *error;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ #define GETSTATE(m) ((struct module_state*)PyModule_GetState(m))
|
||||||
|
+
|
||||||
|
+ static int GDL_traverse(PyObject *m, visitproc visit, void *arg) {
|
||||||
|
+ Py_VISIT(GETSTATE(m)->error);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ static int GDL_clear(PyObject *m) {
|
||||||
|
+ Py_CLEAR(GETSTATE(m)->error);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ static struct PyModuleDef moduledef = {
|
||||||
|
+ PyModuleDef_HEAD_INIT,
|
||||||
|
+ "GDL",
|
||||||
|
+ NULL,
|
||||||
|
+ sizeof(struct module_state),
|
||||||
|
+ GDLMethods,
|
||||||
|
+ NULL,
|
||||||
|
+ GDL_traverse,
|
||||||
|
+ GDL_clear,
|
||||||
|
+ NULL
|
||||||
|
+ };
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
// python GDL module init function
|
||||||
|
PyMODINIT_FUNC initGDL()
|
||||||
|
@@ -552,7 +589,11 @@ extern "C" {
|
||||||
|
}
|
||||||
|
SysVar::SetGDLPath( gdlPath);
|
||||||
|
|
||||||
|
+#if PY_MAJOR_VERSION >= 3
|
||||||
|
+ PyObject* m = PyModule_Create(&moduledef);
|
||||||
|
+#else
|
||||||
|
PyObject* m = Py_InitModule("GDL", GDLMethods);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
gdlError = PyErr_NewException((char*)"GDL.error", NULL, NULL);
|
||||||
|
Py_INCREF(gdlError);
|
57
gdl.spec
57
gdl.spec
@ -1,9 +1,9 @@
|
|||||||
%global commit f3b6e012ff645c93268cfb9da7f61792630c34ee
|
%global commit d892ee54b710c645ec0bc75d4a0cb3118813daa6
|
||||||
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||||
|
|
||||||
Name: gdl
|
Name: gdl
|
||||||
Version: 0.9.8
|
Version: 0.9.8
|
||||||
Release: 5%{?dist}.20180723git%{shortcommit}
|
Release: 6%{?dist}.20180919git%{shortcommit}
|
||||||
Summary: GNU Data Language
|
Summary: GNU Data Language
|
||||||
|
|
||||||
Group: Applications/Engineering
|
Group: Applications/Engineering
|
||||||
@ -17,6 +17,8 @@ Source4: xorg.conf
|
|||||||
# Build with system antlr library. Request for upstream change here:
|
# Build with system antlr library. Request for upstream change here:
|
||||||
# https://sourceforge.net/tracker/index.php?func=detail&aid=2685215&group_id=97659&atid=618686
|
# https://sourceforge.net/tracker/index.php?func=detail&aid=2685215&group_id=97659&atid=618686
|
||||||
Patch1: gdl-antlr.patch
|
Patch1: gdl-antlr.patch
|
||||||
|
# https://github.com/gnudatalanguage/gdl/pull/468
|
||||||
|
Patch2: gdl-python3.patch
|
||||||
|
|
||||||
#RHEL5 doesn't have the needed antlr version/headers, has old plplot
|
#RHEL5 doesn't have the needed antlr version/headers, has old plplot
|
||||||
%if 0%{?rhel} == 5
|
%if 0%{?rhel} == 5
|
||||||
@ -37,7 +39,11 @@ BuildRequires: java
|
|||||||
BuildRequires: readline-devel, ncurses-devel
|
BuildRequires: readline-devel, ncurses-devel
|
||||||
BuildRequires: gsl-devel, plplot-devel, GraphicsMagick-c++-devel
|
BuildRequires: gsl-devel, plplot-devel, GraphicsMagick-c++-devel
|
||||||
BuildRequires: netcdf-devel, hdf5-devel, libjpeg-devel
|
BuildRequires: netcdf-devel, hdf5-devel, libjpeg-devel
|
||||||
|
%if 0%{?fedora} >= 29
|
||||||
|
BuildRequires: python%{python3_pkgversion}-devel, python%{python3_pkgversion}-numpy, python%{python3_pkgversion}-matplotlib
|
||||||
|
%else
|
||||||
BuildRequires: python2-devel, python2-numpy, python2-matplotlib
|
BuildRequires: python2-devel, python2-numpy, python2-matplotlib
|
||||||
|
%endif
|
||||||
BuildRequires: fftw-devel, hdf-static
|
BuildRequires: fftw-devel, hdf-static
|
||||||
%if 0%{?fedora}
|
%if 0%{?fedora}
|
||||||
%if 0%{?fedora} >= 28
|
%if 0%{?fedora} >= 28
|
||||||
@ -90,6 +96,23 @@ BuildArch: noarch
|
|||||||
Common files for GDL
|
Common files for GDL
|
||||||
|
|
||||||
|
|
||||||
|
%if 0%{?fedora} >= 29
|
||||||
|
%package -n python%{python3_pkgversion}-gdl
|
||||||
|
%{?python_provide:%python_provide python%{python3_pkgversion}-gdl}
|
||||||
|
# Remove before F30
|
||||||
|
Provides: %{name}-python = %{version}-%{release}
|
||||||
|
Provides: %{name}-python%{?_isa} = %{version}-%{release}
|
||||||
|
Obsoletes: %{name}-python < %{version}-%{release}
|
||||||
|
Summary: GDL python module
|
||||||
|
Group: Applications/Engineering
|
||||||
|
# Needed to pull in drivers
|
||||||
|
Requires: plplot
|
||||||
|
Requires: %{name}-common = %{version}-%{release}
|
||||||
|
Provides: %{name}-runtime = %{version}-%{release}
|
||||||
|
|
||||||
|
%description -n python%{python3_pkgversion}-gdl
|
||||||
|
%{summary}.
|
||||||
|
%else
|
||||||
%package -n python2-gdl
|
%package -n python2-gdl
|
||||||
%{?python_provide:%python_provide python2-gdl}
|
%{?python_provide:%python_provide python2-gdl}
|
||||||
# Remove before F30
|
# Remove before F30
|
||||||
@ -105,12 +128,14 @@ Provides: %{name}-runtime = %{version}-%{release}
|
|||||||
|
|
||||||
%description -n python2-gdl
|
%description -n python2-gdl
|
||||||
%{summary}.
|
%{summary}.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{commit}
|
%setup -q -n %{name}-%{commit}
|
||||||
rm -rf src/antlr
|
rm -rf src/antlr
|
||||||
%patch1 -p1 -b .antlr
|
%patch1 -p1 -b .antlr
|
||||||
|
%patch2 -p1 -b .python3
|
||||||
|
|
||||||
pushd src
|
pushd src
|
||||||
for f in *.g
|
for f in *.g
|
||||||
@ -119,6 +144,13 @@ do
|
|||||||
done
|
done
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
%if 0%{?fedora} >= 29
|
||||||
|
%global __python %{__python3}
|
||||||
|
%global python_sitearch %{python3_sitearch}
|
||||||
|
%else
|
||||||
|
%global __python %{__python2}
|
||||||
|
%global python_sitearch %{python2_sitearch}
|
||||||
|
%endif
|
||||||
%global cmake_opts \\\
|
%global cmake_opts \\\
|
||||||
-DWXWIDGETS=ON \\\
|
-DWXWIDGETS=ON \\\
|
||||||
-DGEOTIFF_INCLUDE_DIR=%{_includedir}/libgeotiff \\\
|
-DGEOTIFF_INCLUDE_DIR=%{_includedir}/libgeotiff \\\
|
||||||
@ -126,7 +158,7 @@ popd
|
|||||||
-DUDUNITS_INCLUDE_DIR=%{_includedir}/udunits2 \\\
|
-DUDUNITS_INCLUDE_DIR=%{_includedir}/udunits2 \\\
|
||||||
-DGRIB=ON \\\
|
-DGRIB=ON \\\
|
||||||
-DOPENMP=ON \\\
|
-DOPENMP=ON \\\
|
||||||
-DPYTHON_EXECUTABLE=%{_bindir}/python2 \\\
|
-DPYTHON_EXECUTABLE=%{__python} \\\
|
||||||
%{?cmake_qhull} \\\
|
%{?cmake_qhull} \\\
|
||||||
%{nil}
|
%{nil}
|
||||||
# TODO - build an mpi version
|
# TODO - build an mpi version
|
||||||
@ -154,8 +186,13 @@ popd
|
|||||||
pushd build-python
|
pushd build-python
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
# Install the python module in the right location
|
# Install the python module in the right location
|
||||||
install -d -m 0755 $RPM_BUILD_ROOT/%{python2_sitearch}
|
install -d -m 0755 $RPM_BUILD_ROOT/%{python_sitearch}
|
||||||
mv $RPM_BUILD_ROOT%{_prefix}/lib/site-python/GDL.so $RPM_BUILD_ROOT%{python2_sitearch}/GDL.so
|
%if 0%{?fedora} >= 29
|
||||||
|
mv $RPM_BUILD_ROOT%{_prefix}/lib/python*/site-packages/GDL.so \
|
||||||
|
%else
|
||||||
|
mv $RPM_BUILD_ROOT%{_prefix}/lib/site-python/GDL.so \
|
||||||
|
%endif
|
||||||
|
$RPM_BUILD_ROOT%{python_sitearch}/GDL.so
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# Install the profile file to set GDL_PATH
|
# Install the profile file to set GDL_PATH
|
||||||
@ -239,11 +276,19 @@ cat xorg.log
|
|||||||
%files common
|
%files common
|
||||||
%{_datadir}/gnudatalanguage/
|
%{_datadir}/gnudatalanguage/
|
||||||
|
|
||||||
|
%if 0%{?fedora} >= 29
|
||||||
|
%files -n python%{python3_pkgversion}-gdl
|
||||||
|
%else
|
||||||
%files -n python2-gdl
|
%files -n python2-gdl
|
||||||
%{python2_sitearch}/GDL.so
|
%endif
|
||||||
|
%{python_sitearch}/GDL.so
|
||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Sep 20 2018 Orion Poplawski <orion@nwra.com> - 0.9.8-6.20180919gitd892ee5
|
||||||
|
- Update to latest git
|
||||||
|
- Port to python 3
|
||||||
|
|
||||||
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 0.9.8-5.20180723gitf3b6e01
|
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 0.9.8-5.20180723gitf3b6e01
|
||||||
- Rebuild with fixed binutils
|
- Rebuild with fixed binutils
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (gdl-0.9.8-git-f3b6e01.tar.gz) = da07cd62f36e8c392bb45952a77982a3d55c1b0740debfcb277576130983d882c0502056efab1700c7f495b920567f86a8740aae61341ea403e438c55f3d103c
|
SHA512 (gdl-0.9.8-git-d892ee5.tar.gz) = 174dcb8a63903aa35a120459981e985bf813d0cebb576fd771b49e6101e76391a94535744c09edd75917ad3d7b3729ba21875671cceb42c3e6f0afef853a5ff2
|
||||||
|
Loading…
Reference in New Issue
Block a user