zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
L±dã@sHddlZddlZddlZddlmZdd„Ze ¡fdd„Zdd    „ZdS)
éNé)ÚPkgConfigErrorcCsj| ¡D]\\}}||kr"|||<qt||tƒs>td|fƒ‚t|tƒsVtd|fƒ‚|| |¡q|S)z¬Merge values from cffi config flags cfg2 to cf1
 
    Example:
        merge_flags({"libraries": ["one"]}, {"libraries": ["two"]})
        {"libraries": ["one", "two"]}
    z$cfg1[%r] should be a list of stringsz$cfg2[%r] should be a list of strings)ÚitemsÚ
isinstanceÚlistÚ    TypeErrorÚextend)Zcfg1Zcfg2ÚkeyÚvalue©r úEd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\cffi/pkgconfig.pyÚ merge_flagss
 
r c
Cs2ddg}| |¡| |¡ztj|tjtjd}Wn8tk
rl}ztdt|ƒ ¡fƒ‚W5d}~XYnX| ¡\}}|j    dkr´z| 
|¡}Wnt k
r¦YnXt| ¡ƒ‚t j dkrt|tƒsz| 
|¡}Wn*tk
rtd||||fƒ‚YnXtjd    kr.d    |kr.td
|||fƒ‚|S) z5Calls pkg-config and returns the output if found
    z
pkg-configz--print-errors)ÚstdoutÚstderrzcannot run pkg-config: %sNr)ézKpkg-config %s %s returned bytes that cannot be decoded with encoding %r:
%rú\zEpkg-config %s %s returned an unsupported backslash-escaped output:
%r)ÚappendÚ
subprocessÚPopenÚPIPEÚEnvironmentErrorrÚstrÚstripÚ communicateÚ
returncodeÚdecodeÚ    ExceptionÚsysÚ version_inforÚUnicodeDecodeErrorÚosÚaltsep)ÚlibnameÚflagÚencodingÚaZpcÚeZboutZberrr r r Úcalls4
 
( 
 
þ þr'csjdd„‰dd„‰dd„‰dd„‰d    d
„‰d d „‰‡‡‡‡‡‡fd d„}i}|D]}||ƒ}t||ƒqN|S)aÞReturn compiler line flags for FFI.set_source based on pkg-config output
 
    Usage
        ...
        ffibuilder.set_source("_foo", pkgconfig = ["libfoo", "libbar >= 1.8.3"])
 
    If pkg-config is installed on build machine, then arguments include_dirs,
    library_dirs, libraries, define_macros, extra_compile_args and
    extra_link_args are extended with an output of pkg-config for libfoo and
    libbar.
 
    Raises PkgConfigError in case the pkg-config call fails.
    cSsdd„| ¡DƒS)NcSs"g|]}| d¡r|dd…‘qS)ú-IéN©Ú
startswith©Ú.0Úxr r r Ú
<listcomp>Ls
zBflags_from_pkgconfig.<locals>.get_include_dirs.<locals>.<listcomp>©Úsplit©Ústringr r r Úget_include_dirsKsz.flags_from_pkgconfig.<locals>.get_include_dirscSsdd„| ¡DƒS)NcSs"g|]}| d¡r|dd…‘qS)ú-Lr)Nr*r,r r r r/Os
zBflags_from_pkgconfig.<locals>.get_library_dirs.<locals>.<listcomp>r0r2r r r Úget_library_dirsNsz.flags_from_pkgconfig.<locals>.get_library_dirscSsdd„| ¡DƒS)NcSs"g|]}| d¡r|dd…‘qS)ú-lr)Nr*r,r r r r/Rs
z?flags_from_pkgconfig.<locals>.get_libraries.<locals>.<listcomp>r0r2r r r Ú get_librariesQsz+flags_from_pkgconfig.<locals>.get_librariescsdd„‰‡fdd„| ¡DƒS)NcSs0|dd…}d|kr$t| dd¡ƒS|dfSdS)Nr)ú=r)Útupler1)r.r r r Ú_macroVs z8flags_from_pkgconfig.<locals>.get_macros.<locals>._macrocsg|]}| d¡rˆ|ƒ‘qS)ú-Dr*r,©r;r r r/\s
z<flags_from_pkgconfig.<locals>.get_macros.<locals>.<listcomp>r0r2r r=r Ú
get_macrosUsz(flags_from_pkgconfig.<locals>.get_macroscSsdd„| ¡DƒS)NcSs$g|]}| d¡s| d¡s|‘qS)r(r<r*r,r r r r/_s
 
ÿzBflags_from_pkgconfig.<locals>.get_other_cflags.<locals>.<listcomp>r0r2r r r Úget_other_cflags^sz.flags_from_pkgconfig.<locals>.get_other_cflagscSsdd„| ¡DƒS)NcSs$g|]}| d¡s| d¡s|‘qS)r5r7r*r,r r r r/cs
 
ÿz@flags_from_pkgconfig.<locals>.get_other_libs.<locals>.<listcomp>r0r2r r r Úget_other_libsbsz,flags_from_pkgconfig.<locals>.get_other_libscsFt ¡}t|dƒ}t|dƒ}ˆ|ƒˆ|ƒˆ|ƒˆ|ƒˆ|ƒˆ|ƒdœS)Nz--cflagsz--libs)Ú include_dirsÚ library_dirsÚ    librariesÚ define_macrosÚextra_compile_argsÚextra_link_args)rÚgetfilesystemencodingr')r"ZfseZ
all_cflagsZall_libs©r4r8r6r>r?r@r r Úkwargsgs
 
úz$flags_from_pkgconfig.<locals>.kwargs)r )ZlibsrIÚretr"Z    lib_flagsr rHr Úflags_from_pkgconfig<s     rK)    rr rÚerrorrr rGr'rKr r r r Ú<module>s "