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
139
140
141
142
143
144
|
%global _empty_manifest_terminate_build 0
Name: python-lock
Version: 2018.3.25.2110
Release: 1
Summary: module for enabling file locks
License: GPLv3
URL: https://github.com/wdbm/lock
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ea/ee/4c7e9740d397abd62b48bfe82f77f57a8984da4f5ba0a3b64930b44ccd8f/lock-2018.3.25.2110.tar.gz
BuildArch: noarch
%description
This is a module for enabling file locks. It uses ``fcntl`` to
accomplish this.
POSIX operating systems implement advisory file locking. This enables
concurrent processes to interact with the same file without conflict,
provided they first check for the existence of a lock held by a
different process. Mandatory file locking can be enabled on POSIX
systems by mounting volumes using the ``mount`` ``-o mand`` option and
makes the operating system prevent editing of a locked file.
The ``fcntl`` functionality is implemented in Python by the ``fcntl``
standard library module. Using this, a lock can be acquired in a way
like the following:
lock_file = open("data.db", "a")
fcntl.lockf(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB)
If the file is locked, the following exception is raised:
BlockingIOError: [Errno 11] Resource temporarily unavailable
With advisory locking, code should test for the existence of a a lock
before editing a file. It is the responsibility of the code, not the
operating system, to enforce locking correctly. Information about the
locks currently held on a file may be retrieved by passing a bytes
object as the third argument to the ``fcntl.fcntl`` function (which
takes the place of a pointer to the process ID in the fcntl header). The
lock information can be accessed in a way like the following:
lock_data = struct.pack("hhllhh", fcntl.F_WRLCK, 0, 0, 0, 0, 0)
fcntl.fcntl(lock_file, fcntl.F_GETLK, lock_data)
This returns ``lock_data`` unchanged if there is no lock on the file.
%package -n python3-lock
Summary: module for enabling file locks
Provides: python-lock
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-lock
This is a module for enabling file locks. It uses ``fcntl`` to
accomplish this.
POSIX operating systems implement advisory file locking. This enables
concurrent processes to interact with the same file without conflict,
provided they first check for the existence of a lock held by a
different process. Mandatory file locking can be enabled on POSIX
systems by mounting volumes using the ``mount`` ``-o mand`` option and
makes the operating system prevent editing of a locked file.
The ``fcntl`` functionality is implemented in Python by the ``fcntl``
standard library module. Using this, a lock can be acquired in a way
like the following:
lock_file = open("data.db", "a")
fcntl.lockf(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB)
If the file is locked, the following exception is raised:
BlockingIOError: [Errno 11] Resource temporarily unavailable
With advisory locking, code should test for the existence of a a lock
before editing a file. It is the responsibility of the code, not the
operating system, to enforce locking correctly. Information about the
locks currently held on a file may be retrieved by passing a bytes
object as the third argument to the ``fcntl.fcntl`` function (which
takes the place of a pointer to the process ID in the fcntl header). The
lock information can be accessed in a way like the following:
lock_data = struct.pack("hhllhh", fcntl.F_WRLCK, 0, 0, 0, 0, 0)
fcntl.fcntl(lock_file, fcntl.F_GETLK, lock_data)
This returns ``lock_data`` unchanged if there is no lock on the file.
%package help
Summary: Development documents and examples for lock
Provides: python3-lock-doc
%description help
This is a module for enabling file locks. It uses ``fcntl`` to
accomplish this.
POSIX operating systems implement advisory file locking. This enables
concurrent processes to interact with the same file without conflict,
provided they first check for the existence of a lock held by a
different process. Mandatory file locking can be enabled on POSIX
systems by mounting volumes using the ``mount`` ``-o mand`` option and
makes the operating system prevent editing of a locked file.
The ``fcntl`` functionality is implemented in Python by the ``fcntl``
standard library module. Using this, a lock can be acquired in a way
like the following:
lock_file = open("data.db", "a")
fcntl.lockf(lock_file, fcntl.LOCK_EX | fcntl.LOCK_NB)
If the file is locked, the following exception is raised:
BlockingIOError: [Errno 11] Resource temporarily unavailable
With advisory locking, code should test for the existence of a a lock
before editing a file. It is the responsibility of the code, not the
operating system, to enforce locking correctly. Information about the
locks currently held on a file may be retrieved by passing a bytes
object as the third argument to the ``fcntl.fcntl`` function (which
takes the place of a pointer to the process ID in the fcntl header). The
lock information can be accessed in a way like the following:
lock_data = struct.pack("hhllhh", fcntl.F_WRLCK, 0, 0, 0, 0, 0)
fcntl.fcntl(lock_file, fcntl.F_GETLK, lock_data)
This returns ``lock_data`` unchanged if there is no lock on the file.
%prep
%autosetup -n lock-2018.3.25.2110
%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-lock -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2018.3.25.2110-1
- Package Spec generated
|