diff --git a/libkml.spec b/libkml.spec index 16eecb8..01cca7f 100644 --- a/libkml.spec +++ b/libkml.spec @@ -1,6 +1,6 @@ Name: libkml Version: 1.3.0 -Release: 7%{?dist} +Release: 8%{?dist} Summary: Reference implementation of OGC KML 2.2 License: BSD @@ -14,6 +14,8 @@ Patch2: 0003-Fix-python-tests.patch Patch3: 0004-Correctly-build-and-run-java-test.patch # Fix a fragile test failing on i686 Patch4: fragile_test.patch +# Don't bytecompile python sources as part of build process, leave it to rpmbuild +Patch5: libkml_dont-bytecompile.patch BuildRequires: cmake BuildRequires: curl-devel @@ -25,6 +27,7 @@ BuildRequires: junit BuildRequires: minizip-devel %if 0%{?fedora} BuildRequires: python2-devel +BuildRequires: python3-devel %else BuildRequires: python-devel %endif @@ -43,12 +46,21 @@ Earth, as well as several utility libraries for working with other formats. %package -n python2-%{name} -Summary: Python bindings for %{name} +Summary: Python 2 bindings for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %{?python_provide:%python_provide python2-%{name}} %description -n python2-%{name} -The python2-%{name} package contains Python bindings for %{name}. +The python2-%{name} package contains Python 2 bindings for %{name}. + + +%package -n python3-%{name} +Summary: Python 3 bindings for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} +%{?python_provide:%python_provide python3-%{name}} + +%description -n python3-%{name} +The python3-%{name} package contains Python 3 bindings for %{name}. %package java @@ -71,30 +83,57 @@ developing applications that use %{name}. %prep -%setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +%autosetup -p1 %build +mkdir build_py2 +pushd build_py2 +%ifarch armv7hl +%define awtlib -DJAVA_AWT_LIBRARY=`find /usr/lib/jvm/ -name libjawt.so | grep jre/lib/arm \` +%endif %cmake -DWITH_SWIG=ON -DWITH_PYTHON=ON -DWITH_JAVA=ON \ -DJNI_INSTALL_DIR=%{_libdir}/%{name} \ -DCMAKE_INSTALL_DIR=%{_libdir}/cmake/%{name} \ -DINCLUDE_INSTALL_DIR=%{_includedir}/kml \ + -DPYTHON_LIBRARY=%{_libdir}/libpython%{python2_version}.so \ + -DPYTHON_INCLUDE_DIR=%{_includedir}/python%{python2_version}/ \ + -DPYTHON_INSTALL_DIR=%{python2_sitearch} \ + %{?awtlib} \ + -DBUILD_TESTING=ON \ + -DBUILD_EXAMPLES=ON \ + .. +%make_build +popd + +mkdir build_py3 +pushd build_py3 +%cmake -DWITH_SWIG=ON -DWITH_PYTHON=ON -DWITH_JAVA=OFF \ + -DJNI_INSTALL_DIR=%{_libdir}/%{name} \ + -DCMAKE_INSTALL_DIR=%{_libdir}/cmake/%{name} \ + -DINCLUDE_INSTALL_DIR=%{_includedir}/kml \ + -DPYTHON_LIBRARY=%{_libdir}/libpython%{python3_version}m.so \ + -DPYTHON_INCLUDE_DIR=%{_includedir}/python%{python3_version}m/ \ + -DPYTHON_INSTALL_DIR=%{python3_sitearch} \ -DBUILD_TESTING=ON \ - -DBUILD_EXAMPLES=ON -make %{?_smp_mflags} + -DBUILD_EXAMPLES=OFF \ + .. +%make_build +popd %install -%make_install +%make_install -C build_py2 +%make_install -C build_py3 %check +pushd build_py2 ctest -V +popd +pushd build_py3 +ctest -V +popd %post -p /sbin/ldconfig @@ -111,6 +150,11 @@ ctest -V %{python2_sitearch}/*.so %{python2_sitearch}/*.py* +%files -n python3-%{name} +%{python3_sitearch}/*.so +%{python3_sitearch}/*.py +%{python3_sitearch}/__pycache__/*.pyc + %files java %{_javadir}/LibKML.jar %{_libdir}/%{name}/ @@ -123,6 +167,10 @@ ctest -V %{_libdir}/cmake/%{name}/ %changelog +* Mon Aug 07 2017 Sandro Mani - 1.3.0-8 +- Workaround armv7hl FTBFS +- Add python3 bindings + * Thu Aug 03 2017 Fedora Release Engineering - 1.3.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild diff --git a/libkml_dont-bytecompile.patch b/libkml_dont-bytecompile.patch new file mode 100644 index 0000000..a12bcda --- /dev/null +++ b/libkml_dont-bytecompile.patch @@ -0,0 +1,24 @@ +diff -rupN libkml-1.3.0/src/swig/CMakeLists.txt libkml-1.3.0-new/src/swig/CMakeLists.txt +--- libkml-1.3.0/src/swig/CMakeLists.txt 2015-12-21 18:23:05.000000000 +0100 ++++ libkml-1.3.0-new/src/swig/CMakeLists.txt 2017-08-07 21:26:23.717928168 +0200 +@@ -23,12 +23,6 @@ if(WITH_PYTHON) + set_source_files_properties( ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}PYTHON_wrap.cxx COMPILE_FLAGS "-Wno-long-long" ) + swig_add_module(${MODULE_NAME} python ${INTERFACE_FILE}) + swig_link_libraries(${MODULE_NAME} kmlbase kmlengine kmldom ${PYTHON_LIBRARIES}) +- add_custom_command( +- TARGET _${MODULE_NAME} +- POST_BUILD +- COMMAND ${CMAKE_COMMAND} -E echo "Byte-compiling ${MODULE_NAME}.py" +- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/cmake/pycompile.py ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py +- DEPENDS kmlbase kmlengine kmldom) + + install(TARGETS + _${MODULE_NAME} +@@ -36,7 +30,6 @@ if(WITH_PYTHON) + + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.py +- ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}.pyc + DESTINATION ${PYTHON_INSTALL_DIR}) + + endforeach()