libyang 1.0.73 (#3710)
- build libyang1.0.73 debian pacakge from libyang github source - build libyang python2 and python3 debian packages
This commit is contained in:
parent
a5e2799b33
commit
bdf1b7c607
@ -1,23 +1,32 @@
|
|||||||
# libyang
|
# libyang
|
||||||
|
|
||||||
LIBYANG_VERSION_BASE = 0.16
|
LIBYANG_VERSION_BASE = 1.0
|
||||||
LIBYANG_VERSION = $(LIBYANG_VERSION_BASE).105
|
LIBYANG_VERSION = $(LIBYANG_VERSION_BASE).73
|
||||||
LIBYANG_SUBVERSION = 1
|
LIBYANG_SUBVERSION = 1
|
||||||
|
|
||||||
export LIBYANG_VERSION_BASE
|
export LIBYANG_VERSION_BASE
|
||||||
export LIBYANG_VERSION
|
export LIBYANG_VERSION
|
||||||
export LIBYANG_SUBVERSION
|
export LIBYANG_SUBVERSION
|
||||||
|
|
||||||
LIBYANG = libyang$(LIBYANG_VERSION_BASE)_$(LIBYANG_VERSION)-$(LIBYANG_SUBVERSION)_$(CONFIGURED_ARCH).deb
|
LIBYANG = libyang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
$(LIBYANG)_SRC_PATH = $(SRC_PATH)/libyang
|
$(LIBYANG)_SRC_PATH = $(SRC_PATH)/libyang
|
||||||
$(LIBYANG)_DEPENDS += $(SWIG_BASE) $(SWIG)
|
$(LIBYANG)_DEPENDS += $(SWIG_BASE) $(SWIG)
|
||||||
SONIC_MAKE_DEBS += $(LIBYANG)
|
SONIC_MAKE_DEBS += $(LIBYANG)
|
||||||
SONIC_STRETCH_DEBS += $(LIBYANG)
|
SONIC_STRETCH_DEBS += $(LIBYANG)
|
||||||
|
|
||||||
LIBYANG_DEV = libyang-dev_$(LIBYANG_VERSION)-$(LIBYANG_SUBVERSION)_$(CONFIGURED_ARCH).deb
|
LIBYANG_DEV = libyang-dev_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_DEV)))
|
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_DEV)))
|
||||||
|
|
||||||
LIBYANG_DBG = libyang$(LIBYANG_VERSION_BASE)-dbgsym_$(LIBYANG_VERSION)-$(LIBYANG_SUBVERSION)_$(CONFIGURED_ARCH).deb
|
LIBYANG_DBG = libyang-dbg_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_DBG)))
|
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_DBG)))
|
||||||
|
|
||||||
export LIBYANG LIBYANG_DEV LIBYANG_DBG
|
LIBYANG_CPP = libyang-cpp_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
|
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_CPP)))
|
||||||
|
|
||||||
|
LIBYANG_PY3 = python3-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
|
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY3)))
|
||||||
|
|
||||||
|
LIBYANG_PY2 = python2-yang_$(LIBYANG_VERSION)_$(CONFIGURED_ARCH).deb
|
||||||
|
$(eval $(call add_derived_package,$(LIBYANG),$(LIBYANG_PY2)))
|
||||||
|
|
||||||
|
export LIBYANG LIBYANG_DBG LIBYANG_DEV LIBYANG_CPP LIBYANG_PY3 LIBYANG_PY2
|
||||||
|
@ -3,19 +3,26 @@ SHELL = /bin/bash
|
|||||||
.SHELLFLAGS += -e
|
.SHELLFLAGS += -e
|
||||||
|
|
||||||
MAIN_TARGET = $(LIBYANG)
|
MAIN_TARGET = $(LIBYANG)
|
||||||
DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG)
|
DERIVED_TARGETS = $(LIBYANG_DEV) $(LIBYANG_DBG) $(LIBYANG_PY2) $(LIBYANG_PY3) $(LIBYANG_CPP)
|
||||||
|
|
||||||
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
|
$(addprefix $(DEST)/, $(MAIN_TARGET)): $(DEST)/% :
|
||||||
|
# Obtaining the libyang
|
||||||
rm -fr ./libyang-$(LIBYANG_VERSION)
|
rm -fr ./libyang-$(LIBYANG_VERSION)
|
||||||
wget -O libyang_$(LIBYANG_VERSION).orig.tar.gz 'https://sonicstorage.blob.core.windows.net/packages/libyang_0.16.105.orig.tar.gz?sv=2015-04-05&sr=b&sig=yTWDhl6B9TTXWAQ46zpLiNxUib61W7U0%2F%2FGvhRibKOc%3D&se=2046-09-30T22%3A10%3A27Z&sp=r'
|
git clone https://github.com/CESNET/libyang.git libyang-$(LIBYANG_VERSION)
|
||||||
wget -O libyang_$(LIBYANG_VERSION).dsc 'https://sonicstorage.blob.core.windows.net/packages/libyang_0.16.105-1.dsc?sv=2015-04-05&sr=b&sig=eLkO5wzB1C5oKNIaUPro4gwrgEC3EygIO6eCyTzHmeI%3D&se=2046-09-30T22%3A10%3A12Z&sp=r'
|
pushd libyang-$(LIBYANG_VERSION)
|
||||||
wget -O libyang_$(LIBYANG_VERSION)-$(LIBYANG_SUBVERSION).debian.tar.xz 'https://sonicstorage.blob.core.windows.net/packages/libyang_0.16.105-1.debian.tar.xz?sv=2015-04-05&sr=b&sig=AH18p7pKK0xIBVxZuA8EMv9%2FhXbCFKmbWAn7Za8%2BZW4%3D&se=2046-09-30T22%3A09%3A36Z&sp=r'
|
git checkout tags/v1.0-r4 -b libyang
|
||||||
dpkg-source -x libyang_$(LIBYANG_VERSION).dsc
|
# Apply patch series
|
||||||
|
stg init
|
||||||
|
stg import -s ../patch/series
|
||||||
|
|
||||||
pushd ./libyang-$(LIBYANG_VERSION)
|
mkdir build
|
||||||
dpkg-buildpackage -rfakeroot -b -us -uc -j$(SONIC_CONFIG_MAKE_JOBS)
|
pushd build
|
||||||
|
cmake ..
|
||||||
|
make build-deb
|
||||||
|
|
||||||
|
pushd debs
|
||||||
|
mv $* $(DEST)/
|
||||||
|
mv $(DERIVED_TARGETS) $(DEST)/
|
||||||
popd
|
popd
|
||||||
|
|
||||||
mv $(DERIVED_TARGETS) $* $(DEST)/
|
|
||||||
|
|
||||||
$(addprefix $(DEST)/, $(DERIVED_TARGETS)): $(DEST)/% : $(DEST)/$(MAIN_TARGET)
|
$(addprefix $(DEST)/, $(DERIVED_TARGETS)): $(DEST)/% : $(DEST)/$(MAIN_TARGET)
|
||||||
|
134
src/libyang/patch/libyang.patch
Normal file
134
src/libyang/patch/libyang.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index fa562dd3..8635ba15 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -33,6 +33,7 @@ set(LIBYANG_MICRO_SOVERSION 2)
|
||||||
|
set(LIBYANG_SOVERSION_FULL ${LIBYANG_MAJOR_SOVERSION}.${LIBYANG_MINOR_SOVERSION}.${LIBYANG_MICRO_SOVERSION})
|
||||||
|
set(LIBYANG_SOVERSION ${LIBYANG_MAJOR_SOVERSION})
|
||||||
|
|
||||||
|
+set(CMAKE_INSTALL_PREFIX /usr)
|
||||||
|
# set default build type if not specified by user
|
||||||
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE debug)
|
||||||
|
diff --git a/packages/debian.control.in b/packages/debian.control.in
|
||||||
|
index da6588b9..fb3ede48 100644
|
||||||
|
--- a/packages/debian.control.in
|
||||||
|
+++ b/packages/debian.control.in
|
||||||
|
@@ -53,3 +53,15 @@ Depends: python3-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@)
|
||||||
|
Section: debug
|
||||||
|
Architecture: any
|
||||||
|
Description: Debug symbols of python3 bidings of libyang library.
|
||||||
|
+
|
||||||
|
+Package: python2-yang@PACKAGE_PART_NAME@
|
||||||
|
+Depends: @PACKAGE_NAME@ (=@LIBYANG_VERSION@), libyang-cpp@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@)
|
||||||
|
+Section: libs
|
||||||
|
+Architecture: any
|
||||||
|
+Description: Bindings of libyang library to python2 language.
|
||||||
|
+
|
||||||
|
+Package: python2-yang@PACKAGE_PART_NAME@-dbg
|
||||||
|
+Depends: python2-yang@PACKAGE_PART_NAME@ (=@LIBYANG_VERSION@)
|
||||||
|
+Section: debug
|
||||||
|
+Architecture: any
|
||||||
|
+Description: Debug symbols of python2 bidings of libyang library.
|
||||||
|
diff --git a/packages/debian.python2-yang.install b/packages/debian.python2-yang.install
|
||||||
|
new file mode 100644
|
||||||
|
index 00000000..14ce2f3c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/packages/debian.python2-yang.install
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+usr/lib/python2.7/dist-packages/*
|
||||||
|
diff --git a/packages/debian.rules.in b/packages/debian.rules.in
|
||||||
|
index d565819e..e92fe4a1 100644
|
||||||
|
--- a/packages/debian.rules.in
|
||||||
|
+++ b/packages/debian.rules.in
|
||||||
|
@@ -9,10 +9,14 @@ export DH_VERBOSE=1
|
||||||
|
override_dh_strip:
|
||||||
|
dh_strip -plibyang@PACKAGE_PART_NAME@ --dbg-package=libyang@PACKAGE_PART_NAME@-dbg
|
||||||
|
dh_strip -plibyang-cpp@PACKAGE_PART_NAME@ --dbg-package=libyang-cpp@PACKAGE_PART_NAME@-dbg
|
||||||
|
+ dh_strip -ppython2-yang@PACKAGE_PART_NAME@ --dbg-package=python2-yang@PACKAGE_PART_NAME@-dbg
|
||||||
|
dh_strip -ppython3-yang@PACKAGE_PART_NAME@ --dbg-package=python3-yang@PACKAGE_PART_NAME@-dbg
|
||||||
|
|
||||||
|
override_dh_auto_configure:
|
||||||
|
- cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String="@BUILD_TYPE@" -DGEN_LANGUAGE_BINDINGS=ON .
|
||||||
|
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_BUILD_TYPE:String="@BUILD_TYPE@" -DENABLE_LYD_PRIV=ON -DGEN_LANGUAGE_BINDINGS=ON -DGEN_PYTHON_VERSION=2 .
|
||||||
|
+
|
||||||
|
+override_dh_makeshlibs:
|
||||||
|
+ dh_makeshlibs -Xextensions -Xuser_types
|
||||||
|
|
||||||
|
override_dh_auto_test:
|
||||||
|
ctest --output-on-failure
|
||||||
|
diff --git a/packages/libyang.dsc.in b/packages/libyang.dsc.in
|
||||||
|
index fdfa402b..f75ba184 100644
|
||||||
|
--- a/packages/libyang.dsc.in
|
||||||
|
+++ b/packages/libyang.dsc.in
|
||||||
|
@@ -1,10 +1,10 @@
|
||||||
|
Format: 3.0 (quilt)
|
||||||
|
Source: @PACKAGE_NAME@
|
||||||
|
-Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg
|
||||||
|
+Binary: @PACKAGE_NAME@, @PACKAGE_NAME@-dbg, @PACKAGE_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@, libyang-cpp@PACKAGE_PART_NAME@-dev, libyang-cpp@PACKAGE_PART_NAME@-dbg, python3-yang@PACKAGE_PART_NAME@, python3-yang@PACKAGE_PART_NAME@-dbg python2-yang@PACKAGE_PART_NAME@, python2-yang@PACKAGE_PART_NAME@-dbg
|
||||||
|
Maintainer: CESNET <rkrejci@cesnet.cz>
|
||||||
|
Version: @LIBYANG_VERSION@
|
||||||
|
Architecture: any
|
||||||
|
Standards-Version: 3.8.2
|
||||||
|
Homepage: https://github.com/CESNET/libyang
|
||||||
|
Vcs-Git: https://github.com/CESNET/libyang
|
||||||
|
-Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, g++, swig (>= 3.0.12)
|
||||||
|
+Build-Depends: debhelper (>= 9), make, gcc, doxygen, cmake, pkg-config, libpcre3-dev, libcmocka-dev, python3-dev, python2-dev, g++, swig (>= 3.0.12)
|
||||||
|
diff --git a/packages/libyang.spec.in b/packages/libyang.spec.in
|
||||||
|
index 6a4ac615..6939f028 100644
|
||||||
|
--- a/packages/libyang.spec.in
|
||||||
|
+++ b/packages/libyang.spec.in
|
||||||
|
@@ -46,6 +46,8 @@ BuildRequires: python3-devel
|
||||||
|
%else
|
||||||
|
BuildRequires: python34-devel
|
||||||
|
%endif
|
||||||
|
+
|
||||||
|
+BuildRequires: python2-devel
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Conflicts: @CONFLICT_PACKAGE_NAME@ = @LIBYANG_MAJOR_VERSION@.@LIBYANG_MINOR_VERSION@
|
||||||
|
@@ -70,6 +72,11 @@ Summary: Binding to python
|
||||||
|
Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release}
|
||||||
|
Requires: %{name} = %{version}-%{release}
|
||||||
|
|
||||||
|
+%package -n python2-yang@PACKAGE_PART_NAME@
|
||||||
|
+Summary: Binding to python
|
||||||
|
+Requires: libyang-cpp@PACKAGE_PART_NAME@ = %{version}-%{release}
|
||||||
|
+Requires: %{name} = %{version}-%{release}
|
||||||
|
+
|
||||||
|
%description -n libyang-cpp@PACKAGE_PART_NAME@
|
||||||
|
Bindings of libyang library to C++ language.
|
||||||
|
|
||||||
|
@@ -80,6 +87,10 @@ Headers of bindings to c++ language.
|
||||||
|
Bindings of libyang library to python language.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
+%description -n python2-yang@PACKAGE_PART_NAME@
|
||||||
|
+Bindings of libyang library to python language.
|
||||||
|
+%endif
|
||||||
|
+
|
||||||
|
%description devel
|
||||||
|
Headers of libyang library.
|
||||||
|
|
||||||
|
@@ -167,4 +178,9 @@ make DESTDIR=%{buildroot} install
|
||||||
|
%{_libdir}/python*
|
||||||
|
%endif
|
||||||
|
|
||||||
|
+%files -n python2-yang@PACKAGE_PART_NAME@
|
||||||
|
+%defattr(-,root,root)
|
||||||
|
+%{_libdir}/python*
|
||||||
|
+%endif
|
||||||
|
+
|
||||||
|
%changelog
|
||||||
|
diff --git a/packages/local-deb.sh.in b/packages/local-deb.sh.in
|
||||||
|
index 057bbc67..4318a49d 100755
|
||||||
|
--- a/packages/local-deb.sh.in
|
||||||
|
+++ b/packages/local-deb.sh.in
|
||||||
|
@@ -18,6 +18,7 @@ fi
|
||||||
|
cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-dev.install" debian/@PACKAGE_NAME@-dev.install
|
||||||
|
cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp.install" debian/libyang-cpp@PACKAGE_PART_NAME@.install
|
||||||
|
cp "@PROJECT_SOURCE_DIR@/packages/debian.libyang-cpp-dev.install" debian/libyang-cpp@PACKAGE_PART_NAME@-dev.install
|
||||||
|
+cp "@PROJECT_SOURCE_DIR@/packages/debian.python2-yang.install" debian/python2-yang@PACKAGE_PART_NAME@.install
|
||||||
|
cp "@PROJECT_SOURCE_DIR@/packages/debian.python3-yang.install" debian/python3-yang@PACKAGE_PART_NAME@.install
|
||||||
|
echo -e "@PACKAGE_NAME@ (@LIBYANG_VERSION@) stable; urgency=low\n" >debian/changelog
|
||||||
|
git log -10 --pretty=format:' * %s (%aN)%n' 2>/dev/null >>debian/changelog || echo -e " * unknown changes \n" >>debian/changelog
|
2
src/libyang/patch/series
Normal file
2
src/libyang/patch/series
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
libyang.patch
|
||||||
|
swig.patch
|
136
src/libyang/patch/swig.patch
Normal file
136
src/libyang/patch/swig.patch
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt
|
||||||
|
index 4cee36ec..0baa69ab 100644
|
||||||
|
--- a/swig/CMakeLists.txt
|
||||||
|
+++ b/swig/CMakeLists.txt
|
||||||
|
@@ -20,27 +20,34 @@ endif()
|
||||||
|
|
||||||
|
# find Python package
|
||||||
|
if(GEN_PYTHON_BINDINGS AND SWIG_FOUND)
|
||||||
|
- message(STATUS "Python version ${GEN_PYTHON_VERSION} was selected")
|
||||||
|
- unset(PYTHON_LIBRARY CACHE)
|
||||||
|
- unset(PYTHON_EXECUTABLE CACHE)
|
||||||
|
- unset(PYTHON_INCLUDE_DIR CACHE)
|
||||||
|
- unset(PYTHON_LIBRARY_DEBUG CACHE)
|
||||||
|
- if(${GEN_PYTHON_VERSION} STREQUAL "2")
|
||||||
|
- find_package(PythonLibs 2 REQUIRED)
|
||||||
|
- find_package(PythonInterp 2 REQUIRED)
|
||||||
|
- if(NOT PYTHONLIBS_FOUND)
|
||||||
|
- message(WARNING "Did not found Python version 2.x")
|
||||||
|
- message(STATUS "Sysrepo supports Python 2.x and Python 3.x")
|
||||||
|
- endif()
|
||||||
|
- elseif(${GEN_PYTHON_VERSION} STREQUAL "3")
|
||||||
|
- find_package(PythonLibs 3 REQUIRED)
|
||||||
|
- find_package(PythonInterp 3 REQUIRED)
|
||||||
|
- if(NOT PYTHONLIBS_FOUND)
|
||||||
|
- message(WARNING "Did not found Python version 3.x")
|
||||||
|
- message(STATUS "Sysrepo supports Python 2.x and Python 3.x")
|
||||||
|
- endif()
|
||||||
|
+ if(ENABLE_STATIC)
|
||||||
|
+ message(WARNING "Can't create a static Python module")
|
||||||
|
else()
|
||||||
|
- message(WARNING "Sysrepo supports Python 2.x and Python 3.x")
|
||||||
|
+ set(GEN_PYTHON_VERSION 2 3)
|
||||||
|
+ foreach(CUR_PYTHON_VERSION ${GEN_PYTHON_VERSION})
|
||||||
|
+ message(STATUS "Python version ${CUR_PYTHON_VERSION} was selected")
|
||||||
|
+
|
||||||
|
+ unset(PYTHON_EXECUTABLE CACHE)
|
||||||
|
+ unset(PYTHON_INCLUDE_PATH CACHE)
|
||||||
|
+ unset(PYTHON_EXT_SUFFIX CACHE)
|
||||||
|
+ unset(PYTHON_MODULE_PATH CACHE)
|
||||||
|
+ set(PYTHON_EXT_SUFFIX ".so")
|
||||||
|
+
|
||||||
|
+ find_program(PYTHON_EXECUTABLE NAMES python${CUR_PYTHON_VERSION})
|
||||||
|
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||||
|
+ "from distutils.sysconfig import get_config_var; print(get_config_var('INCLUDEPY'))"
|
||||||
|
+ OUTPUT_VARIABLE PYTHON_INCLUDE_PATH
|
||||||
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||||
|
+ #execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||||
|
+ # "from distutils.sysconfig import get_config_var; print(get_config_var('EXT_SUFFIX'))"
|
||||||
|
+ # OUTPUT_VARIABLE PYTHON_EXT_SUFFIX
|
||||||
|
+ # OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||||
|
+ execute_process(COMMAND ${PYTHON_EXECUTABLE} -c
|
||||||
|
+ "from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=True))"
|
||||||
|
+ OUTPUT_VARIABLE PYTHON_MODULE_PATH
|
||||||
|
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||||
|
+ add_subdirectory(python python${CUR_PYTHON_VERSION})
|
||||||
|
+ endforeach(CUR_PYTHON_VERSION)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
@@ -99,12 +106,6 @@ if (GEN_CPP_BINDINGS)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-if(ENABLE_STATIC AND PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND (${GEN_PYTHON_VERSION} STREQUAL "2" OR ${GEN_PYTHON_VERSION} STREQUAL "3"))
|
||||||
|
- message(WARNING "Can't create a static Python module")
|
||||||
|
-elseif(PYTHONLIBS_FOUND AND PYTHONINTERP_FOUND AND (${GEN_PYTHON_VERSION} STREQUAL "2" OR ${GEN_PYTHON_VERSION} STREQUAL "3"))
|
||||||
|
- add_subdirectory(python)
|
||||||
|
-endif()
|
||||||
|
-
|
||||||
|
if(NOT ENABLE_STATIC AND GEN_JAVASCRIPT_BINDINGS)
|
||||||
|
message(WARNING "Can't create Javascript bindings with a shared library, please use -DENABLE_STATIC")
|
||||||
|
elseif(ENABLE_STATIC AND GEN_JAVASCRIPT_BINDINGS)
|
||||||
|
diff --git a/swig/python/CMakeLists.txt b/swig/python/CMakeLists.txt
|
||||||
|
index 994b1234..5d18b8bf 100644
|
||||||
|
--- a/swig/python/CMakeLists.txt
|
||||||
|
+++ b/swig/python/CMakeLists.txt
|
||||||
|
@@ -1,30 +1,38 @@
|
||||||
|
set(PYTHON_SWIG_BINDING yang)
|
||||||
|
+set(PYTHON_SWIG_TARGET yang${CUR_PYTHON_VERSION})
|
||||||
|
include_directories(${PYTHON_INCLUDE_PATH})
|
||||||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
+include_directories(${PROJECT_SOURCE_DIR}/cpp/src)
|
||||||
|
|
||||||
|
set(CMAKE_SWIG_FLAGS "-c++")
|
||||||
|
-set(CMAKE_SWIG_FLAGS "-I${PROJECT_SOURCE_DIR}")
|
||||||
|
+set(CMAKE_SWIG_FLAGS "-I${PROJECT_SOURCE_DIR}" "-I${PROJECT_SOURCE_DIR}/cpp/src")
|
||||||
|
set(CMAKE_SWIG_OUTDIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
-set_source_files_properties(${PYTHON_SWIG_BINDING}.i PROPERTIES CPLUSPLUS ON PREFIX "")
|
||||||
|
+set_source_files_properties(${PYTHON_SWIG_BINDING}.i PROPERTIES CPLUSPLUS ON PREFIX "" SWIG_MODULE_NAME ${PYTHON_SWIG_BINDING})
|
||||||
|
|
||||||
|
if(${CMAKE_VERSION} VERSION_LESS "3.8.0")
|
||||||
|
- swig_add_module(${PYTHON_SWIG_BINDING} python ${PYTHON_SWIG_BINDING}.i)
|
||||||
|
+ swig_add_module(${PYTHON_SWIG_TARGET} python ${PYTHON_SWIG_BINDING}.i)
|
||||||
|
else()
|
||||||
|
- swig_add_library(${PYTHON_SWIG_BINDING} LANGUAGE python SOURCES ${PYTHON_SWIG_BINDING}.i)
|
||||||
|
+ swig_add_library(${PYTHON_SWIG_TARGET} LANGUAGE python SOURCES ${PYTHON_SWIG_BINDING}.i)
|
||||||
|
endif()
|
||||||
|
-swig_link_libraries(${PYTHON_SWIG_BINDING} ${PYTHON_LIBRARIES} libyang-cpp)
|
||||||
|
+swig_link_libraries(${PYTHON_SWIG_TARGET} ${PYTHON_LIBRARIES} libyang-cpp)
|
||||||
|
+
|
||||||
|
+set_target_properties(_${PYTHON_SWIG_TARGET} PROPERTIES OUTPUT_NAME "_yang${PYTHON_EXT_SUFFIX}" SUFFIX "")
|
||||||
|
|
||||||
|
# Generate header with SWIG run-time functions
|
||||||
|
execute_process(COMMAND ${SWIG_EXECUTABLE} -python -external-runtime ${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.h)
|
||||||
|
|
||||||
|
-file(COPY "examples" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
+add_custom_command(TARGET ${PYTHON_SWIG_TARGET}_swig_compilation POST_BUILD
|
||||||
|
+ COMMAND sed -e "'s/\\(inst =.*tp_new.*\\)Py_None, Py_None);/PyObject *tup = PyTuple_New(0); \\1tup, Py_None); Py_DECREF(tup);/'" < swigpyrun.h > swigpyrun.h.new
|
||||||
|
+ COMMAND sed -e "'s/\\(inst =.*tp_new.*\\)Py_None, Py_None);/PyObject *tup = PyTuple_New(0); \\1tup, Py_None); Py_DECREF(tup);/'" < yangPYTHON_wrap.cxx > yangPYTHON_wrap.cxx.new
|
||||||
|
+ COMMAND diff -q swigpyrun.h swigpyrun.h.new || mv swigpyrun.h.new swigpyrun.h
|
||||||
|
+ COMMAND diff -q yangPYTHON_wrap.cxx yangPYTHON_wrap.cxx.new || mv yangPYTHON_wrap.cxx.new yangPYTHON_wrap.cxx
|
||||||
|
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
+ )
|
||||||
|
|
||||||
|
-execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(plat_specific=True))"
|
||||||
|
- OUTPUT_VARIABLE PYTHON_MODULE_PATH
|
||||||
|
- OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||||
|
+file(COPY "examples" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
|
-install( TARGETS _${PYTHON_SWIG_BINDING} DESTINATION ${PYTHON_MODULE_PATH})
|
||||||
|
+install( TARGETS _${PYTHON_SWIG_TARGET} DESTINATION ${PYTHON_MODULE_PATH})
|
||||||
|
install( FILES "${CMAKE_CURRENT_BINARY_DIR}/${PYTHON_SWIG_BINDING}.py" DESTINATION ${PYTHON_MODULE_PATH})
|
||||||
|
install( FILES "${CMAKE_CURRENT_BINARY_DIR}/swigpyrun.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang)
|
||||||
|
|
||||||
|
@@ -51,8 +59,8 @@ if(ENABLE_BUILD_TESTS)
|
||||||
|
ADD_PYTHON_TEST(test_tree_data)
|
||||||
|
ADD_PYTHON_TEST(test_tree_schema)
|
||||||
|
|
||||||
|
- add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_SWIG_BINDING}_REAL_NAME} POST_BUILD
|
||||||
|
- COMMAND cp "${CMAKE_CURRENT_BINARY_DIR}/_${PYTHON_SWIG_BINDING}.so" ${PY2_SWIG_DIR}/tests
|
||||||
|
+ add_custom_command(TARGET ${SWIG_MODULE_${PYTHON_SWIG_TARGET}_REAL_NAME} POST_BUILD
|
||||||
|
+ COMMAND cp "${CMAKE_CURRENT_BINARY_DIR}/_yang${PYTHON_EXT_SUFFIX}" ${PY2_SWIG_DIR}/tests/_yang.so
|
||||||
|
COMMAND cp "${CMAKE_CURRENT_BINARY_DIR}/${PYTHON_SWIG_BINDING}.py" ${PY2_SWIG_DIR}/tests
|
||||||
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
|
)
|
Reference in New Issue
Block a user