From 2d5cccc0eb46769c72f7745c5f283e9e9bd59d0d7558fa42d7da3cc9bc07f2dc Mon Sep 17 00:00:00 2001 From: Martin Pluskal Date: Wed, 26 Aug 2015 16:14:10 +0000 Subject: [PATCH 1/2] Accepting request 327177 from home:bruno_friedmann:branches:Application:Geo - Adding python3 support - move fdupes from buildroot (mix python scripts otherwise) fdupes is run against source html directory - dos2unix Fix EOL warnings - improve spec style OBS-URL: https://build.opensuse.org/request/show/327177 OBS-URL: https://build.opensuse.org/package/show/Application:Geo/gdal?expand=0&rev=16 --- gdal.changes | 8 +++++ gdal.spec | 89 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 72 insertions(+), 25 deletions(-) diff --git a/gdal.changes b/gdal.changes index 8f6935e..dc15d04 100644 --- a/gdal.changes +++ b/gdal.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Wed Aug 26 09:58:30 UTC 2015 - bruno@ioda-net.ch + +- Adding python3 support +- move fdupes from buildroot (mix python scripts otherwise) + fdupes is run against source html directory +- dos2unix Fix EOL warnings + ------------------------------------------------------------------- Sat Jul 4 11:32:00 UTC 2015 - Angelos Tzotsos diff --git a/gdal.spec b/gdal.spec index 8304b74..7508f63 100644 --- a/gdal.spec +++ b/gdal.spec @@ -37,6 +37,7 @@ Patch5: gdal-poppler-0.31.patch BuildRequires: blas-devel BuildRequires: chrpath BuildRequires: curl-devel +BuildRequires: dos2unix BuildRequires: doxygen >= 1.4.2 BuildRequires: fdupes BuildRequires: gcc-c++ @@ -59,11 +60,12 @@ BuildRequires: poppler-devel BuildRequires: postgresql-devel BuildRequires: python-numpy-devel BuildRequires: python-setuptools +BuildRequires: python3-devel +BuildRequires: python3-numpy-devel BuildRequires: sqlite-devel >= 3 BuildRequires: swig BuildRequires: unixODBC-devel BuildRequires: zlib-devel >= 1.1.4 -BuildRoot: %{_tmppath}/%{name}-%{version}-build %if %{with ecw_support} BuildRequires: libecwj2-devel %endif @@ -71,13 +73,14 @@ BuildRequires: libecwj2-devel BuildRequires: autoconf BuildRequires: automake BuildRequires: hdf5-devel -%endif -%if 0%{?suse_version} > 1310 && 0%{?suse_version} != 1315 +%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315 BuildRequires: libwebp-devel BuildRequires: perl-ExtUtils-MakeMaker +%endif %else BuildRequires: hdf-devel >= 4.0 %endif +BuildRoot: %{_tmppath}/%{name}-%{version}-build %description GDAL is a translator library for raster geospatial data formats that @@ -127,6 +130,14 @@ Requires: %{name} = %{version}-%{release} %description -n python-gdal The GDAL python modules provide support to handle multiple GIS file formats. +%package -n python3-gdal +Summary: GDAL Python3 module +Group: Development/Languages/Python +Requires: %{name} = %{version}-%{release} + +%description -n python3-gdal +The GDAL python3 modules provide support to handle multiple GIS file formats. + %prep %setup -q -n gdal-%{version} %patch0 -p1 @@ -136,12 +147,20 @@ The GDAL python modules provide support to handle multiple GIS file formats. %patch4 -p0 %patch5 -p0 +# Fix wrong encoding EOL +for F in frmt_twms_srtm.xml frmt_wms_bluemarble_s3_tms.xml frmt_wms_virtualearth.xml frmt_twms_Clementine.xml; +do +# dos2unix -v is not supported on archaic SLE version + find . -name "${F}" -exec dos2unix {} \; +done + # need to regenerate (old ones don't support perl 5.10) -rm swig/perl/{gdal_wrap.cpp,gdalconst_wrap.c,ogr_wrap.cpp,osr_wrap.cpp} -rm swig/php/{gdal_wrap.cpp,gdalconst_wrap.c,ogr_wrap.cpp,osr_wrap.cpp} +#See below the veryclean & generate usage. rm -r man +echo "********* 0%{suse_version} *******************************************" + %build # need to regenerate (old one does not accpet CFLAGS) %if 0%{?suse_version} >= 1310 @@ -156,12 +175,12 @@ autoreconf -fi --disable-static \ --with-geotiff \ --with-libtiff \ - --with-rename-internal-libtiff-symbols=yes \ - --with-rename-internal-libgeotiff-symbols=yes \ + --with-rename-internal-libtiff-symbols=yes \ + --with-rename-internal-libgeotiff-symbols=yes \ --with-libz \ --with-cfitsio=no \ --with-netcdf \ - --with-openjpeg \ + --with-openjpeg \ --with-curl \ --with-pg \ --with-ogdi \ @@ -176,7 +195,7 @@ autoreconf -fi --with-png \ --with-gif \ --with-jpeg \ - --with-spatialite \ + --with-spatialite \ --with-poppler \ --with-python \ --with-perl \ @@ -184,31 +203,49 @@ autoreconf -fi --with-xerces-lib="-lxerces-c" \ --with-xerces-inc=%{_includedir}/xercesc \ %if %{with ecw_support} - --with-ecw \ - CFLAGS="$CFLAGS -pthread" \ + --with-ecw \ + CFLAGS="$CFLAGS -pthread" \ %endif -%if 0%{?suse_version} > 1310 - --without-hdf4 \ - --with-hdf5 \ - --with-webp \ +%if 0%{?suse_version} >= 1310 + --without-hdf4 \ + --with-hdf5 \ + --with-webp \ %else - --with-hdf4 \ + --with-hdf4 \ %endif - --disable-rpath + --disable-rpath # regenerate where needed -make %{?_smp_mflags} -C swig/perl generate +for M in perl python; +do + make %{?_smp_mflags} -C swig/${M} veryclean + make %{?_smp_mflags} -C swig/${M} generate +done make %{?_smp_mflags} all docs man +# Make Python 3 module +pushd swig/python + python3 setup.py build +popd + %install +# Install Python 3 module +# Must be done first so executables are env python +pushd swig/python + python3 setup.py install --prefix=%{_prefix} --root=%{buildroot} +popd + make %{?_smp_mflags} install install-man \ DESTDIR=%{buildroot} INST_MAN=%{_mandir} cp -a ogr/html html/ogr -%fdupes -s %{buildroot} +# Not on buildroot : broke everything with python3 +# If done got python3 needing python2 package heretic .. +# Futhermore duplicates are only existing in src html dir +%fdupes -s html # chrpath must be removed here chmod 644 %{buildroot}%{perl_vendorarch}/auto/Geo/GDAL/Const/Const.so @@ -221,6 +258,9 @@ chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/GDAL/GDAL.so chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/OGR/OGR.so chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/OSR/OSR.so +#perl bs 0 length files cleanup +find %{buildroot}%{perl_vendorarch} -name "*.bs" -exec rm -fv {} \; + # do not ship these rm -rf %{buildroot}%{_mandir}/man1/_* rm -rf %{buildroot}%{_libdir}/libgdal.la @@ -332,16 +372,15 @@ rm -rf %{buildroot}%{_bindir}/*.dox %attr(755,root,root) %{perl_vendorarch}/auto/Geo/OGR/OGR.so %dir %{perl_vendorarch}/auto/Geo/OSR %attr(755,root,root) %{perl_vendorarch}/auto/Geo/OSR/OSR.so -%if 0%{?suse_version} <= 1315 -%{perl_vendorarch}/auto/Geo/OSR/OSR.bs -%{perl_vendorarch}/auto/Geo/OGR/OGR.bs -%{perl_vendorarch}/auto/Geo/GDAL/GDAL.bs -%{perl_vendorarch}/auto/Geo/GDAL/Const/Const.bs -%endif %files -n python-%{name} %defattr(644,root,root,755) %doc NEWS PROVENANCE.TXT LICENSE.TXT %{python_sitearch}/* +%files -n python3-%{name} +%defattr(644,root,root,755) +%doc NEWS PROVENANCE.TXT LICENSE.TXT +%{python3_sitearch}/* + %changelog From a7bf7af898dfc020dd17eedbdd1bd9014f4ca9500a697d1a5d7eda63c3c3389c Mon Sep 17 00:00:00 2001 From: Martin Pluskal Date: Fri, 28 Aug 2015 11:12:11 +0000 Subject: [PATCH 2/2] Accepting request 327728 from home:bruno_friedmann:branches:Application:Geo Please find a new version of packaging fixing all build trouble since 20150827. SLE_11_SP3 is totally broken don't know the stage of build before. openSUSE_42 should have its unresolvable state cleanup automatically once the depot got the last build of hd5 and libhdf4 published. - packaging Redone exclusion for <= 1310 and 1315 Cleanup empty perl bs files - Build fixes * Fix python coding in swig3+ (backport of gdal20) with patch gdal-python-swig3-issue6045.patch * Fix gcc5 build upstream issue 6073 gdal-gcc5-getaddrinfo-issue6073.patch OBS-URL: https://build.opensuse.org/request/show/327728 OBS-URL: https://build.opensuse.org/package/show/Application:Geo/gdal?expand=0&rev=17 --- gdal-gcc5-getaddrinfo-issue6073.patch | 14 ++++++ gdal-python-swig3-issue6045.patch | 63 +++++++++++++++++++++++++++ gdal.changes | 12 +++++ gdal.spec | 31 +++++++++---- 4 files changed, 111 insertions(+), 9 deletions(-) create mode 100644 gdal-gcc5-getaddrinfo-issue6073.patch create mode 100644 gdal-python-swig3-issue6045.patch diff --git a/gdal-gcc5-getaddrinfo-issue6073.patch b/gdal-gcc5-getaddrinfo-issue6073.patch new file mode 100644 index 0000000..7e4d050 --- /dev/null +++ b/gdal-gcc5-getaddrinfo-issue6073.patch @@ -0,0 +1,14 @@ +Index: apps/gdalserver.c +=================================================================== +--- a/apps/gdalserver.c ++++ b/apps/gdalserver.c +@@ -28,7 +28,6 @@ + ****************************************************************************/ + +-#if defined(__STDC_VERSION__) +-#define _XOPEN_SOURCE +-#endif ++// So that __USE_XOPEN2K is defined to have getaddrinfo ++#define _XOPEN_SOURCE 600 + + #include "cpl_port.h" diff --git a/gdal-python-swig3-issue6045.patch b/gdal-python-swig3-issue6045.patch new file mode 100644 index 0000000..5b8b343 --- /dev/null +++ b/gdal-python-swig3-issue6045.patch @@ -0,0 +1,63 @@ +diff -rup a/swig/include/python/ogr_python.i b/swig/include/python/ogr_python.i +--- a/swig/include/python/ogr_python.i 2015-02-10 13:12:08.000000000 +0100 ++++ b/swig/include/python/ogr_python.i 2015-08-28 11:51:02.955567700 +0200 +@@ -66,9 +66,9 @@ + + def __getitem__(self, value): + """Support dictionary, list, and slice -like access to the datasource. +-ds[0] would return the first layer on the datasource. +-ds['aname'] would return the layer named "aname". +-ds[0:4] would return a list of the first four layers.""" ++ ds[0] would return the first layer on the datasource. ++ ds['aname'] would return the layer named "aname". ++ ds[0:4] would return a list of the first four layers.""" + if isinstance(value, slice): + output = [] + for i in xrange(value.start,value.stop,value.step): +@@ -134,8 +134,8 @@ ds[0:4] would return a list of the first + + def __getitem__(self, value): + """Support list and slice -like access to the layer. +-layer[0] would return the first feature on the layer. +-layer[0:4] would return a list of the first four features.""" ++ layer[0] would return the first feature on the layer. ++ layer[0:4] would return a list of the first four features.""" + if isinstance(value, slice): + import sys + output = [] +@@ -400,7 +400,7 @@ layer[0:4] would return a list of the fi + + def __reduce__(self): + return (self.__class__, (), self.ExportToWkb()) +- ++ + def __setstate__(self, state): + result = CreateGeometryFromWkb(state) + self.this = result.this +diff -rup a/swig/python/osgeo/ogr.py b/swig/python/osgeo/ogr.py +--- a/swig/python/osgeo/ogr.py 2015-02-10 13:12:08.000000000 +0100 ++++ b/swig/python/osgeo/ogr.py 2015-08-28 11:54:46.775552596 +0200 +@@ -815,9 +815,9 @@ class DataSource(_object): + + def __getitem__(self, value): + """Support dictionary, list, and slice -like access to the datasource. +- ] would return the first layer on the datasource. +- aname'] would return the layer named "aname". +- :4] would return a list of the first four layers.""" ++ ds[0] would return the first layer on the datasource. ++ ds['aname'] would return the layer named "aname". ++ ds[0:4] would return a list of the first four layers.""" + if isinstance(value, slice): + output = [] + for i in xrange(value.start,value.stop,value.step): +@@ -2035,8 +2035,8 @@ class Layer(_object): + + def __getitem__(self, value): + """Support list and slice -like access to the layer. +- r[0] would return the first feature on the layer. +- r[0:4] would return a list of the first four features.""" ++ layer[0] would return the first feature on the layer. ++ layer[0:4] would return a list of the first four features.""" + if isinstance(value, slice): + import sys + output = [] diff --git a/gdal.changes b/gdal.changes index dc15d04..d9cd8fe 100644 --- a/gdal.changes +++ b/gdal.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Fri Aug 28 10:26:28 UTC 2015 - bruno@ioda-net.ch + +- packaging + Redone exclusion for <= 1310 and 1315 + Cleanup empty perl bs files +- Build fixes + * Fix python coding in swig3+ (backport of gdal20) + with patch gdal-python-swig3-issue6045.patch + * Fix gcc5 build upstream issue 6073 + gdal-gcc5-getaddrinfo-issue6073.patch + ------------------------------------------------------------------- Wed Aug 26 09:58:30 UTC 2015 - bruno@ioda-net.ch diff --git a/gdal.spec b/gdal.spec index 7508f63..1a0873b 100644 --- a/gdal.spec +++ b/gdal.spec @@ -34,6 +34,10 @@ Patch3: GDALmake.opt.in.patch Patch4: gdal-libproj.patch # PATCH-FIX-UPSTREAM gdal-poppler-0.31.patch dimstar@opensuse.org -- Fix build with poppler 0.31+, taken from upstream svn. Patch5: gdal-poppler-0.31.patch +# Fix python coding in swig3+ (backport of gdal20) +Patch6: gdal-python-swig3-issue6045.patch +# Fix gcc5 build upstream issue 6073 +Patch7: gdal-gcc5-getaddrinfo-issue6073.patch BuildRequires: blas-devel BuildRequires: chrpath BuildRequires: curl-devel @@ -73,10 +77,10 @@ BuildRequires: libecwj2-devel BuildRequires: autoconf BuildRequires: automake BuildRequires: hdf5-devel -%if 0%{?suse_version} >= 1310 && 0%{?suse_version} != 1315 +%endif +%if 0%{?suse_version} > 1310 && 0%{?suse_version} != 1315 BuildRequires: libwebp-devel BuildRequires: perl-ExtUtils-MakeMaker -%endif %else BuildRequires: hdf-devel >= 4.0 %endif @@ -146,6 +150,8 @@ The GDAL python3 modules provide support to handle multiple GIS file formats. %patch3 -p0 %patch4 -p0 %patch5 -p0 +%patch6 -p1 +%patch7 -p1 # Fix wrong encoding EOL for F in frmt_twms_srtm.xml frmt_wms_bluemarble_s3_tms.xml frmt_wms_virtualearth.xml frmt_twms_Clementine.xml; @@ -159,8 +165,6 @@ done rm -r man -echo "********* 0%{suse_version} *******************************************" - %build # need to regenerate (old one does not accpet CFLAGS) %if 0%{?suse_version} >= 1310 @@ -206,12 +210,12 @@ autoreconf -fi --with-ecw \ CFLAGS="$CFLAGS -pthread" \ %endif -%if 0%{?suse_version} >= 1310 - --without-hdf4 \ - --with-hdf5 \ +%if 0%{?suse_version} > 1310 + --without-hdf4 \ + --with-hdf5 \ --with-webp \ %else - --with-hdf4 \ + --with-hdf4 \ %endif --disable-rpath @@ -246,6 +250,8 @@ cp -a ogr/html html/ogr # If done got python3 needing python2 package heretic .. # Futhermore duplicates are only existing in src html dir %fdupes -s html +# Empty file +rm -f html/do-not-remove # chrpath must be removed here chmod 644 %{buildroot}%{perl_vendorarch}/auto/Geo/GDAL/Const/Const.so @@ -258,8 +264,15 @@ chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/GDAL/GDAL.so chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/OGR/OGR.so chrpath --delete %{buildroot}%{perl_vendorarch}/auto/Geo/OSR/OSR.so -#perl bs 0 length files cleanup +%if 0%{?suse_version} <= 1315 +# perl bs 0 length files cleanup find %{buildroot}%{perl_vendorarch} -name "*.bs" -exec rm -fv {} \; +#Those are deleted. +#%%{perl_vendorarch}/auto/Geo/OSR/OSR.bs +#%%{perl_vendorarch}/auto/Geo/OGR/OGR.bs +#%%{perl_vendorarch}/auto/Geo/GDAL/GDAL.bs +#%%{perl_vendorarch}/auto/Geo/GDAL/Const/Const.bs +%endif # do not ship these rm -rf %{buildroot}%{_mandir}/man1/_*