summaryrefslogtreecommitdiff
path: root/python-pybindgen.spec
blob: 467943b5028b0b3d34894a166a574497eea4659f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
%global _empty_manifest_terminate_build 0
Name:		python-PyBindGen
Version:	0.22.1
Release:	1
Summary:	Python Bindings Generator
License:	GNU Lesser General Public License v2 or later (LGPLv2+)
URL:		https://github.com/gjcarneiro/pybindgen
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/e0/8e/de441f26282eb869ac987c9a291af7e3773d93ffdb8e4add664b392ea439/PyBindGen-0.22.1.tar.gz
BuildArch:	noarch


%description
PyBindGen is (surprise!) a python bindings generator.  The main features are:
 * Generates clean C or C++ code, nearly as readable as code written
   manually by a developer;
 * Generated code is self contained and does not require any external
   libraries or macros; after generating the python module only python
   header files are required, nothing else;
 * Does not require Boost.Python (no C++ template magic, also works in C);
 * The interface for code generation is a simple Python API, not some
   obscure interface definition language.  Additionally PyBindGen can
   parse header files with gccxml, if gccxml and pygccxml are
   installed in the system (note: pygccxml has not been ported to Python 3 yet);
 * Can be easily extended with new type handlers;
 * Type handlers can allocate memory and register cleanup code to free;
 * Supports in, out, and inout parameters (e.g. with pointers or C++ references);
 * Supports multiple return values (e.g. due to out/inout parameters);
 * Supports wrapping of simple C++ classes;
 * Supports virtual methods in classes;
 * Supports reference counted classes and, to some extent, smart pointers;
 * Multiple inheritance;
 * Wrapping templated classes;
Notable features NOT implemented:
 * Converting exceptions from Python to C++ (only from C++ to Python is currently supported);
 * Callbacks.

%package -n python3-PyBindGen
Summary:	Python Bindings Generator
Provides:	python-PyBindGen
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-PyBindGen
PyBindGen is (surprise!) a python bindings generator.  The main features are:
 * Generates clean C or C++ code, nearly as readable as code written
   manually by a developer;
 * Generated code is self contained and does not require any external
   libraries or macros; after generating the python module only python
   header files are required, nothing else;
 * Does not require Boost.Python (no C++ template magic, also works in C);
 * The interface for code generation is a simple Python API, not some
   obscure interface definition language.  Additionally PyBindGen can
   parse header files with gccxml, if gccxml and pygccxml are
   installed in the system (note: pygccxml has not been ported to Python 3 yet);
 * Can be easily extended with new type handlers;
 * Type handlers can allocate memory and register cleanup code to free;
 * Supports in, out, and inout parameters (e.g. with pointers or C++ references);
 * Supports multiple return values (e.g. due to out/inout parameters);
 * Supports wrapping of simple C++ classes;
 * Supports virtual methods in classes;
 * Supports reference counted classes and, to some extent, smart pointers;
 * Multiple inheritance;
 * Wrapping templated classes;
Notable features NOT implemented:
 * Converting exceptions from Python to C++ (only from C++ to Python is currently supported);
 * Callbacks.

%package help
Summary:	Development documents and examples for PyBindGen
Provides:	python3-PyBindGen-doc
%description help
PyBindGen is (surprise!) a python bindings generator.  The main features are:
 * Generates clean C or C++ code, nearly as readable as code written
   manually by a developer;
 * Generated code is self contained and does not require any external
   libraries or macros; after generating the python module only python
   header files are required, nothing else;
 * Does not require Boost.Python (no C++ template magic, also works in C);
 * The interface for code generation is a simple Python API, not some
   obscure interface definition language.  Additionally PyBindGen can
   parse header files with gccxml, if gccxml and pygccxml are
   installed in the system (note: pygccxml has not been ported to Python 3 yet);
 * Can be easily extended with new type handlers;
 * Type handlers can allocate memory and register cleanup code to free;
 * Supports in, out, and inout parameters (e.g. with pointers or C++ references);
 * Supports multiple return values (e.g. due to out/inout parameters);
 * Supports wrapping of simple C++ classes;
 * Supports virtual methods in classes;
 * Supports reference counted classes and, to some extent, smart pointers;
 * Multiple inheritance;
 * Wrapping templated classes;
Notable features NOT implemented:
 * Converting exceptions from Python to C++ (only from C++ to Python is currently supported);
 * Callbacks.

%prep
%autosetup -n PyBindGen-0.22.1

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-PyBindGen -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Tue May 30 2023 Python_Bot <Python_Bot@openeuler.org> - 0.22.1-1
- Package Spec generated