%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 - 2018.3.25.2110-1 - Package Spec generated