a hU @sTddlZddlZGdddeZddZddZdd Zd d Zd d ZddZ dS)Nc@seZdZddZdddZdS) PathChoosercCst|_tj|s(d|_d|jd<dS||_td}td}t|df}t |D]L\}}| |rjqV| |}|st d||df| d |j| d<qVWdn1s0YdS) Nz (defaults)zJ/usr/share/selinux/default:/usr/share/selinux/mls:/usr/share/selinux/develSELINUX_DEVEL_PATHz ^\s*(?:#.+)?$z^\s*(\w+)\s*=\s*(.+?)\s*$rz(%s:%d: line is not in key = value format) dictconfigospathexistsconfig_pathnamerecompileopen enumeratematch ValueErrorgroup)selfpathnameignoreZconsiderfdlinenolinemor5/usr/lib/python3.9/site-packages/sepolgen/defaults.py__init__s       zPathChooser.__init__rcCsp|j|d}|dur(td||jf|d}|D]&}tj||}tj|r6|Sq6tj|d|S)Nz%s was not in %s:r) rgetrr splitr r joinr )rZ testfilenameZpathsetpathsptargetrrr__call__,s zPathChooser.__call__N)r)__name__ __module__ __qualname__rr%rrrrrsrcCsdS)Nz/var/lib/sepolgenrrrrrdata_dir;sr)cCs tdS)Nz /perm_mapr)rrrrperm_map>sr+cCs tdS)Nz/interface_infor*rrrrinterface_infoAsr,cCs tdS)Nz/attribute_infor*rrrrattribute_infoDsr-cCs(td}|d}tj|s$|d}|S)N/etc/selinux/sepolgen.confZMakefilezinclude/Makefile)rr r r )chooserresultrrrrefpolicy_makefileGs  r1cCstd}|dS)Nr.Zinclude)r)r/rrrheadersNsr2) r r objectrr)r+r,r-r1r2rrrrs"