diff --git a/openwsman-2.6.2-python3.patch b/openwsman-2.6.2-python3.patch new file mode 100644 index 0000000..39f9c97 --- /dev/null +++ b/openwsman-2.6.2-python3.patch @@ -0,0 +1,179 @@ +diff -up openwsman-2.6.2/bindings/CMakeLists.txt.orig openwsman-2.6.2/bindings/CMakeLists.txt +--- openwsman-2.6.2/bindings/CMakeLists.txt.orig 2015-10-19 15:27:46.000000000 +0200 ++++ openwsman-2.6.2/bindings/CMakeLists.txt 2016-08-10 11:55:36.588710280 +0200 +@@ -10,6 +10,7 @@ include_directories(${CMAKE_BINARY_DIR}) + + IF( BUILD_PYTHON ) + add_subdirectory(python) ++add_subdirectory(python3) + ENDIF( BUILD_PYTHON ) + + IF( BUILD_RUBY ) +diff -up openwsman-2.6.2/bindings/python3/CMakeLists.txt.orig openwsman-2.6.2/bindings/python3/CMakeLists.txt +--- openwsman-2.6.2/bindings/python3/CMakeLists.txt.orig 2016-08-10 11:55:36.577710278 +0200 ++++ openwsman-2.6.2/bindings/python3/CMakeLists.txt 2016-08-10 15:15:46.005991322 +0200 +@@ -12,11 +12,28 @@ enable_testing() + + add_subdirectory(tests) + +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" OUTPUT_VARIABLE PYTHON_LIB_DIR) +-STRING(REPLACE "\n" "" PYTHON_LIB_DIR "${PYTHON_LIB_DIR}") ++MESSAGE(STATUS "Python3 build:") ++unset(Python_ADDITIONAL_VERSIONS) ++set(Python_ADDITIONAL_VERSIONS 3.5) ++FIND_PACKAGE(PythonLibs) ++IF (PYTHON_LIBRARY) ++ FIND_PACKAGE(PythonInterp REQUIRED) ++ #MESSAGE(STATUS "Found PythonLibs...") ++ FIND_PACKAGE(PythonLinkLibs) ++ #IF (PYTHON_LINK_LIBS) ++ # MESSAGE(STATUS "Building Python...") ++ #ENDIF (PYTHON_LINK_LIBS) ++ENDIF (PYTHON_LIBRARY) ++ ++set(PYTHON3_EXECUTABLE "${PYTHON_EXECUTABLE}") ++set(PYTHON3_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}") ++set({PYTHON3_INCLUDE_PATH "${PYTHON_INCLUDE_PATH}") + +-MESSAGE(STATUS "Python executable: ${PYTHON_EXECUTABLE}") +-MESSAGE(STATUS "Python lib dir: ${PYTHON_LIB_DIR}") ++EXECUTE_PROCESS(COMMAND ${PYTHON3_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))" OUTPUT_VARIABLE PYTHON3_LIB_DIR) ++STRING(REPLACE "\n" "" PYTHON3_LIB_DIR "${PYTHON3_LIB_DIR}") ++ ++MESSAGE(STATUS "Python executable: ${PYTHON3_EXECUTABLE}") ++MESSAGE(STATUS "Python lib dir: ${PYTHON3_LIB_DIR}") + + SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/openwsman_wrap.c" ) + +@@ -36,14 +53,14 @@ SET(pywsman_SRCS ${SWIG_OUTPUT} ${CMAKE_ + ADD_LIBRARY( pywsman SHARED ${pywsman_SRCS} ) + SET_TARGET_PROPERTIES( pywsman PROPERTIES PREFIX "_" ) + +-INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} ) ++INCLUDE_DIRECTORIES( ${PYTHON3_INCLUDE_DIRS} ) + # RHEL5 needs this: +-INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} ) ++INCLUDE_DIRECTORIES( ${PYTHON3_INCLUDE_PATH} ) + INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ) + INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/bindings ${CMAKE_SOURCE_DIR}/include ) + + TARGET_LINK_LIBRARIES( pywsman wsman ) + TARGET_LINK_LIBRARIES( pywsman wsman_client ) + +-INSTALL(TARGETS pywsman LIBRARY DESTINATION ${PYTHON_LIB_DIR}) +-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pywsman.py DESTINATION ${PYTHON_LIB_DIR} ) ++INSTALL(TARGETS pywsman LIBRARY DESTINATION ${PYTHON3_LIB_DIR}) ++INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pywsman.py DESTINATION ${PYTHON3_LIB_DIR} ) +diff -up openwsman-2.6.2/bindings/python/CMakeLists.txt.orig openwsman-2.6.2/bindings/python/CMakeLists.txt +--- openwsman-2.6.2/bindings/python/CMakeLists.txt.orig 2015-10-19 15:27:46.000000000 +0200 ++++ openwsman-2.6.2/bindings/python/CMakeLists.txt 2016-08-10 15:00:21.126141161 +0200 +@@ -12,11 +12,52 @@ enable_testing() + + add_subdirectory(tests) + +-EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" OUTPUT_VARIABLE PYTHON_LIB_DIR) +-STRING(REPLACE "\n" "" PYTHON_LIB_DIR "${PYTHON_LIB_DIR}") ++MESSAGE(STATUS "Python2 build:") ++set(Python_ADDITIONAL_VERSIONS 2.7) ++FIND_PACKAGE(PythonLibs) ++IF (PYTHON_LIBRARY) ++ FIND_PACKAGE(PythonInterp REQUIRED) ++ #MESSAGE(STATUS "Found PythonLibs...") ++ FIND_PACKAGE(PythonLinkLibs) ++ #IF (PYTHON_LINK_LIBS) ++ # MESSAGE(STATUS "Building Python...") ++ #ENDIF (PYTHON_LINK_LIBS) ++ENDIF (PYTHON_LIBRARY) ++ ++set(PYTHON2_EXECUTABLE "${PYTHON_EXECUTABLE}") ++set(PYTHON2_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}") ++set(PYTHON2_INCLUDE_PATH "${PYTHON_INCLUDE_PATH}") ++ ++# clear FIND_PACKAGE(PythonLibs) side effects ++unset(PYTHONLIBS_FOUND) ++unset(PYTHON_LIBRARIES) ++unset(PYTHON_INCLUDE_PATH) ++unset(PYTHON_INCLUDE_DIRS) ++unset(PYTHON_DEBUG_LIBRARIES) ++unset(PYTHONLIBS_VERSION_STRING) ++unset(PYTHON_DEBUG_LIBRARY CACHE) ++unset(PYTHON_LIBRARY) ++unset(PYTHON_LIBRARY_DEBUG) ++unset(PYTHON_LIBRARY_RELEASE) ++unset(PYTHON_LIBRARY CACHE) ++unset(PYTHON_LIBRARY_DEBUG CACHE) ++unset(PYTHON_LIBRARY_RELEASE CACHE) ++unset(PYTHON_INCLUDE_DIR CACHE) ++unset(PYTHON_INCLUDE_DIR2 CACHE) ++ ++# clear FIND_PACKAGE(PythonInterp) side effects ++unset(PYTHONINTERP_FOUND) ++unset(PYTHON_EXECUTABLE CACHE) ++unset(PYTHON_VERSION_STRING) ++unset(PYTHON_VERSION_MAJOR) ++unset(PYTHON_VERSION_MINOR) ++unset(PYTHON_VERSION_PATCH) + +-MESSAGE(STATUS "Python executable: ${PYTHON_EXECUTABLE}") +-MESSAGE(STATUS "Python lib dir: ${PYTHON_LIB_DIR}") ++EXECUTE_PROCESS(COMMAND ${PYTHON2_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)" OUTPUT_VARIABLE PYTHON2_LIB_DIR) ++STRING(REPLACE "\n" "" PYTHON2_LIB_DIR "${PYTHON2_LIB_DIR}") ++ ++MESSAGE(STATUS "Python executable: ${PYTHON2_EXECUTABLE}") ++MESSAGE(STATUS "Python lib dir: ${PYTHON2_LIB_DIR}") + + SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/openwsman_wrap.c" ) + +@@ -36,14 +77,14 @@ SET(pywsman_SRCS ${SWIG_OUTPUT} ${CMAKE_ + ADD_LIBRARY( pywsman SHARED ${pywsman_SRCS} ) + SET_TARGET_PROPERTIES( pywsman PROPERTIES PREFIX "_" ) + +-INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_DIRS} ) ++INCLUDE_DIRECTORIES( ${PYTHON2_INCLUDE_DIRS} ) + # RHEL5 needs this: +-INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} ) ++INCLUDE_DIRECTORIES( ${PYTHON2_INCLUDE_PATH} ) + INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ) + INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/bindings ${CMAKE_SOURCE_DIR}/include ) + + TARGET_LINK_LIBRARIES( pywsman wsman ) + TARGET_LINK_LIBRARIES( pywsman wsman_client ) + +-INSTALL(TARGETS pywsman LIBRARY DESTINATION ${PYTHON_LIB_DIR}) +-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pywsman.py DESTINATION ${PYTHON_LIB_DIR} ) ++INSTALL(TARGETS pywsman LIBRARY DESTINATION ${PYTHON2_LIB_DIR}) ++INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pywsman.py DESTINATION ${PYTHON2_LIB_DIR} ) +diff -up openwsman-2.6.2/CMakeLists.txt.orig openwsman-2.6.2/CMakeLists.txt +--- openwsman-2.6.2/CMakeLists.txt.orig 2015-10-19 15:27:46.000000000 +0200 ++++ openwsman-2.6.2/CMakeLists.txt 2016-08-10 11:55:36.588710280 +0200 +@@ -168,30 +168,6 @@ MESSAGE(STATUS "Building Ruby bindings" + ENDIF(NOT RUBY_INCLUDE_PATH ) + ENDIF( BUILD_RUBY ) + +-IF( BUILD_PYTHON ) +- MESSAGE(STATUS "Building Python bindings" ) +- FIND_PACKAGE(PythonLibs) +- IF (PYTHON_LIBRARY) +- FIND_PACKAGE(PythonInterp REQUIRED) +- MESSAGE(STATUS "Found PythonLibs...") +- FIND_PACKAGE(PythonLinkLibs) +- IF (PYTHON_LINK_LIBS) +- MESSAGE(STATUS "Building Python...") +- ENDIF (PYTHON_LINK_LIBS) +- ENDIF (PYTHON_LIBRARY) +- IF(NOT PYTHON_INCLUDE_DIRS ) +- # fallback for older versions of cmake +- SET(PYTHON_INCLUDE_DIRS PYTHON_INCLUDE_PATH) +- ENDIF(NOT PYTHON_INCLUDE_DIRS ) +- IF(NOT PYTHON_INCLUDE_DIRS ) +- IF(BUILD_PYTHON_EXPLICIT) +- NO_HEADERS_WARNING_EXPL(BUILD_PYTHON Python) +- ELSE(BUILD_PYTHON_EXPLICIT) +- NO_HEADERS_WARNING(BUILD_PYTHON Python) +- ENDIF(BUILD_PYTHON_EXPLICIT) +- ENDIF(NOT PYTHON_INCLUDE_DIRS ) +-ENDIF( BUILD_PYTHON ) +- + IF( BUILD_PERL ) + INCLUDE(FindPerl) + IF(PERL_EXECUTABLE) diff --git a/openwsman.spec b/openwsman.spec index a76c7c2..ace0dc6 100644 --- a/openwsman.spec +++ b/openwsman.spec @@ -1,22 +1,15 @@ - -%if ! (0%{?fedora} > 12 || 0%{?rhel} > 5) -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} -%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} -%endif - # RubyGems's macros expect gem_name to exist. %global gem_name %{name} Name: openwsman BuildRequires: swig BuildRequires: libcurl-devel libxml2-devel pam-devel sblim-sfcc-devel -BuildRequires: python python-devel ruby ruby-devel rubygems-devel perl -BuildRequires: python python-devel perl +BuildRequires: python3 python3-devel python2 python2-devel ruby ruby-devel rubygems-devel perl BuildRequires: perl-devel perl-generators pkgconfig openssl-devel BuildRequires: cmake BuildRequires: systemd-units Version: 2.6.2 -Release: 6%{?dist} +Release: 7%{?dist} Url: http://www.openwsman.org/ License: BSD Group: Applications/System @@ -33,6 +26,7 @@ Source3: owsmantestcert.sh Patch1: openwsman-2.2.7-libssl.patch Patch2: openwsman-2.4.0-pamsetup.patch Patch3: openwsman-2.4.12-ruby-binding-build.patch +Patch4: openwsman-2.6.2-python3.patch %description Openwsman is a project intended to provide an open-source @@ -107,11 +101,25 @@ Openwsman Server and service libraries License: BSD Group: Development/Libraries Summary: Python bindings for openwsman client API -Requires: python +Requires: python2 Requires: libwsman1 = %{version}-%{release} %description python -This package provides Python bindings to access the openwsman client +This package provides Python2 bindings to access the openwsman client +API. + + + + +%package python3 +License: BSD +Group: Development/Libraries +Summary: Python bindings for openwsman client API +Requires: python3 +Requires: libwsman1 = %{version}-%{release} + +%description python3 +This package provides Python3 bindings to access the openwsman client API. @@ -165,9 +173,16 @@ can use it to send shell commands to a remote Windows hosts. %prep %setup -q + +# support python3 +pushd bindings +cp -r python python3 +popd + %patch1 -p1 -b .libssl %patch2 -p1 -b .pamsetup %patch3 -p1 -b .ruby-binding-build +%patch4 -p1 -b .python3 # support ruby 2.2 pushd bindings/ruby @@ -176,6 +191,7 @@ chmod 0755 rdoc2.2 ln -sf %{_bindir}/rdoc rdoc2_2.rb popd + %build # Removing executable permissions on .c and .h files to fix rpmlint warnings. chmod -x src/cpp/WsmanClient.h @@ -281,10 +297,16 @@ rm -f /var/log/wsmand.log %doc AUTHORS COPYING ChangeLog README.md %files python -%{python_sitearch}/*.so -%{python_sitearch}/*.py -%{python_sitearch}/*.pyc -%{python_sitearch}/*.pyo +%{python2_sitearch}/*.so +%{python2_sitearch}/*.py +%{python2_sitearch}/*.pyc +%{python2_sitearch}/*.pyo +%doc AUTHORS COPYING ChangeLog README.md + +%files python3 +%{python3_sitearch}/*.so +%{python3_sitearch}/*.py +%{python3_sitearch}/__pycache__/* %doc AUTHORS COPYING ChangeLog README.md %files -n rubygem-%{gem_name} @@ -335,6 +357,10 @@ rm -f /var/log/wsmand.log %changelog +* Thu Aug 11 2016 Vitezslav Crhonek - 2.6.2-7 +- Add openwsman-python3 subpackage + Resolves: #1354481 + * Tue Jul 19 2016 Fedora Release Engineering - 2.6.2-6 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages