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
|
# Deb-o-Matic
#
# Copyright (C) 2007-2009 Luca Falavigna
#
# Author: Luca Falavigna <dktrkranz@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
from threading import Semaphore
from Debomatic import Options
from Debomatic import sema
def buildlock_acquire():
try:
return sema.build.acquire(False)
except:
sema.build = Semaphore(Options.getint('default', 'maxbuilds'))
return buildlock_acquire()
def buildlock_release():
try:
sema.build.release()
except:
pass
def pbuilderlock_acquire(distribution):
try:
return sema.pbuilder[distribution].acquire(False)
except AttributeError:
sema.pbuilder = dict()
return pbuilderlock_acquire(distribution)
except KeyError:
sema.pbuilder[distribution] = Semaphore()
return pbuilderlock_acquire(distribution)
def pbuilderlock_release(distribution):
try:
sema.pbuilder[distribution].release()
except:
pass
|